@camstack/addon-mqtt-broker 1.2.58 → 1.2.59

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.
@@ -10556,6 +10556,89 @@ var LocationStatSchema = object({
10556
10556
  fileCount: number(),
10557
10557
  present: boolean()
10558
10558
  });
10559
+ /** Lifecycle of a backup run. Terminal states: succeeded / failed / cancelled. */
10560
+ var BackupRunStateSchema = _enum([
10561
+ "queued",
10562
+ "running",
10563
+ "succeeded",
10564
+ "failed",
10565
+ "cancelled"
10566
+ ]);
10567
+ /**
10568
+ * Where a running backup currently is. `queued` before it starts,
10569
+ * `building` while the tar.gz is being staged, `uploading` during the
10570
+ * per-destination fan-out, `done` once terminal.
10571
+ */
10572
+ var BackupRunPhaseSchema = _enum([
10573
+ "queued",
10574
+ "building",
10575
+ "uploading",
10576
+ "done"
10577
+ ]);
10578
+ /**
10579
+ * Observable state of one backup run — readable WHILE it runs via
10580
+ * `backup.listRuns`. This is what makes the execution queue and
10581
+ * `backup.cancel` usable: the 2026-09-04 incident (two concurrent
10582
+ * multi-GB builds, staging 5.1 GB → 18 GB, load 62) was only
10583
+ * diagnosable with `du` because nothing reported that runs existed or
10584
+ * how large the staged archive had grown.
10585
+ */
10586
+ var BackupRunSchema = object({
10587
+ /** Stable run id — the handle `backup.cancel` takes. */
10588
+ id: string(),
10589
+ state: BackupRunStateSchema,
10590
+ phase: BackupRunPhaseSchema,
10591
+ /**
10592
+ * Resolved destination location ids. Empty while queued (targets are
10593
+ * resolved when the run starts, against the then-current policies).
10594
+ */
10595
+ destinationIds: array(string()).readonly(),
10596
+ label: string().optional(),
10597
+ /** ms-epoch when the run was submitted (trigger call / schedule fire). */
10598
+ requestedAt: number(),
10599
+ /** ms-epoch when the run left the queue and started building. */
10600
+ startedAt: number().optional(),
10601
+ /** ms-epoch when the run reached a terminal state. */
10602
+ finishedAt: number().optional(),
10603
+ /** Compressed bytes of the staging archive written so far. */
10604
+ stagedBytes: number(),
10605
+ /** Final staged archive size, once the build phase completes. */
10606
+ archiveSizeBytes: number().optional(),
10607
+ /** Bytes pushed to the destination currently uploading. */
10608
+ uploadedBytes: number(),
10609
+ /** Destinations where the archive fully landed (uploaded + indexed). */
10610
+ completedDestinationIds: array(string()).readonly(),
10611
+ /** Destinations that failed during the fan-out. */
10612
+ failedDestinationIds: array(string()).readonly(),
10613
+ /** Failure message when `state === 'failed'`. */
10614
+ error: string().optional(),
10615
+ /**
10616
+ * 1-based place in the execution queue — 1 = runs next. Present only
10617
+ * while `state === 'queued'`. Stamped by the orchestrator from the
10618
+ * queue's OWN pending order, never derived from timestamps, so the
10619
+ * UI cannot show an order the executor will not honour.
10620
+ */
10621
+ queuePosition: number().int().min(1).optional()
10622
+ });
10623
+ /**
10624
+ * Result of `backup.trigger`. The call still resolves when the run
10625
+ * terminates (compat with schedule-driven runs and the admin UI), but
10626
+ * it now names the run and says whether it had to WAIT: a trigger that
10627
+ * arrives while another run is in flight is enqueued (or joined onto
10628
+ * an identical already-queued run), never started concurrently.
10629
+ */
10630
+ var BackupTriggerResultSchema = object({
10631
+ /** The run this trigger mapped to — poll it via `listRuns`, stop it via `cancel`. */
10632
+ runId: string(),
10633
+ /** True when the run waited behind an in-flight run instead of starting immediately. */
10634
+ queued: boolean(),
10635
+ /** True when this trigger was coalesced onto an identical already-queued run. */
10636
+ joined: boolean(),
10637
+ /** True when the run was cancelled before completing every destination. */
10638
+ cancelled: boolean(),
10639
+ /** One entry per destination the archive landed at (partial on cancel). */
10640
+ entries: array(BackupEntrySchema).readonly()
10641
+ });
10559
10642
  /**
10560
10643
  * A backup schedule — the N:M "entry" that binds one cron cadence to a
10561
10644
  * SET of destination locations. Supersedes the per-location cron on
@@ -10603,7 +10686,10 @@ method(_void(), array(BackupDestinationInfoSchema).readonly(), { auth: "admin" }
10603
10686
  * retention (manual runs).
10604
10687
  */
