@camstack/addon-provider-amcrest 0.2.65 → 0.2.67

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
@@ -12922,6 +12922,24 @@ var deviceProviderCapability = {
12922
12922
  })
12923
12923
  }
12924
12924
  };
12925
+ /**
12926
+ * Device Manager capability — hub-side singleton that unifies device persistence,
12927
+ * live registry access, and all management operations into a single tRPC surface.
12928
+ *
12929
+ * Replaces:
12930
+ * - `device-persistence` capability (persistence methods absorbed here)
12931
+ * - `device-management.router.ts` (deleted in Phase 2)
12932
+ * - `device-ops.router.ts` (compat layer — deleted; device-provider ops absorbed here)
12933
+ *
12934
+ * All device provider addons (rtsp, onvif, frigate, …) are hub-local: they may
12935
+ * fork into separate processes but never run on remote cluster agents. Therefore:
12936
+ * - No nodeId routing needed — this is a pure hub singleton.
12937
+ * - The hub's DeviceRegistry is the single source of truth for all live devices.
12938
+ * - No shadow registry or cross-node aggregation required.
12939
+ *
12940
+ * Forked workers register devices back to the hub via `ctx.devices`
12941
+ * (DeviceManagerApi → ctx.api.deviceManager.registerDevice), same as today.
12942
+ */
12925
12943
  /** One child-placement directive on a container's `childLayout`. Structurally
12926
12944
  * identical to `ChildLayoutEntry` in `device-management.ts` — the cap wire
12927
12945
  * shape for the same field. The child is identified by its re-sync-stable
@@ -13020,7 +13038,12 @@ var ConfigEntrySchema = object({
13020
13038
  value: unknown(),
13021
13039
  description: string().optional()
13022
13040
  });
13023
- var LinkedDevicesModeSchema = _enum(["auto", "manual"]);
13041
+ /**
13042
+ * Only `manual` since D356: the operator picks, nothing links itself. The
13043
+ * field survives on the wire because a viewer already OTA'd parses it —
13044
+ * drop it once no shipped client reads `mode`.
13045
+ */
13046
+ var LinkedDevicesModeSchema = _enum(["manual"]);
13024
13047
  /** One resolved linked device — the compact projection consumers need. */
