@camstack/addon-export-hap 1.2.73 → 1.2.75

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.
@@ -13438,6 +13438,24 @@ method(_void(), _void(), { kind: "mutation" }), method(_void(), _void(), { kind:
13438
13438
  kind: "mutation",
13439
13439
  auth: "admin"
13440
13440
  });
13441
+ /**
13442
+ * Device Manager capability — hub-side singleton that unifies device persistence,
13443
+ * live registry access, and all management operations into a single tRPC surface.
13444
+ *
13445
+ * Replaces:
13446
+ * - `device-persistence` capability (persistence methods absorbed here)
13447
+ * - `device-management.router.ts` (deleted in Phase 2)
13448
+ * - `device-ops.router.ts` (compat layer — deleted; device-provider ops absorbed here)
13449
+ *
13450
+ * All device provider addons (rtsp, onvif, frigate, …) are hub-local: they may
13451
+ * fork into separate processes but never run on remote cluster agents. Therefore:
13452
+ * - No nodeId routing needed — this is a pure hub singleton.
13453
+ * - The hub's DeviceRegistry is the single source of truth for all live devices.
13454
+ * - No shadow registry or cross-node aggregation required.
13455
+ *
13456
+ * Forked workers register devices back to the hub via `ctx.devices`
13457
+ * (DeviceManagerApi → ctx.api.deviceManager.registerDevice), same as today.
13458
+ */
13441
13459
  /** One child-placement directive on a container's `childLayout`. Structurally
13442
13460
  * identical to `ChildLayoutEntry` in `device-management.ts` — the cap wire
13443
13461
  * shape for the same field. The child is identified by its re-sync-stable
@@ -19086,6 +19104,9 @@ var RetrainStatusSchema = _enum([
19086
19104
  *
19087
19105
  * `debug` does NOT pin; it is attention, not durability.
19088
19106
  *
19107
+ * `debugNote` is the operator's own words about WHAT should be checked on this
19108
+ * track, and it lives and dies with `debug` — see {@link MAX_TRACK_DEBUG_NOTE_LEN}.
19109
+ *
19089
19110
  * `favourited` IS a BOOLEAN pin (durability bit), not a retrain lifecycle.
19090
19111
  * A favourited track is skipped by retention the same way `staging` is, but
19091
19112
  * it does not enter `none|staging|trained` and has no staging budget.
@@ -19096,6 +19117,21 @@ var TrackFlagFields = {
19096
19117
  markForTrain: boolean().optional(),
19097
19118
  /** Operator marked this track for diagnostic attention. */
19098
19119
  debug: boolean().optional(),
19120
+ /**
19121
+ * What the operator wants CHECKED on this track, in their own words.
19122
+ *
19123
+ * The flag alone says "look at this" and nothing about what for; a debug set
19124
+ * reviewed hours later is a list of tracks with no question attached. Bound
19125
+ * to `debug` on the WRITE side — the body clears it when `debug` goes off,
19126
+ * and refuses it on a track whose debug is off — so a note can never outlive
19127
+ * the attention it belongs to.
19128
+ *
19129
+ * `''` is a real value ("marked, nothing to add"); the ABSENT key means
19130
+ * "leave whatever is stored alone", which is what lets a surface turn debug
19131
+ * on without a note (a cancelled prompt) and what lets it edit the note
19132
+ * without touching the flag.
19133
+ */
19134
+ debugNote: string().max(500).optional(),
19099
19135
  /** Operator favourited this track. Pins it against pruning. */
19100
19136
  favourited: boolean().optional()
19101
19137
  };