10605
10688
  retentionCount: number().int().min(1).max(1e3).optional()
10606
- }).optional(), array(BackupEntrySchema).readonly(), {
10689
+ }).optional(), BackupTriggerResultSchema, {
10690
+ kind: "mutation",
10691
+ auth: "admin"
10692
+ }), method(_void(), array(BackupRunSchema).readonly(), { auth: "admin" }), method(object({ runId: string() }), object({ cancelled: boolean() }), {
10607
10693
  kind: "mutation",
10608
10694
  auth: "admin"
10609
10695
  }), method(_void(), array(BackupEntrySchema).readonly(), { auth: "admin" }), method(_void(), array(LocationStatSchema).readonly(), { auth: "admin" }), method(object({
@@ -11369,6 +11455,14 @@ method(object({
11369
11455
  }), object({ success: literal(true) }), {
11370
11456
  kind: "mutation",
11371
11457
  auth: "admin"
11458
+ }), method(object({ deviceId: number().int().nonnegative() }), object({
11459
+ derivedStreamsDeleted: array(string()).readonly(),
11460
+ assignmentsPurged: boolean(),
11461
+ probeSnapshotsDropped: number().int().nonnegative(),
11462
+ rtspTokenRowsDeleted: number().int().nonnegative()
11463
+ }), {
11464
+ kind: "mutation",
11465
+ auth: "admin"
11372
11466
  }), method(object({
11373
11467
  deviceId: number(),
11374
11468
  /** Absent = the LOWEST assigned profile — a notification attachment is
@@ -29483,6 +29577,12 @@ Object.freeze({
29483
29577
  addonId: null,
29484
29578
  access: "create"
29485
29579
  },
29580
+ "backup.cancel": {
29581
+ capName: "backup",
29582
+ capScope: "system",
29583
+ addonId: null,
29584
+ access: "create"
29585
+ },
29486
29586
  "backup.delete": {
29487
29587
  capName: "backup",
29488
29588
  capScope: "system",
@@ -29525,6 +29625,12 @@ Object.freeze({
29525
29625
  addonId: null,
29526
29626
  access: "view"
29527
29627
  },
29628
+ "backup.listRuns": {
29629
+ capName: "backup",
29630
+ capScope: "system",
29631
+ addonId: null,
29632
+ access: "view"
29633
+ },
29528
29634
  "backup.listSchedules": {
29529
29635
  capName: "backup",
29530
29636
  capScope: "system",
@@ -34091,6 +34197,12 @@ Object.freeze({
34091
34197
  addonId: null,
34092
34198
  access: "create"
34093
34199
  },
34200
+ "streamBroker.forgetDeviceHardware": {
34201
+ capName: "stream-broker",
34202
+ capScope: "system",
34203
+ addonId: null,
34204
+ access: "delete"
34205
+ },
34094
34206
  "streamBroker.getAllRtspEntries": {
34095
34207
  capName: "stream-broker",
34096
34208
  capScope: "system",
@@ -36549,6 +36661,11 @@ Object.freeze({
36549
36661
  form: "single",
36550
36662
  optional: false
36551
36663
  }],
36664
+ "streamBroker.forgetDeviceHardware": [{
36665
+ name: "deviceId",
36666
+ form: "single",
36667
+ optional: false
36668
+ }],
36552
36669
  "streamBroker.getDeviceAudioMute": [{
36553
36670
  name: "deviceId",
36554
36671
  form: "single",
@@ -10551,6 +10551,89 @@ var LocationStatSchema = object({
10551
10551
  fileCount: number(),
10552
10552
  present: boolean()
10553
10553
  });
10554
+ /** Lifecycle of a backup run. Terminal states: succeeded / failed / cancelled. */
10555
+ var BackupRunStateSchema = _enum([
10556
+ "queued",
10557
+ "running",
10558
+ "succeeded",
10559
+ "failed",
10560
+ "cancelled"
10561
+ ]);
10562
+ /**
10563
+ * Where a running backup currently is. `queued` before it starts,
10564
+ * `building` while the tar.gz is being staged, `uploading` during the
10565
+ * per-destination fan-out, `done` once terminal.
10566
+ */
10567
+ var BackupRunPhaseSchema = _enum([
10568
+ "queued",
10569
+ "building",
10570
+ "uploading",
10571
+ "done"
10572
+ ]);
10573
+ /**
10574
+ * Observable state of one backup run — readable WHILE it runs via
10575
+ * `backup.listRuns`. This is what makes the execution queue and
10576
+ * `backup.cancel` usable: the 2026-09-04 incident (two concurrent
10577
+ * multi-GB builds, staging 5.1 GB → 18 GB, load 62) was only
10578
+ * diagnosable with `du` because nothing reported that runs existed or
10579
+ * how large the staged archive had grown.
10580
+ */
10581
+ var BackupRunSchema = object({
10582
+ /** Stable run id — the handle `backup.cancel` takes. */
10583
+ id: string(),
10584
+ state: BackupRunStateSchema,
10585
+ phase: BackupRunPhaseSchema,
10586
+ /**
10587
+ * Resolved destination location ids. Empty while queued (targets are
10588
+ * resolved when the run starts, against the then-current policies).
10589
+ */
10590
+ destinationIds: array(string()).readonly(),
10591
+ label: string().optional(),
10592
+ /** ms-epoch when the run was submitted (trigger call / schedule fire). */
10593
+ requestedAt: number(),
10594
+ /** ms-epoch when the run left the queue and started building. */
10595
+ startedAt: number().optional(),
10596
+ /** ms-epoch when the run reached a terminal state. */
10597
+ finishedAt: number().optional(),
10598
+ /** Compressed bytes of the staging archive written so far. */
10599
+ stagedBytes: number(),
10600
+ /** Final staged archive size, once the build phase completes. */
10601
+ archiveSizeBytes: number().optional(),
10602
+ /** Bytes pushed to the destination currently uploading. */
10603
+ uploadedBytes: number(),
10604
+ /** Destinations where the archive fully landed (uploaded + indexed). */
10605
+ completedDestinationIds: array(string()).readonly(),
10606
+ /** Destinations that failed during the fan-out. */
10607
+ failedDestinationIds: array(string()).readonly(),
10608
+ /** Failure message when `state === 'failed'`. */
10609
+ error: string().optional(),
10610
+ /**
10611
+ * 1-based place in the execution queue — 1 = runs next. Present only
10612
+ * while `state === 'queued'`. Stamped by the orchestrator from the
10613
+ * queue's OWN pending order, never derived from timestamps, so the
10614
+ * UI cannot show an order the executor will not honour.
10615
+ */
10616
+ queuePosition: number().int().min(1).optional()
10617
+ });
10618
+ /**
10619
+ * Result of `backup.trigger`. The call still resolves when the run
10620
+ * terminates (compat with schedule-driven runs and the admin UI), but
10621
+ * it now names the run and says whether it had to WAIT: a trigger that
10622
+ * arrives while another run is in flight is enqueued (or joined onto
10623
+ * an identical already-queued run), never started concurrently.
10624
+ */
10625
+ var BackupTriggerResultSchema = object({
10626
+ /** The run this trigger mapped to — poll it via `listRuns`, stop it via `cancel`. */
10627
+ runId: string(),
10628
+ /** True when the run waited behind an in-flight run instead of starting immediately. */
10629
+ queued: boolean(),
10630
+ /** True when this trigger was coalesced onto an identical already-queued run. */
10631
+ joined: boolean(),
10632
+ /** True when the run was cancelled before completing every destination. */
10633
+ cancelled: boolean(),
10634
+ /** One entry per destination the archive landed at (partial on cancel). */
10635
+ entries: array(BackupEntrySchema).readonly()
10636
+ });
10554
10637
  /**
10555
10638
  * A backup schedule — the N:M "entry" that binds one cron cadence to a
10556
10639
  * SET of destination locations. Supersedes the per-location cron on
@@ -10598,7 +10681,10 @@ method(_void(), array(BackupDestinationInfoSchema).readonly(), { auth: "admin" }
10598
10681
  * retention (manual runs).
10599
10682
  */
10600
10683
  retentionCount: number().int().min(1).max(1e3).optional()
10601
- }).optional(), array(BackupEntrySchema).readonly(), {
10684
+ }).optional(), BackupTriggerResultSchema, {
10685
+ kind: "mutation",
10686
+ auth: "admin"
10687
+ }), method(_void(), array(BackupRunSchema).readonly(), { auth: "admin" }), method(object({ runId: string() }), object({ cancelled: boolean() }), {
10602
10688
  kind: "mutation",
10603
10689
  auth: "admin"
10604
10690
  }), method(_void(), array(BackupEntrySchema).readonly(), { auth: "admin" }), method(_void(), array(LocationStatSchema).readonly(), { auth: "admin" }), method(object({
@@ -11364,6 +11450,14 @@ method(object({
11364
11450
  }), object({ success: literal(true) }), {
11365
11451
  kind: "mutation",
11366
11452
  auth: "admin"
11453
+ }), method(object({ deviceId: number().int().nonnegative() }), object({
11454
+ derivedStreamsDeleted: array(string()).readonly(),
11455
+ assignmentsPurged: boolean(),
11456
+ probeSnapshotsDropped: number().int().nonnegative(),
11457
+ rtspTokenRowsDeleted: number().int().nonnegative()
11458
+ }), {
11459
+ kind: "mutation",
11460
+ auth: "admin"
11367
11461
  }), method(object({
11368
11462
  deviceId: number(),
11369
11463
  /** Absent = the LOWEST assigned profile — a notification attachment is
@@ -29478,6 +29572,12 @@ Object.freeze({
29478
29572
  addonId: null,
29479
29573
  access: "create"
29480
29574
  },
29575
+ "backup.cancel": {
29576
+ capName: "backup",
29577
+ capScope: "system",
29578
+ addonId: null,
29579
+ access: "create"
29580
+ },
29481
29581
  "backup.delete": {
29482
29582
  capName: "backup",
29483
29583
  capScope: "system",
@@ -29520,6 +29620,12 @@ Object.freeze({
29520
29620
  addonId: null,
29521
29621
  access: "view"
29522
29622
  },
29623
+ "backup.listRuns": {
29624
+ capName: "backup",
29625
+ capScope: "system",
29626
+ addonId: null,
29627
+ access: "view"
29628
+ },
29523
29629
  "backup.listSchedules": {
29524
29630
  capName: "backup",
29525
29631
  capScope: "system",
@@ -34086,6 +34192,12 @@ Object.freeze({
34086
34192
  addonId: null,
34087
34193
  access: "create"
34088
34194
  },
34195
+ "streamBroker.forgetDeviceHardware": {
34196
+ capName: "stream-broker",
34197
+ capScope: "system",
34198
+ addonId: null,
34199
+ access: "delete"
34200
+ },
34089
34201
  "streamBroker.getAllRtspEntries": {
34090
34202
  capName: "stream-broker",
34091
34203
  capScope: "system",
@@ -36544,6 +36656,11 @@ Object.freeze({
36544
36656
  form: "single",
36545
36657
  optional: false
36546
36658
  }],
36659
+ "streamBroker.forgetDeviceHardware": [{
36660
+ name: "deviceId",
36661
+ form: "single",
36662
+ optional: false
36663
+ }],
36547
36664
  "streamBroker.getDeviceAudioMute": [{
36548
36665
  name: "deviceId",
36549
36666
  form: "single",
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@camstack/addon-mqtt-broker",
3
- "version": "1.2.58",
3
+ "version": "1.2.59",
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",