@camstack/addon-mqtt-broker 1.2.63 → 1.2.65

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.
@@ -12715,6 +12715,24 @@ method(_void(), _void(), { kind: "mutation" }), method(_void(), _void(), { kind:
12715
12715
  kind: "mutation",
12716
12716
  auth: "admin"
12717
12717
  });
12718
+ /**
12719
+ * Device Manager capability — hub-side singleton that unifies device persistence,
12720
+ * live registry access, and all management operations into a single tRPC surface.
12721
+ *
12722
+ * Replaces:
12723
+ * - `device-persistence` capability (persistence methods absorbed here)
12724
+ * - `device-management.router.ts` (deleted in Phase 2)
12725
+ * - `device-ops.router.ts` (compat layer — deleted; device-provider ops absorbed here)
12726
+ *
12727
+ * All device provider addons (rtsp, onvif, frigate, …) are hub-local: they may
12728
+ * fork into separate processes but never run on remote cluster agents. Therefore:
12729
+ * - No nodeId routing needed — this is a pure hub singleton.
12730
+ * - The hub's DeviceRegistry is the single source of truth for all live devices.
12731
+ * - No shadow registry or cross-node aggregation required.
12732
+ *
12733
+ * Forked workers register devices back to the hub via `ctx.devices`
12734
+ * (DeviceManagerApi → ctx.api.deviceManager.registerDevice), same as today.
12735
+ */
12718
12736
  /** One child-placement directive on a container's `childLayout`. Structurally
12719
12737
  * identical to `ChildLayoutEntry` in `device-management.ts` — the cap wire
12720
12738
  * shape for the same field. The child is identified by its re-sync-stable
@@ -12813,7 +12831,12 @@ var ConfigEntrySchema = object({
12813
12831
  value: unknown(),
12814
12832
  description: string().optional()
12815
12833
  });
12816
- var LinkedDevicesModeSchema = _enum(["auto", "manual"]);
12834
+ /**
12835
+ * Only `manual` since D356: the operator picks, nothing links itself. The
12836
+ * field survives on the wire because a viewer already OTA'd parses it —
12837
+ * drop it once no shipped client reads `mode`.
12838
+ */
12839
+ var LinkedDevicesModeSchema = _enum(["manual"]);
12817
12840
  /** One resolved linked device — the compact projection consumers need. */