@@ -19122,6 +19158,12 @@ var TrackFlagsSchema = object({
19122
19158
  trackId: string(),
19123
19159
  markForTrain: boolean(),
19124
19160
  debug: boolean(),
19161
+ /** The note as it STANDS after the write — never absent here (a track with no
19162
+ * note reports `''`), for the same reason the booleans are required: a
19163
+ * surface that has just written must be able to render the note it now owns
19164
+ * without a re-fetch, and an absent key would read as "unchanged" on a
19165
+ * screen that has no previous value to keep. */
19166
+ debugNote: string(),
19125
19167
  favourited: boolean(),
19126
19168
  /** The lifecycle state the boolean was derived from. Required here (unlike on
19127
19169
  * a track row) because this shape is only ever produced by the write body,
@@ -13426,6 +13426,24 @@ method(_void(), _void(), { kind: "mutation" }), method(_void(), _void(), { kind:
13426
13426
  kind: "mutation",
13427
13427
  auth: "admin"
13428
13428
  });
13429
+ /**
13430
+ * Device Manager capability — hub-side singleton that unifies device persistence,
13431
+ * live registry access, and all management operations into a single tRPC surface.
13432
+ *
13433
+ * Replaces:
13434
+ * - `device-persistence` capability (persistence methods absorbed here)
13435
+ * - `device-management.router.ts` (deleted in Phase 2)
13436
+ * - `device-ops.router.ts` (compat layer — deleted; device-provider ops absorbed here)
13437
+ *
13438
+ * All device provider addons (rtsp, onvif, frigate, …) are hub-local: they may
13439
+ * fork into separate processes but never run on remote cluster agents. Therefore:
13440
+ * - No nodeId routing needed — this is a pure hub singleton.
13441
+ * - The hub's DeviceRegistry is the single source of truth for all live devices.
13442
+ * - No shadow registry or cross-node aggregation required.
13443
+ *
13444
+ * Forked workers register devices back to the hub via `ctx.devices`
13445
+ * (DeviceManagerApi → ctx.api.deviceManager.registerDevice), same as today.
13446
+ */
13429
13447
  /** One child-placement directive on a container's `childLayout`. Structurally
13430
13448
  * identical to `ChildLayoutEntry` in `device-management.ts` — the cap wire
13431
13449
  * shape for the same field. The child is identified by its re-sync-stable
@@ -19074,6 +19092,9 @@ var RetrainStatusSchema = _enum([
19074
19092
  *
19075
19093
  * `debug` does NOT pin; it is attention, not durability.
19076
19094
  *
19095
+ * `debugNote` is the operator's own words about WHAT should be checked on this
19096
+ * track, and it lives and dies with `debug` — see {@link MAX_TRACK_DEBUG_NOTE_LEN}.
19097
+ *
19077
19098
  * `favourited` IS a BOOLEAN pin (durability bit), not a retrain lifecycle.
19078
19099
  * A favourited track is skipped by retention the same way `staging` is, but
19079
19100
  * it does not enter `none|staging|trained` and has no staging budget.
@@ -19084,6 +19105,21 @@ var TrackFlagFields = {
19084
19105
  markForTrain: boolean().optional(),
19085
19106
  /** Operator marked this track for diagnostic attention. */
19086
19107
  debug: boolean().optional(),
19108
+ /**
19109
+ * What the operator wants CHECKED on this track, in their own words.
19110
+ *
19111
+ * The flag alone says "look at this" and nothing about what for; a debug set
19112
+ * reviewed hours later is a list of tracks with no question attached. Bound
19113
+ * to `debug` on the WRITE side — the body clears it when `debug` goes off,
19114
+ * and refuses it on a track whose debug is off — so a note can never outlive
19115
+ * the attention it belongs to.
19116
+ *
19117
+ * `''` is a real value ("marked, nothing to add"); the ABSENT key means
19118
+ * "leave whatever is stored alone", which is what lets a surface turn debug
19119
+ * on without a note (a cancelled prompt) and what lets it edit the note
19120
+ * without touching the flag.
19121
+ */
19122
+ debugNote: string().max(500).optional(),
19087
19123
  /** Operator favourited this track. Pins it against pruning. */
19088
19124
  favourited: boolean().optional()
19089
19125
  };
@@ -19110,6 +19146,12 @@ var TrackFlagsSchema = object({
19110
19146
  trackId: string(),
19111
19147
  markForTrain: boolean(),
19112
19148
  debug: boolean(),
19149
+ /** The note as it STANDS after the write — never absent here (a track with no
19150
+ * note reports `''`), for the same reason the booleans are required: a
19151
+ * surface that has just written must be able to render the note it now owns
19152
+ * without a re-fetch, and an absent key would read as "unchanged" on a
19153
+ * screen that has no previous value to keep. */
19154
+ debugNote: string(),
19113
19155
  favourited: boolean(),
19114
19156
  /** The lifecycle state the boolean was derived from. Required here (unlike on
19115
19157
  * 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-export-hap",
3
- "version": "1.2.73",
3
+ "version": "1.2.75",
4
4
  "description": "HomeKit (HAP) exporter for CamStack devices. Publishes each exposed device as its own HomeKit accessory: cameras and doorbells with SRTP streaming, HomeKit Secure Video, motion, two-way audio, PTZ and battery; switches, lights, locks and sensors through a capability→service table.",
5
5
  "keywords": [
6
6
  "camstack",