@camstack/addon-provider-homeassistant 1.2.646 → 1.2.647
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/CHANGELOG.md +6 -0
- package/dist/addon.js +1 -1
- package/dist/addon.mjs +1 -1
- package/dist/{ha-broker-source-DRIYmtMd.mjs → ha-broker-source-B6wqfEUz.mjs} +151 -8
- package/dist/{ha-broker-source-gQYTcasw.js → ha-broker-source-BFFi4NDH.js} +151 -8
- package/dist/ha-export/ha-export.addon.js +5 -1
- package/dist/ha-export/ha-export.addon.mjs +5 -1
- package/package.json +2 -2
package/CHANGELOG.md
CHANGED
|
@@ -7,6 +7,12 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
|
|
|
7
7
|
|
|
8
8
|
## [Unreleased]
|
|
9
9
|
|
|
10
|
+
## [1.2.647] - 2026-11-02
|
|
11
|
+
|
|
12
|
+
### Changed
|
|
13
|
+
|
|
14
|
+
- The new do-not-disturb capability is recorded as not exported to Home Assistant
|
|
15
|
+
|
|
10
16
|
## [1.2.646] - 2026-11-01
|
|
11
17
|
|
|
12
18
|
### Changed
|
package/dist/addon.js
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
|
|
2
|
-
const require_ha_broker_source = require("./ha-broker-source-
|
|
2
|
+
const require_ha_broker_source = require("./ha-broker-source-BFFi4NDH.js");
|
|
3
3
|
let node_crypto = require("node:crypto");
|
|
4
4
|
let node_zlib = require("node:zlib");
|
|
5
5
|
//#region src/ha-admin-link.ts
|
package/dist/addon.mjs
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { $ as humiditySensorCapability, $t as number, A as brokerCapability, At as temperatureSensorCapability, Bt as RecordSecretUnavailableError, C as alarmPanelCapability, Ct as runningFromVacuumState, D as bestLocationMatch, Dt as smokeCapability, E as batteryCapability, F as carbonMonoxideCapability, Ft as valveCapability, G as deviceAdoptionCapability, Gt as entryBody, H as controlCapability, Ht as createEvent, I as climateControlCapability, It as vibrationCapability, J as eventEmitterCapability, Jt as _enum, L as colorCapability, Lt as waterHeaterCapability, M as buildDeviceAdminUrl, Mt as tryConvertUnit, N as buttonCapability, Nt as updateCapability, O as binaryCapability, Ot as switchCapability, P as calendarSourceCapability, Pt as vacuumControlCapability, Q as humidifierCapability, Qt as literal, R as connectivityCapability, Rt as weatherCapability, S as airQualitySensorCapability, St as runningFromMediaPlayer, T as automationControlCapability, Tt as scriptRunnerCapability, U as coverCapability, Ut as defineEntryKind, V as contactCapability, Vt as baseUnitOf, W as deviceAdminLinkCapability, Wt as defineRecordKinds, X as floodCapability, Xt as boolean, Y as fanControlCapability, Yt as array, Z as gasCapability, Zt as discriminatedUnion, _t as publicEndpointReaderFrom, a as BaseDevice, an as url, at as motionCapability, b as accessoriesCapability, cn as DeviceType, ct as notifierCapability, dt as parseAdminBase, en as object, et as imageCapability, ft as powerMeterCapability, ht as pressureSensorCapability, in as unknown, it as mediaPlayerCapability, j as buildAddonRouteProvider, jt as tryConvertDelta, k as brightnessCapability, kt as tamperCapability, ln as errMsg, lt as numericSensorCapability, mt as presenceCapability, nn as string, nt as lawnMowerControlCapability, o as BaseDeviceProvider, on as DeviceFeature, ot as normalizeUnit, p as EnumSensorDateTimeFormatSchema, pt as prepareNotification, q as enumSensorCapability, rn as union, rt as lockControlCapability, sn as DeviceRole, st as notificationOutputCapability, t as HA_BROKER_KIND, tn as record, tt as ingestReading, un as EventCategory, v as RUNNING_STATE_COLD, vt as quantityFromUnit, w as ambientLightSensorCapability, wt as runningStateCapability, x as addonRoutesCapability, xt as runningFromLawnMower, y as TargetSchema, yt as resolveAttachmentUrls } from "./ha-broker-source-
|
|
1
|
+
import { $ as humiditySensorCapability, $t as number, A as brokerCapability, At as temperatureSensorCapability, Bt as RecordSecretUnavailableError, C as alarmPanelCapability, Ct as runningFromVacuumState, D as bestLocationMatch, Dt as smokeCapability, E as batteryCapability, F as carbonMonoxideCapability, Ft as valveCapability, G as deviceAdoptionCapability, Gt as entryBody, H as controlCapability, Ht as createEvent, I as climateControlCapability, It as vibrationCapability, J as eventEmitterCapability, Jt as _enum, L as colorCapability, Lt as waterHeaterCapability, M as buildDeviceAdminUrl, Mt as tryConvertUnit, N as buttonCapability, Nt as updateCapability, O as binaryCapability, Ot as switchCapability, P as calendarSourceCapability, Pt as vacuumControlCapability, Q as humidifierCapability, Qt as literal, R as connectivityCapability, Rt as weatherCapability, S as airQualitySensorCapability, St as runningFromMediaPlayer, T as automationControlCapability, Tt as scriptRunnerCapability, U as coverCapability, Ut as defineEntryKind, V as contactCapability, Vt as baseUnitOf, W as deviceAdminLinkCapability, Wt as defineRecordKinds, X as floodCapability, Xt as boolean, Y as fanControlCapability, Yt as array, Z as gasCapability, Zt as discriminatedUnion, _t as publicEndpointReaderFrom, a as BaseDevice, an as url, at as motionCapability, b as accessoriesCapability, cn as DeviceType, ct as notifierCapability, dt as parseAdminBase, en as object, et as imageCapability, ft as powerMeterCapability, ht as pressureSensorCapability, in as unknown, it as mediaPlayerCapability, j as buildAddonRouteProvider, jt as tryConvertDelta, k as brightnessCapability, kt as tamperCapability, ln as errMsg, lt as numericSensorCapability, mt as presenceCapability, nn as string, nt as lawnMowerControlCapability, o as BaseDeviceProvider, on as DeviceFeature, ot as normalizeUnit, p as EnumSensorDateTimeFormatSchema, pt as prepareNotification, q as enumSensorCapability, rn as union, rt as lockControlCapability, sn as DeviceRole, st as notificationOutputCapability, t as HA_BROKER_KIND, tn as record, tt as ingestReading, un as EventCategory, v as RUNNING_STATE_COLD, vt as quantityFromUnit, w as ambientLightSensorCapability, wt as runningStateCapability, x as addonRoutesCapability, xt as runningFromLawnMower, y as TargetSchema, yt as resolveAttachmentUrls } from "./ha-broker-source-B6wqfEUz.mjs";
|
|
2
2
|
import { randomUUID } from "node:crypto";
|
|
3
3
|
import { brotliCompressSync, deflateSync, gzipSync } from "node:zlib";
|
|
4
4
|
//#region src/ha-admin-link.ts
|
|
@@ -5971,7 +5971,7 @@ var ZodIssueCode = {
|
|
|
5971
5971
|
var ZodFirstPartyTypeKind;
|
|
5972
5972
|
ZodFirstPartyTypeKind || (ZodFirstPartyTypeKind = {});
|
|
5973
5973
|
//#endregion
|
|
5974
|
-
//#region ../types/dist/sleep-
|
|
5974
|
+
//#region ../types/dist/sleep-B-vp7x15.mjs
|
|
5975
5975
|
/**
|
|
5976
5976
|
* The audio chunk plane's byte format, and the ONE expansion from a coded
|
|
5977
5977
|
* window to float samples (D455).
|
|
@@ -9717,6 +9717,7 @@ var CAP_NAMES = Object.freeze([
|
|
|
9717
9717
|
"device-status",
|
|
9718
9718
|
"dishwasher",
|
|
9719
9719
|
"display-palette",
|
|
9720
|
+
"do-not-disturb",
|
|
9720
9721
|
"doorbell",
|
|
9721
9722
|
"embedding-encoder",
|
|
9722
9723
|
"enum-sensor",
|
|
@@ -10476,6 +10477,10 @@ Object.freeze({
|
|
|
10476
10477
|
"valueType": "string"
|
|
10477
10478
|
}
|
|
10478
10479
|
],
|
|
10480
|
+
"do-not-disturb": [{
|
|
10481
|
+
"path": "enabled",
|
|
10482
|
+
"valueType": "boolean"
|
|
10483
|
+
}],
|
|
10479
10484
|
"doorbell": [{
|
|
10480
10485
|
"path": "lastPressedAt",
|
|
10481
10486
|
"valueType": "number"
|
|
@@ -20042,6 +20047,33 @@ var APPLIANCE_CAP_VOCABULARY = {
|
|
|
20042
20047
|
}
|
|
20043
20048
|
]
|
|
20044
20049
|
},
|
|
20050
|
+
"do-not-disturb": {
|
|
20051
|
+
scope: "device",
|
|
20052
|
+
noun: t("Do not disturb", "Non disturbare"),
|
|
20053
|
+
actions: [{
|
|
20054
|
+
id: "dnd.on",
|
|
20055
|
+
method: "setEnabled",
|
|
20056
|
+
label: t("Do not disturb on", "Attiva Non disturbare"),
|
|
20057
|
+
phrase: t("Turn on Do not disturb on {device}", "Attiva Non disturbare su {device}"),
|
|
20058
|
+
icon: "bell-off",
|
|
20059
|
+
args: { enabled: true }
|
|
20060
|
+
}, {
|
|
20061
|
+
id: "dnd.off",
|
|
20062
|
+
method: "setEnabled",
|
|
20063
|
+
label: t("Do not disturb off", "Disattiva Non disturbare"),
|
|
20064
|
+
phrase: t("Turn off Do not disturb on {device}", "Disattiva Non disturbare su {device}"),
|
|
20065
|
+
icon: "bell",
|
|
20066
|
+
args: { enabled: false }
|
|
20067
|
+
}],
|
|
20068
|
+
state: [{
|
|
20069
|
+
kind: "boolean",
|
|
20070
|
+
field: "enabled",
|
|
20071
|
+
label: t("Do not disturb", "Non disturbare"),
|
|
20072
|
+
whenTrue: t("When Do not disturb turns on on {device}", "Quando {device} attiva Non disturbare"),
|
|
20073
|
+
whenFalse: t("When Do not disturb turns off on {device}", "Quando {device} disattiva Non disturbare"),
|
|
20074
|
+
icon: "bell-off"
|
|
20075
|
+
}]
|
|
20076
|
+
},
|
|
20045
20077
|
update: {
|
|
20046
20078
|
scope: "device",
|
|
20047
20079
|
noun: t("Firmware update", "Aggiornamento firmware"),
|
|
@@ -42252,14 +42284,16 @@ var DeviceIsLeafSchema = object({
|
|
|
42252
42284
|
});
|
|
42253
42285
|
/**
|
|
42254
42286
|
* True when the camera currently has a PARKED object matching `subjects` in at
|
|
42255
|
-
* least one of `zones
|
|
42287
|
+
* least one of `zones` (`minCount` of them, default one). Reads the zone-analytics snapshot through the same
|
|
42256
42288
|
* mirror as every other state leaf, so a dropped event never decides it (D49).
|
|
42257
42289
|
*/
|
|
42258
42290
|
var StationaryPresentLeafSchema = object({
|
|
42259
42291
|
kind: literal("stationary-present"),
|
|
42260
42292
|
deviceId: number().int().nonnegative(),
|
|
42261
42293
|
subjects: array(StationarySubjectSchema).min(1).optional(),
|
|
42262
|
-
zones: array(string().min(1)).min(1).optional()
|
|
42294
|
+
zones: array(string().min(1)).min(1).optional(),
|
|
42295
|
+
/** How many matching parked objects must be there; absent means one. */
|
|
42296
|
+
minCount: number().int().positive().optional()
|
|
42263
42297
|
});
|
|
42264
42298
|
/**
|
|
42265
42299
|
* The escape hatch: the bounded expression engine over named device bindings.
|
|
@@ -42771,6 +42805,28 @@ function convertLegacyRecipe(legacy) {
|
|
|
42771
42805
|
* it. The output type is always the new one.
|
|
42772
42806
|
*/
|
|
42773
42807
|
var AutomationRecipeSchema = union([CurrentAutomationRecipeSchema, LegacyAutomationRecipeSchema.transform(convertLegacyRecipe)]);
|
|
42808
|
+
var DETECTION_DESCRIPTIONS = {
|
|
42809
|
+
deviceId: "the camera that saw it",
|
|
42810
|
+
className: "what it saw",
|
|
42811
|
+
trackId: "the track",
|
|
42812
|
+
score: "how sure the detector was",
|
|
42813
|
+
label: "the label it matched (a name, a plate), empty when none"
|
|
42814
|
+
};
|
|
42815
|
+
var STATIONARY_DESCRIPTIONS = {
|
|
42816
|
+
deviceId: "the camera that saw it",
|
|
42817
|
+
className: "what it saw",
|
|
42818
|
+
zones: "the zones it is in",
|
|
42819
|
+
phase: "appeared or departed",
|
|
42820
|
+
entryId: "the stopped object"
|
|
42821
|
+
};
|
|
42822
|
+
function describe$1(descriptions) {
|
|
42823
|
+
return Object.entries(descriptions).map(([name, description]) => ({
|
|
42824
|
+
name,
|
|
42825
|
+
description
|
|
42826
|
+
}));
|
|
42827
|
+
}
|
|
42828
|
+
describe$1(DETECTION_DESCRIPTIONS);
|
|
42829
|
+
describe$1(STATIONARY_DESCRIPTIONS);
|
|
42774
42830
|
new Set(Object.values(COCO_TO_MACRO.mapping));
|
|
42775
42831
|
/**
|
|
42776
42832
|
* Schedulers (D983) — an entity that performs actions over the day.
|
|
@@ -53735,6 +53791,49 @@ method(_void(), paletteResultSchema, {
|
|
|
53735
53791
|
kind: "mutation",
|
|
53736
53792
|
auth: "admin"
|
|
53737
53793
|
});
|
|
53794
|
+
/**
|
|
53795
|
+
* do-not-disturb - whether a speaker or display holds back its own sounds
|
|
53796
|
+
* (announcements, notifications, alarms) until the operator lets it speak again.
|
|
53797
|
+
*
|
|
53798
|
+
* It is NOT part of `media-player`: a player is about what it plays and how
|
|
53799
|
+
* loud, while Do Not Disturb is a household switch the vendor keeps per device.
|
|
53800
|
+
* `enabled` is null when the vendor has not said (never a guess of `false`).
|
|
53801
|
+
*/
|
|
53802
|
+
var DoNotDisturbStatusSchema = object({
|
|
53803
|
+
/** True while Do Not Disturb is on; null when unknown. */
|
|
53804
|
+
enabled: boolean().nullable().meta({ label: "Do not disturb" }),
|
|
53805
|
+
/** Ms epoch of the last read or write that set `enabled`. */
|
|
53806
|
+
lastChangedAt: number()
|
|
53807
|
+
});
|
|
53808
|
+
var doNotDisturbCapability = {
|
|
53809
|
+
name: "do-not-disturb",
|
|
53810
|
+
scope: "device",
|
|
53811
|
+
deviceNative: true,
|
|
53812
|
+
mode: "singleton",
|
|
53813
|
+
deviceTypes: [DeviceType.MediaPlayer],
|
|
53814
|
+
methods: { setEnabled: method(object({
|
|
53815
|
+
deviceId: number().int(),
|
|
53816
|
+
enabled: boolean()
|
|
53817
|
+
}), _void(), {
|
|
53818
|
+
kind: "mutation",
|
|
53819
|
+
auth: "protected"
|
|
53820
|
+
}) },
|
|
53821
|
+
status: {
|
|
53822
|
+
schema: DoNotDisturbStatusSchema,
|
|
53823
|
+
kind: "push"
|
|
53824
|
+
},
|
|
53825
|
+
runtimeState: DoNotDisturbStatusSchema,
|
|
53826
|
+
/**
|
|
53827
|
+
* Runtime-state durability: **session** - the vendor owns the switch and the
|
|
53828
|
+
* device re-reads it on the next poll, so a restored value would only be stale.
|
|
53829
|
+
*
|
|
53830
|
+
* See `RuntimeStateDurability`. Enforced by
|
|
53831
|
+
* `scripts/check-runtime-state-durability.ts`.
|
|
53832
|
+
*/
|
|
53833
|
+
durability: "session",
|
|
53834
|
+
/** History (D850): when Do Not Disturb was switched on and off. */
|
|
53835
|
+
history: { fields: { enabled: { kind: "boolean" } } }
|
|
53836
|
+
};
|
|
53738
53837
|
/** Pulse override: a rising edge advances `lastPressedAt` and the press count. */
|
|
53739
53838
|
var doorbellCustomize = {
|
|
53740
53839
|
version: 1,
|
|
@@ -56336,6 +56435,14 @@ var LlmGenerateBaseInputSchema = object({
|
|
|
56336
56435
|
topP: number().min(0).max(1).optional(),
|
|
56337
56436
|
/** Per-call override of the profile default (top-k sampling). */
|
|
56338
56437
|
topK: number().int().positive().optional(),
|
|
56438
|
+
/** Per-call override of `profile.reasoningEffort`. Sent only to a kind whose
|
|
56439
|
+
* descriptor offers the field; a kind that does not never sends it. */
|
|
56440
|
+
reasoningEffort: _enum([
|
|
56441
|
+
"off",
|
|
56442
|
+
"low",
|
|
56443
|
+
"medium",
|
|
56444
|
+
"high"
|
|
56445
|
+
]).optional(),
|
|
56339
56446
|
/** Per-call override of `profile.timeoutMs` — the total generation bound. */
|
|
56340
56447
|
timeoutMs: number().int().positive().optional(),
|
|
56341
56448
|
/** Per-call override; beats both the consumer table and the profile. */
|
|
@@ -56627,7 +56734,10 @@ var LlmProfileKindSchema = string().regex(/^[a-z0-9][a-z0-9-]{0,63}$/, "a kind i
|
|
|
56627
56734
|
var LlmModelFeaturesSchema = object({
|
|
56628
56735
|
vision: boolean(),
|
|
56629
56736
|
tools: boolean(),
|
|
56630
|
-
streaming: boolean()
|
|
56737
|
+
streaming: boolean(),
|
|
56738
|
+
/** Whether the model thinks before it answers. `null` = the endpoint does not
|
|
56739
|
+
* say; an editor then still offers the switch (unknown is not "no"). */
|
|
56740
|
+
reasoning: boolean().nullable().optional()
|
|
56631
56741
|
});
|
|
56632
56742
|
/** One model a provider offers. `features` overrides the kind's defaults, per field. */
|
|
56633
56743
|
var LlmModelInfoSchema = object({
|
|
@@ -74837,9 +74947,17 @@ var ServerUpdateActionResultSchema = object({
|
|
|
74837
74947
|
*/
|
|
74838
74948
|
requiredAddonUpdates: array(RequiredAddonUpdateSchema).optional()
|
|
74839
74949
|
});
|
|
74840
|
-
var LaunchOverridesSchema = object({
|
|
74841
|
-
/** The persisted heap ceiling in MB, or `null` when none is set. */
|
|
74842
|
-
heapMb: number().int().nullable()
|
|
74950
|
+
var LaunchOverridesSchema = object({
|
|
74951
|
+
/** The persisted heap ceiling in MB, or `null` when none is set. */
|
|
74952
|
+
heapMb: number().int().nullable(),
|
|
74953
|
+
/** The persisted hub-main RSS budget in MB, or `null` when none is set. */
|
|
74954
|
+
rssBudgetMb: number().int().nullable()
|
|
74955
|
+
});
|
|
74956
|
+
var SetLaunchOverridesInputSchema = object({
|
|
74957
|
+
heapMb: number().int().min(512).max(65536).nullable(),
|
|
74958
|
+
/** Omitted keeps the stored budget; `null` clears it. */
|
|
74959
|
+
rssBudgetMb: number().int().min(512).max(65536).nullable().optional()
|
|
74960
|
+
});
|
|
74843
74961
|
var SetLaunchOverridesResultSchema = LaunchOverridesSchema.extend({
|
|
74844
74962
|
/** Always true: the override is read at launch, not by the running process. */
|
|
74845
74963
|
restartRequired: boolean() });
|
|
@@ -74868,7 +74986,7 @@ method(_void(), ServerPackageStatusSchema, { auth: "admin" }), method(_void(), S
|
|
|
74868
74986
|
}), method(_void(), ServerUpdateActionResultSchema, {
|
|
74869
74987
|
kind: "mutation",
|
|
74870
74988
|
auth: "admin"
|
|
74871
|
-
}), method(_void(), LaunchOverridesSchema, { auth: "admin" }), method(
|
|
74989
|
+
}), method(_void(), LaunchOverridesSchema, { auth: "admin" }), method(SetLaunchOverridesInputSchema, SetLaunchOverridesResultSchema, {
|
|
74872
74990
|
kind: "mutation",
|
|
74873
74991
|
auth: "admin"
|
|
74874
74992
|
});
|
|
@@ -80137,6 +80255,7 @@ var DEVICE_LOCAL_STATE_CAPS = {
|
|
|
80137
80255
|
deviceDiscovery: deviceDiscoveryCapability,
|
|
80138
80256
|
deviceStatus: deviceStatusCapability,
|
|
80139
80257
|
dishwasher: dishwasherCapability,
|
|
80258
|
+
doNotDisturb: doNotDisturbCapability,
|
|
80140
80259
|
doorbell: doorbellCapability,
|
|
80141
80260
|
enumSensor: enumSensorCapability,
|
|
80142
80261
|
eventEmitter: eventEmitterCapability,
|
|
@@ -84590,6 +84709,20 @@ Object.freeze({
|
|
|
84590
84709
|
access: "create",
|
|
84591
84710
|
role: "admin"
|
|
84592
84711
|
},
|
|
84712
|
+
"doNotDisturb.getStatus": {
|
|
84713
|
+
capName: "do-not-disturb",
|
|
84714
|
+
capScope: "device",
|
|
84715
|
+
addonId: null,
|
|
84716
|
+
access: "view",
|
|
84717
|
+
role: "viewer"
|
|
84718
|
+
},
|
|
84719
|
+
"doNotDisturb.setEnabled": {
|
|
84720
|
+
capName: "do-not-disturb",
|
|
84721
|
+
capScope: "device",
|
|
84722
|
+
addonId: null,
|
|
84723
|
+
access: "create",
|
|
84724
|
+
role: "viewer"
|
|
84725
|
+
},
|
|
84593
84726
|
"doorbell.getStatus": {
|
|
84594
84727
|
capName: "doorbell",
|
|
84595
84728
|
capScope: "device",
|
|
@@ -92789,6 +92922,16 @@ Object.freeze({
|
|
|
92789
92922
|
form: "single",
|
|
92790
92923
|
optional: false
|
|
92791
92924
|
}],
|
|
92925
|
+
"doNotDisturb.getStatus": [{
|
|
92926
|
+
name: "deviceId",
|
|
92927
|
+
form: "single",
|
|
92928
|
+
optional: false
|
|
92929
|
+
}],
|
|
92930
|
+
"doNotDisturb.setEnabled": [{
|
|
92931
|
+
name: "deviceId",
|
|
92932
|
+
form: "single",
|
|
92933
|
+
optional: false
|
|
92934
|
+
}],
|
|
92792
92935
|
"doorbell.getStatus": [{
|
|
92793
92936
|
name: "deviceId",
|
|
92794
92937
|
form: "single",
|
|
@@ -5972,7 +5972,7 @@ var ZodIssueCode = {
|
|
|
5972
5972
|
var ZodFirstPartyTypeKind;
|
|
5973
5973
|
ZodFirstPartyTypeKind || (ZodFirstPartyTypeKind = {});
|
|
5974
5974
|
//#endregion
|
|
5975
|
-
//#region ../types/dist/sleep-
|
|
5975
|
+
//#region ../types/dist/sleep-B-vp7x15.mjs
|
|
5976
5976
|
/**
|
|
5977
5977
|
* The audio chunk plane's byte format, and the ONE expansion from a coded
|
|
5978
5978
|
* window to float samples (D455).
|
|
@@ -9718,6 +9718,7 @@ var CAP_NAMES = Object.freeze([
|
|
|
9718
9718
|
"device-status",
|
|
9719
9719
|
"dishwasher",
|
|
9720
9720
|
"display-palette",
|
|
9721
|
+
"do-not-disturb",
|
|
9721
9722
|
"doorbell",
|
|
9722
9723
|
"embedding-encoder",
|
|
9723
9724
|
"enum-sensor",
|
|
@@ -10477,6 +10478,10 @@ Object.freeze({
|
|
|
10477
10478
|
"valueType": "string"
|
|
10478
10479
|
}
|
|
10479
10480
|
],
|
|
10481
|
+
"do-not-disturb": [{
|
|
10482
|
+
"path": "enabled",
|
|
10483
|
+
"valueType": "boolean"
|
|
10484
|
+
}],
|
|
10480
10485
|
"doorbell": [{
|
|
10481
10486
|
"path": "lastPressedAt",
|
|
10482
10487
|
"valueType": "number"
|
|
@@ -20043,6 +20048,33 @@ var APPLIANCE_CAP_VOCABULARY = {
|
|
|
20043
20048
|
}
|
|
20044
20049
|
]
|
|
20045
20050
|
},
|
|
20051
|
+
"do-not-disturb": {
|
|
20052
|
+
scope: "device",
|
|
20053
|
+
noun: t("Do not disturb", "Non disturbare"),
|
|
20054
|
+
actions: [{
|
|
20055
|
+
id: "dnd.on",
|
|
20056
|
+
method: "setEnabled",
|
|
20057
|
+
label: t("Do not disturb on", "Attiva Non disturbare"),
|
|
20058
|
+
phrase: t("Turn on Do not disturb on {device}", "Attiva Non disturbare su {device}"),
|
|
20059
|
+
icon: "bell-off",
|
|
20060
|
+
args: { enabled: true }
|
|
20061
|
+
}, {
|
|
20062
|
+
id: "dnd.off",
|
|
20063
|
+
method: "setEnabled",
|
|
20064
|
+
label: t("Do not disturb off", "Disattiva Non disturbare"),
|
|
20065
|
+
phrase: t("Turn off Do not disturb on {device}", "Disattiva Non disturbare su {device}"),
|
|
20066
|
+
icon: "bell",
|
|
20067
|
+
args: { enabled: false }
|
|
20068
|
+
}],
|
|
20069
|
+
state: [{
|
|
20070
|
+
kind: "boolean",
|
|
20071
|
+
field: "enabled",
|
|
20072
|
+
label: t("Do not disturb", "Non disturbare"),
|
|
20073
|
+
whenTrue: t("When Do not disturb turns on on {device}", "Quando {device} attiva Non disturbare"),
|
|
20074
|
+
whenFalse: t("When Do not disturb turns off on {device}", "Quando {device} disattiva Non disturbare"),
|
|
20075
|
+
icon: "bell-off"
|
|
20076
|
+
}]
|
|
20077
|
+
},
|
|
20046
20078
|
update: {
|
|
20047
20079
|
scope: "device",
|
|
20048
20080
|
noun: t("Firmware update", "Aggiornamento firmware"),
|
|
@@ -42253,14 +42285,16 @@ var DeviceIsLeafSchema = object({
|
|
|
42253
42285
|
});
|
|
42254
42286
|
/**
|
|
42255
42287
|
* True when the camera currently has a PARKED object matching `subjects` in at
|
|
42256
|
-
* least one of `zones
|
|
42288
|
+
* least one of `zones` (`minCount` of them, default one). Reads the zone-analytics snapshot through the same
|
|
42257
42289
|
* mirror as every other state leaf, so a dropped event never decides it (D49).
|
|
42258
42290
|
*/
|
|
42259
42291
|
var StationaryPresentLeafSchema = object({
|
|
42260
42292
|
kind: literal("stationary-present"),
|
|
42261
42293
|
deviceId: number().int().nonnegative(),
|
|
42262
42294
|
subjects: array(StationarySubjectSchema).min(1).optional(),
|
|
42263
|
-
zones: array(string().min(1)).min(1).optional()
|
|
42295
|
+
zones: array(string().min(1)).min(1).optional(),
|
|
42296
|
+
/** How many matching parked objects must be there; absent means one. */
|
|
42297
|
+
minCount: number().int().positive().optional()
|
|
42264
42298
|
});
|
|
42265
42299
|
/**
|
|
42266
42300
|
* The escape hatch: the bounded expression engine over named device bindings.
|
|
@@ -42772,6 +42806,28 @@ function convertLegacyRecipe(legacy) {
|
|
|
42772
42806
|
* it. The output type is always the new one.
|
|
42773
42807
|
*/
|
|
42774
42808
|
var AutomationRecipeSchema = union([CurrentAutomationRecipeSchema, LegacyAutomationRecipeSchema.transform(convertLegacyRecipe)]);
|
|
42809
|
+
var DETECTION_DESCRIPTIONS = {
|
|
42810
|
+
deviceId: "the camera that saw it",
|
|
42811
|
+
className: "what it saw",
|
|
42812
|
+
trackId: "the track",
|
|
42813
|
+
score: "how sure the detector was",
|
|
42814
|
+
label: "the label it matched (a name, a plate), empty when none"
|
|
42815
|
+
};
|
|
42816
|
+
var STATIONARY_DESCRIPTIONS = {
|
|
42817
|
+
deviceId: "the camera that saw it",
|
|
42818
|
+
className: "what it saw",
|
|
42819
|
+
zones: "the zones it is in",
|
|
42820
|
+
phase: "appeared or departed",
|
|
42821
|
+
entryId: "the stopped object"
|
|
42822
|
+
};
|
|
42823
|
+
function describe$1(descriptions) {
|
|
42824
|
+
return Object.entries(descriptions).map(([name, description]) => ({
|
|
42825
|
+
name,
|
|
42826
|
+
description
|
|
42827
|
+
}));
|
|
42828
|
+
}
|
|
42829
|
+
describe$1(DETECTION_DESCRIPTIONS);
|
|
42830
|
+
describe$1(STATIONARY_DESCRIPTIONS);
|
|
42775
42831
|
new Set(Object.values(COCO_TO_MACRO.mapping));
|
|
42776
42832
|
/**
|
|
42777
42833
|
* Schedulers (D983) — an entity that performs actions over the day.
|
|
@@ -53736,6 +53792,49 @@ method(_void(), paletteResultSchema, {
|
|
|
53736
53792
|
kind: "mutation",
|
|
53737
53793
|
auth: "admin"
|
|
53738
53794
|
});
|
|
53795
|
+
/**
|
|
53796
|
+
* do-not-disturb - whether a speaker or display holds back its own sounds
|
|
53797
|
+
* (announcements, notifications, alarms) until the operator lets it speak again.
|
|
53798
|
+
*
|
|
53799
|
+
* It is NOT part of `media-player`: a player is about what it plays and how
|
|
53800
|
+
* loud, while Do Not Disturb is a household switch the vendor keeps per device.
|
|
53801
|
+
* `enabled` is null when the vendor has not said (never a guess of `false`).
|
|
53802
|
+
*/
|
|
53803
|
+
var DoNotDisturbStatusSchema = object({
|
|
53804
|
+
/** True while Do Not Disturb is on; null when unknown. */
|
|
53805
|
+
enabled: boolean().nullable().meta({ label: "Do not disturb" }),
|
|
53806
|
+
/** Ms epoch of the last read or write that set `enabled`. */
|
|
53807
|
+
lastChangedAt: number()
|
|
53808
|
+
});
|
|
53809
|
+
var doNotDisturbCapability = {
|
|
53810
|
+
name: "do-not-disturb",
|
|
53811
|
+
scope: "device",
|
|
53812
|
+
deviceNative: true,
|
|
53813
|
+
mode: "singleton",
|
|
53814
|
+
deviceTypes: [DeviceType.MediaPlayer],
|
|
53815
|
+
methods: { setEnabled: method(object({
|
|
53816
|
+
deviceId: number().int(),
|
|
53817
|
+
enabled: boolean()
|
|
53818
|
+
}), _void(), {
|
|
53819
|
+
kind: "mutation",
|
|
53820
|
+
auth: "protected"
|
|
53821
|
+
}) },
|
|
53822
|
+
status: {
|
|
53823
|
+
schema: DoNotDisturbStatusSchema,
|
|
53824
|
+
kind: "push"
|
|
53825
|
+
},
|
|
53826
|
+
runtimeState: DoNotDisturbStatusSchema,
|
|
53827
|
+
/**
|
|
53828
|
+
* Runtime-state durability: **session** - the vendor owns the switch and the
|
|
53829
|
+
* device re-reads it on the next poll, so a restored value would only be stale.
|
|
53830
|
+
*
|
|
53831
|
+
* See `RuntimeStateDurability`. Enforced by
|
|
53832
|
+
* `scripts/check-runtime-state-durability.ts`.
|
|
53833
|
+
*/
|
|
53834
|
+
durability: "session",
|
|
53835
|
+
/** History (D850): when Do Not Disturb was switched on and off. */
|
|
53836
|
+
history: { fields: { enabled: { kind: "boolean" } } }
|
|
53837
|
+
};
|
|
53739
53838
|
/** Pulse override: a rising edge advances `lastPressedAt` and the press count. */
|
|
53740
53839
|
var doorbellCustomize = {
|
|
53741
53840
|
version: 1,
|
|
@@ -56337,6 +56436,14 @@ var LlmGenerateBaseInputSchema = object({
|
|
|
56337
56436
|
topP: number().min(0).max(1).optional(),
|
|
56338
56437
|
/** Per-call override of the profile default (top-k sampling). */
|
|
56339
56438
|
topK: number().int().positive().optional(),
|
|
56439
|
+
/** Per-call override of `profile.reasoningEffort`. Sent only to a kind whose
|
|
56440
|
+
* descriptor offers the field; a kind that does not never sends it. */
|
|
56441
|
+
reasoningEffort: _enum([
|
|
56442
|
+
"off",
|
|
56443
|
+
"low",
|
|
56444
|
+
"medium",
|
|
56445
|
+
"high"
|
|
56446
|
+
]).optional(),
|
|
56340
56447
|
/** Per-call override of `profile.timeoutMs` — the total generation bound. */
|
|
56341
56448
|
timeoutMs: number().int().positive().optional(),
|
|
56342
56449
|
/** Per-call override; beats both the consumer table and the profile. */
|
|
@@ -56628,7 +56735,10 @@ var LlmProfileKindSchema = string().regex(/^[a-z0-9][a-z0-9-]{0,63}$/, "a kind i
|
|
|
56628
56735
|
var LlmModelFeaturesSchema = object({
|
|
56629
56736
|
vision: boolean(),
|
|
56630
56737
|
tools: boolean(),
|
|
56631
|
-
streaming: boolean()
|
|
56738
|
+
streaming: boolean(),
|
|
56739
|
+
/** Whether the model thinks before it answers. `null` = the endpoint does not
|
|
56740
|
+
* say; an editor then still offers the switch (unknown is not "no"). */
|
|
56741
|
+
reasoning: boolean().nullable().optional()
|
|
56632
56742
|
});
|
|
56633
56743
|
/** One model a provider offers. `features` overrides the kind's defaults, per field. */
|
|
56634
56744
|
var LlmModelInfoSchema = object({
|
|
@@ -74838,9 +74948,17 @@ var ServerUpdateActionResultSchema = object({
|
|
|
74838
74948
|
*/
|
|
74839
74949
|
requiredAddonUpdates: array(RequiredAddonUpdateSchema).optional()
|
|
74840
74950
|
});
|
|
74841
|
-
var LaunchOverridesSchema = object({
|
|
74842
|
-
/** The persisted heap ceiling in MB, or `null` when none is set. */
|
|
74843
|
-
heapMb: number().int().nullable()
|
|
74951
|
+
var LaunchOverridesSchema = object({
|
|
74952
|
+
/** The persisted heap ceiling in MB, or `null` when none is set. */
|
|
74953
|
+
heapMb: number().int().nullable(),
|
|
74954
|
+
/** The persisted hub-main RSS budget in MB, or `null` when none is set. */
|
|
74955
|
+
rssBudgetMb: number().int().nullable()
|
|
74956
|
+
});
|
|
74957
|
+
var SetLaunchOverridesInputSchema = object({
|
|
74958
|
+
heapMb: number().int().min(512).max(65536).nullable(),
|
|
74959
|
+
/** Omitted keeps the stored budget; `null` clears it. */
|
|
74960
|
+
rssBudgetMb: number().int().min(512).max(65536).nullable().optional()
|
|
74961
|
+
});
|
|
74844
74962
|
var SetLaunchOverridesResultSchema = LaunchOverridesSchema.extend({
|
|
74845
74963
|
/** Always true: the override is read at launch, not by the running process. */
|
|
74846
74964
|
restartRequired: boolean() });
|
|
@@ -74869,7 +74987,7 @@ method(_void(), ServerPackageStatusSchema, { auth: "admin" }), method(_void(), S
|
|
|
74869
74987
|
}), method(_void(), ServerUpdateActionResultSchema, {
|
|
74870
74988
|
kind: "mutation",
|
|
74871
74989
|
auth: "admin"
|
|
74872
|
-
}), method(_void(), LaunchOverridesSchema, { auth: "admin" }), method(
|
|
74990
|
+
}), method(_void(), LaunchOverridesSchema, { auth: "admin" }), method(SetLaunchOverridesInputSchema, SetLaunchOverridesResultSchema, {
|
|
74873
74991
|
kind: "mutation",
|
|
74874
74992
|
auth: "admin"
|
|
74875
74993
|
});
|
|
@@ -80138,6 +80256,7 @@ var DEVICE_LOCAL_STATE_CAPS = {
|
|
|
80138
80256
|
deviceDiscovery: deviceDiscoveryCapability,
|
|
80139
80257
|
deviceStatus: deviceStatusCapability,
|
|
80140
80258
|
dishwasher: dishwasherCapability,
|
|
80259
|
+
doNotDisturb: doNotDisturbCapability,
|
|
80141
80260
|
doorbell: doorbellCapability,
|
|
80142
80261
|
enumSensor: enumSensorCapability,
|
|
80143
80262
|
eventEmitter: eventEmitterCapability,
|
|
@@ -84591,6 +84710,20 @@ Object.freeze({
|
|
|
84591
84710
|
access: "create",
|
|
84592
84711
|
role: "admin"
|
|
84593
84712
|
},
|
|
84713
|
+
"doNotDisturb.getStatus": {
|
|
84714
|
+
capName: "do-not-disturb",
|
|
84715
|
+
capScope: "device",
|
|
84716
|
+
addonId: null,
|
|
84717
|
+
access: "view",
|
|
84718
|
+
role: "viewer"
|
|
84719
|
+
},
|
|
84720
|
+
"doNotDisturb.setEnabled": {
|
|
84721
|
+
capName: "do-not-disturb",
|
|
84722
|
+
capScope: "device",
|
|
84723
|
+
addonId: null,
|
|
84724
|
+
access: "create",
|
|
84725
|
+
role: "viewer"
|
|
84726
|
+
},
|
|
84594
84727
|
"doorbell.getStatus": {
|
|
84595
84728
|
capName: "doorbell",
|
|
84596
84729
|
capScope: "device",
|
|
@@ -92790,6 +92923,16 @@ Object.freeze({
|
|
|
92790
92923
|
form: "single",
|
|
92791
92924
|
optional: false
|
|
92792
92925
|
}],
|
|
92926
|
+
"doNotDisturb.getStatus": [{
|
|
92927
|
+
name: "deviceId",
|
|
92928
|
+
form: "single",
|
|
92929
|
+
optional: false
|
|
92930
|
+
}],
|
|
92931
|
+
"doNotDisturb.setEnabled": [{
|
|
92932
|
+
name: "deviceId",
|
|
92933
|
+
form: "single",
|
|
92934
|
+
optional: false
|
|
92935
|
+
}],
|
|
92793
92936
|
"doorbell.getStatus": [{
|
|
92794
92937
|
name: "deviceId",
|
|
92795
92938
|
form: "single",
|
|
@@ -24,7 +24,7 @@ var __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__ge
|
|
|
24
24
|
enumerable: true
|
|
25
25
|
}) : target, mod));
|
|
26
26
|
//#endregion
|
|
27
|
-
const require_ha_broker_source = require("../ha-broker-source-
|
|
27
|
+
const require_ha_broker_source = require("../ha-broker-source-BFFi4NDH.js");
|
|
28
28
|
let node_crypto = require("node:crypto");
|
|
29
29
|
require("node:zlib");
|
|
30
30
|
let node_fs = require("node:fs");
|
|
@@ -3485,6 +3485,10 @@ function controlEntitySpecs(slice, quantity) {
|
|
|
3485
3485
|
}, kindExtra];
|
|
3486
3486
|
}
|
|
3487
3487
|
var CAPS_NOT_EXPORTED = [
|
|
3488
|
+
{
|
|
3489
|
+
cap: "do-not-disturb",
|
|
3490
|
+
reason: "A vendor switch of a speaker, provided so far only by an imported Echo: its media player is the entity a home-automation front end needs, and no entity kind has been chosen for the Do Not Disturb switch yet."
|
|
3491
|
+
},
|
|
3488
3492
|
{
|
|
3489
3493
|
cap: "timed-run",
|
|
3490
3494
|
reason: "A hub-side timer for a device that has none: a \"run for N minutes\" command and the deadline of the pending switch-off. The switch or pump it drives is already exported through `switch`, and the deadline is a countdown, not a value an entity can hold."
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { B as consumableKindOf, Et as sendToExportedTarget, K as deviceExportCapability, Kt as isReadingQuantity, Vt as baseUnitOf, Yt as array, _ as PLUG_APPLIANCE_TYPES, bt as runExportedAction, c as COCO_TO_MACRO, d as ConsumableItemSchema, en as object, f as ConsumableStatusSchema, g as MediaPlayerRepeatSchema, gt as pruneDeletedEntities, h as HvacModeSchema, i as AlarmArmModeSchema, in as unknown, j as buildAddonRouteProvider, l as CameraSwitchIdSchema, m as FanDirectionSchema, nn as string, qt as nodePin, r as listHomeAssistantBrokers, s as CAMERA_SWITCH_ORDER, u as ConsumableFormSchema, un as EventCategory, ut as oauthIntegrationCapability, x as addonRoutesCapability, z as consumableFormOf, zt as BaseAddon } from "../ha-broker-source-
|
|
1
|
+
import { B as consumableKindOf, Et as sendToExportedTarget, K as deviceExportCapability, Kt as isReadingQuantity, Vt as baseUnitOf, Yt as array, _ as PLUG_APPLIANCE_TYPES, bt as runExportedAction, c as COCO_TO_MACRO, d as ConsumableItemSchema, en as object, f as ConsumableStatusSchema, g as MediaPlayerRepeatSchema, gt as pruneDeletedEntities, h as HvacModeSchema, i as AlarmArmModeSchema, in as unknown, j as buildAddonRouteProvider, l as CameraSwitchIdSchema, m as FanDirectionSchema, nn as string, qt as nodePin, r as listHomeAssistantBrokers, s as CAMERA_SWITCH_ORDER, u as ConsumableFormSchema, un as EventCategory, ut as oauthIntegrationCapability, x as addonRoutesCapability, z as consumableFormOf, zt as BaseAddon } from "../ha-broker-source-B6wqfEUz.mjs";
|
|
2
2
|
import { createHmac, timingSafeEqual } from "node:crypto";
|
|
3
3
|
import "node:zlib";
|
|
4
4
|
import "node:fs";
|
|
@@ -3450,6 +3450,10 @@ function controlEntitySpecs(slice, quantity) {
|
|
|
3450
3450
|
}, kindExtra];
|
|
3451
3451
|
}
|
|
3452
3452
|
var CAPS_NOT_EXPORTED = [
|
|
3453
|
+
{
|
|
3454
|
+
cap: "do-not-disturb",
|
|
3455
|
+
reason: "A vendor switch of a speaker, provided so far only by an imported Echo: its media player is the entity a home-automation front end needs, and no entity kind has been chosen for the Do Not Disturb switch yet."
|
|
3456
|
+
},
|
|
3453
3457
|
{
|
|
3454
3458
|
cap: "timed-run",
|
|
3455
3459
|
reason: "A hub-side timer for a device that has none: a \"run for N minutes\" command and the deadline of the pending switch-off. The switch or pump it drives is already exported through `switch`, and the deadline is a countdown, not a value an entity can hold."
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@camstack/addon-provider-homeassistant",
|
|
3
|
-
"version": "1.2.
|
|
3
|
+
"version": "1.2.647",
|
|
4
4
|
"description": "Home Assistant device provider addon for CamStack",
|
|
5
5
|
"keywords": [
|
|
6
6
|
"camstack",
|
|
@@ -127,7 +127,7 @@
|
|
|
127
127
|
"description": "Device provider (import) + native entity export (push). Two addons, one bundle, separate processes."
|
|
128
128
|
},
|
|
129
129
|
"requires": {
|
|
130
|
-
"server": ">=1.2.
|
|
130
|
+
"server": ">=1.2.731"
|
|
131
131
|
}
|
|
132
132
|
},
|
|
133
133
|
"files": [
|