@camstack/addon-provider-tuya 0.2.63 → 0.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.
package/dist/addon.js CHANGED
@@ -13764,6 +13764,24 @@ var deviceProviderCapability = {
13764
13764
  })
13765
13765
  }
13766
13766
  };
13767
+ /**
13768
+ * Device Manager capability — hub-side singleton that unifies device persistence,
13769
+ * live registry access, and all management operations into a single tRPC surface.
13770
+ *
13771
+ * Replaces:
13772
+ * - `device-persistence` capability (persistence methods absorbed here)
13773
+ * - `device-management.router.ts` (deleted in Phase 2)
13774
+ * - `device-ops.router.ts` (compat layer — deleted; device-provider ops absorbed here)
13775
+ *
13776
+ * All device provider addons (rtsp, onvif, frigate, …) are hub-local: they may
13777
+ * fork into separate processes but never run on remote cluster agents. Therefore:
13778
+ * - No nodeId routing needed — this is a pure hub singleton.
13779
+ * - The hub's DeviceRegistry is the single source of truth for all live devices.
13780
+ * - No shadow registry or cross-node aggregation required.
13781
+ *
13782
+ * Forked workers register devices back to the hub via `ctx.devices`
13783
+ * (DeviceManagerApi → ctx.api.deviceManager.registerDevice), same as today.
13784
+ */
13767
13785
  /** One child-placement directive on a container's `childLayout`. Structurally
13768
13786
  * identical to `ChildLayoutEntry` in `device-management.ts` — the cap wire
13769
13787
  * shape for the same field. The child is identified by its re-sync-stable
@@ -13862,7 +13880,12 @@ var ConfigEntrySchema = object({
13862
13880
  value: unknown(),
13863
13881
  description: string().optional()
13864
13882
  });
13865
- var LinkedDevicesModeSchema = _enum(["auto", "manual"]);
13883
+ /**
13884
+ * Only `manual` since D356: the operator picks, nothing links itself. The
13885
+ * field survives on the wire because a viewer already OTA'd parses it —
13886
+ * drop it once no shipped client reads `mode`.
13887
+ */
13888
+ var LinkedDevicesModeSchema = _enum(["manual"]);
13866
13889
  /** One resolved linked device — the compact projection consumers need. */
