@camstack/addon-provider-homematic 1.2.64 → 1.2.66
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 +51 -1
- package/dist/addon.mjs +51 -1
- package/package.json +1 -1
package/dist/addon.js
CHANGED
|
@@ -13002,6 +13002,24 @@ var deviceProviderCapability = {
|
|
|
13002
13002
|
})
|
|
13003
13003
|
}
|
|
13004
13004
|
};
|
|
13005
|
+
/**
|
|
13006
|
+
* Device Manager capability — hub-side singleton that unifies device persistence,
|
|
13007
|
+
* live registry access, and all management operations into a single tRPC surface.
|
|
13008
|
+
*
|
|
13009
|
+
* Replaces:
|
|
13010
|
+
* - `device-persistence` capability (persistence methods absorbed here)
|
|
13011
|
+
* - `device-management.router.ts` (deleted in Phase 2)
|
|
13012
|
+
* - `device-ops.router.ts` (compat layer — deleted; device-provider ops absorbed here)
|
|
13013
|
+
*
|
|
13014
|
+
* All device provider addons (rtsp, onvif, frigate, …) are hub-local: they may
|
|
13015
|
+
* fork into separate processes but never run on remote cluster agents. Therefore:
|
|
13016
|
+
* - No nodeId routing needed — this is a pure hub singleton.
|
|
13017
|
+
* - The hub's DeviceRegistry is the single source of truth for all live devices.
|
|
13018
|
+
* - No shadow registry or cross-node aggregation required.
|
|
13019
|
+
*
|
|
13020
|
+
* Forked workers register devices back to the hub via `ctx.devices`
|
|
13021
|
+
* (DeviceManagerApi → ctx.api.deviceManager.registerDevice), same as today.
|
|
13022
|
+
*/
|
|
13005
13023
|
/** One child-placement directive on a container's `childLayout`. Structurally
|
|
13006
13024
|
* identical to `ChildLayoutEntry` in `device-management.ts` — the cap wire
|
|
13007
13025
|
* shape for the same field. The child is identified by its re-sync-stable
|
|
@@ -13100,7 +13118,12 @@ var ConfigEntrySchema = object({
|
|
|
13100
13118
|
value: unknown(),
|
|
13101
13119
|
description: string().optional()
|
|
13102
13120
|
});
|
|
13103
|
-
|
|
13121
|
+
/**
|
|
13122
|
+
* Only `manual` since D356: the operator picks, nothing links itself. The
|
|
13123
|
+
* field survives on the wire because a viewer already OTA'd parses it —
|
|
13124
|
+
* drop it once no shipped client reads `mode`.
|
|
13125
|
+
*/
|
|
13126
|
+
var LinkedDevicesModeSchema = _enum(["manual"]);
|
|
13104
13127
|
/** One resolved linked device — the compact projection consumers need. */
|
|
13105
13128
|
var LinkedDeviceSchema = object({
|
|
13106
13129
|
deviceId: number(),
|
|
@@ -18728,6 +18751,9 @@ var RetrainStatusSchema = _enum([
|
|
|
18728
18751
|
*
|
|
18729
18752
|
* `debug` does NOT pin; it is attention, not durability.
|
|
18730
18753
|
*
|
|
18754
|
+
* `debugNote` is the operator's own words about WHAT should be checked on this
|
|
18755
|
+
* track, and it lives and dies with `debug` — see {@link MAX_TRACK_DEBUG_NOTE_LEN}.
|
|
18756
|
+
*
|
|
18731
18757
|
* `favourited` IS a BOOLEAN pin (durability bit), not a retrain lifecycle.
|
|
18732
18758
|
* A favourited track is skipped by retention the same way `staging` is, but
|
|
18733
18759
|
* it does not enter `none|staging|trained` and has no staging budget.
|
|
@@ -18738,6 +18764,21 @@ var TrackFlagFields = {
|
|
|
18738
18764
|
markForTrain: boolean().optional(),
|
|
18739
18765
|
/** Operator marked this track for diagnostic attention. */
|
|
18740
18766
|
debug: boolean().optional(),
|
|
18767
|
+
/**
|
|
18768
|
+
* What the operator wants CHECKED on this track, in their own words.
|
|
18769
|
+
*
|
|
18770
|
+
* The flag alone says "look at this" and nothing about what for; a debug set
|
|
18771
|
+
* reviewed hours later is a list of tracks with no question attached. Bound
|
|
18772
|
+
* to `debug` on the WRITE side — the body clears it when `debug` goes off,
|
|
18773
|
+
* and refuses it on a track whose debug is off — so a note can never outlive
|
|
18774
|
+
* the attention it belongs to.
|
|
18775
|
+
*
|
|
18776
|
+
* `''` is a real value ("marked, nothing to add"); the ABSENT key means
|
|
18777
|
+
* "leave whatever is stored alone", which is what lets a surface turn debug
|
|
18778
|
+
* on without a note (a cancelled prompt) and what lets it edit the note
|
|
18779
|
+
* without touching the flag.
|
|
18780
|
+
*/
|
|
18781
|
+
debugNote: string().max(500).optional(),
|
|
18741
18782
|
/** Operator favourited this track. Pins it against pruning. */
|
|
18742
18783
|
favourited: boolean().optional()
|
|
18743
18784
|
};
|
|
@@ -18764,6 +18805,12 @@ var TrackFlagsSchema = object({
|
|
|
18764
18805
|
trackId: string(),
|
|
18765
18806
|
markForTrain: boolean(),
|
|
18766
18807
|
debug: boolean(),
|
|
18808
|
+
/** The note as it STANDS after the write — never absent here (a track with no
|
|
18809
|
+
* note reports `''`), for the same reason the booleans are required: a
|
|
18810
|
+
* surface that has just written must be able to render the note it now owns
|
|
18811
|
+
* without a re-fetch, and an absent key would read as "unchanged" on a
|
|
18812
|
+
* screen that has no previous value to keep. */
|
|
18813
|
+
debugNote: string(),
|
|
18767
18814
|
favourited: boolean(),
|
|
18768
18815
|
/** The lifecycle state the boolean was derived from. Required here (unlike on
|
|
18769
18816
|
* a track row) because this shape is only ever produced by the write body,
|
|
@@ -64294,6 +64341,9 @@ var HmIntegrationManager = class {
|
|
|
64294
64341
|
await facade.start();
|
|
64295
64342
|
this.#deviceCount = facade.devices().length;
|
|
64296
64343
|
this.#lastCheckedAt = Date.now();
|
|
64344
|
+
this.#status = "connected";
|
|
64345
|
+
this.#error = null;
|
|
64346
|
+
this.#onConnected(this.#id);
|
|
64297
64347
|
this.#logger.info("HmIntegrationManager: facade started", {
|
|
64298
64348
|
tags: { brokerId: this.#id },
|
|
64299
64349
|
meta: {
|
package/dist/addon.mjs
CHANGED
|
@@ -13003,6 +13003,24 @@ var deviceProviderCapability = {
|
|
|
13003
13003
|
})
|
|
13004
13004
|
}
|
|
13005
13005
|
};
|
|
13006
|
+
/**
|
|
13007
|
+
* Device Manager capability — hub-side singleton that unifies device persistence,
|
|
13008
|
+
* live registry access, and all management operations into a single tRPC surface.
|
|
13009
|
+
*
|
|
13010
|
+
* Replaces:
|
|
13011
|
+
* - `device-persistence` capability (persistence methods absorbed here)
|
|
13012
|
+
* - `device-management.router.ts` (deleted in Phase 2)
|
|
13013
|
+
* - `device-ops.router.ts` (compat layer — deleted; device-provider ops absorbed here)
|
|
13014
|
+
*
|
|
13015
|
+
* All device provider addons (rtsp, onvif, frigate, …) are hub-local: they may
|
|
13016
|
+
* fork into separate processes but never run on remote cluster agents. Therefore:
|
|
13017
|
+
* - No nodeId routing needed — this is a pure hub singleton.
|
|
13018
|
+
* - The hub's DeviceRegistry is the single source of truth for all live devices.
|
|
13019
|
+
* - No shadow registry or cross-node aggregation required.
|
|
13020
|
+
*
|
|
13021
|
+
* Forked workers register devices back to the hub via `ctx.devices`
|
|
13022
|
+
* (DeviceManagerApi → ctx.api.deviceManager.registerDevice), same as today.
|
|
13023
|
+
*/
|
|
13006
13024
|
/** One child-placement directive on a container's `childLayout`. Structurally
|
|
13007
13025
|
* identical to `ChildLayoutEntry` in `device-management.ts` — the cap wire
|
|
13008
13026
|
* shape for the same field. The child is identified by its re-sync-stable
|
|
@@ -13101,7 +13119,12 @@ var ConfigEntrySchema = object({
|
|
|
13101
13119
|
value: unknown(),
|
|
13102
13120
|
description: string().optional()
|
|
13103
13121
|
});
|
|
13104
|
-
|
|
13122
|
+
/**
|
|
13123
|
+
* Only `manual` since D356: the operator picks, nothing links itself. The
|
|
13124
|
+
* field survives on the wire because a viewer already OTA'd parses it —
|
|
13125
|
+
* drop it once no shipped client reads `mode`.
|
|
13126
|
+
*/
|
|
13127
|
+
var LinkedDevicesModeSchema = _enum(["manual"]);
|
|
13105
13128
|
/** One resolved linked device — the compact projection consumers need. */
|
|
13106
13129
|
var LinkedDeviceSchema = object({
|
|
13107
13130
|
deviceId: number(),
|
|
@@ -18729,6 +18752,9 @@ var RetrainStatusSchema = _enum([
|
|
|
18729
18752
|
*
|
|
18730
18753
|
* `debug` does NOT pin; it is attention, not durability.
|
|
18731
18754
|
*
|
|
18755
|
+
* `debugNote` is the operator's own words about WHAT should be checked on this
|
|
18756
|
+
* track, and it lives and dies with `debug` — see {@link MAX_TRACK_DEBUG_NOTE_LEN}.
|
|
18757
|
+
*
|
|
18732
18758
|
* `favourited` IS a BOOLEAN pin (durability bit), not a retrain lifecycle.
|
|
18733
18759
|
* A favourited track is skipped by retention the same way `staging` is, but
|
|
18734
18760
|
* it does not enter `none|staging|trained` and has no staging budget.
|
|
@@ -18739,6 +18765,21 @@ var TrackFlagFields = {
|
|
|
18739
18765
|
markForTrain: boolean().optional(),
|
|
18740
18766
|
/** Operator marked this track for diagnostic attention. */
|
|
18741
18767
|
debug: boolean().optional(),
|
|
18768
|
+
/**
|
|
18769
|
+
* What the operator wants CHECKED on this track, in their own words.
|
|
18770
|
+
*
|
|
18771
|
+
* The flag alone says "look at this" and nothing about what for; a debug set
|
|
18772
|
+
* reviewed hours later is a list of tracks with no question attached. Bound
|
|
18773
|
+
* to `debug` on the WRITE side — the body clears it when `debug` goes off,
|
|
18774
|
+
* and refuses it on a track whose debug is off — so a note can never outlive
|
|
18775
|
+
* the attention it belongs to.
|
|
18776
|
+
*
|
|
18777
|
+
* `''` is a real value ("marked, nothing to add"); the ABSENT key means
|
|
18778
|
+
* "leave whatever is stored alone", which is what lets a surface turn debug
|
|
18779
|
+
* on without a note (a cancelled prompt) and what lets it edit the note
|
|
18780
|
+
* without touching the flag.
|
|
18781
|
+
*/
|
|
18782
|
+
debugNote: string().max(500).optional(),
|
|
18742
18783
|
/** Operator favourited this track. Pins it against pruning. */
|
|
18743
18784
|
favourited: boolean().optional()
|
|
18744
18785
|
};
|
|
@@ -18765,6 +18806,12 @@ var TrackFlagsSchema = object({
|
|
|
18765
18806
|
trackId: string(),
|
|
18766
18807
|
markForTrain: boolean(),
|
|
18767
18808
|
debug: boolean(),
|
|
18809
|
+
/** The note as it STANDS after the write — never absent here (a track with no
|
|
18810
|
+
* note reports `''`), for the same reason the booleans are required: a
|
|
18811
|
+
* surface that has just written must be able to render the note it now owns
|
|
18812
|
+
* without a re-fetch, and an absent key would read as "unchanged" on a
|
|
18813
|
+
* screen that has no previous value to keep. */
|
|
18814
|
+
debugNote: string(),
|
|
18768
18815
|
favourited: boolean(),
|
|
18769
18816
|
/** The lifecycle state the boolean was derived from. Required here (unlike on
|
|
18770
18817
|
* a track row) because this shape is only ever produced by the write body,
|
|
@@ -64295,6 +64342,9 @@ var HmIntegrationManager = class {
|
|
|
64295
64342
|
await facade.start();
|
|
64296
64343
|
this.#deviceCount = facade.devices().length;
|
|
64297
64344
|
this.#lastCheckedAt = Date.now();
|
|
64345
|
+
this.#status = "connected";
|
|
64346
|
+
this.#error = null;
|
|
64347
|
+
this.#onConnected(this.#id);
|
|
64298
64348
|
this.#logger.info("HmIntegrationManager: facade started", {
|
|
64299
64349
|
tags: { brokerId: this.#id },
|
|
64300
64350
|
meta: {
|
package/package.json
CHANGED