@camstack/addon-terminal 0.1.52 → 0.1.53
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
|
@@ -19139,6 +19139,50 @@ var EventStoreFootprintSchema = object({
|
|
|
19139
19139
|
totalBytes: number().int(),
|
|
19140
19140
|
devices: array(EventStoreDeviceFootprintSchema).readonly()
|
|
19141
19141
|
});
|
|
19142
|
+
/** Event-media footprint for one {@link MediaFileKind}. */
|
|
19143
|
+
var EventMediaKindFootprintSchema = object({
|
|
19144
|
+
kind: MediaFileKindEnum,
|
|
19145
|
+
/** Media rows of this kind. */
|
|
19146
|
+
rows: number().int(),
|
|
19147
|
+
/** Bytes on disk held by those rows. */
|
|
19148
|
+
bytes: number().int()
|
|
19149
|
+
});
|
|
19150
|
+
/**
|
|
19151
|
+
* The media footprint broken down by KIND — the axis a deletion decision
|
|
19152
|
+
* actually turns on.
|
|
19153
|
+
*
|
|
19154
|
+
* A byte total says how much there is; it cannot say what is safe to remove.
|
|
19155
|
+
* The deletable set (the periodic `snapshot` filmstrip, the surplus per-edge
|
|
19156
|
+
* motion stills) and the keep set (`firstFrame`, rolling `lastFrame`,
|
|
19157
|
+
* `thumbnail`/`thumbnailSmall`, `keyFrame`/`keyFrameSmall`, the face/plate
|
|
19158
|
+
* buffers, gallery media, the CLIP `crop`) are distinguished by `kind` and by
|
|
19159
|
+
* nothing else, so sizing a deletion means summing per kind.
|
|
19160
|
+
*
|
|
19161
|
+
* ## Why `unaccounted*` exists
|
|
19162
|
+
*
|
|
19163
|
+
* `kinds` is enumerated from {@link MediaFileKindEnum} — the closed set the
|
|
19164
|
+
* writers use — and summed one kind at a time. `totalRows` / `totalBytes` come
|
|
19165
|
+
* from a SEPARATE unfiltered aggregate over the same rows, never from adding
|
|
19166
|
+
* `kinds` up. A row whose stored `kind` is not in the enum (written by a
|
|
19167
|
+
* retired code path, or by a version that knew a kind this one does not) would
|
|
19168
|
+
* otherwise vanish from the total silently, and an operator would delete
|
|
19169
|
+
* against a denominator smaller than the disk.
|
|
19170
|
+
*
|
|
19171
|
+
* `unaccountedRows` / `unaccountedBytes` are the difference. They are normally
|
|
19172
|
+
* zero; a non-zero value is a real finding and must be shown, not rounded away.
|
|
19173
|
+
*/
|
|
19174
|
+
var EventMediaKindBreakdownSchema = object({
|
|
19175
|
+
/** Every media row in scope, from one unfiltered aggregate. */
|
|
19176
|
+
totalRows: number().int(),
|
|
19177
|
+
/** Every media byte in scope, from that same aggregate. */
|
|
19178
|
+
totalBytes: number().int(),
|
|
19179
|
+
/** Per-kind footprint, ordered by bytes descending. */
|
|
19180
|
+
kinds: array(EventMediaKindFootprintSchema).readonly(),
|
|
19181
|
+
/** `totalRows` minus the summed `kinds` rows — see the schema note. */
|
|
19182
|
+
unaccountedRows: number().int(),
|
|
19183
|
+
/** `totalBytes` minus the summed `kinds` bytes — see the schema note. */
|
|
19184
|
+
unaccountedBytes: number().int()
|
|
19185
|
+
});
|
|
19142
19186
|
/** Per-kind counts returned by the event-prune / device-delete mutations. */
|
|
19143
19187
|
var EventPruneCountsSchema = object({
|
|
19144
19188
|
motion: number().int(),
|
|
@@ -19342,6 +19386,9 @@ DeviceType.Camera, method(object({ deviceId: number() }), array(TrackSchema).rea
|
|
|
19342
19386
|
}), TrackFlagsSchema, { kind: "mutation" }), method(object({}), EventStoreFootprintSchema, {
|
|
19343
19387
|
kind: "query",
|
|
19344
19388
|
auth: "admin"
|
|
19389
|
+
}), method(object({ deviceId: number().int().optional() }), EventMediaKindBreakdownSchema, {
|
|
19390
|
+
kind: "query",
|
|
19391
|
+
auth: "admin"
|
|
19345
19392
|
}), method(object({
|
|
19346
19393
|
olderThanMs: number(),
|
|
19347
19394
|
reason: OpsLogReasonSchema.optional()
|
|
@@ -21397,6 +21444,20 @@ method(object({
|
|
|
21397
21444
|
error: string().optional()
|
|
21398
21445
|
}), { auth: "admin" }), method(_void(), array(ProviderListEntrySchema).readonly()), method(object({
|
|
21399
21446
|
providerId: string(),
|
|
21447
|
+
/**
|
|
21448
|
+
* The location this config is an UNSAVED edit of, when there is one.
|
|
21449
|
+
*
|
|
21450
|
+
* `listLocations` replaces every declared secret with the redaction
|
|
21451
|
+
* sentinel, so the edit modal's form state holds the sentinel for any
|
|
21452
|
+
* credential the operator did not retype — and posting that here
|
|
21453
|
+
* without a way to resolve it makes the provider try to authenticate
|
|
21454
|
+
* as `__camstack_redacted__` and report the operator's own working
|
|
21455
|
+
* password as wrong. Given this id, the orchestrator restores each
|
|
21456
|
+
* sentinel from the stored config (same rule as `upsertLocation`)
|
|
21457
|
+
* before dispatching. Omitted by the "Add location" wizard, where
|
|
21458
|
+
* every value was typed just now and nothing is stored yet.
|
|
21459
|
+
*/
|
|
21460
|
+
locationId: string().optional(),
|
|
21400
21461
|
config: record(string(), unknown())
|
|
21401
21462
|
}), object({
|
|
21402
21463
|
ok: boolean(),
|
|
@@ -35477,6 +35538,12 @@ Object.freeze({
|
|
|
35477
35538
|
addonId: null,
|
|
35478
35539
|
access: "view"
|
|
35479
35540
|
},
|
|
35541
|
+
"pipelineAnalytics.getEventMediaFootprintByKind": {
|
|
35542
|
+
capName: "pipeline-analytics",
|
|
35543
|
+
capScope: "device",
|
|
35544
|
+
addonId: null,
|
|
35545
|
+
access: "view"
|
|
35546
|
+
},
|
|
35480
35547
|
"pipelineAnalytics.getEventStoreFootprint": {
|
|
35481
35548
|
capName: "pipeline-analytics",
|
|
35482
35549
|
capScope: "device",
|
|
@@ -39142,6 +39209,11 @@ Object.freeze({
|
|
|
39142
39209
|
form: "single",
|
|
39143
39210
|
optional: false
|
|
39144
39211
|
}],
|
|
39212
|
+
"pipelineAnalytics.getEventMediaFootprintByKind": [{
|
|
39213
|
+
name: "deviceId",
|
|
39214
|
+
form: "single",
|
|
39215
|
+
optional: true
|
|
39216
|
+
}],
|
|
39145
39217
|
"pipelineAnalytics.getGroup": [{
|
|
39146
39218
|
name: "deviceId",
|
|
39147
39219
|
form: "single",
|
package/dist/addon.mjs
CHANGED
|
@@ -19116,6 +19116,50 @@ var EventStoreFootprintSchema = object({
|
|
|
19116
19116
|
totalBytes: number().int(),
|
|
19117
19117
|
devices: array(EventStoreDeviceFootprintSchema).readonly()
|
|
19118
19118
|
});
|
|
19119
|
+
/** Event-media footprint for one {@link MediaFileKind}. */
|
|
19120
|
+
var EventMediaKindFootprintSchema = object({
|
|
19121
|
+
kind: MediaFileKindEnum,
|
|
19122
|
+
/** Media rows of this kind. */
|
|
19123
|
+
rows: number().int(),
|
|
19124
|
+
/** Bytes on disk held by those rows. */
|
|
19125
|
+
bytes: number().int()
|
|
19126
|
+
});
|
|
19127
|
+
/**
|
|
19128
|
+
* The media footprint broken down by KIND — the axis a deletion decision
|
|
19129
|
+
* actually turns on.
|
|
19130
|
+
*
|
|
19131
|
+
* A byte total says how much there is; it cannot say what is safe to remove.
|
|
19132
|
+
* The deletable set (the periodic `snapshot` filmstrip, the surplus per-edge
|
|
19133
|
+
* motion stills) and the keep set (`firstFrame`, rolling `lastFrame`,
|
|
19134
|
+
* `thumbnail`/`thumbnailSmall`, `keyFrame`/`keyFrameSmall`, the face/plate
|
|
19135
|
+
* buffers, gallery media, the CLIP `crop`) are distinguished by `kind` and by
|
|
19136
|
+
* nothing else, so sizing a deletion means summing per kind.
|
|
19137
|
+
*
|
|
19138
|
+
* ## Why `unaccounted*` exists
|
|
19139
|
+
*
|
|
19140
|
+
* `kinds` is enumerated from {@link MediaFileKindEnum} — the closed set the
|
|
19141
|
+
* writers use — and summed one kind at a time. `totalRows` / `totalBytes` come
|
|
19142
|
+
* from a SEPARATE unfiltered aggregate over the same rows, never from adding
|
|
19143
|
+
* `kinds` up. A row whose stored `kind` is not in the enum (written by a
|
|
19144
|
+
* retired code path, or by a version that knew a kind this one does not) would
|
|
19145
|
+
* otherwise vanish from the total silently, and an operator would delete
|
|
19146
|
+
* against a denominator smaller than the disk.
|
|
19147
|
+
*
|
|
19148
|
+
* `unaccountedRows` / `unaccountedBytes` are the difference. They are normally
|
|
19149
|
+
* zero; a non-zero value is a real finding and must be shown, not rounded away.
|
|
19150
|
+
*/
|
|
19151
|
+
var EventMediaKindBreakdownSchema = object({
|
|
19152
|
+
/** Every media row in scope, from one unfiltered aggregate. */
|
|
19153
|
+
totalRows: number().int(),
|
|
19154
|
+
/** Every media byte in scope, from that same aggregate. */
|
|
19155
|
+
totalBytes: number().int(),
|
|
19156
|
+
/** Per-kind footprint, ordered by bytes descending. */
|
|
19157
|
+
kinds: array(EventMediaKindFootprintSchema).readonly(),
|
|
19158
|
+
/** `totalRows` minus the summed `kinds` rows — see the schema note. */
|
|
19159
|
+
unaccountedRows: number().int(),
|
|
19160
|
+
/** `totalBytes` minus the summed `kinds` bytes — see the schema note. */
|
|
19161
|
+
unaccountedBytes: number().int()
|
|
19162
|
+
});
|
|
19119
19163
|
/** Per-kind counts returned by the event-prune / device-delete mutations. */
|
|
19120
19164
|
var EventPruneCountsSchema = object({
|
|
19121
19165
|
motion: number().int(),
|
|
@@ -19319,6 +19363,9 @@ DeviceType.Camera, method(object({ deviceId: number() }), array(TrackSchema).rea
|
|
|
19319
19363
|
}), TrackFlagsSchema, { kind: "mutation" }), method(object({}), EventStoreFootprintSchema, {
|
|
19320
19364
|
kind: "query",
|
|
19321
19365
|
auth: "admin"
|
|
19366
|
+
}), method(object({ deviceId: number().int().optional() }), EventMediaKindBreakdownSchema, {
|
|
19367
|
+
kind: "query",
|
|
19368
|
+
auth: "admin"
|
|
19322
19369
|
}), method(object({
|
|
19323
19370
|
olderThanMs: number(),
|
|
19324
19371
|
reason: OpsLogReasonSchema.optional()
|
|
@@ -21374,6 +21421,20 @@ method(object({
|
|
|
21374
21421
|
error: string().optional()
|
|
21375
21422
|
}), { auth: "admin" }), method(_void(), array(ProviderListEntrySchema).readonly()), method(object({
|
|
21376
21423
|
providerId: string(),
|
|
21424
|
+
/**
|
|
21425
|
+
* The location this config is an UNSAVED edit of, when there is one.
|
|
21426
|
+
*
|
|
21427
|
+
* `listLocations` replaces every declared secret with the redaction
|
|
21428
|
+
* sentinel, so the edit modal's form state holds the sentinel for any
|
|
21429
|
+
* credential the operator did not retype — and posting that here
|
|
21430
|
+
* without a way to resolve it makes the provider try to authenticate
|
|
21431
|
+
* as `__camstack_redacted__` and report the operator's own working
|
|
21432
|
+
* password as wrong. Given this id, the orchestrator restores each
|
|
21433
|
+
* sentinel from the stored config (same rule as `upsertLocation`)
|
|
21434
|
+
* before dispatching. Omitted by the "Add location" wizard, where
|
|
21435
|
+
* every value was typed just now and nothing is stored yet.
|
|
21436
|
+
*/
|
|
21437
|
+
locationId: string().optional(),
|
|
21377
21438
|
config: record(string(), unknown())
|
|
21378
21439
|
}), object({
|
|
21379
21440
|
ok: boolean(),
|
|
@@ -35454,6 +35515,12 @@ Object.freeze({
|
|
|
35454
35515
|
addonId: null,
|
|
35455
35516
|
access: "view"
|
|
35456
35517
|
},
|
|
35518
|
+
"pipelineAnalytics.getEventMediaFootprintByKind": {
|
|
35519
|
+
capName: "pipeline-analytics",
|
|
35520
|
+
capScope: "device",
|
|
35521
|
+
addonId: null,
|
|
35522
|
+
access: "view"
|
|
35523
|
+
},
|
|
35457
35524
|
"pipelineAnalytics.getEventStoreFootprint": {
|
|
35458
35525
|
capName: "pipeline-analytics",
|
|
35459
35526
|
capScope: "device",
|
|
@@ -39119,6 +39186,11 @@ Object.freeze({
|
|
|
39119
39186
|
form: "single",
|
|
39120
39187
|
optional: false
|
|
39121
39188
|
}],
|
|
39189
|
+
"pipelineAnalytics.getEventMediaFootprintByKind": [{
|
|
39190
|
+
name: "deviceId",
|
|
39191
|
+
form: "single",
|
|
39192
|
+
optional: true
|
|
39193
|
+
}],
|
|
39122
39194
|
"pipelineAnalytics.getGroup": [{
|
|
39123
39195
|
name: "deviceId",
|
|
39124
39196
|
form: "single",
|