13867
13890
  var LinkedDeviceSchema = object({
13868
13891
  deviceId: number(),
@@ -19490,6 +19513,9 @@ var RetrainStatusSchema = _enum([
19490
19513
  *
19491
19514
  * `debug` does NOT pin; it is attention, not durability.
19492
19515
  *
19516
+ * `debugNote` is the operator's own words about WHAT should be checked on this
19517
+ * track, and it lives and dies with `debug` — see {@link MAX_TRACK_DEBUG_NOTE_LEN}.
19518
+ *
19493
19519
  * `favourited` IS a BOOLEAN pin (durability bit), not a retrain lifecycle.
19494
19520
  * A favourited track is skipped by retention the same way `staging` is, but
19495
19521
  * it does not enter `none|staging|trained` and has no staging budget.
@@ -19500,6 +19526,21 @@ var TrackFlagFields = {
19500
19526
  markForTrain: boolean().optional(),
19501
19527
  /** Operator marked this track for diagnostic attention. */
19502
19528
  debug: boolean().optional(),
19529
+ /**
19530
+ * What the operator wants CHECKED on this track, in their own words.
19531
+ *
19532
+ * The flag alone says "look at this" and nothing about what for; a debug set
19533
+ * reviewed hours later is a list of tracks with no question attached. Bound
19534
+ * to `debug` on the WRITE side — the body clears it when `debug` goes off,
19535
+ * and refuses it on a track whose debug is off — so a note can never outlive
19536
+ * the attention it belongs to.
19537
+ *
19538
+ * `''` is a real value ("marked, nothing to add"); the ABSENT key means
19539
+ * "leave whatever is stored alone", which is what lets a surface turn debug
19540
+ * on without a note (a cancelled prompt) and what lets it edit the note
19541
+ * without touching the flag.
19542
+ */
19543
+ debugNote: string().max(500).optional(),
19503
19544
  /** Operator favourited this track. Pins it against pruning. */
19504
19545
  favourited: boolean().optional()
19505
19546
  };
@@ -19526,6 +19567,12 @@ var TrackFlagsSchema = object({
19526
19567
  trackId: string(),
19527
19568
  markForTrain: boolean(),
19528
19569
  debug: boolean(),
19570
+ /** The note as it STANDS after the write — never absent here (a track with no
19571
+ * note reports `''`), for the same reason the booleans are required: a
19572
+ * surface that has just written must be able to render the note it now owns
19573
+ * without a re-fetch, and an absent key would read as "unchanged" on a
19574
+ * screen that has no previous value to keep. */
19575
+ debugNote: string(),
19529
19576
  favourited: boolean(),
19530
19577
  /** The lifecycle state the boolean was derived from. Required here (unlike on
19531
19578
  * a track row) because this shape is only ever produced by the write body,
package/dist/addon.mjs CHANGED
@@ -13763,6 +13763,24 @@ var deviceProviderCapability = {
13763
13763
  })
13764
13764
  }
13765
13765
  };
13766
+ /**
13767
+ * Device Manager capability — hub-side singleton that unifies device persistence,
13768
+ * live registry access, and all management operations into a single tRPC surface.
13769
+ *
13770
+ * Replaces:
13771
+ * - `device-persistence` capability (persistence methods absorbed here)
13772
+ * - `device-management.router.ts` (deleted in Phase 2)
13773
+ * - `device-ops.router.ts` (compat layer — deleted; device-provider ops absorbed here)
13774
+ *
13775
+ * All device provider addons (rtsp, onvif, frigate, …) are hub-local: they may
13776
+ * fork into separate processes but never run on remote cluster agents. Therefore:
13777
+ * - No nodeId routing needed — this is a pure hub singleton.
13778
+ * - The hub's DeviceRegistry is the single source of truth for all live devices.
13779
+ * - No shadow registry or cross-node aggregation required.
13780
+ *
13781
+ * Forked workers register devices back to the hub via `ctx.devices`
13782
+ * (DeviceManagerApi → ctx.api.deviceManager.registerDevice), same as today.
13783
+ */
13766
13784
  /** One child-placement directive on a container's `childLayout`. Structurally
13767
13785
  * identical to `ChildLayoutEntry` in `device-management.ts` — the cap wire
13768
13786
  * shape for the same field. The child is identified by its re-sync-stable
@@ -13861,7 +13879,12 @@ var ConfigEntrySchema = object({
13861
13879
  value: unknown(),
13862
13880
  description: string().optional()
13863
13881
  });
13864
- var LinkedDevicesModeSchema = _enum(["auto", "manual"]);
13882
+ /**
13883
+ * Only `manual` since D356: the operator picks, nothing links itself. The
13884
+ * field survives on the wire because a viewer already OTA'd parses it —
13885
+ * drop it once no shipped client reads `mode`.
13886
+ */
13887
+ var LinkedDevicesModeSchema = _enum(["manual"]);
13865
13888
  /** One resolved linked device — the compact projection consumers need. */
13866
13889
  var LinkedDeviceSchema = object({
13867
13890
  deviceId: number(),
@@ -19489,6 +19512,9 @@ var RetrainStatusSchema = _enum([
19489
19512
  *
19490
19513
  * `debug` does NOT pin; it is attention, not durability.
19491
19514
  *
19515
+ * `debugNote` is the operator's own words about WHAT should be checked on this
19516
+ * track, and it lives and dies with `debug` — see {@link MAX_TRACK_DEBUG_NOTE_LEN}.
19517
+ *
19492
19518
  * `favourited` IS a BOOLEAN pin (durability bit), not a retrain lifecycle.
19493
19519
  * A favourited track is skipped by retention the same way `staging` is, but
19494
19520
  * it does not enter `none|staging|trained` and has no staging budget.
@@ -19499,6 +19525,21 @@ var TrackFlagFields = {
19499
19525
  markForTrain: boolean().optional(),
19500
19526
  /** Operator marked this track for diagnostic attention. */
19501
19527
  debug: boolean().optional(),
19528
+ /**
19529
+ * What the operator wants CHECKED on this track, in their own words.
19530
+ *
19531
+ * The flag alone says "look at this" and nothing about what for; a debug set
19532
+ * reviewed hours later is a list of tracks with no question attached. Bound
19533
+ * to `debug` on the WRITE side — the body clears it when `debug` goes off,
19534
+ * and refuses it on a track whose debug is off — so a note can never outlive
19535
+ * the attention it belongs to.
19536
+ *
19537
+ * `''` is a real value ("marked, nothing to add"); the ABSENT key means
19538
+ * "leave whatever is stored alone", which is what lets a surface turn debug
19539
+ * on without a note (a cancelled prompt) and what lets it edit the note
19540
+ * without touching the flag.
19541
+ */
19542
+ debugNote: string().max(500).optional(),
19502
19543
  /** Operator favourited this track. Pins it against pruning. */
19503
19544
  favourited: boolean().optional()
19504
19545
  };
@@ -19525,6 +19566,12 @@ var TrackFlagsSchema = object({
19525
19566
  trackId: string(),
19526
19567
  markForTrain: boolean(),
19527
19568
  debug: boolean(),
19569
+ /** The note as it STANDS after the write — never absent here (a track with no
19570
+ * note reports `''`), for the same reason the booleans are required: a
19571
+ * surface that has just written must be able to render the note it now owns
19572
+ * without a re-fetch, and an absent key would read as "unchanged" on a
19573
+ * screen that has no previous value to keep. */
19574
+ debugNote: string(),
19528
19575
  favourited: boolean(),
19529
19576
  /** The lifecycle state the boolean was derived from. Required here (unlike on
19530
19577
  * 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-tuya",
3
- "version": "0.2.63",
3
+ "version": "0.2.65",
4
4
  "description": "Tuya / Smart Life device-provider addon for CamStack — account-onboarded (Tuya IoT cloud fetch of device localKeys) + LOCAL DP control via the @apocaliss92/nodetuya encrypted-LAN client, exposing switch / water-heater-family kettle entities",
5
5
  "keywords": [
6
6
  "camstack",