@camstack/addon-provider-homeassistant 1.2.634 → 1.2.635
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/{dist-6sCUdAUD.mjs → dist-CYl0u8cF.mjs} +199 -12
- package/dist/{dist-DSRitvmZ.js → dist-C_PMvyYa.js} +199 -12
- package/dist/ha-export/ha-export.addon.js +5 -1
- package/dist/ha-export/ha-export.addon.mjs +5 -1
- package/package.json +1 -1
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.635] - 2026-10-28
|
|
11
|
+
|
|
12
|
+
### Changed
|
|
13
|
+
|
|
14
|
+
- Recorded that the ir-transmitter capability is not exported to Home Assistant.
|
|
15
|
+
|
|
10
16
|
## [1.2.634] - 2026-10-28
|
|
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_dist = require("./dist-
|
|
2
|
+
const require_dist = require("./dist-C_PMvyYa.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 lawnMowerControlCapability, $t as union, A as buttonCapability, At as weatherCapability, B as coverCapability, Bt as defineRecordKinds, C as batteryCapability, Ct as tryConvertDelta, D as brokerCapability, Dt as valveCapability, E as brightnessCapability, Et as vacuumControlCapability, F as connectivityCapability, G as eventEmitterCapability, Gt as array, H as deviceAdoptionCapability, It as RecordSecretUnavailableError, J as gasCapability, Jt as literal, K as fanControlCapability, Kt as boolean, Lt as baseUnitOf, M as carbonMonoxideCapability, Mt as DeviceRole, N as climateControlCapability, Nt as DeviceType, O as buildAddonRouteProvider, Ot as vibrationCapability, P as colorCapability, Pt as errMsg, Q as ingestReading, Qt as string, R as contactCapability, Rt as createEvent, S as automationControlCapability, St as temperatureSensorCapability, T as binaryCapability, Tt as updateCapability, V as deviceAdminLinkCapability, Vt as entryBody, W as enumSensorCapability, Wt as _enum, X as humiditySensorCapability, Xt as object, Y as humidifierCapability, Yt as number, Z as imageCapability, Zt as record, _ as accessoriesCapability, _t as runningStateCapability, at as notifierCapability, b as alarmPanelCapability, bt as switchCapability, ct as parseAdminBase, dt as presenceCapability, en as unknown, et as lockControlCapability, ft as pressureSensorCapability, g as TargetSchema, gt as runningFromVacuumState, h as RUNNING_STATE_COLD, ht as runningFromMediaPlayer, it as notificationOutputCapability, j as calendarSourceCapability, jt as DeviceFeature, k as buildDeviceAdminUrl, kt as waterHeaterCapability, lt as powerMeterCapability, mt as runningFromLawnMower, n as BaseDevice, nn as EventCategory, nt as motionCapability, ot as numericSensorCapability, pt as quantityFromUnit, q as floodCapability, qt as discriminatedUnion, r as BaseDeviceProvider, rt as normalizeUnit, tn as url, tt as mediaPlayerCapability, u as EnumSensorDateTimeFormatSchema, ut as prepareNotification, v as addonRoutesCapability, vt as scriptRunnerCapability, w as bestLocationMatch, wt as tryConvertUnit, x as ambientLightSensorCapability, xt as tamperCapability, y as airQualitySensorCapability, yt as smokeCapability, z as controlCapability, zt as defineEntryKind } from "./dist-
|
|
1
|
+
import { $ as lawnMowerControlCapability, $t as union, A as buttonCapability, At as weatherCapability, B as coverCapability, Bt as defineRecordKinds, C as batteryCapability, Ct as tryConvertDelta, D as brokerCapability, Dt as valveCapability, E as brightnessCapability, Et as vacuumControlCapability, F as connectivityCapability, G as eventEmitterCapability, Gt as array, H as deviceAdoptionCapability, It as RecordSecretUnavailableError, J as gasCapability, Jt as literal, K as fanControlCapability, Kt as boolean, Lt as baseUnitOf, M as carbonMonoxideCapability, Mt as DeviceRole, N as climateControlCapability, Nt as DeviceType, O as buildAddonRouteProvider, Ot as vibrationCapability, P as colorCapability, Pt as errMsg, Q as ingestReading, Qt as string, R as contactCapability, Rt as createEvent, S as automationControlCapability, St as temperatureSensorCapability, T as binaryCapability, Tt as updateCapability, V as deviceAdminLinkCapability, Vt as entryBody, W as enumSensorCapability, Wt as _enum, X as humiditySensorCapability, Xt as object, Y as humidifierCapability, Yt as number, Z as imageCapability, Zt as record, _ as accessoriesCapability, _t as runningStateCapability, at as notifierCapability, b as alarmPanelCapability, bt as switchCapability, ct as parseAdminBase, dt as presenceCapability, en as unknown, et as lockControlCapability, ft as pressureSensorCapability, g as TargetSchema, gt as runningFromVacuumState, h as RUNNING_STATE_COLD, ht as runningFromMediaPlayer, it as notificationOutputCapability, j as calendarSourceCapability, jt as DeviceFeature, k as buildDeviceAdminUrl, kt as waterHeaterCapability, lt as powerMeterCapability, mt as runningFromLawnMower, n as BaseDevice, nn as EventCategory, nt as motionCapability, ot as numericSensorCapability, pt as quantityFromUnit, q as floodCapability, qt as discriminatedUnion, r as BaseDeviceProvider, rt as normalizeUnit, tn as url, tt as mediaPlayerCapability, u as EnumSensorDateTimeFormatSchema, ut as prepareNotification, v as addonRoutesCapability, vt as scriptRunnerCapability, w as bestLocationMatch, wt as tryConvertUnit, x as ambientLightSensorCapability, xt as tamperCapability, y as airQualitySensorCapability, yt as smokeCapability, z as controlCapability, zt as defineEntryKind } from "./dist-CYl0u8cF.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
|
|
@@ -5579,7 +5579,7 @@ var ZodIssueCode = {
|
|
|
5579
5579
|
var ZodFirstPartyTypeKind;
|
|
5580
5580
|
ZodFirstPartyTypeKind || (ZodFirstPartyTypeKind = {});
|
|
5581
5581
|
//#endregion
|
|
5582
|
-
//#region ../types/dist/sleep-
|
|
5582
|
+
//#region ../types/dist/sleep-BAvUCi_2.mjs
|
|
5583
5583
|
/**
|
|
5584
5584
|
* The audio chunk plane's byte format, and the ONE expansion from a coded
|
|
5585
5585
|
* window to float samples (D455).
|
|
@@ -9034,6 +9034,7 @@ var CAP_NAMES = Object.freeze([
|
|
|
9034
9034
|
"image-settings",
|
|
9035
9035
|
"integrations",
|
|
9036
9036
|
"intercom",
|
|
9037
|
+
"ir-transmitter",
|
|
9037
9038
|
"keychain",
|
|
9038
9039
|
"keychain-admin",
|
|
9039
9040
|
"lawn-mower-control",
|
|
@@ -10281,6 +10282,11 @@ Object.freeze({
|
|
|
10281
10282
|
"path": "batteryPower",
|
|
10282
10283
|
"valueType": "number"
|
|
10283
10284
|
},
|
|
10285
|
+
{
|
|
10286
|
+
"path": "powerSource",
|
|
10287
|
+
"valueType": "enum",
|
|
10288
|
+
"enumValues": ["mains", "battery"]
|
|
10289
|
+
},
|
|
10284
10290
|
{
|
|
10285
10291
|
"path": "desiccantLeftDays",
|
|
10286
10292
|
"valueType": "number"
|
|
@@ -10864,7 +10870,7 @@ object({
|
|
|
10864
10870
|
params: record(string(), union([string(), number()])).optional()
|
|
10865
10871
|
});
|
|
10866
10872
|
//#endregion
|
|
10867
|
-
//#region ../types/dist/err-msg-
|
|
10873
|
+
//#region ../types/dist/err-msg-BCdlR2Li.mjs
|
|
10868
10874
|
var DeviceType = /* @__PURE__ */ function(DeviceType) {
|
|
10869
10875
|
DeviceType["Camera"] = "camera";
|
|
10870
10876
|
DeviceType["Hub"] = "hub";
|
|
@@ -11210,6 +11216,9 @@ var DeviceRole = /* @__PURE__ */ function(DeviceRole) {
|
|
|
11210
11216
|
/** Fallback when the notifier service name doesn't match a known
|
|
11211
11217
|
* pattern. */
|
|
11212
11218
|
DeviceRole["GenericNotifier"] = "generic-notifier";
|
|
11219
|
+
/** Emits a pulse train (infrared or RF) on request — the `ir-transmitter`
|
|
11220
|
+
* cap. A `DeviceType.Generic` device. */
|
|
11221
|
+
DeviceRole["IrTransmitter"] = "ir-transmitter";
|
|
11213
11222
|
return DeviceRole;
|
|
11214
11223
|
}({});
|
|
11215
11224
|
/**
|
|
@@ -11223,7 +11232,7 @@ function errMsg(err) {
|
|
|
11223
11232
|
return String(err);
|
|
11224
11233
|
}
|
|
11225
11234
|
//#endregion
|
|
11226
|
-
//#region ../types/dist/composition-
|
|
11235
|
+
//#region ../types/dist/composition-DpFv_J6D.mjs
|
|
11227
11236
|
/**
|
|
11228
11237
|
* The ffmpeg build every CamStack node downloads, per platform and arch.
|
|
11229
11238
|
*
|
|
@@ -19453,12 +19462,13 @@ var CHANGED = {
|
|
|
19453
19462
|
expr: "now"
|
|
19454
19463
|
};
|
|
19455
19464
|
function numeric(input) {
|
|
19465
|
+
const { alsoFrom, ...base } = input;
|
|
19456
19466
|
return {
|
|
19457
|
-
...
|
|
19467
|
+
...base,
|
|
19458
19468
|
family: "numeric",
|
|
19459
19469
|
deviceType: DeviceType.Sensor,
|
|
19460
19470
|
memberDeviceType: DeviceType.Sensor,
|
|
19461
|
-
memberDeviceTypes: [DeviceType.Sensor],
|
|
19471
|
+
memberDeviceTypes: [DeviceType.Sensor, ...alsoFrom?.deviceTypes ?? []],
|
|
19462
19472
|
activeWhen: void 0,
|
|
19463
19473
|
commandCaps: [],
|
|
19464
19474
|
baseUnit: baseUnitOf(input.quantity),
|
|
@@ -19466,9 +19476,10 @@ function numeric(input) {
|
|
|
19466
19476
|
accept: [{
|
|
19467
19477
|
cap: input.outputCap,
|
|
19468
19478
|
fieldPath: input.outputField
|
|
19469
|
-
}]
|
|
19479
|
+
}, ...alsoFrom === void 0 ? [] : [alsoFrom.accept]]
|
|
19470
19480
|
};
|
|
19471
19481
|
}
|
|
19482
|
+
var CLIMATE_DEVICES = [DeviceType.Thermostat, DeviceType.Climate];
|
|
19472
19483
|
function binary(input) {
|
|
19473
19484
|
return {
|
|
19474
19485
|
...input,
|
|
@@ -19494,7 +19505,14 @@ var GROUP_TEMPLATES = [
|
|
|
19494
19505
|
quantity: "temperature",
|
|
19495
19506
|
defaultAggregate: "mean",
|
|
19496
19507
|
empty: "null",
|
|
19497
|
-
companions: [NOW$2]
|
|
19508
|
+
companions: [NOW$2],
|
|
19509
|
+
alsoFrom: {
|
|
19510
|
+
deviceTypes: CLIMATE_DEVICES,
|
|
19511
|
+
accept: {
|
|
19512
|
+
cap: "climate-control",
|
|
19513
|
+
fieldPath: "currentTemp"
|
|
19514
|
+
}
|
|
19515
|
+
}
|
|
19498
19516
|
}),
|
|
19499
19517
|
numeric({
|
|
19500
19518
|
id: "humidity",
|
|
@@ -19505,7 +19523,14 @@ var GROUP_TEMPLATES = [
|
|
|
19505
19523
|
quantity: "humidity",
|
|
19506
19524
|
defaultAggregate: "mean",
|
|
19507
19525
|
empty: "null",
|
|
19508
|
-
companions: [NOW$2]
|
|
19526
|
+
companions: [NOW$2],
|
|
19527
|
+
alsoFrom: {
|
|
19528
|
+
deviceTypes: CLIMATE_DEVICES,
|
|
19529
|
+
accept: {
|
|
19530
|
+
cap: "climate-control",
|
|
19531
|
+
fieldPath: "currentHumidity"
|
|
19532
|
+
}
|
|
19533
|
+
}
|
|
19509
19534
|
}),
|
|
19510
19535
|
numeric({
|
|
19511
19536
|
id: "pressure",
|
|
@@ -44178,6 +44203,17 @@ var LlmProfileSchema = object({
|
|
|
44178
44203
|
* field in its editor only when its descriptor lists it in `profileFields`. */
|
|
44179
44204
|
topK: number().int().positive().optional(),
|
|
44180
44205
|
maxTokens: number().int().positive().optional(),
|
|
44206
|
+
/** How hard the model "thinks" before it answers. Omitted = the model's own
|
|
44207
|
+
* default. `off` matters for structured output: a thinking model can spend
|
|
44208
|
+
* the whole completion on reasoning and return an empty `content`. Carried
|
|
44209
|
+
* only by the wires that have it — a kind offers the field in its editor
|
|
44210
|
+
* only when its descriptor lists it in `profileFields`. */
|
|
44211
|
+
reasoningEffort: _enum([
|
|
44212
|
+
"off",
|
|
44213
|
+
"low",
|
|
44214
|
+
"medium",
|
|
44215
|
+
"high"
|
|
44216
|
+
]).optional(),
|
|
44181
44217
|
/** Prompt context window. Advisory for cloud kinds (they enforce their own). */
|
|
44182
44218
|
contextLength: number().int().positive().optional(),
|
|
44183
44219
|
/** Default system prompt. A caller's `system` REPLACES it (never appends —
|
|
@@ -44216,6 +44252,7 @@ var LlmProfileFieldSchema = _enum([
|
|
|
44216
44252
|
"topP",
|
|
44217
44253
|
"topK",
|
|
44218
44254
|
"maxTokens",
|
|
44255
|
+
"reasoningEffort",
|
|
44219
44256
|
"contextLength",
|
|
44220
44257
|
"systemPrompt",
|
|
44221
44258
|
"timeoutMs",
|
|
@@ -45466,6 +45503,43 @@ var NotificationActionSchema = object({
|
|
|
45466
45503
|
*/
|
|
45467
45504
|
mode: _enum(["navigate", "background"]).optional()
|
|
45468
45505
|
});
|
|
45506
|
+
/** A delivery parameter value: what a notifier declared it takes. */
|
|
45507
|
+
var DeliveryParamValueSchema = union([
|
|
45508
|
+
string(),
|
|
45509
|
+
number(),
|
|
45510
|
+
boolean()
|
|
45511
|
+
]);
|
|
45512
|
+
/**
|
|
45513
|
+
* One extra delivery parameter a notifier KIND declares (D938). A rule that
|
|
45514
|
+
* addresses a target of that kind may set it; a kind that declares nothing is
|
|
45515
|
+
* never handed one. The admin UI derives its control from this descriptor —
|
|
45516
|
+
* no editor knows a service by name.
|
|
45517
|
+
*
|
|
45518
|
+
* Optional fields are `.optional()`, never `.default()` (a Zod default does not
|
|
45519
|
+
* run on the addon cap path).
|
|
45520
|
+
*/
|
|
45521
|
+
var DeliveryParamSchema = object({
|
|
45522
|
+
key: string().min(1),
|
|
45523
|
+
label: string(),
|
|
45524
|
+
/** i18n key of the label, resolved by the declaring addon's namespace. */
|
|
45525
|
+
labelKey: string().optional(),
|
|
45526
|
+
type: _enum([
|
|
45527
|
+
"enum",
|
|
45528
|
+
"number",
|
|
45529
|
+
"boolean",
|
|
45530
|
+
"string"
|
|
45531
|
+
]),
|
|
45532
|
+
/** `enum` only: the closed set of accepted values. */
|
|
45533
|
+
options: array(object({
|
|
45534
|
+
value: string(),
|
|
45535
|
+
label: string()
|
|
45536
|
+
})).optional(),
|
|
45537
|
+
/** `number` only. */
|
|
45538
|
+
min: number().optional(),
|
|
45539
|
+
max: number().optional(),
|
|
45540
|
+
/** What the notifier does when the rule sets nothing; shown as the placeholder. */
|
|
45541
|
+
default: DeliveryParamValueSchema.optional()
|
|
45542
|
+
});
|
|
45469
45543
|
/**
|
|
45470
45544
|
* The canonical notification. `body` is the only hard field (Apprise model).
|
|
45471
45545
|
* `priority` is a 5-level ORDINAL (1=lowest … 3=normal(default) … 5=urgent),
|
|
@@ -45488,7 +45562,13 @@ var NotificationSchema = object({
|
|
|
45488
45562
|
tag: string().optional(),
|
|
45489
45563
|
deviceId: number().optional(),
|
|
45490
45564
|
eventId: string().optional(),
|
|
45491
|
-
metadata: record(string(), unknown()).optional()
|
|
45565
|
+
metadata: record(string(), unknown()).optional(),
|
|
45566
|
+
/**
|
|
45567
|
+
* Values for the parameters the target's kind DECLARES in
|
|
45568
|
+
* {@link TargetKindSchema} `deliveryParams`. Already validated against the
|
|
45569
|
+
* declaration by the sender; a notifier reads only the keys it declared.
|
|
45570
|
+
*/
|
|
45571
|
+
delivery: record(string(), DeliveryParamValueSchema).optional()
|
|
45492
45572
|
});
|
|
45493
45573
|
/** One declared native severity/priority level for a kind. */
|
|
45494
45574
|
var TargetKindLevelSchema = object({
|
|
@@ -45594,6 +45674,11 @@ var TargetKindSchema = object({
|
|
|
45594
45674
|
*/
|
|
45595
45675
|
destinationKeys: array(string()).optional(),
|
|
45596
45676
|
supportsDiscovery: boolean(),
|
|
45677
|
+
/**
|
|
45678
|
+
* Extra delivery parameters a rule may set for a target of this kind (D938).
|
|
45679
|
+
* Absent = none; the rule editor then offers nothing.
|
|
45680
|
+
*/
|
|
45681
|
+
deliveryParams: array(DeliveryParamSchema).optional(),
|
|
45597
45682
|
caps: TargetKindCapsSchema
|
|
45598
45683
|
});
|
|
45599
45684
|
/**
|
|
@@ -57995,7 +58080,9 @@ var ManifestShapeSchema = object({
|
|
|
57995
58080
|
icon: string().optional()
|
|
57996
58081
|
}).optional(),
|
|
57997
58082
|
protected: boolean().optional(),
|
|
57998
|
-
removable: boolean().optional()
|
|
58083
|
+
removable: boolean().optional(),
|
|
58084
|
+
/** Declared Integrations-page block (mirror of `AddonDeclaration.integrationSection`). */
|
|
58085
|
+
integrationSection: _enum(["system", "providers"]).optional()
|
|
57999
58086
|
});
|
|
58000
58087
|
var AddonProcessSchema = object({
|
|
58001
58088
|
pid: number().optional(),
|
|
@@ -59146,6 +59233,56 @@ var buttonCapability = {
|
|
|
59146
59233
|
}) }
|
|
59147
59234
|
};
|
|
59148
59235
|
/**
|
|
59236
|
+
* A pulse train in signed microseconds: mark (+) first, then space (-), strictly
|
|
59237
|
+
* alternating, no zeros, 2..1024 entries.
|
|
59238
|
+
*/
|
|
59239
|
+
var IrTimingsSchema = array(number().int()).min(2).max(1024).superRefine((timings, ctx) => {
|
|
59240
|
+
timings.forEach((value, index) => {
|
|
59241
|
+
const expectMark = index % 2 === 0;
|
|
59242
|
+
if (value === 0 || value > 0 !== expectMark) ctx.addIssue({
|
|
59243
|
+
code: "custom",
|
|
59244
|
+
message: `timing ${index} must be a non-zero ${expectMark ? "mark (positive)" : "space (negative)"}`,
|
|
59245
|
+
path: [index]
|
|
59246
|
+
});
|
|
59247
|
+
});
|
|
59248
|
+
});
|
|
59249
|
+
/** Per-command transmit options. Every key is optional; a transmitter applies what it can. */
|
|
59250
|
+
var TransmitSettingsSchema = object({
|
|
59251
|
+
carrierHz: number().int().positive().optional(),
|
|
59252
|
+
dutyCyclePercent: number().int().min(1).max(100).optional(),
|
|
59253
|
+
repeat: number().int().min(0).max(20).optional(),
|
|
59254
|
+
repeatDelayMs: number().int().min(0).optional()
|
|
59255
|
+
});
|
|
59256
|
+
/** The setting keys a transmitter may declare as settable (`getInfo.settable`). */
|
|
59257
|
+
var TransmitSettingKeySchema = _enum([
|
|
59258
|
+
"carrierHz",
|
|
59259
|
+
"dutyCyclePercent",
|
|
59260
|
+
"repeat",
|
|
59261
|
+
"repeatDelayMs"
|
|
59262
|
+
]);
|
|
59263
|
+
var IrMediumSchema = _enum(["ir", "rf"]);
|
|
59264
|
+
var IrSendResultSchema = object({
|
|
59265
|
+
ok: literal(true),
|
|
59266
|
+
/** Settings the transmitter could not apply; the train was still sent. */
|
|
59267
|
+
ignoredSettings: array(string())
|
|
59268
|
+
});
|
|
59269
|
+
var IrTransmitterInfoSchema = object({
|
|
59270
|
+
media: array(IrMediumSchema),
|
|
59271
|
+
settable: array(TransmitSettingKeySchema),
|
|
59272
|
+
maxTimings: number().int().positive()
|
|
59273
|
+
});
|
|
59274
|
+
DeviceType.Generic, method(object({
|
|
59275
|
+
deviceId: number().int().nonnegative(),
|
|
59276
|
+
timings: IrTimingsSchema,
|
|
59277
|
+
settings: TransmitSettingsSchema.optional()
|
|
59278
|
+
}), IrSendResultSchema, {
|
|
59279
|
+
kind: "mutation",
|
|
59280
|
+
auth: "protected"
|
|
59281
|
+
}), method(object({ deviceId: number().int().nonnegative() }), IrTransmitterInfoSchema, {
|
|
59282
|
+
kind: "query",
|
|
59283
|
+
auth: "protected"
|
|
59284
|
+
});
|
|
59285
|
+
/**
|
|
59149
59286
|
* `calendar-source` — collection cap exposing per-provider calendars and
|
|
59150
59287
|
* their events. Every addon that contributes calendars (Home Assistant,
|
|
59151
59288
|
* a future Google Calendar addon, …) registers a provider here. The hub
|
|
@@ -65206,9 +65343,14 @@ var PetFeederStatusSchema = object({
|
|
|
65206
65343
|
* (`device_class: problem`, on = low). True when the tank reports empty,
|
|
65207
65344
|
* or, on a dual-hopper model, when EITHER hopper is empty. */
|
|
65208
65345
|
lowFood: boolean(),
|
|
65209
|
-
/** Battery charge 0..100 (%).
|
|
65210
|
-
*
|
|
65346
|
+
/** Battery charge 0..100 (%). On a feeder running on `mains` this is the
|
|
65347
|
+
* BACKUP battery's charge, not the power source. Null when the device has
|
|
65348
|
+
* no battery reading. */
|
|
65211
65349
|
batteryPower: number().min(0).max(100).nullable().meta(readingMeta("percentage")),
|
|
65350
|
+
/** What the feeder is powered from right now: `mains` (plugged in, the
|
|
65351
|
+
* battery is only a backup) or `battery`. Null when the device does not
|
|
65352
|
+
* report it. */
|
|
65353
|
+
powerSource: _enum(["mains", "battery"]).nullable(),
|
|
65212
65354
|
/**
|
|
65213
65355
|
* Desiccant life remaining, stored in seconds (duration base, D944).
|
|
65214
65356
|
* Providers convert from the days the feeder reports. Null when the
|
|
@@ -76871,6 +77013,20 @@ Object.freeze({
|
|
|
76871
77013
|
access: "create",
|
|
76872
77014
|
role: "viewer"
|
|
76873
77015
|
},
|
|
77016
|
+
"irTransmitter.getInfo": {
|
|
77017
|
+
capName: "ir-transmitter",
|
|
77018
|
+
capScope: "device",
|
|
77019
|
+
addonId: null,
|
|
77020
|
+
access: "view",
|
|
77021
|
+
role: "viewer"
|
|
77022
|
+
},
|
|
77023
|
+
"irTransmitter.send": {
|
|
77024
|
+
capName: "ir-transmitter",
|
|
77025
|
+
capScope: "device",
|
|
77026
|
+
addonId: null,
|
|
77027
|
+
access: "create",
|
|
77028
|
+
role: "viewer"
|
|
77029
|
+
},
|
|
76874
77030
|
"keychain.delete": {
|
|
76875
77031
|
capName: "keychain",
|
|
76876
77032
|
capScope: "system",
|
|
@@ -84494,6 +84650,11 @@ var ACTUATOR_CAP_VOCABULARY = {
|
|
|
84494
84650
|
icon: "circle-dot"
|
|
84495
84651
|
}]
|
|
84496
84652
|
},
|
|
84653
|
+
"ir-transmitter": {
|
|
84654
|
+
scope: "device",
|
|
84655
|
+
noun: t("IR / RF transmitter", "Trasmettitore IR / RF"),
|
|
84656
|
+
notOperatorFacing: { send: "a raw pulse train is not something an operator composes in an automation; the remote that owns the command table sends it" }
|
|
84657
|
+
},
|
|
84497
84658
|
control: {
|
|
84498
84659
|
scope: "device",
|
|
84499
84660
|
noun: t("Control", "Controllo"),
|
|
@@ -88224,6 +88385,16 @@ Object.freeze({
|
|
|
88224
88385
|
form: "single",
|
|
88225
88386
|
optional: false
|
|
88226
88387
|
}],
|
|
88388
|
+
"irTransmitter.getInfo": [{
|
|
88389
|
+
name: "deviceId",
|
|
88390
|
+
form: "single",
|
|
88391
|
+
optional: false
|
|
88392
|
+
}],
|
|
88393
|
+
"irTransmitter.send": [{
|
|
88394
|
+
name: "deviceId",
|
|
88395
|
+
form: "single",
|
|
88396
|
+
optional: false
|
|
88397
|
+
}],
|
|
88227
88398
|
"keychain.deleteDeviceScope": [{
|
|
88228
88399
|
name: "deviceId",
|
|
88229
88400
|
form: "single",
|
|
@@ -91606,5 +91777,21 @@ function bestLocationMatch(externalName, existing, threshold = .8) {
|
|
|
91606
91777
|
String.raw`(?<=^|["'(\s>,\[{])`;
|
|
91607
91778
|
var MB = 1024 * 1024;
|
|
91608
91779
|
1024 * MB, 3072 * MB;
|
|
91780
|
+
discriminatedUnion("kind", [object({
|
|
91781
|
+
kind: literal("raw"),
|
|
91782
|
+
timings: array(number().int()),
|
|
91783
|
+
settings: TransmitSettingsSchema.optional()
|
|
91784
|
+
}), object({
|
|
91785
|
+
kind: literal("pronto"),
|
|
91786
|
+
code: string()
|
|
91787
|
+
})]);
|
|
91788
|
+
object({
|
|
91789
|
+
manufacturer: string().optional(),
|
|
91790
|
+
supportedModels: array(string()).optional(),
|
|
91791
|
+
supportedController: string().optional(),
|
|
91792
|
+
commandsEncoding: string(),
|
|
91793
|
+
delay: number().nonnegative().optional(),
|
|
91794
|
+
commands: record(string(), unknown())
|
|
91795
|
+
});
|
|
91609
91796
|
//#endregion
|
|
91610
91797
|
export { lawnMowerControlCapability as $, union as $t, buttonCapability as A, weatherCapability as At, coverCapability as B, defineRecordKinds as Bt, batteryCapability as C, tryConvertDelta as Ct, brokerCapability as D, valveCapability as Dt, brightnessCapability as E, vacuumControlCapability as Et, connectivityCapability as F, BaseAddon as Ft, eventEmitterCapability as G, array as Gt, deviceAdoptionCapability as H, isReadingQuantity as Ht, consumableFormOf as I, RecordSecretUnavailableError as It, gasCapability as J, literal as Jt, fanControlCapability as K, boolean as Kt, consumableKindOf as L, baseUnitOf as Lt, carbonMonoxideCapability as M, DeviceRole as Mt, climateControlCapability as N, DeviceType as Nt, buildAddonRouteProvider as O, vibrationCapability as Ot, colorCapability as P, errMsg as Pt, ingestReading as Q, string as Qt, contactCapability as R, createEvent as Rt, automationControlCapability as S, temperatureSensorCapability as St, binaryCapability as T, updateCapability as Tt, deviceExportCapability as U, nodePin as Ut, deviceAdminLinkCapability as V, entryBody as Vt, enumSensorCapability as W, _enum as Wt, humiditySensorCapability as X, object as Xt, humidifierCapability as Y, number as Yt, imageCapability as Z, record as Zt, accessoriesCapability as _, runningStateCapability as _t, COCO_TO_MACRO as a, notifierCapability as at, alarmPanelCapability as b, switchCapability as bt, ConsumableItemSchema as c, parseAdminBase as ct, FanDirectionSchema as d, presenceCapability as dt, unknown as en, lockControlCapability as et, HvacModeSchema as f, pressureSensorCapability as ft, TargetSchema as g, runningFromVacuumState as gt, RUNNING_STATE_COLD as h, runningFromMediaPlayer as ht, CAMERA_SWITCH_ORDER as i, notificationOutputCapability as it, calendarSourceCapability as j, DeviceFeature as jt, buildDeviceAdminUrl as k, waterHeaterCapability as kt, ConsumableStatusSchema as l, powerMeterCapability as lt, PLUG_APPLIANCE_TYPES as m, runningFromLawnMower as mt, BaseDevice as n, EventCategory as nn, motionCapability as nt, CameraSwitchIdSchema as o, numericSensorCapability as ot, MediaPlayerRepeatSchema as p, quantityFromUnit as pt, floodCapability as q, discriminatedUnion as qt, BaseDeviceProvider as r, normalizeUnit as rt, ConsumableFormSchema as s, oauthIntegrationCapability as st, AlarmArmModeSchema as t, url as tn, mediaPlayerCapability as tt, EnumSensorDateTimeFormatSchema as u, prepareNotification as ut, addonRoutesCapability as v, scriptRunnerCapability as vt, bestLocationMatch as w, tryConvertUnit as wt, ambientLightSensorCapability as x, tamperCapability as xt, airQualitySensorCapability as y, smokeCapability as yt, controlCapability as z, defineEntryKind as zt };
|
|
@@ -5580,7 +5580,7 @@ var ZodIssueCode = {
|
|
|
5580
5580
|
var ZodFirstPartyTypeKind;
|
|
5581
5581
|
ZodFirstPartyTypeKind || (ZodFirstPartyTypeKind = {});
|
|
5582
5582
|
//#endregion
|
|
5583
|
-
//#region ../types/dist/sleep-
|
|
5583
|
+
//#region ../types/dist/sleep-BAvUCi_2.mjs
|
|
5584
5584
|
/**
|
|
5585
5585
|
* The audio chunk plane's byte format, and the ONE expansion from a coded
|
|
5586
5586
|
* window to float samples (D455).
|
|
@@ -9035,6 +9035,7 @@ var CAP_NAMES = Object.freeze([
|
|
|
9035
9035
|
"image-settings",
|
|
9036
9036
|
"integrations",
|
|
9037
9037
|
"intercom",
|
|
9038
|
+
"ir-transmitter",
|
|
9038
9039
|
"keychain",
|
|
9039
9040
|
"keychain-admin",
|
|
9040
9041
|
"lawn-mower-control",
|
|
@@ -10282,6 +10283,11 @@ Object.freeze({
|
|
|
10282
10283
|
"path": "batteryPower",
|
|
10283
10284
|
"valueType": "number"
|
|
10284
10285
|
},
|
|
10286
|
+
{
|
|
10287
|
+
"path": "powerSource",
|
|
10288
|
+
"valueType": "enum",
|
|
10289
|
+
"enumValues": ["mains", "battery"]
|
|
10290
|
+
},
|
|
10285
10291
|
{
|
|
10286
10292
|
"path": "desiccantLeftDays",
|
|
10287
10293
|
"valueType": "number"
|
|
@@ -10865,7 +10871,7 @@ object({
|
|
|
10865
10871
|
params: record(string(), union([string(), number()])).optional()
|
|
10866
10872
|
});
|
|
10867
10873
|
//#endregion
|
|
10868
|
-
//#region ../types/dist/err-msg-
|
|
10874
|
+
//#region ../types/dist/err-msg-BCdlR2Li.mjs
|
|
10869
10875
|
var DeviceType = /* @__PURE__ */ function(DeviceType) {
|
|
10870
10876
|
DeviceType["Camera"] = "camera";
|
|
10871
10877
|
DeviceType["Hub"] = "hub";
|
|
@@ -11211,6 +11217,9 @@ var DeviceRole = /* @__PURE__ */ function(DeviceRole) {
|
|
|
11211
11217
|
/** Fallback when the notifier service name doesn't match a known
|
|
11212
11218
|
* pattern. */
|
|
11213
11219
|
DeviceRole["GenericNotifier"] = "generic-notifier";
|
|
11220
|
+
/** Emits a pulse train (infrared or RF) on request — the `ir-transmitter`
|
|
11221
|
+
* cap. A `DeviceType.Generic` device. */
|
|
11222
|
+
DeviceRole["IrTransmitter"] = "ir-transmitter";
|
|
11214
11223
|
return DeviceRole;
|
|
11215
11224
|
}({});
|
|
11216
11225
|
/**
|
|
@@ -11224,7 +11233,7 @@ function errMsg(err) {
|
|
|
11224
11233
|
return String(err);
|
|
11225
11234
|
}
|
|
11226
11235
|
//#endregion
|
|
11227
|
-
//#region ../types/dist/composition-
|
|
11236
|
+
//#region ../types/dist/composition-DpFv_J6D.mjs
|
|
11228
11237
|
/**
|
|
11229
11238
|
* The ffmpeg build every CamStack node downloads, per platform and arch.
|
|
11230
11239
|
*
|
|
@@ -19454,12 +19463,13 @@ var CHANGED = {
|
|
|
19454
19463
|
expr: "now"
|
|
19455
19464
|
};
|
|
19456
19465
|
function numeric(input) {
|
|
19466
|
+
const { alsoFrom, ...base } = input;
|
|
19457
19467
|
return {
|
|
19458
|
-
...
|
|
19468
|
+
...base,
|
|
19459
19469
|
family: "numeric",
|
|
19460
19470
|
deviceType: DeviceType.Sensor,
|
|
19461
19471
|
memberDeviceType: DeviceType.Sensor,
|
|
19462
|
-
memberDeviceTypes: [DeviceType.Sensor],
|
|
19472
|
+
memberDeviceTypes: [DeviceType.Sensor, ...alsoFrom?.deviceTypes ?? []],
|
|
19463
19473
|
activeWhen: void 0,
|
|
19464
19474
|
commandCaps: [],
|
|
19465
19475
|
baseUnit: baseUnitOf(input.quantity),
|
|
@@ -19467,9 +19477,10 @@ function numeric(input) {
|
|
|
19467
19477
|
accept: [{
|
|
19468
19478
|
cap: input.outputCap,
|
|
19469
19479
|
fieldPath: input.outputField
|
|
19470
|
-
}]
|
|
19480
|
+
}, ...alsoFrom === void 0 ? [] : [alsoFrom.accept]]
|
|
19471
19481
|
};
|
|
19472
19482
|
}
|
|
19483
|
+
var CLIMATE_DEVICES = [DeviceType.Thermostat, DeviceType.Climate];
|
|
19473
19484
|
function binary(input) {
|
|
19474
19485
|
return {
|
|
19475
19486
|
...input,
|
|
@@ -19495,7 +19506,14 @@ var GROUP_TEMPLATES = [
|
|
|
19495
19506
|
quantity: "temperature",
|
|
19496
19507
|
defaultAggregate: "mean",
|
|
19497
19508
|
empty: "null",
|
|
19498
|
-
companions: [NOW$2]
|
|
19509
|
+
companions: [NOW$2],
|
|
19510
|
+
alsoFrom: {
|
|
19511
|
+
deviceTypes: CLIMATE_DEVICES,
|
|
19512
|
+
accept: {
|
|
19513
|
+
cap: "climate-control",
|
|
19514
|
+
fieldPath: "currentTemp"
|
|
19515
|
+
}
|
|
19516
|
+
}
|
|
19499
19517
|
}),
|
|
19500
19518
|
numeric({
|
|
19501
19519
|
id: "humidity",
|
|
@@ -19506,7 +19524,14 @@ var GROUP_TEMPLATES = [
|
|
|
19506
19524
|
quantity: "humidity",
|
|
19507
19525
|
defaultAggregate: "mean",
|
|
19508
19526
|
empty: "null",
|
|
19509
|
-
companions: [NOW$2]
|
|
19527
|
+
companions: [NOW$2],
|
|
19528
|
+
alsoFrom: {
|
|
19529
|
+
deviceTypes: CLIMATE_DEVICES,
|
|
19530
|
+
accept: {
|
|
19531
|
+
cap: "climate-control",
|
|
19532
|
+
fieldPath: "currentHumidity"
|
|
19533
|
+
}
|
|
19534
|
+
}
|
|
19510
19535
|
}),
|
|
19511
19536
|
numeric({
|
|
19512
19537
|
id: "pressure",
|
|
@@ -44179,6 +44204,17 @@ var LlmProfileSchema = object({
|
|
|
44179
44204
|
* field in its editor only when its descriptor lists it in `profileFields`. */
|
|
44180
44205
|
topK: number().int().positive().optional(),
|
|
44181
44206
|
maxTokens: number().int().positive().optional(),
|
|
44207
|
+
/** How hard the model "thinks" before it answers. Omitted = the model's own
|
|
44208
|
+
* default. `off` matters for structured output: a thinking model can spend
|
|
44209
|
+
* the whole completion on reasoning and return an empty `content`. Carried
|
|
44210
|
+
* only by the wires that have it — a kind offers the field in its editor
|
|
44211
|
+
* only when its descriptor lists it in `profileFields`. */
|
|
44212
|
+
reasoningEffort: _enum([
|
|
44213
|
+
"off",
|
|
44214
|
+
"low",
|
|
44215
|
+
"medium",
|
|
44216
|
+
"high"
|
|
44217
|
+
]).optional(),
|
|
44182
44218
|
/** Prompt context window. Advisory for cloud kinds (they enforce their own). */
|
|
44183
44219
|
contextLength: number().int().positive().optional(),
|
|
44184
44220
|
/** Default system prompt. A caller's `system` REPLACES it (never appends —
|
|
@@ -44217,6 +44253,7 @@ var LlmProfileFieldSchema = _enum([
|
|
|
44217
44253
|
"topP",
|
|
44218
44254
|
"topK",
|
|
44219
44255
|
"maxTokens",
|
|
44256
|
+
"reasoningEffort",
|
|
44220
44257
|
"contextLength",
|
|
44221
44258
|
"systemPrompt",
|
|
44222
44259
|
"timeoutMs",
|
|
@@ -45467,6 +45504,43 @@ var NotificationActionSchema = object({
|
|
|
45467
45504
|
*/
|
|
45468
45505
|
mode: _enum(["navigate", "background"]).optional()
|
|
45469
45506
|
});
|
|
45507
|
+
/** A delivery parameter value: what a notifier declared it takes. */
|
|
45508
|
+
var DeliveryParamValueSchema = union([
|
|
45509
|
+
string(),
|
|
45510
|
+
number(),
|
|
45511
|
+
boolean()
|
|
45512
|
+
]);
|
|
45513
|
+
/**
|
|
45514
|
+
* One extra delivery parameter a notifier KIND declares (D938). A rule that
|
|
45515
|
+
* addresses a target of that kind may set it; a kind that declares nothing is
|
|
45516
|
+
* never handed one. The admin UI derives its control from this descriptor —
|
|
45517
|
+
* no editor knows a service by name.
|
|
45518
|
+
*
|
|
45519
|
+
* Optional fields are `.optional()`, never `.default()` (a Zod default does not
|
|
45520
|
+
* run on the addon cap path).
|
|
45521
|
+
*/
|
|
45522
|
+
var DeliveryParamSchema = object({
|
|
45523
|
+
key: string().min(1),
|
|
45524
|
+
label: string(),
|
|
45525
|
+
/** i18n key of the label, resolved by the declaring addon's namespace. */
|
|
45526
|
+
labelKey: string().optional(),
|
|
45527
|
+
type: _enum([
|
|
45528
|
+
"enum",
|
|
45529
|
+
"number",
|
|
45530
|
+
"boolean",
|
|
45531
|
+
"string"
|
|
45532
|
+
]),
|
|
45533
|
+
/** `enum` only: the closed set of accepted values. */
|
|
45534
|
+
options: array(object({
|
|
45535
|
+
value: string(),
|
|
45536
|
+
label: string()
|
|
45537
|
+
})).optional(),
|
|
45538
|
+
/** `number` only. */
|
|
45539
|
+
min: number().optional(),
|
|
45540
|
+
max: number().optional(),
|
|
45541
|
+
/** What the notifier does when the rule sets nothing; shown as the placeholder. */
|
|
45542
|
+
default: DeliveryParamValueSchema.optional()
|
|
45543
|
+
});
|
|
45470
45544
|
/**
|
|
45471
45545
|
* The canonical notification. `body` is the only hard field (Apprise model).
|
|
45472
45546
|
* `priority` is a 5-level ORDINAL (1=lowest … 3=normal(default) … 5=urgent),
|
|
@@ -45489,7 +45563,13 @@ var NotificationSchema = object({
|
|
|
45489
45563
|
tag: string().optional(),
|
|
45490
45564
|
deviceId: number().optional(),
|
|
45491
45565
|
eventId: string().optional(),
|
|
45492
|
-
metadata: record(string(), unknown()).optional()
|
|
45566
|
+
metadata: record(string(), unknown()).optional(),
|
|
45567
|
+
/**
|
|
45568
|
+
* Values for the parameters the target's kind DECLARES in
|
|
45569
|
+
* {@link TargetKindSchema} `deliveryParams`. Already validated against the
|
|
45570
|
+
* declaration by the sender; a notifier reads only the keys it declared.
|
|
45571
|
+
*/
|
|
45572
|
+
delivery: record(string(), DeliveryParamValueSchema).optional()
|
|
45493
45573
|
});
|
|
45494
45574
|
/** One declared native severity/priority level for a kind. */
|
|
45495
45575
|
var TargetKindLevelSchema = object({
|
|
@@ -45595,6 +45675,11 @@ var TargetKindSchema = object({
|
|
|
45595
45675
|
*/
|
|
45596
45676
|
destinationKeys: array(string()).optional(),
|
|
45597
45677
|
supportsDiscovery: boolean(),
|
|
45678
|
+
/**
|
|
45679
|
+
* Extra delivery parameters a rule may set for a target of this kind (D938).
|
|
45680
|
+
* Absent = none; the rule editor then offers nothing.
|
|
45681
|
+
*/
|
|
45682
|
+
deliveryParams: array(DeliveryParamSchema).optional(),
|
|
45598
45683
|
caps: TargetKindCapsSchema
|
|
45599
45684
|
});
|
|
45600
45685
|
/**
|
|
@@ -57996,7 +58081,9 @@ var ManifestShapeSchema = object({
|
|
|
57996
58081
|
icon: string().optional()
|
|
57997
58082
|
}).optional(),
|
|
57998
58083
|
protected: boolean().optional(),
|
|
57999
|
-
removable: boolean().optional()
|
|
58084
|
+
removable: boolean().optional(),
|
|
58085
|
+
/** Declared Integrations-page block (mirror of `AddonDeclaration.integrationSection`). */
|
|
58086
|
+
integrationSection: _enum(["system", "providers"]).optional()
|
|
58000
58087
|
});
|
|
58001
58088
|
var AddonProcessSchema = object({
|
|
58002
58089
|
pid: number().optional(),
|
|
@@ -59147,6 +59234,56 @@ var buttonCapability = {
|
|
|
59147
59234
|
}) }
|
|
59148
59235
|
};
|
|
59149
59236
|
/**
|
|
59237
|
+
* A pulse train in signed microseconds: mark (+) first, then space (-), strictly
|
|
59238
|
+
* alternating, no zeros, 2..1024 entries.
|
|
59239
|
+
*/
|
|
59240
|
+
var IrTimingsSchema = array(number().int()).min(2).max(1024).superRefine((timings, ctx) => {
|
|
59241
|
+
timings.forEach((value, index) => {
|
|
59242
|
+
const expectMark = index % 2 === 0;
|
|
59243
|
+
if (value === 0 || value > 0 !== expectMark) ctx.addIssue({
|
|
59244
|
+
code: "custom",
|
|
59245
|
+
message: `timing ${index} must be a non-zero ${expectMark ? "mark (positive)" : "space (negative)"}`,
|
|
59246
|
+
path: [index]
|
|
59247
|
+
});
|
|
59248
|
+
});
|
|
59249
|
+
});
|
|
59250
|
+
/** Per-command transmit options. Every key is optional; a transmitter applies what it can. */
|
|
59251
|
+
var TransmitSettingsSchema = object({
|
|
59252
|
+
carrierHz: number().int().positive().optional(),
|
|
59253
|
+
dutyCyclePercent: number().int().min(1).max(100).optional(),
|
|
59254
|
+
repeat: number().int().min(0).max(20).optional(),
|
|
59255
|
+
repeatDelayMs: number().int().min(0).optional()
|
|
59256
|
+
});
|
|
59257
|
+
/** The setting keys a transmitter may declare as settable (`getInfo.settable`). */
|
|
59258
|
+
var TransmitSettingKeySchema = _enum([
|
|
59259
|
+
"carrierHz",
|
|
59260
|
+
"dutyCyclePercent",
|
|
59261
|
+
"repeat",
|
|
59262
|
+
"repeatDelayMs"
|
|
59263
|
+
]);
|
|
59264
|
+
var IrMediumSchema = _enum(["ir", "rf"]);
|
|
59265
|
+
var IrSendResultSchema = object({
|
|
59266
|
+
ok: literal(true),
|
|
59267
|
+
/** Settings the transmitter could not apply; the train was still sent. */
|
|
59268
|
+
ignoredSettings: array(string())
|
|
59269
|
+
});
|
|
59270
|
+
var IrTransmitterInfoSchema = object({
|
|
59271
|
+
media: array(IrMediumSchema),
|
|
59272
|
+
settable: array(TransmitSettingKeySchema),
|
|
59273
|
+
maxTimings: number().int().positive()
|
|
59274
|
+
});
|
|
59275
|
+
DeviceType.Generic, method(object({
|
|
59276
|
+
deviceId: number().int().nonnegative(),
|
|
59277
|
+
timings: IrTimingsSchema,
|
|
59278
|
+
settings: TransmitSettingsSchema.optional()
|
|
59279
|
+
}), IrSendResultSchema, {
|
|
59280
|
+
kind: "mutation",
|
|
59281
|
+
auth: "protected"
|
|
59282
|
+
}), method(object({ deviceId: number().int().nonnegative() }), IrTransmitterInfoSchema, {
|
|
59283
|
+
kind: "query",
|
|
59284
|
+
auth: "protected"
|
|
59285
|
+
});
|
|
59286
|
+
/**
|
|
59150
59287
|
* `calendar-source` — collection cap exposing per-provider calendars and
|
|
59151
59288
|
* their events. Every addon that contributes calendars (Home Assistant,
|
|
59152
59289
|
* a future Google Calendar addon, …) registers a provider here. The hub
|
|
@@ -65207,9 +65344,14 @@ var PetFeederStatusSchema = object({
|
|
|
65207
65344
|
* (`device_class: problem`, on = low). True when the tank reports empty,
|
|
65208
65345
|
* or, on a dual-hopper model, when EITHER hopper is empty. */
|
|
65209
65346
|
lowFood: boolean(),
|
|
65210
|
-
/** Battery charge 0..100 (%).
|
|
65211
|
-
*
|
|
65347
|
+
/** Battery charge 0..100 (%). On a feeder running on `mains` this is the
|
|
65348
|
+
* BACKUP battery's charge, not the power source. Null when the device has
|
|
65349
|
+
* no battery reading. */
|
|
65212
65350
|
batteryPower: number().min(0).max(100).nullable().meta(readingMeta("percentage")),
|
|
65351
|
+
/** What the feeder is powered from right now: `mains` (plugged in, the
|
|
65352
|
+
* battery is only a backup) or `battery`. Null when the device does not
|
|
65353
|
+
* report it. */
|
|
65354
|
+
powerSource: _enum(["mains", "battery"]).nullable(),
|
|
65213
65355
|
/**
|
|
65214
65356
|
* Desiccant life remaining, stored in seconds (duration base, D944).
|
|
65215
65357
|
* Providers convert from the days the feeder reports. Null when the
|
|
@@ -76872,6 +77014,20 @@ Object.freeze({
|
|
|
76872
77014
|
access: "create",
|
|
76873
77015
|
role: "viewer"
|
|
76874
77016
|
},
|
|
77017
|
+
"irTransmitter.getInfo": {
|
|
77018
|
+
capName: "ir-transmitter",
|
|
77019
|
+
capScope: "device",
|
|
77020
|
+
addonId: null,
|
|
77021
|
+
access: "view",
|
|
77022
|
+
role: "viewer"
|
|
77023
|
+
},
|
|
77024
|
+
"irTransmitter.send": {
|
|
77025
|
+
capName: "ir-transmitter",
|
|
77026
|
+
capScope: "device",
|
|
77027
|
+
addonId: null,
|
|
77028
|
+
access: "create",
|
|
77029
|
+
role: "viewer"
|
|
77030
|
+
},
|
|
76875
77031
|
"keychain.delete": {
|
|
76876
77032
|
capName: "keychain",
|
|
76877
77033
|
capScope: "system",
|
|
@@ -84495,6 +84651,11 @@ var ACTUATOR_CAP_VOCABULARY = {
|
|
|
84495
84651
|
icon: "circle-dot"
|
|
84496
84652
|
}]
|
|
84497
84653
|
},
|
|
84654
|
+
"ir-transmitter": {
|
|
84655
|
+
scope: "device",
|
|
84656
|
+
noun: t("IR / RF transmitter", "Trasmettitore IR / RF"),
|
|
84657
|
+
notOperatorFacing: { send: "a raw pulse train is not something an operator composes in an automation; the remote that owns the command table sends it" }
|
|
84658
|
+
},
|
|
84498
84659
|
control: {
|
|
84499
84660
|
scope: "device",
|
|
84500
84661
|
noun: t("Control", "Controllo"),
|
|
@@ -88225,6 +88386,16 @@ Object.freeze({
|
|
|
88225
88386
|
form: "single",
|
|
88226
88387
|
optional: false
|
|
88227
88388
|
}],
|
|
88389
|
+
"irTransmitter.getInfo": [{
|
|
88390
|
+
name: "deviceId",
|
|
88391
|
+
form: "single",
|
|
88392
|
+
optional: false
|
|
88393
|
+
}],
|
|
88394
|
+
"irTransmitter.send": [{
|
|
88395
|
+
name: "deviceId",
|
|
88396
|
+
form: "single",
|
|
88397
|
+
optional: false
|
|
88398
|
+
}],
|
|
88228
88399
|
"keychain.deleteDeviceScope": [{
|
|
88229
88400
|
name: "deviceId",
|
|
88230
88401
|
form: "single",
|
|
@@ -91607,6 +91778,22 @@ function bestLocationMatch(externalName, existing, threshold = .8) {
|
|
|
91607
91778
|
String.raw`(?<=^|["'(\s>,\[{])`;
|
|
91608
91779
|
var MB = 1024 * 1024;
|
|
91609
91780
|
1024 * MB, 3072 * MB;
|
|
91781
|
+
discriminatedUnion("kind", [object({
|
|
91782
|
+
kind: literal("raw"),
|
|
91783
|
+
timings: array(number().int()),
|
|
91784
|
+
settings: TransmitSettingsSchema.optional()
|
|
91785
|
+
}), object({
|
|
91786
|
+
kind: literal("pronto"),
|
|
91787
|
+
code: string()
|
|
91788
|
+
})]);
|
|
91789
|
+
object({
|
|
91790
|
+
manufacturer: string().optional(),
|
|
91791
|
+
supportedModels: array(string()).optional(),
|
|
91792
|
+
supportedController: string().optional(),
|
|
91793
|
+
commandsEncoding: string(),
|
|
91794
|
+
delay: number().nonnegative().optional(),
|
|
91795
|
+
commands: record(string(), unknown())
|
|
91796
|
+
});
|
|
91610
91797
|
//#endregion
|
|
91611
91798
|
Object.defineProperty(exports, "AlarmArmModeSchema", {
|
|
91612
91799
|
enumerable: true,
|
|
@@ -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_dist = require("../dist-
|
|
27
|
+
const require_dist = require("../dist-C_PMvyYa.js");
|
|
28
28
|
let node_crypto = require("node:crypto");
|
|
29
29
|
require("node:zlib");
|
|
30
30
|
let node_fs = require("node:fs");
|
|
@@ -3488,6 +3488,10 @@ function controlEntitySpecs(slice, quantity) {
|
|
|
3488
3488
|
}, kindExtra];
|
|
3489
3489
|
}
|
|
3490
3490
|
var CAPS_NOT_EXPORTED = [
|
|
3491
|
+
{
|
|
3492
|
+
cap: "ir-transmitter",
|
|
3493
|
+
reason: "A pulse-train emitter with no state: it is driven by the remote that owns a command table, and a raw send has no meaningful single entity."
|
|
3494
|
+
},
|
|
3491
3495
|
{
|
|
3492
3496
|
cap: "group-status",
|
|
3493
3497
|
reason: "Bookkeeping for a helper group (D944): how many members were included, excluded, or named. The value an operator automates on is the output capability (the temperature, the motion, the watts). These counts are session-only, have no history, and would publish a second entity that never means the reading."
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { Ft as BaseAddon, Gt as array, Ht as isReadingQuantity, I as consumableFormOf, L as consumableKindOf, Lt as baseUnitOf, O as buildAddonRouteProvider, Qt as string, U as deviceExportCapability, Ut as nodePin, Xt as object, a as COCO_TO_MACRO, c as ConsumableItemSchema, d as FanDirectionSchema, en as unknown, f as HvacModeSchema, i as CAMERA_SWITCH_ORDER, l as ConsumableStatusSchema, m as PLUG_APPLIANCE_TYPES, nn as EventCategory, o as CameraSwitchIdSchema, p as MediaPlayerRepeatSchema, s as ConsumableFormSchema, st as oauthIntegrationCapability, t as AlarmArmModeSchema, v as addonRoutesCapability } from "../dist-
|
|
1
|
+
import { Ft as BaseAddon, Gt as array, Ht as isReadingQuantity, I as consumableFormOf, L as consumableKindOf, Lt as baseUnitOf, O as buildAddonRouteProvider, Qt as string, U as deviceExportCapability, Ut as nodePin, Xt as object, a as COCO_TO_MACRO, c as ConsumableItemSchema, d as FanDirectionSchema, en as unknown, f as HvacModeSchema, i as CAMERA_SWITCH_ORDER, l as ConsumableStatusSchema, m as PLUG_APPLIANCE_TYPES, nn as EventCategory, o as CameraSwitchIdSchema, p as MediaPlayerRepeatSchema, s as ConsumableFormSchema, st as oauthIntegrationCapability, t as AlarmArmModeSchema, v as addonRoutesCapability } from "../dist-CYl0u8cF.mjs";
|
|
2
2
|
import { createHmac, timingSafeEqual } from "node:crypto";
|
|
3
3
|
import "node:zlib";
|
|
4
4
|
import "node:fs";
|
|
@@ -3453,6 +3453,10 @@ function controlEntitySpecs(slice, quantity) {
|
|
|
3453
3453
|
}, kindExtra];
|
|
3454
3454
|
}
|
|
3455
3455
|
var CAPS_NOT_EXPORTED = [
|
|
3456
|
+
{
|
|
3457
|
+
cap: "ir-transmitter",
|
|
3458
|
+
reason: "A pulse-train emitter with no state: it is driven by the remote that owns a command table, and a raw send has no meaningful single entity."
|
|
3459
|
+
},
|
|
3456
3460
|
{
|
|
3457
3461
|
cap: "group-status",
|
|
3458
3462
|
reason: "Bookkeeping for a helper group (D944): how many members were included, excluded, or named. The value an operator automates on is the output capability (the temperature, the motion, the watts). These counts are session-only, have no history, and would publish a second entity that never means the reading."
|