12818
12841
  var LinkedDeviceSchema = object({
12819
12842
  deviceId: number(),
@@ -18382,6 +18405,9 @@ var RetrainStatusSchema = _enum([
18382
18405
  *
18383
18406
  * `debug` does NOT pin; it is attention, not durability.
18384
18407
  *
18408
+ * `debugNote` is the operator's own words about WHAT should be checked on this
18409
+ * track, and it lives and dies with `debug` — see {@link MAX_TRACK_DEBUG_NOTE_LEN}.
18410
+ *
18385
18411
  * `favourited` IS a BOOLEAN pin (durability bit), not a retrain lifecycle.
18386
18412
  * A favourited track is skipped by retention the same way `staging` is, but
18387
18413
  * it does not enter `none|staging|trained` and has no staging budget.
@@ -18392,6 +18418,21 @@ var TrackFlagFields = {
18392
18418
  markForTrain: boolean().optional(),
18393
18419
  /** Operator marked this track for diagnostic attention. */
18394
18420
  debug: boolean().optional(),
18421
+ /**
18422
+ * What the operator wants CHECKED on this track, in their own words.
18423
+ *
18424
+ * The flag alone says "look at this" and nothing about what for; a debug set
18425
+ * reviewed hours later is a list of tracks with no question attached. Bound
18426
+ * to `debug` on the WRITE side — the body clears it when `debug` goes off,
18427
+ * and refuses it on a track whose debug is off — so a note can never outlive
18428
+ * the attention it belongs to.
18429
+ *
18430
+ * `''` is a real value ("marked, nothing to add"); the ABSENT key means
18431
+ * "leave whatever is stored alone", which is what lets a surface turn debug
18432
+ * on without a note (a cancelled prompt) and what lets it edit the note
18433
+ * without touching the flag.
18434
+ */
18435
+ debugNote: string().max(500).optional(),
18395
18436
  /** Operator favourited this track. Pins it against pruning. */
18396
18437
  favourited: boolean().optional()
18397
18438
  };
@@ -18418,6 +18459,12 @@ var TrackFlagsSchema = object({
18418
18459
  trackId: string(),
18419
18460
  markForTrain: boolean(),
18420
18461
  debug: boolean(),
18462
+ /** The note as it STANDS after the write — never absent here (a track with no
18463
+ * note reports `''`), for the same reason the booleans are required: a
18464
+ * surface that has just written must be able to render the note it now owns
18465
+ * without a re-fetch, and an absent key would read as "unchanged" on a
18466
+ * screen that has no previous value to keep. */
18467
+ debugNote: string(),
18421
18468
  favourited: boolean(),
18422
18469
  /** The lifecycle state the boolean was derived from. Required here (unlike on
18423
18470
  * a track row) because this shape is only ever produced by the write body,
@@ -12710,6 +12710,24 @@ method(_void(), _void(), { kind: "mutation" }), method(_void(), _void(), { kind:
12710
12710
  kind: "mutation",
12711
12711
  auth: "admin"
12712
12712
  });
12713
+ /**
12714
+ * Device Manager capability — hub-side singleton that unifies device persistence,
12715
+ * live registry access, and all management operations into a single tRPC surface.
12716
+ *
12717
+ * Replaces:
12718
+ * - `device-persistence` capability (persistence methods absorbed here)
12719
+ * - `device-management.router.ts` (deleted in Phase 2)
12720
+ * - `device-ops.router.ts` (compat layer — deleted; device-provider ops absorbed here)
12721
+ *
12722
+ * All device provider addons (rtsp, onvif, frigate, …) are hub-local: they may
12723
+ * fork into separate processes but never run on remote cluster agents. Therefore:
12724
+ * - No nodeId routing needed — this is a pure hub singleton.
12725
+ * - The hub's DeviceRegistry is the single source of truth for all live devices.
12726
+ * - No shadow registry or cross-node aggregation required.
12727
+ *
12728
+ * Forked workers register devices back to the hub via `ctx.devices`
12729
+ * (DeviceManagerApi → ctx.api.deviceManager.registerDevice), same as today.
12730
+ */
12713
12731
  /** One child-placement directive on a container's `childLayout`. Structurally
12714
12732
  * identical to `ChildLayoutEntry` in `device-management.ts` — the cap wire
12715
12733
  * shape for the same field. The child is identified by its re-sync-stable
@@ -12808,7 +12826,12 @@ var ConfigEntrySchema = object({
12808
12826
  value: unknown(),
12809
12827
  description: string().optional()
12810
12828
  });
12811
- var LinkedDevicesModeSchema = _enum(["auto", "manual"]);
12829
+ /**
12830
+ * Only `manual` since D356: the operator picks, nothing links itself. The
12831
+ * field survives on the wire because a viewer already OTA'd parses it —
12832
+ * drop it once no shipped client reads `mode`.
12833
+ */
12834
+ var LinkedDevicesModeSchema = _enum(["manual"]);
12812
12835
  /** One resolved linked device — the compact projection consumers need. */
12813
12836
  var LinkedDeviceSchema = object({
12814
12837
  deviceId: number(),
@@ -18377,6 +18400,9 @@ var RetrainStatusSchema = _enum([
18377
18400
  *
18378
18401
  * `debug` does NOT pin; it is attention, not durability.
18379
18402
  *
18403
+ * `debugNote` is the operator's own words about WHAT should be checked on this
18404
+ * track, and it lives and dies with `debug` — see {@link MAX_TRACK_DEBUG_NOTE_LEN}.
18405
+ *
18380
18406
  * `favourited` IS a BOOLEAN pin (durability bit), not a retrain lifecycle.
18381
18407
  * A favourited track is skipped by retention the same way `staging` is, but
18382
18408
  * it does not enter `none|staging|trained` and has no staging budget.
@@ -18387,6 +18413,21 @@ var TrackFlagFields = {
18387
18413
  markForTrain: boolean().optional(),
18388
18414
  /** Operator marked this track for diagnostic attention. */
18389
18415
  debug: boolean().optional(),
18416
+ /**
18417
+ * What the operator wants CHECKED on this track, in their own words.
18418
+ *
18419
+ * The flag alone says "look at this" and nothing about what for; a debug set
18420
+ * reviewed hours later is a list of tracks with no question attached. Bound
18421
+ * to `debug` on the WRITE side — the body clears it when `debug` goes off,
18422
+ * and refuses it on a track whose debug is off — so a note can never outlive
18423
+ * the attention it belongs to.
18424
+ *
18425
+ * `''` is a real value ("marked, nothing to add"); the ABSENT key means
18426
+ * "leave whatever is stored alone", which is what lets a surface turn debug
18427
+ * on without a note (a cancelled prompt) and what lets it edit the note
18428
+ * without touching the flag.
18429
+ */
18430
+ debugNote: string().max(500).optional(),
18390
18431
  /** Operator favourited this track. Pins it against pruning. */
18391
18432
  favourited: boolean().optional()
18392
18433
  };
@@ -18413,6 +18454,12 @@ var TrackFlagsSchema = object({
18413
18454
  trackId: string(),
18414
18455
  markForTrain: boolean(),
18415
18456
  debug: boolean(),
18457
+ /** The note as it STANDS after the write — never absent here (a track with no
18458
+ * note reports `''`), for the same reason the booleans are required: a
18459
+ * surface that has just written must be able to render the note it now owns
18460
+ * without a re-fetch, and an absent key would read as "unchanged" on a
18461
+ * screen that has no previous value to keep. */
18462
+ debugNote: string(),
18416
18463
  favourited: boolean(),
18417
18464
  /** The lifecycle state the boolean was derived from. Required here (unlike on
18418
18465
  * a track row) because this shape is only ever produced by the write body,
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@camstack/addon-mqtt-broker",
3
- "version": "1.2.63",
3
+ "version": "1.2.65",
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",