13025
13048
  var LinkedDeviceSchema = object({
13026
13049
  deviceId: number(),
@@ -18648,6 +18671,9 @@ var RetrainStatusSchema = _enum([
18648
18671
  *
18649
18672
  * `debug` does NOT pin; it is attention, not durability.
18650
18673
  *
18674
+ * `debugNote` is the operator's own words about WHAT should be checked on this
18675
+ * track, and it lives and dies with `debug` — see {@link MAX_TRACK_DEBUG_NOTE_LEN}.
18676
+ *
18651
18677
  * `favourited` IS a BOOLEAN pin (durability bit), not a retrain lifecycle.
18652
18678
  * A favourited track is skipped by retention the same way `staging` is, but
18653
18679
  * it does not enter `none|staging|trained` and has no staging budget.
@@ -18658,6 +18684,21 @@ var TrackFlagFields = {
18658
18684
  markForTrain: boolean().optional(),
18659
18685
  /** Operator marked this track for diagnostic attention. */
18660
18686
  debug: boolean().optional(),
18687
+ /**
18688
+ * What the operator wants CHECKED on this track, in their own words.
18689
+ *
18690
+ * The flag alone says "look at this" and nothing about what for; a debug set
18691
+ * reviewed hours later is a list of tracks with no question attached. Bound
18692
+ * to `debug` on the WRITE side — the body clears it when `debug` goes off,
18693
+ * and refuses it on a track whose debug is off — so a note can never outlive
18694
+ * the attention it belongs to.
18695
+ *
18696
+ * `''` is a real value ("marked, nothing to add"); the ABSENT key means
18697
+ * "leave whatever is stored alone", which is what lets a surface turn debug
18698
+ * on without a note (a cancelled prompt) and what lets it edit the note
18699
+ * without touching the flag.
18700
+ */
18701
+ debugNote: string().max(500).optional(),
18661
18702
  /** Operator favourited this track. Pins it against pruning. */
18662
18703
  favourited: boolean().optional()
18663
18704
  };
@@ -18684,6 +18725,12 @@ var TrackFlagsSchema = object({
18684
18725
  trackId: string(),
18685
18726
  markForTrain: boolean(),
18686
18727
  debug: boolean(),
18728
+ /** The note as it STANDS after the write — never absent here (a track with no
18729
+ * note reports `''`), for the same reason the booleans are required: a
18730
+ * surface that has just written must be able to render the note it now owns
18731
+ * without a re-fetch, and an absent key would read as "unchanged" on a
18732
+ * screen that has no previous value to keep. */
18733
+ debugNote: string(),
18687
18734
  favourited: boolean(),
18688
18735
  /** The lifecycle state the boolean was derived from. Required here (unlike on
18689
18736
  * a track row) because this shape is only ever produced by the write body,
package/dist/addon.mjs CHANGED
@@ -12923,6 +12923,24 @@ var deviceProviderCapability = {
12923
12923
  })
12924
12924
  }
12925
12925
  };
12926
+ /**
12927
+ * Device Manager capability — hub-side singleton that unifies device persistence,
12928
+ * live registry access, and all management operations into a single tRPC surface.
12929
+ *
12930
+ * Replaces:
12931
+ * - `device-persistence` capability (persistence methods absorbed here)
12932
+ * - `device-management.router.ts` (deleted in Phase 2)
12933
+ * - `device-ops.router.ts` (compat layer — deleted; device-provider ops absorbed here)
12934
+ *
12935
+ * All device provider addons (rtsp, onvif, frigate, …) are hub-local: they may
12936
+ * fork into separate processes but never run on remote cluster agents. Therefore:
12937
+ * - No nodeId routing needed — this is a pure hub singleton.
12938
+ * - The hub's DeviceRegistry is the single source of truth for all live devices.
12939
+ * - No shadow registry or cross-node aggregation required.
12940
+ *
12941
+ * Forked workers register devices back to the hub via `ctx.devices`
12942
+ * (DeviceManagerApi → ctx.api.deviceManager.registerDevice), same as today.
12943
+ */
12926
12944
  /** One child-placement directive on a container's `childLayout`. Structurally
12927
12945
  * identical to `ChildLayoutEntry` in `device-management.ts` — the cap wire
12928
12946
  * shape for the same field. The child is identified by its re-sync-stable
@@ -13021,7 +13039,12 @@ var ConfigEntrySchema = object({
13021
13039
  value: unknown(),
13022
13040
  description: string().optional()
13023
13041
  });
13024
- var LinkedDevicesModeSchema = _enum(["auto", "manual"]);
13042
+ /**
13043
+ * Only `manual` since D356: the operator picks, nothing links itself. The
13044
+ * field survives on the wire because a viewer already OTA'd parses it —
13045
+ * drop it once no shipped client reads `mode`.
13046
+ */
13047
+ var LinkedDevicesModeSchema = _enum(["manual"]);
13025
13048
  /** One resolved linked device — the compact projection consumers need. */
13026
13049
  var LinkedDeviceSchema = object({
13027
13050
  deviceId: number(),
@@ -18649,6 +18672,9 @@ var RetrainStatusSchema = _enum([
18649
18672
  *
18650
18673
  * `debug` does NOT pin; it is attention, not durability.
18651
18674
  *
18675
+ * `debugNote` is the operator's own words about WHAT should be checked on this
18676
+ * track, and it lives and dies with `debug` — see {@link MAX_TRACK_DEBUG_NOTE_LEN}.
18677
+ *
18652
18678
  * `favourited` IS a BOOLEAN pin (durability bit), not a retrain lifecycle.
18653
18679
  * A favourited track is skipped by retention the same way `staging` is, but
18654
18680
  * it does not enter `none|staging|trained` and has no staging budget.
@@ -18659,6 +18685,21 @@ var TrackFlagFields = {
18659
18685
  markForTrain: boolean().optional(),
18660
18686
  /** Operator marked this track for diagnostic attention. */
18661
18687
  debug: boolean().optional(),
18688
+ /**
18689
+ * What the operator wants CHECKED on this track, in their own words.
18690
+ *
18691
+ * The flag alone says "look at this" and nothing about what for; a debug set
18692
+ * reviewed hours later is a list of tracks with no question attached. Bound
18693
+ * to `debug` on the WRITE side — the body clears it when `debug` goes off,
18694
+ * and refuses it on a track whose debug is off — so a note can never outlive
18695
+ * the attention it belongs to.
18696
+ *
18697
+ * `''` is a real value ("marked, nothing to add"); the ABSENT key means
18698
+ * "leave whatever is stored alone", which is what lets a surface turn debug
18699
+ * on without a note (a cancelled prompt) and what lets it edit the note
18700
+ * without touching the flag.
18701
+ */
18702
+ debugNote: string().max(500).optional(),
18662
18703
  /** Operator favourited this track. Pins it against pruning. */
18663
18704
  favourited: boolean().optional()
18664
18705
  };
@@ -18685,6 +18726,12 @@ var TrackFlagsSchema = object({
18685
18726
  trackId: string(),
18686
18727
  markForTrain: boolean(),
18687
18728
  debug: boolean(),
18729
+ /** The note as it STANDS after the write — never absent here (a track with no
18730
+ * note reports `''`), for the same reason the booleans are required: a
18731
+ * surface that has just written must be able to render the note it now owns
18732
+ * without a re-fetch, and an absent key would read as "unchanged" on a
18733
+ * screen that has no previous value to keep. */
18734
+ debugNote: string(),
18688
18735
  favourited: boolean(),
18689
18736
  /** The lifecycle state the boolean was derived from. Required here (unlike on
18690
18737
  * 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-provider-amcrest",
3
- "version": "0.2.65",
3
+ "version": "0.2.67",
4
4
  "description": "Amcrest/Dahua camera device provider addon for CamStack — Dahua CGI over HTTP(S) with digest auth (snapshot, RTSP catalog, PTZ, image/day-night config)",
5
5
  "keywords": [
6
6
  "camstack",