@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 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(), array(BackupEntrySchema).readonly(), {
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(), array(BackupEntrySchema).readonly(), {
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.57",
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",