@camstack/addon-provider-rademacher 0.2.57 → 0.2.58
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 +118 -1
- package/dist/addon.mjs +118 -1
- package/package.json +1 -1
package/dist/addon.js
CHANGED
|
@@ -11512,6 +11512,89 @@ var LocationStatSchema = object({
|
|
|
11512
11512
|
fileCount: number(),
|
|
11513
11513
|
present: boolean()
|
|
11514
11514
|
});
|
|
11515
|
+
/** Lifecycle of a backup run. Terminal states: succeeded / failed / cancelled. */
|
|
11516
|
+
var BackupRunStateSchema = _enum([
|
|
11517
|
+
"queued",
|
|
11518
|
+
"running",
|
|
11519
|
+
"succeeded",
|
|
11520
|
+
"failed",
|
|
11521
|
+
"cancelled"
|
|
11522
|
+
]);
|
|
11523
|
+
/**
|
|
11524
|
+
* Where a running backup currently is. `queued` before it starts,
|
|
11525
|
+
* `building` while the tar.gz is being staged, `uploading` during the
|
|
11526
|
+
* per-destination fan-out, `done` once terminal.
|
|
11527
|
+
*/
|
|
11528
|
+
var BackupRunPhaseSchema = _enum([
|
|
11529
|
+
"queued",
|
|
11530
|
+
"building",
|
|
11531
|
+
"uploading",
|
|
11532
|
+
"done"
|
|
11533
|
+
]);
|
|
11534
|
+
/**
|
|
11535
|
+
* Observable state of one backup run — readable WHILE it runs via
|
|
11536
|
+
* `backup.listRuns`. This is what makes the execution queue and
|
|
11537
|
+
* `backup.cancel` usable: the 2026-09-04 incident (two concurrent
|
|
11538
|
+
* multi-GB builds, staging 5.1 GB → 18 GB, load 62) was only
|
|
11539
|
+
* diagnosable with `du` because nothing reported that runs existed or
|
|
11540
|
+
* how large the staged archive had grown.
|
|
11541
|
+
*/
|
|
11542
|
+
var BackupRunSchema = object({
|
|
11543
|
+
/** Stable run id — the handle `backup.cancel` takes. */
|
|
11544
|
+
id: string(),
|
|
11545
|
+
state: BackupRunStateSchema,
|
|
11546
|
+
phase: BackupRunPhaseSchema,
|
|
11547
|
+
/**
|
|
11548
|
+
* Resolved destination location ids. Empty while queued (targets are
|
|
11549
|
+
* resolved when the run starts, against the then-current policies).
|
|
11550
|
+
*/
|
|
11551
|
+
destinationIds: array(string()).readonly(),
|
|
11552
|
+
label: string().optional(),
|
|
11553
|
+
/** ms-epoch when the run was submitted (trigger call / schedule fire). */
|
|
11554
|
+
requestedAt: number(),
|
|
11555
|
+
/** ms-epoch when the run left the queue and started building. */
|
|
11556
|
+
startedAt: number().optional(),
|
|
11557
|
+
/** ms-epoch when the run reached a terminal state. */
|
|
11558
|
+
finishedAt: number().optional(),
|
|
11559
|
+
/** Compressed bytes of the staging archive written so far. */
|
|
11560
|
+
stagedBytes: number(),
|
|
11561
|
+
/** Final staged archive size, once the build phase completes. */
|
|
11562
|
+
archiveSizeBytes: number().optional(),
|
|
11563
|
+
/** Bytes pushed to the destination currently uploading. */
|
|
11564
|
+
uploadedBytes: number(),
|
|
11565
|
+
/** Destinations where the archive fully landed (uploaded + indexed). */
|
|
11566
|
+
completedDestinationIds: array(string()).readonly(),
|
|
11567
|
+
/** Destinations that failed during the fan-out. */
|
|
11568
|
+
failedDestinationIds: array(string()).readonly(),
|
|
11569
|
+
/** Failure message when `state === 'failed'`. */
|
|
11570
|
+
error: string().optional(),
|
|
11571
|
+
/**
|
|
11572
|
+
* 1-based place in the execution queue — 1 = runs next. Present only
|
|
11573
|
+
* while `state === 'queued'`. Stamped by the orchestrator from the
|
|
11574
|
+
* queue's OWN pending order, never derived from timestamps, so the
|
|
11575
|
+
* UI cannot show an order the executor will not honour.
|
|
11576
|
+
*/
|
|
11577
|
+
queuePosition: number().int().min(1).optional()
|
|
11578
|
+
});
|
|
11579
|
+
/**
|
|
11580
|
+
* Result of `backup.trigger`. The call still resolves when the run
|
|
11581
|
+
* terminates (compat with schedule-driven runs and the admin UI), but
|
|
11582
|
+
* it now names the run and says whether it had to WAIT: a trigger that
|
|
11583
|
+
* arrives while another run is in flight is enqueued (or joined onto
|
|
11584
|
+
* an identical already-queued run), never started concurrently.
|
|
11585
|
+
*/
|
|
11586
|
+
var BackupTriggerResultSchema = object({
|
|
11587
|
+
/** The run this trigger mapped to — poll it via `listRuns`, stop it via `cancel`. */
|
|
11588
|
+
runId: string(),
|
|
11589
|
+
/** True when the run waited behind an in-flight run instead of starting immediately. */
|
|
11590
|
+
queued: boolean(),
|
|
11591
|
+
/** True when this trigger was coalesced onto an identical already-queued run. */
|
|
11592
|
+
joined: boolean(),
|
|
11593
|
+
/** True when the run was cancelled before completing every destination. */
|
|
11594
|
+
cancelled: boolean(),
|
|
11595
|
+
/** One entry per destination the archive landed at (partial on cancel). */
|
|
11596
|
+
entries: array(BackupEntrySchema).readonly()
|
|
11597
|
+
});
|
|
11515
11598
|
/**
|
|
11516
11599
|
* A backup schedule — the N:M "entry" that binds one cron cadence to a
|
|
11517
11600
|
* SET of destination locations. Supersedes the per-location cron on
|
|
@@ -11559,7 +11642,10 @@ method(_void(), array(BackupDestinationInfoSchema).readonly(), { auth: "admin" }
|
|
|
11559
11642
|
* retention (manual runs).
|
|
11560
11643
|
*/
|
|
11561
11644
|
retentionCount: number().int().min(1).max(1e3).optional()
|
|
11562
|
-
}).optional(),
|
|
11645
|
+
}).optional(), BackupTriggerResultSchema, {
|
|
11646
|
+
kind: "mutation",
|
|
11647
|
+
auth: "admin"
|
|
11648
|
+
}), method(_void(), array(BackupRunSchema).readonly(), { auth: "admin" }), method(object({ runId: string() }), object({ cancelled: boolean() }), {
|
|
11563
11649
|
kind: "mutation",
|
|
11564
11650
|
auth: "admin"
|
|
11565
11651
|
}), method(_void(), array(BackupEntrySchema).readonly(), { auth: "admin" }), method(_void(), array(LocationStatSchema).readonly(), { auth: "admin" }), method(object({
|
|
@@ -12276,6 +12362,14 @@ method(object({
|
|
|
12276
12362
|
}), object({ success: literal(true) }), {
|
|
12277
12363
|
kind: "mutation",
|
|
12278
12364
|
auth: "admin"
|
|
12365
|
+
}), method(object({ deviceId: number().int().nonnegative() }), object({
|
|
12366
|
+
derivedStreamsDeleted: array(string()).readonly(),
|
|
12367
|
+
assignmentsPurged: boolean(),
|
|
12368
|
+
probeSnapshotsDropped: number().int().nonnegative(),
|
|
12369
|
+
rtspTokenRowsDeleted: number().int().nonnegative()
|
|
12370
|
+
}), {
|
|
12371
|
+
kind: "mutation",
|
|
12372
|
+
auth: "admin"
|
|
12279
12373
|
}), method(object({
|
|
12280
12374
|
deviceId: number(),
|
|
12281
12375
|
/** Absent = the LOWEST assigned profile — a notification attachment is
|
|
@@ -34127,6 +34221,12 @@ Object.freeze({
|
|
|
34127
34221
|
addonId: null,
|
|
34128
34222
|
access: "create"
|
|
34129
34223
|
},
|
|
34224
|
+
"backup.cancel": {
|
|
34225
|
+
capName: "backup",
|
|
34226
|
+
capScope: "system",
|
|
34227
|
+
addonId: null,
|
|
34228
|
+
access: "create"
|
|
34229
|
+
},
|
|
34130
34230
|
"backup.delete": {
|
|
34131
34231
|
capName: "backup",
|
|
34132
34232
|
capScope: "system",
|
|
@@ -34169,6 +34269,12 @@ Object.freeze({
|
|
|
34169
34269
|
addonId: null,
|
|
34170
34270
|
access: "view"
|
|
34171
34271
|
},
|
|
34272
|
+
"backup.listRuns": {
|
|
34273
|
+
capName: "backup",
|
|
34274
|
+
capScope: "system",
|
|
34275
|
+
addonId: null,
|
|
34276
|
+
access: "view"
|
|
34277
|
+
},
|
|
34172
34278
|
"backup.listSchedules": {
|
|
34173
34279
|
capName: "backup",
|
|
34174
34280
|
capScope: "system",
|
|
@@ -38735,6 +38841,12 @@ Object.freeze({
|
|
|
38735
38841
|
addonId: null,
|
|
38736
38842
|
access: "create"
|
|
38737
38843
|
},
|
|
38844
|
+
"streamBroker.forgetDeviceHardware": {
|
|
38845
|
+
capName: "stream-broker",
|
|
38846
|
+
capScope: "system",
|
|
38847
|
+
addonId: null,
|
|
38848
|
+
access: "delete"
|
|
38849
|
+
},
|
|
38738
38850
|
"streamBroker.getAllRtspEntries": {
|
|
38739
38851
|
capName: "stream-broker",
|
|
38740
38852
|
capScope: "system",
|
|
@@ -41193,6 +41305,11 @@ Object.freeze({
|
|
|
41193
41305
|
form: "single",
|
|
41194
41306
|
optional: false
|
|
41195
41307
|
}],
|
|
41308
|
+
"streamBroker.forgetDeviceHardware": [{
|
|
41309
|
+
name: "deviceId",
|
|
41310
|
+
form: "single",
|
|
41311
|
+
optional: false
|
|
41312
|
+
}],
|
|
41196
41313
|
"streamBroker.getDeviceAudioMute": [{
|
|
41197
41314
|
name: "deviceId",
|
|
41198
41315
|
form: "single",
|
package/dist/addon.mjs
CHANGED
|
@@ -11511,6 +11511,89 @@ var LocationStatSchema = object({
|
|
|
11511
11511
|
fileCount: number(),
|
|
11512
11512
|
present: boolean()
|
|
11513
11513
|
});
|
|
11514
|
+
/** Lifecycle of a backup run. Terminal states: succeeded / failed / cancelled. */
|
|
11515
|
+
var BackupRunStateSchema = _enum([
|
|
11516
|
+
"queued",
|
|
11517
|
+
"running",
|
|
11518
|
+
"succeeded",
|
|
11519
|
+
"failed",
|
|
11520
|
+
"cancelled"
|
|
11521
|
+
]);
|
|
11522
|
+
/**
|
|
11523
|
+
* Where a running backup currently is. `queued` before it starts,
|
|
11524
|
+
* `building` while the tar.gz is being staged, `uploading` during the
|
|
11525
|
+
* per-destination fan-out, `done` once terminal.
|
|
11526
|
+
*/
|
|
11527
|
+
var BackupRunPhaseSchema = _enum([
|
|
11528
|
+
"queued",
|
|
11529
|
+
"building",
|
|
11530
|
+
"uploading",
|
|
11531
|
+
"done"
|
|
11532
|
+
]);
|
|
11533
|
+
/**
|
|
11534
|
+
* Observable state of one backup run — readable WHILE it runs via
|
|
11535
|
+
* `backup.listRuns`. This is what makes the execution queue and
|
|
11536
|
+
* `backup.cancel` usable: the 2026-09-04 incident (two concurrent
|
|
11537
|
+
* multi-GB builds, staging 5.1 GB → 18 GB, load 62) was only
|
|
11538
|
+
* diagnosable with `du` because nothing reported that runs existed or
|
|
11539
|
+
* how large the staged archive had grown.
|
|
11540
|
+
*/
|
|
11541
|
+
var BackupRunSchema = object({
|
|
11542
|
+
/** Stable run id — the handle `backup.cancel` takes. */
|
|
11543
|
+
id: string(),
|
|
11544
|
+
state: BackupRunStateSchema,
|
|
11545
|
+
phase: BackupRunPhaseSchema,
|
|
11546
|
+
/**
|
|
11547
|
+
* Resolved destination location ids. Empty while queued (targets are
|
|
11548
|
+
* resolved when the run starts, against the then-current policies).
|
|
11549
|
+
*/
|
|
11550
|
+
destinationIds: array(string()).readonly(),
|
|
11551
|
+
label: string().optional(),
|
|
11552
|
+
/** ms-epoch when the run was submitted (trigger call / schedule fire). */
|
|
11553
|
+
requestedAt: number(),
|
|
11554
|
+
/** ms-epoch when the run left the queue and started building. */
|
|
11555
|
+
startedAt: number().optional(),
|
|
11556
|
+
/** ms-epoch when the run reached a terminal state. */
|
|
11557
|
+
finishedAt: number().optional(),
|
|
11558
|
+
/** Compressed bytes of the staging archive written so far. */
|
|
11559
|
+
stagedBytes: number(),
|
|
11560
|
+
/** Final staged archive size, once the build phase completes. */
|
|
11561
|
+
archiveSizeBytes: number().optional(),
|
|
11562
|
+
/** Bytes pushed to the destination currently uploading. */
|
|
11563
|
+
uploadedBytes: number(),
|
|
11564
|
+
/** Destinations where the archive fully landed (uploaded + indexed). */
|
|
11565
|
+
completedDestinationIds: array(string()).readonly(),
|
|
11566
|
+
/** Destinations that failed during the fan-out. */
|
|
11567
|
+
failedDestinationIds: array(string()).readonly(),
|
|
11568
|
+
/** Failure message when `state === 'failed'`. */
|
|
11569
|
+
error: string().optional(),
|
|
11570
|
+
/**
|
|
11571
|
+
* 1-based place in the execution queue — 1 = runs next. Present only
|
|
11572
|
+
* while `state === 'queued'`. Stamped by the orchestrator from the
|
|
11573
|
+
* queue's OWN pending order, never derived from timestamps, so the
|
|
11574
|
+
* UI cannot show an order the executor will not honour.
|
|
11575
|
+
*/
|
|
11576
|
+
queuePosition: number().int().min(1).optional()
|
|
11577
|
+
});
|
|
11578
|
+
/**
|
|
11579
|
+
* Result of `backup.trigger`. The call still resolves when the run
|
|
11580
|
+
* terminates (compat with schedule-driven runs and the admin UI), but
|
|
11581
|
+
* it now names the run and says whether it had to WAIT: a trigger that
|
|
11582
|
+
* arrives while another run is in flight is enqueued (or joined onto
|
|
11583
|
+
* an identical already-queued run), never started concurrently.
|
|
11584
|
+
*/
|
|
11585
|
+
var BackupTriggerResultSchema = object({
|
|
11586
|
+
/** The run this trigger mapped to — poll it via `listRuns`, stop it via `cancel`. */
|
|
11587
|
+
runId: string(),
|
|
11588
|
+
/** True when the run waited behind an in-flight run instead of starting immediately. */
|
|
11589
|
+
queued: boolean(),
|
|
11590
|
+
/** True when this trigger was coalesced onto an identical already-queued run. */
|
|
11591
|
+
joined: boolean(),
|
|
11592
|
+
/** True when the run was cancelled before completing every destination. */
|
|
11593
|
+
cancelled: boolean(),
|
|
11594
|
+
/** One entry per destination the archive landed at (partial on cancel). */
|
|
11595
|
+
entries: array(BackupEntrySchema).readonly()
|
|
11596
|
+
});
|
|
11514
11597
|
/**
|
|
11515
11598
|
* A backup schedule — the N:M "entry" that binds one cron cadence to a
|
|
11516
11599
|
* SET of destination locations. Supersedes the per-location cron on
|
|
@@ -11558,7 +11641,10 @@ method(_void(), array(BackupDestinationInfoSchema).readonly(), { auth: "admin" }
|
|
|
11558
11641
|
* retention (manual runs).
|
|
11559
11642
|
*/
|
|
11560
11643
|
retentionCount: number().int().min(1).max(1e3).optional()
|
|
11561
|
-
}).optional(),
|
|
11644
|
+
}).optional(), BackupTriggerResultSchema, {
|
|
11645
|
+
kind: "mutation",
|
|
11646
|
+
auth: "admin"
|
|
11647
|
+
}), method(_void(), array(BackupRunSchema).readonly(), { auth: "admin" }), method(object({ runId: string() }), object({ cancelled: boolean() }), {
|
|
11562
11648
|
kind: "mutation",
|
|
11563
11649
|
auth: "admin"
|
|
11564
11650
|
}), method(_void(), array(BackupEntrySchema).readonly(), { auth: "admin" }), method(_void(), array(LocationStatSchema).readonly(), { auth: "admin" }), method(object({
|
|
@@ -12275,6 +12361,14 @@ method(object({
|
|
|
12275
12361
|
}), object({ success: literal(true) }), {
|
|
12276
12362
|
kind: "mutation",
|
|
12277
12363
|
auth: "admin"
|
|
12364
|
+
}), method(object({ deviceId: number().int().nonnegative() }), object({
|
|
12365
|
+
derivedStreamsDeleted: array(string()).readonly(),
|
|
12366
|
+
assignmentsPurged: boolean(),
|
|
12367
|
+
probeSnapshotsDropped: number().int().nonnegative(),
|
|
12368
|
+
rtspTokenRowsDeleted: number().int().nonnegative()
|
|
12369
|
+
}), {
|
|
12370
|
+
kind: "mutation",
|
|
12371
|
+
auth: "admin"
|
|
12278
12372
|
}), method(object({
|
|
12279
12373
|
deviceId: number(),
|
|
12280
12374
|
/** Absent = the LOWEST assigned profile — a notification attachment is
|
|
@@ -34126,6 +34220,12 @@ Object.freeze({
|
|
|
34126
34220
|
addonId: null,
|
|
34127
34221
|
access: "create"
|
|
34128
34222
|
},
|
|
34223
|
+
"backup.cancel": {
|
|
34224
|
+
capName: "backup",
|
|
34225
|
+
capScope: "system",
|
|
34226
|
+
addonId: null,
|
|
34227
|
+
access: "create"
|
|
34228
|
+
},
|
|
34129
34229
|
"backup.delete": {
|
|
34130
34230
|
capName: "backup",
|
|
34131
34231
|
capScope: "system",
|
|
@@ -34168,6 +34268,12 @@ Object.freeze({
|
|
|
34168
34268
|
addonId: null,
|
|
34169
34269
|
access: "view"
|
|
34170
34270
|
},
|
|
34271
|
+
"backup.listRuns": {
|
|
34272
|
+
capName: "backup",
|
|
34273
|
+
capScope: "system",
|
|
34274
|
+
addonId: null,
|
|
34275
|
+
access: "view"
|
|
34276
|
+
},
|
|
34171
34277
|
"backup.listSchedules": {
|
|
34172
34278
|
capName: "backup",
|
|
34173
34279
|
capScope: "system",
|
|
@@ -38734,6 +38840,12 @@ Object.freeze({
|
|
|
38734
38840
|
addonId: null,
|
|
38735
38841
|
access: "create"
|
|
38736
38842
|
},
|
|
38843
|
+
"streamBroker.forgetDeviceHardware": {
|
|
38844
|
+
capName: "stream-broker",
|
|
38845
|
+
capScope: "system",
|
|
38846
|
+
addonId: null,
|
|
38847
|
+
access: "delete"
|
|
38848
|
+
},
|
|
38737
38849
|
"streamBroker.getAllRtspEntries": {
|
|
38738
38850
|
capName: "stream-broker",
|
|
38739
38851
|
capScope: "system",
|
|
@@ -41192,6 +41304,11 @@ Object.freeze({
|
|
|
41192
41304
|
form: "single",
|
|
41193
41305
|
optional: false
|
|
41194
41306
|
}],
|
|
41307
|
+
"streamBroker.forgetDeviceHardware": [{
|
|
41308
|
+
name: "deviceId",
|
|
41309
|
+
form: "single",
|
|
41310
|
+
optional: false
|
|
41311
|
+
}],
|
|
41195
41312
|
"streamBroker.getDeviceAudioMute": [{
|
|
41196
41313
|
name: "deviceId",
|
|
41197
41314
|
form: "single",
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@camstack/addon-provider-rademacher",
|
|
3
|
-
"version": "0.2.
|
|
3
|
+
"version": "0.2.58",
|
|
4
4
|
"description": "Rademacher HomePilot device-provider addon for CamStack — wraps the @apocaliss92/noderademacher local-hub client (roller shutters over the cover cap)",
|
|
5
5
|
"keywords": [
|
|
6
6
|
"camstack",
|