@camstack/addon-provider-homeassistant 1.2.616 → 1.2.618
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 +4 -8
- package/dist/addon.mjs +4 -8
- package/dist/{dist-DMbVsggA.js → dist-BNSbY2dZ.js} +114 -67
- package/dist/{dist-BQjwQmdj.mjs → dist-BRSVYxR3.mjs} +114 -67
- package/dist/ha-export/ha-export.addon.js +5 -7
- package/dist/ha-export/ha-export.addon.mjs +5 -7
- package/i18n/en.json +4 -6
- package/i18n/it.json +4 -6
- package/package.json +1 -1
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-BNSbY2dZ.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
|
|
@@ -6874,14 +6874,14 @@ function haConfigSchema() {
|
|
|
6874
6874
|
labelKey: "provider-homeassistant:haConfig.s_connection.service.label",
|
|
6875
6875
|
required: true,
|
|
6876
6876
|
placeholder: "mobile_app_pixel_7",
|
|
6877
|
-
description: "The
|
|
6877
|
+
description: "The part after `notify.` (e.g. `mobile_app_pixel_7`); use Discover to list them.",
|
|
6878
6878
|
descriptionKey: "provider-homeassistant:haConfig.s_connection.service.description"
|
|
6879
6879
|
}, {
|
|
6880
6880
|
type: "text",
|
|
6881
6881
|
key: "brokerId",
|
|
6882
6882
|
label: "Broker",
|
|
6883
6883
|
labelKey: "provider-homeassistant:haConfig.s_connection.brokerId.label",
|
|
6884
|
-
description: "Optional
|
|
6884
|
+
description: "Optional; blank uses the only configured broker.",
|
|
6885
6885
|
descriptionKey: "provider-homeassistant:haConfig.s_connection.brokerId.description"
|
|
6886
6886
|
}]
|
|
6887
6887
|
}] };
|
|
@@ -8173,8 +8173,6 @@ var HaProviderAddon = class HaProviderAddon extends require_dist.BaseDeviceProvi
|
|
|
8173
8173
|
id: "ha-calendars-import",
|
|
8174
8174
|
title: "Calendars to import",
|
|
8175
8175
|
titleKey: "provider-homeassistant:globalSettings.s_ha-calendars-import.title",
|
|
8176
|
-
description: "Pick which Home Assistant calendar entities feed System → Calendars. Nothing selected = no calendars imported.",
|
|
8177
|
-
descriptionKey: "provider-homeassistant:globalSettings.s_ha-calendars-import.description",
|
|
8178
8176
|
columns: 1,
|
|
8179
8177
|
fields: [{
|
|
8180
8178
|
type: "multiselect",
|
|
@@ -8191,15 +8189,13 @@ var HaProviderAddon = class HaProviderAddon extends require_dist.BaseDeviceProvi
|
|
|
8191
8189
|
id: "ha-broker",
|
|
8192
8190
|
title: "Home Assistant broker",
|
|
8193
8191
|
titleKey: "provider-homeassistant:globalSettings.s_ha-broker.title",
|
|
8194
|
-
description: "Home Assistant brokers are managed in Connectivity → Brokers.",
|
|
8195
|
-
descriptionKey: "provider-homeassistant:globalSettings.s_ha-broker.description",
|
|
8196
8192
|
columns: 1,
|
|
8197
8193
|
fields: [{
|
|
8198
8194
|
type: "info",
|
|
8199
8195
|
key: "brokerHelp",
|
|
8200
8196
|
label: "Brokers are managed separately",
|
|
8201
8197
|
labelKey: "provider-homeassistant:globalSettings.s_ha-broker.brokerHelp.label",
|
|
8202
|
-
content: "This integration links to a Home Assistant broker
|
|
8198
|
+
content: "This integration links to a Home Assistant broker managed under Connectivity → Brokers."
|
|
8203
8199
|
}]
|
|
8204
8200
|
}] });
|
|
8205
8201
|
}
|
package/dist/addon.mjs
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { A as connectivityCapability, At as discriminatedUnion, B as floodCapability, C as buildAddonRouteProvider, Ct as defineEntryKind, D as carbonMonoxideCapability, Dt as _enum, E as calendarSourceCapability, F as deviceAdoptionCapability, Ft as string, G as lawnMowerControlCapability, H as humidifierCapability, It as union, J as motionCapability, K as lockControlCapability, L as enumSensorCapability, Lt as unknown, M as controlCapability, Mt as number, N as coverCapability, Nt as object, O as climateControlCapability, Ot as array, P as deviceAdminLinkCapability, Pt as record, Q as numericSensorCapability, R as eventEmitterCapability, Rt as url, S as brokerCapability, St as createEvent, T as buttonCapability, Tt as entryBody, U as humiditySensorCapability, V as gasCapability, W as imageCapability, X as notificationOutputCapability, Y as normalizeUnit, Z as notifierCapability, _ as automationControlCapability, _t as DeviceRole, at as scriptRunnerCapability, b as binaryCapability, ct as tamperCapability, d as TargetSchema, dt as vacuumControlCapability, et as parseAdminBase, f as accessoriesCapability, ft as valveCapability, g as ambientLightSensorCapability, gt as DeviceFeature, h as alarmPanelCapability, ht as weatherCapability, it as pressureSensorCapability, j as contactCapability, jt as literal, k as colorCapability, kt as boolean, lt as temperatureSensorCapability, m as airQualitySensorCapability, mt as waterHeaterCapability, n as BaseDevice, nt as prepareNotification, ot as smokeCapability, p as addonRoutesCapability, pt as vibrationCapability, q as mediaPlayerCapability, r as BaseDeviceProvider, rt as presenceCapability, s as EnumSensorDateTimeFormatSchema, st as switchCapability, tt as powerMeterCapability, ut as updateCapability, v as batteryCapability, vt as DeviceType, w as buildDeviceAdminUrl, wt as defineRecordKinds, x as brightnessCapability, xt as RecordSecretUnavailableError, y as bestLocationMatch, yt as errMsg, z as fanControlCapability, zt as EventCategory } from "./dist-
|
|
1
|
+
import { A as connectivityCapability, At as discriminatedUnion, B as floodCapability, C as buildAddonRouteProvider, Ct as defineEntryKind, D as carbonMonoxideCapability, Dt as _enum, E as calendarSourceCapability, F as deviceAdoptionCapability, Ft as string, G as lawnMowerControlCapability, H as humidifierCapability, It as union, J as motionCapability, K as lockControlCapability, L as enumSensorCapability, Lt as unknown, M as controlCapability, Mt as number, N as coverCapability, Nt as object, O as climateControlCapability, Ot as array, P as deviceAdminLinkCapability, Pt as record, Q as numericSensorCapability, R as eventEmitterCapability, Rt as url, S as brokerCapability, St as createEvent, T as buttonCapability, Tt as entryBody, U as humiditySensorCapability, V as gasCapability, W as imageCapability, X as notificationOutputCapability, Y as normalizeUnit, Z as notifierCapability, _ as automationControlCapability, _t as DeviceRole, at as scriptRunnerCapability, b as binaryCapability, ct as tamperCapability, d as TargetSchema, dt as vacuumControlCapability, et as parseAdminBase, f as accessoriesCapability, ft as valveCapability, g as ambientLightSensorCapability, gt as DeviceFeature, h as alarmPanelCapability, ht as weatherCapability, it as pressureSensorCapability, j as contactCapability, jt as literal, k as colorCapability, kt as boolean, lt as temperatureSensorCapability, m as airQualitySensorCapability, mt as waterHeaterCapability, n as BaseDevice, nt as prepareNotification, ot as smokeCapability, p as addonRoutesCapability, pt as vibrationCapability, q as mediaPlayerCapability, r as BaseDeviceProvider, rt as presenceCapability, s as EnumSensorDateTimeFormatSchema, st as switchCapability, tt as powerMeterCapability, ut as updateCapability, v as batteryCapability, vt as DeviceType, w as buildDeviceAdminUrl, wt as defineRecordKinds, x as brightnessCapability, xt as RecordSecretUnavailableError, y as bestLocationMatch, yt as errMsg, z as fanControlCapability, zt as EventCategory } from "./dist-BRSVYxR3.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
|
|
@@ -6856,14 +6856,14 @@ function haConfigSchema() {
|
|
|
6856
6856
|
labelKey: "provider-homeassistant:haConfig.s_connection.service.label",
|
|
6857
6857
|
required: true,
|
|
6858
6858
|
placeholder: "mobile_app_pixel_7",
|
|
6859
|
-
description: "The
|
|
6859
|
+
description: "The part after `notify.` (e.g. `mobile_app_pixel_7`); use Discover to list them.",
|
|
6860
6860
|
descriptionKey: "provider-homeassistant:haConfig.s_connection.service.description"
|
|
6861
6861
|
}, {
|
|
6862
6862
|
type: "text",
|
|
6863
6863
|
key: "brokerId",
|
|
6864
6864
|
label: "Broker",
|
|
6865
6865
|
labelKey: "provider-homeassistant:haConfig.s_connection.brokerId.label",
|
|
6866
|
-
description: "Optional
|
|
6866
|
+
description: "Optional; blank uses the only configured broker.",
|
|
6867
6867
|
descriptionKey: "provider-homeassistant:haConfig.s_connection.brokerId.description"
|
|
6868
6868
|
}]
|
|
6869
6869
|
}] };
|
|
@@ -8155,8 +8155,6 @@ var HaProviderAddon = class HaProviderAddon extends BaseDeviceProvider {
|
|
|
8155
8155
|
id: "ha-calendars-import",
|
|
8156
8156
|
title: "Calendars to import",
|
|
8157
8157
|
titleKey: "provider-homeassistant:globalSettings.s_ha-calendars-import.title",
|
|
8158
|
-
description: "Pick which Home Assistant calendar entities feed System → Calendars. Nothing selected = no calendars imported.",
|
|
8159
|
-
descriptionKey: "provider-homeassistant:globalSettings.s_ha-calendars-import.description",
|
|
8160
8158
|
columns: 1,
|
|
8161
8159
|
fields: [{
|
|
8162
8160
|
type: "multiselect",
|
|
@@ -8173,15 +8171,13 @@ var HaProviderAddon = class HaProviderAddon extends BaseDeviceProvider {
|
|
|
8173
8171
|
id: "ha-broker",
|
|
8174
8172
|
title: "Home Assistant broker",
|
|
8175
8173
|
titleKey: "provider-homeassistant:globalSettings.s_ha-broker.title",
|
|
8176
|
-
description: "Home Assistant brokers are managed in Connectivity → Brokers.",
|
|
8177
|
-
descriptionKey: "provider-homeassistant:globalSettings.s_ha-broker.description",
|
|
8178
8174
|
columns: 1,
|
|
8179
8175
|
fields: [{
|
|
8180
8176
|
type: "info",
|
|
8181
8177
|
key: "brokerHelp",
|
|
8182
8178
|
label: "Brokers are managed separately",
|
|
8183
8179
|
labelKey: "provider-homeassistant:globalSettings.s_ha-broker.brokerHelp.label",
|
|
8184
|
-
content: "This integration links to a Home Assistant broker
|
|
8180
|
+
content: "This integration links to a Home Assistant broker managed under Connectivity → Brokers."
|
|
8185
8181
|
}]
|
|
8186
8182
|
}] });
|
|
8187
8183
|
}
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
require("node:crypto");
|
|
2
|
-
//#region ../types/dist/event-category-
|
|
2
|
+
//#region ../types/dist/event-category-BfJwUd2S.mjs
|
|
3
3
|
var EventCategory = /* @__PURE__ */ function(EventCategory) {
|
|
4
4
|
EventCategory["SystemBoot"] = "system.boot";
|
|
5
5
|
EventCategory["SystemAddonsReady"] = "system.addons-ready";
|
|
@@ -316,6 +316,15 @@ var EventCategory = /* @__PURE__ */ function(EventCategory) {
|
|
|
316
316
|
*/
|
|
317
317
|
EventCategory["PipelineDetectionBlind"] = "pipeline.detection-blind";
|
|
318
318
|
/**
|
|
319
|
+
* A camera's motion source has fired constantly with no subject for an hour
|
|
320
|
+
* (motion duty or session count over the bar, zero detections) — it is not
|
|
321
|
+
* blind, its motion zones or sensitivity want tuning (D907). Paired with
|
|
322
|
+
* {@link PipelineMotionCalm}.
|
|
323
|
+
*/
|
|
324
|
+
EventCategory["PipelineMotionNoisy"] = "pipeline.motion-noisy";
|
|
325
|
+
/** The recovery edge of {@link PipelineMotionNoisy}: the motion fell back, or a detection arrived. */
|
|
326
|
+
EventCategory["PipelineMotionCalm"] = "pipeline.motion-calm";
|
|
327
|
+
/**
|
|
319
328
|
* Per-camera pipeline config was mutated by the orchestrator
|
|
320
329
|
* (3-level settings change via `setAgentAddonDefaults` /
|
|
321
330
|
* `setCameraStepToggle` / `setCameraPipelineForAgent` or a
|
|
@@ -5555,7 +5564,7 @@ var ZodIssueCode = {
|
|
|
5555
5564
|
var ZodFirstPartyTypeKind;
|
|
5556
5565
|
ZodFirstPartyTypeKind || (ZodFirstPartyTypeKind = {});
|
|
5557
5566
|
//#endregion
|
|
5558
|
-
//#region ../types/dist/sleep-
|
|
5567
|
+
//#region ../types/dist/sleep-DJFUfKvA.mjs
|
|
5559
5568
|
/**
|
|
5560
5569
|
* The audio chunk plane's byte format, and the ONE expansion from a coded
|
|
5561
5570
|
* window to float samples (D455).
|
|
@@ -8154,7 +8163,7 @@ var EntryDescriptorSchema = object({
|
|
|
8154
8163
|
/** JSON Schema of the entry body; `secret: true` marks a password field. */
|
|
8155
8164
|
fields: record(string(), unknown())
|
|
8156
8165
|
}).strict();
|
|
8157
|
-
/** What crosses the wire
|
|
8166
|
+
/** What crosses the wire from an addon: JSON only, no Zod. An unknown key is refused. */
|
|
8158
8167
|
var RecordKindDeclarationSchema = object({
|
|
8159
8168
|
database: _enum(RECORD_DATABASES).default("settings"),
|
|
8160
8169
|
class: _enum(RECORD_CLASSES),
|
|
@@ -8173,14 +8182,6 @@ var RecordKindDeclarationSchema = object({
|
|
|
8173
8182
|
secretPaths: array(string().min(1)).default([]),
|
|
8174
8183
|
/** The id key of each array that carries a secret (`{ headers: 'name' }`). */
|
|
8175
8184
|
secretArrayKeys: record(string(), string()).default({}),
|
|
8176
|
-
/**
|
|
8177
|
-
* RETIRED (D900): the legacy table a kind adopted from during the records
|
|
8178
|
-
* migration. Nothing declares it any more and nothing reads it; the schema
|
|
8179
|
-
* still ACCEPTS it because the catalog rows the migration wrote carry it
|
|
8180
|
-
* (an orphaned kind is never redeclared) and an addon built before the
|
|
8181
|
-
* removal still sends it. Never set it.
|
|
8182
|
-
*/
|
|
8183
|
-
adoptsFrom: string().min(1).optional(),
|
|
8184
8185
|
/** Kinds that must agree through `transact` sit in one file under one family name. */
|
|
8185
8186
|
transactFamily: string().min(1).optional(),
|
|
8186
8187
|
entry: EntryDescriptorSchema.optional()
|
|
@@ -13179,17 +13180,6 @@ object({
|
|
|
13179
13180
|
createdAt: number(),
|
|
13180
13181
|
updatedAt: number()
|
|
13181
13182
|
});
|
|
13182
|
-
object({
|
|
13183
|
-
id: string(),
|
|
13184
|
-
label: string(),
|
|
13185
|
-
isAdmin: boolean().default(false),
|
|
13186
|
-
allowedProviders: AllowedProviderSchema,
|
|
13187
|
-
allowedDevices: AllowedDevicesSchema,
|
|
13188
|
-
tokenHash: string(),
|
|
13189
|
-
tokenPrefix: string(),
|
|
13190
|
-
createdAt: number(),
|
|
13191
|
-
lastUsedAt: number().optional()
|
|
13192
|
-
});
|
|
13193
13183
|
object({
|
|
13194
13184
|
id: string(),
|
|
13195
13185
|
userId: string(),
|
|
@@ -17239,16 +17229,36 @@ var RecordKindStateSchema = _enum([
|
|
|
17239
17229
|
var DeclareKindResultSchema = object({
|
|
17240
17230
|
kindId: number().int(),
|
|
17241
17231
|
state: RecordKindStateSchema,
|
|
17242
|
-
createdIndexes: array(string())
|
|
17243
|
-
/**
|
|
17244
|
-
* RETIRED (D900): always `null`. It carried the records-migration boot guard;
|
|
17245
|
-
* it stays on the wire, null, because an addon built before the removal reads
|
|
17246
|
-
* an ABSENT field as "adoption pending" and refuses to start.
|
|
17247
|
-
*/
|
|
17248
|
-
adoptionPending: _null()
|
|
17232
|
+
createdIndexes: array(string())
|
|
17249
17233
|
});
|
|
17250
17234
|
/** Keychain refs a write released (the old marker is gone from the row): the owner deletes the values. */
|
|
17251
17235
|
var SecretRefsList = array(string());
|
|
17236
|
+
/**
|
|
17237
|
+
* One op of a `transact`: the single-row writes, each on a kind of the caller.
|
|
17238
|
+
* All ops of one call share ONE database file and ONE `transactFamily`.
|
|
17239
|
+
*/
|
|
17240
|
+
var RecordTransactOpSchema = discriminatedUnion("op", [
|
|
17241
|
+
object({
|
|
17242
|
+
op: literal("put"),
|
|
17243
|
+
kind: RecordKindNameSchema,
|
|
17244
|
+
record: RecordInputSchema,
|
|
17245
|
+
ifRev: number().int().min(0).optional()
|
|
17246
|
+
}),
|
|
17247
|
+
object({
|
|
17248
|
+
op: literal("patch"),
|
|
17249
|
+
kind: RecordKindNameSchema,
|
|
17250
|
+
id: RecordIdSchema,
|
|
17251
|
+
data: RecordBodySchema,
|
|
17252
|
+
at: number().int().nullable().optional(),
|
|
17253
|
+
expiresAt: number().int().nullable().optional(),
|
|
17254
|
+
ifRev: number().int().min(1).optional()
|
|
17255
|
+
}),
|
|
17256
|
+
object({
|
|
17257
|
+
op: literal("delete"),
|
|
17258
|
+
kind: RecordKindNameSchema,
|
|
17259
|
+
id: RecordIdSchema
|
|
17260
|
+
})
|
|
17261
|
+
]);
|
|
17252
17262
|
var RecordSecretRefsSchema = record(string(), record(string(), string()));
|
|
17253
17263
|
method(object({ kinds: record(RecordKindNameSchema, RecordKindDeclarationSchema) }), object({ kinds: record(string(), DeclareKindResultSchema) }), {
|
|
17254
17264
|
kind: "mutation",
|
|
@@ -17355,6 +17365,16 @@ method(object({ kinds: record(RecordKindNameSchema, RecordKindDeclarationSchema)
|
|
|
17355
17365
|
}), {
|
|
17356
17366
|
kind: "mutation",
|
|
17357
17367
|
auth: "admin"
|
|
17368
|
+
}), method(object({ ops: array(RecordTransactOpSchema).min(1).max(RECORD_BATCH_MAX) }), object({
|
|
17369
|
+
results: array(object({
|
|
17370
|
+
rev: number().int().nullable(),
|
|
17371
|
+
deleted: boolean()
|
|
17372
|
+
})),
|
|
17373
|
+
releasedRefs: SecretRefsList,
|
|
17374
|
+
secretRefs: SecretRefsList
|
|
17375
|
+
}), {
|
|
17376
|
+
kind: "mutation",
|
|
17377
|
+
auth: "admin"
|
|
17358
17378
|
}), method(object({
|
|
17359
17379
|
deviceId: number().int(),
|
|
17360
17380
|
kinds: array(RecordKindNameSchema).optional()
|
|
@@ -43205,9 +43225,13 @@ var NcSystemEventKindSchema = _enum([
|
|
|
43205
43225
|
"node-updating",
|
|
43206
43226
|
"node-inference-unavailable",
|
|
43207
43227
|
"detection-blind",
|
|
43228
|
+
"motion-noisy",
|
|
43229
|
+
"motion-calm",
|
|
43208
43230
|
"recording-stalled",
|
|
43209
43231
|
"recording-healthy",
|
|
43210
43232
|
"recording-degraded",
|
|
43233
|
+
"device-attention-required",
|
|
43234
|
+
"device-attention-resolved",
|
|
43211
43235
|
"storage-location-low",
|
|
43212
43236
|
"storage-location-critical",
|
|
43213
43237
|
"storage-location-ok",
|
|
@@ -48784,7 +48808,6 @@ var RecommendationReasonSchema = discriminatedUnion("kind", [
|
|
|
48784
48808
|
modelId: string()
|
|
48785
48809
|
}),
|
|
48786
48810
|
object({ kind: literal("cpu-device") }),
|
|
48787
|
-
object({ kind: literal("coral-untouched") }),
|
|
48788
48811
|
object({ kind: literal("device-disabled") }),
|
|
48789
48812
|
object({ kind: literal("device-unavailable") }),
|
|
48790
48813
|
object({ kind: literal("node-offline") }),
|
|
@@ -48882,11 +48905,6 @@ var AutoTuneWarningSchema = discriminatedUnion("kind", [
|
|
|
48882
48905
|
kind: literal("detector-store-unreadable"),
|
|
48883
48906
|
error: string()
|
|
48884
48907
|
}),
|
|
48885
|
-
object({
|
|
48886
|
-
kind: literal("coral-enabled"),
|
|
48887
|
-
nodeId: string(),
|
|
48888
|
-
deviceKey: string()
|
|
48889
|
-
}),
|
|
48890
48908
|
object({
|
|
48891
48909
|
kind: literal("custom-pin-kept"),
|
|
48892
48910
|
nodeId: string(),
|
|
@@ -56646,6 +56664,16 @@ var DishwasherStatusSchema = object({
|
|
|
56646
56664
|
powerState: string().nullable(),
|
|
56647
56665
|
saltLevel: DishwasherConsumableLevelSchema.nullable(),
|
|
56648
56666
|
rinseAidLevel: DishwasherConsumableLevelSchema.nullable(),
|
|
56667
|
+
/**
|
|
56668
|
+
* True while the appliance asks for its filter to be cleaned (smart-filter, filter-system or
|
|
56669
|
+
* combined care-and-filter reminder raised); false when every such reminder reads clear; null
|
|
56670
|
+
* when none is reported. A cleared reminder is not an unknown one.
|
|
56671
|
+
*/
|
|
56672
|
+
filterCleaningDue: boolean().nullable(),
|
|
56673
|
+
/** True while the machine-care (descaling / cleaning-program) reminder is raised; false when clear; null when not reported. */
|
|
56674
|
+
machineCareDue: boolean().nullable(),
|
|
56675
|
+
/** Program runs left before the machine-care reminder is due; null when the appliance does not say. */
|
|
56676
|
+
machineCareRemainingRuns: number().int().nonnegative().nullable(),
|
|
56649
56677
|
/** Option states: null when the appliance does not expose the option or has not said. */
|
|
56650
56678
|
halfLoad: boolean().nullable(),
|
|
56651
56679
|
hygienePlus: boolean().nullable(),
|
|
@@ -65296,16 +65324,6 @@ var UpdateUserInputSchema = object({
|
|
|
65296
65324
|
allowedDevices: record(string(), union([array(string()), literal("*")])).optional(),
|
|
65297
65325
|
scopes: array(TokenScopeSchema).optional()
|
|
65298
65326
|
});
|
|
65299
|
-
var ApiKeySummarySchema = object({
|
|
65300
|
-
id: string(),
|
|
65301
|
-
label: string(),
|
|
65302
|
-
isAdmin: boolean().default(false),
|
|
65303
|
-
allowedProviders: union([array(string()), literal("*")]).optional(),
|
|
65304
|
-
allowedDevices: record(string(), union([array(string()), literal("*")])).optional(),
|
|
65305
|
-
tokenPrefix: string(),
|
|
65306
|
-
createdAt: number(),
|
|
65307
|
-
lastUsedAt: number().optional()
|
|
65308
|
-
});
|
|
65309
65327
|
var OauthSessionSummarySchema = object({
|
|
65310
65328
|
id: string(),
|
|
65311
65329
|
userId: string(),
|
|
@@ -65327,8 +65345,7 @@ var TotpStatusSchema = object({
|
|
|
65327
65345
|
confirmedAt: number().nullable()
|
|
65328
65346
|
});
|
|
65329
65347
|
/**
|
|
65330
|
-
* user-management — singleton capability for user accounts
|
|
65331
|
-
* legacy API-key rows.
|
|
65348
|
+
* user-management — singleton capability for user accounts.
|
|
65332
65349
|
*
|
|
65333
65350
|
* v2 model: every method gated by `auth: 'admin'`. Admin-only delegation
|
|
65334
65351
|
* — the subset check on `setUserScopes` is moot
|
|
@@ -65384,10 +65401,6 @@ method(_void(), array(UserSummarySchema), { auth: "admin" }), method(CreateUserI
|
|
|
65384
65401
|
}), UserSummarySchema.extend({ passwordHash: string() }).nullable(), {
|
|
65385
65402
|
kind: "mutation",
|
|
65386
65403
|
access: "view"
|
|
65387
|
-
}), method(_void(), array(ApiKeySummarySchema), { auth: "admin" }), method(object({ id: string() }), object({ success: literal(true) }), {
|
|
65388
|
-
kind: "mutation",
|
|
65389
|
-
auth: "admin",
|
|
65390
|
-
access: "delete"
|
|
65391
65404
|
}), method(object({ userId: string() }), TotpSetupResultSchema, {
|
|
65392
65405
|
kind: "mutation",
|
|
65393
65406
|
auth: "admin",
|
|
@@ -74843,6 +74856,12 @@ Object.freeze({
|
|
|
74843
74856
|
addonId: null,
|
|
74844
74857
|
access: "view"
|
|
74845
74858
|
},
|
|
74859
|
+
"records.transact": {
|
|
74860
|
+
capName: "records",
|
|
74861
|
+
capScope: "system",
|
|
74862
|
+
addonId: null,
|
|
74863
|
+
access: "create"
|
|
74864
|
+
},
|
|
74846
74865
|
"sceneMonitor.captureReference": {
|
|
74847
74866
|
capName: "scene-monitor",
|
|
74848
74867
|
capScope: "device",
|
|
@@ -76175,12 +76194,6 @@ Object.freeze({
|
|
|
76175
76194
|
addonId: null,
|
|
76176
76195
|
access: "view"
|
|
76177
76196
|
},
|
|
76178
|
-
"userManagement.listApiKeys": {
|
|
76179
|
-
capName: "user-management",
|
|
76180
|
-
capScope: "system",
|
|
76181
|
-
addonId: null,
|
|
76182
|
-
access: "view"
|
|
76183
|
-
},
|
|
76184
76197
|
"userManagement.listExternalIdentities": {
|
|
76185
76198
|
capName: "user-management",
|
|
76186
76199
|
capScope: "system",
|
|
@@ -76235,12 +76248,6 @@ Object.freeze({
|
|
|
76235
76248
|
addonId: null,
|
|
76236
76249
|
access: "create"
|
|
76237
76250
|
},
|
|
76238
|
-
"userManagement.revokeApiKey": {
|
|
76239
|
-
capName: "user-management",
|
|
76240
|
-
capScope: "system",
|
|
76241
|
-
addonId: null,
|
|
76242
|
-
access: "delete"
|
|
76243
|
-
},
|
|
76244
76251
|
"userManagement.revokeOauthSession": {
|
|
76245
76252
|
capName: "user-management",
|
|
76246
76253
|
capScope: "system",
|
|
@@ -79812,9 +79819,13 @@ new Map(Object.entries({
|
|
|
79812
79819
|
"stream-online": "device-events",
|
|
79813
79820
|
"stream-offline": "device-events",
|
|
79814
79821
|
"detection-blind": "device-events",
|
|
79822
|
+
"motion-noisy": "device-events",
|
|
79823
|
+
"motion-calm": "device-events",
|
|
79815
79824
|
"recording-stalled": "device-events",
|
|
79816
79825
|
"recording-healthy": "device-events",
|
|
79817
79826
|
"recording-degraded": "device-events",
|
|
79827
|
+
"device-attention-required": "device-events",
|
|
79828
|
+
"device-attention-resolved": "device-events",
|
|
79818
79829
|
"node-online": "system",
|
|
79819
79830
|
"node-offline": "system",
|
|
79820
79831
|
"node-restarting": "system",
|
|
@@ -79897,6 +79908,12 @@ var NC_SYSTEM_EVENT_KIND_GROUP_SPECS = [
|
|
|
79897
79908
|
label: "Detecting nothing",
|
|
79898
79909
|
kinds: ["detection-blind"]
|
|
79899
79910
|
},
|
|
79911
|
+
{
|
|
79912
|
+
id: "motion-noise",
|
|
79913
|
+
family: "device-events",
|
|
79914
|
+
label: "Motion without a subject",
|
|
79915
|
+
kinds: ["motion-noisy", "motion-calm"]
|
|
79916
|
+
},
|
|
79900
79917
|
{
|
|
79901
79918
|
id: "recording",
|
|
79902
79919
|
family: "device-events",
|
|
@@ -79907,6 +79924,12 @@ var NC_SYSTEM_EVENT_KIND_GROUP_SPECS = [
|
|
|
79907
79924
|
"recording-degraded"
|
|
79908
79925
|
]
|
|
79909
79926
|
},
|
|
79927
|
+
{
|
|
79928
|
+
id: "device-attention",
|
|
79929
|
+
family: "device-events",
|
|
79930
|
+
label: "Needs attention",
|
|
79931
|
+
kinds: ["device-attention-required", "device-attention-resolved"]
|
|
79932
|
+
},
|
|
79910
79933
|
{
|
|
79911
79934
|
id: "nodes",
|
|
79912
79935
|
family: "system",
|
|
@@ -80046,6 +80069,7 @@ var ALERT_EPISODE = [
|
|
|
80046
80069
|
"alert-error",
|
|
80047
80070
|
"alert-critical-resolved"
|
|
80048
80071
|
];
|
|
80072
|
+
var DEVICE_ATTENTION = ["device-attention-required", "device-attention-resolved"];
|
|
80049
80073
|
var UPDATES = [
|
|
80050
80074
|
"addon-update-available",
|
|
80051
80075
|
"server-update-available",
|
|
@@ -80075,9 +80099,12 @@ var DEVICE_EVENTS = [
|
|
|
80075
80099
|
"stream-online",
|
|
80076
80100
|
"stream-offline",
|
|
80077
80101
|
"detection-blind",
|
|
80102
|
+
"motion-noisy",
|
|
80103
|
+
"motion-calm",
|
|
80078
80104
|
"recording-stalled",
|
|
80079
80105
|
"recording-healthy",
|
|
80080
80106
|
"recording-degraded",
|
|
80107
|
+
...DEVICE_ATTENTION,
|
|
80081
80108
|
...ALARM
|
|
80082
80109
|
];
|
|
80083
80110
|
/** Every kind a summary may speak about — the two summarisable families. */
|
|
@@ -80245,7 +80272,9 @@ var STATE_SUMMARY_VARS = [
|
|
|
80245
80272
|
[...RULE_TEXT],
|
|
80246
80273
|
[...RULE_TEXT],
|
|
80247
80274
|
[...RULE_TEXT],
|
|
80248
|
-
|
|
80275
|
+
[...RULE_TEXT],
|
|
80276
|
+
[...RULE_TEXT],
|
|
80277
|
+
([...RULE_TEXT], [...DEVICE_ATTENTION, ...ALERT_EPISODE]),
|
|
80249
80278
|
[...RULE_TEXT],
|
|
80250
80279
|
[...RULE_TEXT],
|
|
80251
80280
|
[...RULE_TEXT],
|
|
@@ -80267,11 +80296,11 @@ var STATE_SUMMARY_VARS = [
|
|
|
80267
80296
|
[...RULE_TEXT],
|
|
80268
80297
|
[...RULE_TEXT],
|
|
80269
80298
|
[...RULE_TEXT],
|
|
80299
|
+
([...RULE_TEXT], [...DEVICE_ATTENTION, ...ALERT_EPISODE]),
|
|
80270
80300
|
([...RULE_TEXT], [...ALERT_EPISODE]),
|
|
80301
|
+
([...RULE_TEXT], [...DEVICE_ATTENTION, ...ALERT_EPISODE]),
|
|
80271
80302
|
([...RULE_TEXT], [...ALERT_EPISODE]),
|
|
80272
|
-
([...RULE_TEXT], [...ALERT_EPISODE]),
|
|
80273
|
-
([...RULE_TEXT], [...ALERT_EPISODE]),
|
|
80274
|
-
([...RULE_TEXT], [...ALERT_EPISODE]),
|
|
80303
|
+
([...RULE_TEXT], [...DEVICE_ATTENTION, ...ALERT_EPISODE]),
|
|
80275
80304
|
[...RULE_TEXT],
|
|
80276
80305
|
[...RULE_TEXT],
|
|
80277
80306
|
[...RULE_TEXT],
|
|
@@ -80347,6 +80376,15 @@ new Map([
|
|
|
80347
80376
|
snapshotLabel: "Tanks low or full now",
|
|
80348
80377
|
snapshotSection: "tanks"
|
|
80349
80378
|
},
|
|
80379
|
+
{
|
|
80380
|
+
id: "motion-noise",
|
|
80381
|
+
family: "device-events",
|
|
80382
|
+
label: "Motion without a subject (constant / calm again)",
|
|
80383
|
+
bad: ["motion-noisy"],
|
|
80384
|
+
recovery: ["motion-calm"],
|
|
80385
|
+
snapshotLabel: "Cameras with constant motion now",
|
|
80386
|
+
snapshotSection: null
|
|
80387
|
+
},
|
|
80350
80388
|
{
|
|
80351
80389
|
id: "recording-health",
|
|
80352
80390
|
family: "device-events",
|
|
@@ -80356,6 +80394,15 @@ new Map([
|
|
|
80356
80394
|
snapshotLabel: "Recordings stalled now",
|
|
80357
80395
|
snapshotSection: null
|
|
80358
80396
|
},
|
|
80397
|
+
{
|
|
80398
|
+
id: "device-attention",
|
|
80399
|
+
family: "device-events",
|
|
80400
|
+
label: "Device needs attention (raised / resolved)",
|
|
80401
|
+
bad: ["device-attention-required"],
|
|
80402
|
+
recovery: ["device-attention-resolved"],
|
|
80403
|
+
snapshotLabel: "Devices needing attention now",
|
|
80404
|
+
snapshotSection: null
|
|
80405
|
+
},
|
|
80359
80406
|
{
|
|
80360
80407
|
id: "node-connectivity",
|
|
80361
80408
|
family: "system",
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
//#region ../types/dist/event-category-
|
|
1
|
+
//#region ../types/dist/event-category-BfJwUd2S.mjs
|
|
2
2
|
var EventCategory = /* @__PURE__ */ function(EventCategory) {
|
|
3
3
|
EventCategory["SystemBoot"] = "system.boot";
|
|
4
4
|
EventCategory["SystemAddonsReady"] = "system.addons-ready";
|
|
@@ -315,6 +315,15 @@ var EventCategory = /* @__PURE__ */ function(EventCategory) {
|
|
|
315
315
|
*/
|
|
316
316
|
EventCategory["PipelineDetectionBlind"] = "pipeline.detection-blind";
|
|
317
317
|
/**
|
|
318
|
+
* A camera's motion source has fired constantly with no subject for an hour
|
|
319
|
+
* (motion duty or session count over the bar, zero detections) — it is not
|
|
320
|
+
* blind, its motion zones or sensitivity want tuning (D907). Paired with
|
|
321
|
+
* {@link PipelineMotionCalm}.
|
|
322
|
+
*/
|
|
323
|
+
EventCategory["PipelineMotionNoisy"] = "pipeline.motion-noisy";
|
|
324
|
+
/** The recovery edge of {@link PipelineMotionNoisy}: the motion fell back, or a detection arrived. */
|
|
325
|
+
EventCategory["PipelineMotionCalm"] = "pipeline.motion-calm";
|
|
326
|
+
/**
|
|
318
327
|
* Per-camera pipeline config was mutated by the orchestrator
|
|
319
328
|
* (3-level settings change via `setAgentAddonDefaults` /
|
|
320
329
|
* `setCameraStepToggle` / `setCameraPipelineForAgent` or a
|
|
@@ -5554,7 +5563,7 @@ var ZodIssueCode = {
|
|
|
5554
5563
|
var ZodFirstPartyTypeKind;
|
|
5555
5564
|
ZodFirstPartyTypeKind || (ZodFirstPartyTypeKind = {});
|
|
5556
5565
|
//#endregion
|
|
5557
|
-
//#region ../types/dist/sleep-
|
|
5566
|
+
//#region ../types/dist/sleep-DJFUfKvA.mjs
|
|
5558
5567
|
/**
|
|
5559
5568
|
* The audio chunk plane's byte format, and the ONE expansion from a coded
|
|
5560
5569
|
* window to float samples (D455).
|
|
@@ -8153,7 +8162,7 @@ var EntryDescriptorSchema = object({
|
|
|
8153
8162
|
/** JSON Schema of the entry body; `secret: true` marks a password field. */
|
|
8154
8163
|
fields: record(string(), unknown())
|
|
8155
8164
|
}).strict();
|
|
8156
|
-
/** What crosses the wire
|
|
8165
|
+
/** What crosses the wire from an addon: JSON only, no Zod. An unknown key is refused. */
|
|
8157
8166
|
var RecordKindDeclarationSchema = object({
|
|
8158
8167
|
database: _enum(RECORD_DATABASES).default("settings"),
|
|
8159
8168
|
class: _enum(RECORD_CLASSES),
|
|
@@ -8172,14 +8181,6 @@ var RecordKindDeclarationSchema = object({
|
|
|
8172
8181
|
secretPaths: array(string().min(1)).default([]),
|
|
8173
8182
|
/** The id key of each array that carries a secret (`{ headers: 'name' }`). */
|
|
8174
8183
|
secretArrayKeys: record(string(), string()).default({}),
|
|
8175
|
-
/**
|
|
8176
|
-
* RETIRED (D900): the legacy table a kind adopted from during the records
|
|
8177
|
-
* migration. Nothing declares it any more and nothing reads it; the schema
|
|
8178
|
-
* still ACCEPTS it because the catalog rows the migration wrote carry it
|
|
8179
|
-
* (an orphaned kind is never redeclared) and an addon built before the
|
|
8180
|
-
* removal still sends it. Never set it.
|
|
8181
|
-
*/
|
|
8182
|
-
adoptsFrom: string().min(1).optional(),
|
|
8183
8184
|
/** Kinds that must agree through `transact` sit in one file under one family name. */
|
|
8184
8185
|
transactFamily: string().min(1).optional(),
|
|
8185
8186
|
entry: EntryDescriptorSchema.optional()
|
|
@@ -13178,17 +13179,6 @@ object({
|
|
|
13178
13179
|
createdAt: number(),
|
|
13179
13180
|
updatedAt: number()
|
|
13180
13181
|
});
|
|
13181
|
-
object({
|
|
13182
|
-
id: string(),
|
|
13183
|
-
label: string(),
|
|
13184
|
-
isAdmin: boolean().default(false),
|
|
13185
|
-
allowedProviders: AllowedProviderSchema,
|
|
13186
|
-
allowedDevices: AllowedDevicesSchema,
|
|
13187
|
-
tokenHash: string(),
|
|
13188
|
-
tokenPrefix: string(),
|
|
13189
|
-
createdAt: number(),
|
|
13190
|
-
lastUsedAt: number().optional()
|
|
13191
|
-
});
|
|
13192
13182
|
object({
|
|
13193
13183
|
id: string(),
|
|
13194
13184
|
userId: string(),
|
|
@@ -17238,16 +17228,36 @@ var RecordKindStateSchema = _enum([
|
|
|
17238
17228
|
var DeclareKindResultSchema = object({
|
|
17239
17229
|
kindId: number().int(),
|
|
17240
17230
|
state: RecordKindStateSchema,
|
|
17241
|
-
createdIndexes: array(string())
|
|
17242
|
-
/**
|
|
17243
|
-
* RETIRED (D900): always `null`. It carried the records-migration boot guard;
|
|
17244
|
-
* it stays on the wire, null, because an addon built before the removal reads
|
|
17245
|
-
* an ABSENT field as "adoption pending" and refuses to start.
|
|
17246
|
-
*/
|
|
17247
|
-
adoptionPending: _null()
|
|
17231
|
+
createdIndexes: array(string())
|
|
17248
17232
|
});
|
|
17249
17233
|
/** Keychain refs a write released (the old marker is gone from the row): the owner deletes the values. */
|
|
17250
17234
|
var SecretRefsList = array(string());
|
|
17235
|
+
/**
|
|
17236
|
+
* One op of a `transact`: the single-row writes, each on a kind of the caller.
|
|
17237
|
+
* All ops of one call share ONE database file and ONE `transactFamily`.
|
|
17238
|
+
*/
|
|
17239
|
+
var RecordTransactOpSchema = discriminatedUnion("op", [
|
|
17240
|
+
object({
|
|
17241
|
+
op: literal("put"),
|
|
17242
|
+
kind: RecordKindNameSchema,
|
|
17243
|
+
record: RecordInputSchema,
|
|
17244
|
+
ifRev: number().int().min(0).optional()
|
|
17245
|
+
}),
|
|
17246
|
+
object({
|
|
17247
|
+
op: literal("patch"),
|
|
17248
|
+
kind: RecordKindNameSchema,
|
|
17249
|
+
id: RecordIdSchema,
|
|
17250
|
+
data: RecordBodySchema,
|
|
17251
|
+
at: number().int().nullable().optional(),
|
|
17252
|
+
expiresAt: number().int().nullable().optional(),
|
|
17253
|
+
ifRev: number().int().min(1).optional()
|
|
17254
|
+
}),
|
|
17255
|
+
object({
|
|
17256
|
+
op: literal("delete"),
|
|
17257
|
+
kind: RecordKindNameSchema,
|
|
17258
|
+
id: RecordIdSchema
|
|
17259
|
+
})
|
|
17260
|
+
]);
|
|
17251
17261
|
var RecordSecretRefsSchema = record(string(), record(string(), string()));
|
|
17252
17262
|
method(object({ kinds: record(RecordKindNameSchema, RecordKindDeclarationSchema) }), object({ kinds: record(string(), DeclareKindResultSchema) }), {
|
|
17253
17263
|
kind: "mutation",
|
|
@@ -17354,6 +17364,16 @@ method(object({ kinds: record(RecordKindNameSchema, RecordKindDeclarationSchema)
|
|
|
17354
17364
|
}), {
|
|
17355
17365
|
kind: "mutation",
|
|
17356
17366
|
auth: "admin"
|
|
17367
|
+
}), method(object({ ops: array(RecordTransactOpSchema).min(1).max(RECORD_BATCH_MAX) }), object({
|
|
17368
|
+
results: array(object({
|
|
17369
|
+
rev: number().int().nullable(),
|
|
17370
|
+
deleted: boolean()
|
|
17371
|
+
})),
|
|
17372
|
+
releasedRefs: SecretRefsList,
|
|
17373
|
+
secretRefs: SecretRefsList
|
|
17374
|
+
}), {
|
|
17375
|
+
kind: "mutation",
|
|
17376
|
+
auth: "admin"
|
|
17357
17377
|
}), method(object({
|
|
17358
17378
|
deviceId: number().int(),
|
|
17359
17379
|
kinds: array(RecordKindNameSchema).optional()
|
|
@@ -43204,9 +43224,13 @@ var NcSystemEventKindSchema = _enum([
|
|
|
43204
43224
|
"node-updating",
|
|
43205
43225
|
"node-inference-unavailable",
|
|
43206
43226
|
"detection-blind",
|
|
43227
|
+
"motion-noisy",
|
|
43228
|
+
"motion-calm",
|
|
43207
43229
|
"recording-stalled",
|
|
43208
43230
|
"recording-healthy",
|
|
43209
43231
|
"recording-degraded",
|
|
43232
|
+
"device-attention-required",
|
|
43233
|
+
"device-attention-resolved",
|
|
43210
43234
|
"storage-location-low",
|
|
43211
43235
|
"storage-location-critical",
|
|
43212
43236
|
"storage-location-ok",
|
|
@@ -48783,7 +48807,6 @@ var RecommendationReasonSchema = discriminatedUnion("kind", [
|
|
|
48783
48807
|
modelId: string()
|
|
48784
48808
|
}),
|
|
48785
48809
|
object({ kind: literal("cpu-device") }),
|
|
48786
|
-
object({ kind: literal("coral-untouched") }),
|
|
48787
48810
|
object({ kind: literal("device-disabled") }),
|
|
48788
48811
|
object({ kind: literal("device-unavailable") }),
|
|
48789
48812
|
object({ kind: literal("node-offline") }),
|
|
@@ -48881,11 +48904,6 @@ var AutoTuneWarningSchema = discriminatedUnion("kind", [
|
|
|
48881
48904
|
kind: literal("detector-store-unreadable"),
|
|
48882
48905
|
error: string()
|
|
48883
48906
|
}),
|
|
48884
|
-
object({
|
|
48885
|
-
kind: literal("coral-enabled"),
|
|
48886
|
-
nodeId: string(),
|
|
48887
|
-
deviceKey: string()
|
|
48888
|
-
}),
|
|
48889
48907
|
object({
|
|
48890
48908
|
kind: literal("custom-pin-kept"),
|
|
48891
48909
|
nodeId: string(),
|
|
@@ -56645,6 +56663,16 @@ var DishwasherStatusSchema = object({
|
|
|
56645
56663
|
powerState: string().nullable(),
|
|
56646
56664
|
saltLevel: DishwasherConsumableLevelSchema.nullable(),
|
|
56647
56665
|
rinseAidLevel: DishwasherConsumableLevelSchema.nullable(),
|
|
56666
|
+
/**
|
|
56667
|
+
* True while the appliance asks for its filter to be cleaned (smart-filter, filter-system or
|
|
56668
|
+
* combined care-and-filter reminder raised); false when every such reminder reads clear; null
|
|
56669
|
+
* when none is reported. A cleared reminder is not an unknown one.
|
|
56670
|
+
*/
|
|
56671
|
+
filterCleaningDue: boolean().nullable(),
|
|
56672
|
+
/** True while the machine-care (descaling / cleaning-program) reminder is raised; false when clear; null when not reported. */
|
|
56673
|
+
machineCareDue: boolean().nullable(),
|
|
56674
|
+
/** Program runs left before the machine-care reminder is due; null when the appliance does not say. */
|
|
56675
|
+
machineCareRemainingRuns: number().int().nonnegative().nullable(),
|
|
56648
56676
|
/** Option states: null when the appliance does not expose the option or has not said. */
|
|
56649
56677
|
halfLoad: boolean().nullable(),
|
|
56650
56678
|
hygienePlus: boolean().nullable(),
|
|
@@ -65295,16 +65323,6 @@ var UpdateUserInputSchema = object({
|
|
|
65295
65323
|
allowedDevices: record(string(), union([array(string()), literal("*")])).optional(),
|
|
65296
65324
|
scopes: array(TokenScopeSchema).optional()
|
|
65297
65325
|
});
|
|
65298
|
-
var ApiKeySummarySchema = object({
|
|
65299
|
-
id: string(),
|
|
65300
|
-
label: string(),
|
|
65301
|
-
isAdmin: boolean().default(false),
|
|
65302
|
-
allowedProviders: union([array(string()), literal("*")]).optional(),
|
|
65303
|
-
allowedDevices: record(string(), union([array(string()), literal("*")])).optional(),
|
|
65304
|
-
tokenPrefix: string(),
|
|
65305
|
-
createdAt: number(),
|
|
65306
|
-
lastUsedAt: number().optional()
|
|
65307
|
-
});
|
|
65308
65326
|
var OauthSessionSummarySchema = object({
|
|
65309
65327
|
id: string(),
|
|
65310
65328
|
userId: string(),
|
|
@@ -65326,8 +65344,7 @@ var TotpStatusSchema = object({
|
|
|
65326
65344
|
confirmedAt: number().nullable()
|
|
65327
65345
|
});
|
|
65328
65346
|
/**
|
|
65329
|
-
* user-management — singleton capability for user accounts
|
|
65330
|
-
* legacy API-key rows.
|
|
65347
|
+
* user-management — singleton capability for user accounts.
|
|
65331
65348
|
*
|
|
65332
65349
|
* v2 model: every method gated by `auth: 'admin'`. Admin-only delegation
|
|
65333
65350
|
* — the subset check on `setUserScopes` is moot
|
|
@@ -65383,10 +65400,6 @@ method(_void(), array(UserSummarySchema), { auth: "admin" }), method(CreateUserI
|
|
|
65383
65400
|
}), UserSummarySchema.extend({ passwordHash: string() }).nullable(), {
|
|
65384
65401
|
kind: "mutation",
|
|
65385
65402
|
access: "view"
|
|
65386
|
-
}), method(_void(), array(ApiKeySummarySchema), { auth: "admin" }), method(object({ id: string() }), object({ success: literal(true) }), {
|
|
65387
|
-
kind: "mutation",
|
|
65388
|
-
auth: "admin",
|
|
65389
|
-
access: "delete"
|
|
65390
65403
|
}), method(object({ userId: string() }), TotpSetupResultSchema, {
|
|
65391
65404
|
kind: "mutation",
|
|
65392
65405
|
auth: "admin",
|
|
@@ -74842,6 +74855,12 @@ Object.freeze({
|
|
|
74842
74855
|
addonId: null,
|
|
74843
74856
|
access: "view"
|
|
74844
74857
|
},
|
|
74858
|
+
"records.transact": {
|
|
74859
|
+
capName: "records",
|
|
74860
|
+
capScope: "system",
|
|
74861
|
+
addonId: null,
|
|
74862
|
+
access: "create"
|
|
74863
|
+
},
|
|
74845
74864
|
"sceneMonitor.captureReference": {
|
|
74846
74865
|
capName: "scene-monitor",
|
|
74847
74866
|
capScope: "device",
|
|
@@ -76174,12 +76193,6 @@ Object.freeze({
|
|
|
76174
76193
|
addonId: null,
|
|
76175
76194
|
access: "view"
|
|
76176
76195
|
},
|
|
76177
|
-
"userManagement.listApiKeys": {
|
|
76178
|
-
capName: "user-management",
|
|
76179
|
-
capScope: "system",
|
|
76180
|
-
addonId: null,
|
|
76181
|
-
access: "view"
|
|
76182
|
-
},
|
|
76183
76196
|
"userManagement.listExternalIdentities": {
|
|
76184
76197
|
capName: "user-management",
|
|
76185
76198
|
capScope: "system",
|
|
@@ -76234,12 +76247,6 @@ Object.freeze({
|
|
|
76234
76247
|
addonId: null,
|
|
76235
76248
|
access: "create"
|
|
76236
76249
|
},
|
|
76237
|
-
"userManagement.revokeApiKey": {
|
|
76238
|
-
capName: "user-management",
|
|
76239
|
-
capScope: "system",
|
|
76240
|
-
addonId: null,
|
|
76241
|
-
access: "delete"
|
|
76242
|
-
},
|
|
76243
76250
|
"userManagement.revokeOauthSession": {
|
|
76244
76251
|
capName: "user-management",
|
|
76245
76252
|
capScope: "system",
|
|
@@ -79811,9 +79818,13 @@ new Map(Object.entries({
|
|
|
79811
79818
|
"stream-online": "device-events",
|
|
79812
79819
|
"stream-offline": "device-events",
|
|
79813
79820
|
"detection-blind": "device-events",
|
|
79821
|
+
"motion-noisy": "device-events",
|
|
79822
|
+
"motion-calm": "device-events",
|
|
79814
79823
|
"recording-stalled": "device-events",
|
|
79815
79824
|
"recording-healthy": "device-events",
|
|
79816
79825
|
"recording-degraded": "device-events",
|
|
79826
|
+
"device-attention-required": "device-events",
|
|
79827
|
+
"device-attention-resolved": "device-events",
|
|
79817
79828
|
"node-online": "system",
|
|
79818
79829
|
"node-offline": "system",
|
|
79819
79830
|
"node-restarting": "system",
|
|
@@ -79896,6 +79907,12 @@ var NC_SYSTEM_EVENT_KIND_GROUP_SPECS = [
|
|
|
79896
79907
|
label: "Detecting nothing",
|
|
79897
79908
|
kinds: ["detection-blind"]
|
|
79898
79909
|
},
|
|
79910
|
+
{
|
|
79911
|
+
id: "motion-noise",
|
|
79912
|
+
family: "device-events",
|
|
79913
|
+
label: "Motion without a subject",
|
|
79914
|
+
kinds: ["motion-noisy", "motion-calm"]
|
|
79915
|
+
},
|
|
79899
79916
|
{
|
|
79900
79917
|
id: "recording",
|
|
79901
79918
|
family: "device-events",
|
|
@@ -79906,6 +79923,12 @@ var NC_SYSTEM_EVENT_KIND_GROUP_SPECS = [
|
|
|
79906
79923
|
"recording-degraded"
|
|
79907
79924
|
]
|
|
79908
79925
|
},
|
|
79926
|
+
{
|
|
79927
|
+
id: "device-attention",
|
|
79928
|
+
family: "device-events",
|
|
79929
|
+
label: "Needs attention",
|
|
79930
|
+
kinds: ["device-attention-required", "device-attention-resolved"]
|
|
79931
|
+
},
|
|
79909
79932
|
{
|
|
79910
79933
|
id: "nodes",
|
|
79911
79934
|
family: "system",
|
|
@@ -80045,6 +80068,7 @@ var ALERT_EPISODE = [
|
|
|
80045
80068
|
"alert-error",
|
|
80046
80069
|
"alert-critical-resolved"
|
|
80047
80070
|
];
|
|
80071
|
+
var DEVICE_ATTENTION = ["device-attention-required", "device-attention-resolved"];
|
|
80048
80072
|
var UPDATES = [
|
|
80049
80073
|
"addon-update-available",
|
|
80050
80074
|
"server-update-available",
|
|
@@ -80074,9 +80098,12 @@ var DEVICE_EVENTS = [
|
|
|
80074
80098
|
"stream-online",
|
|
80075
80099
|
"stream-offline",
|
|
80076
80100
|
"detection-blind",
|
|
80101
|
+
"motion-noisy",
|
|
80102
|
+
"motion-calm",
|
|
80077
80103
|
"recording-stalled",
|
|
80078
80104
|
"recording-healthy",
|
|
80079
80105
|
"recording-degraded",
|
|
80106
|
+
...DEVICE_ATTENTION,
|
|
80080
80107
|
...ALARM
|
|
80081
80108
|
];
|
|
80082
80109
|
/** Every kind a summary may speak about — the two summarisable families. */
|
|
@@ -80244,7 +80271,9 @@ var STATE_SUMMARY_VARS = [
|
|
|
80244
80271
|
[...RULE_TEXT],
|
|
80245
80272
|
[...RULE_TEXT],
|
|
80246
80273
|
[...RULE_TEXT],
|
|
80247
|
-
|
|
80274
|
+
[...RULE_TEXT],
|
|
80275
|
+
[...RULE_TEXT],
|
|
80276
|
+
([...RULE_TEXT], [...DEVICE_ATTENTION, ...ALERT_EPISODE]),
|
|
80248
80277
|
[...RULE_TEXT],
|
|
80249
80278
|
[...RULE_TEXT],
|
|
80250
80279
|
[...RULE_TEXT],
|
|
@@ -80266,11 +80295,11 @@ var STATE_SUMMARY_VARS = [
|
|
|
80266
80295
|
[...RULE_TEXT],
|
|
80267
80296
|
[...RULE_TEXT],
|
|
80268
80297
|
[...RULE_TEXT],
|
|
80298
|
+
([...RULE_TEXT], [...DEVICE_ATTENTION, ...ALERT_EPISODE]),
|
|
80269
80299
|
([...RULE_TEXT], [...ALERT_EPISODE]),
|
|
80300
|
+
([...RULE_TEXT], [...DEVICE_ATTENTION, ...ALERT_EPISODE]),
|
|
80270
80301
|
([...RULE_TEXT], [...ALERT_EPISODE]),
|
|
80271
|
-
([...RULE_TEXT], [...ALERT_EPISODE]),
|
|
80272
|
-
([...RULE_TEXT], [...ALERT_EPISODE]),
|
|
80273
|
-
([...RULE_TEXT], [...ALERT_EPISODE]),
|
|
80302
|
+
([...RULE_TEXT], [...DEVICE_ATTENTION, ...ALERT_EPISODE]),
|
|
80274
80303
|
[...RULE_TEXT],
|
|
80275
80304
|
[...RULE_TEXT],
|
|
80276
80305
|
[...RULE_TEXT],
|
|
@@ -80346,6 +80375,15 @@ new Map([
|
|
|
80346
80375
|
snapshotLabel: "Tanks low or full now",
|
|
80347
80376
|
snapshotSection: "tanks"
|
|
80348
80377
|
},
|
|
80378
|
+
{
|
|
80379
|
+
id: "motion-noise",
|
|
80380
|
+
family: "device-events",
|
|
80381
|
+
label: "Motion without a subject (constant / calm again)",
|
|
80382
|
+
bad: ["motion-noisy"],
|
|
80383
|
+
recovery: ["motion-calm"],
|
|
80384
|
+
snapshotLabel: "Cameras with constant motion now",
|
|
80385
|
+
snapshotSection: null
|
|
80386
|
+
},
|
|
80349
80387
|
{
|
|
80350
80388
|
id: "recording-health",
|
|
80351
80389
|
family: "device-events",
|
|
@@ -80355,6 +80393,15 @@ new Map([
|
|
|
80355
80393
|
snapshotLabel: "Recordings stalled now",
|
|
80356
80394
|
snapshotSection: null
|
|
80357
80395
|
},
|
|
80396
|
+
{
|
|
80397
|
+
id: "device-attention",
|
|
80398
|
+
family: "device-events",
|
|
80399
|
+
label: "Device needs attention (raised / resolved)",
|
|
80400
|
+
bad: ["device-attention-required"],
|
|
80401
|
+
recovery: ["device-attention-resolved"],
|
|
80402
|
+
snapshotLabel: "Devices needing attention now",
|
|
80403
|
+
snapshotSection: null
|
|
80404
|
+
},
|
|
80358
80405
|
{
|
|
80359
80406
|
id: "node-connectivity",
|
|
80360
80407
|
family: "system",
|
|
@@ -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-BNSbY2dZ.js");
|
|
28
28
|
let node_crypto = require("node:crypto");
|
|
29
29
|
require("node:zlib");
|
|
30
30
|
let node_fs = require("node:fs");
|
|
@@ -8455,7 +8455,6 @@ var HaExportAddon = class extends require_dist.BaseAddon {
|
|
|
8455
8455
|
type: "boolean",
|
|
8456
8456
|
key: `exportTo:${broker.id}`,
|
|
8457
8457
|
label: broker.name,
|
|
8458
|
-
description: `Push entities to this Home Assistant instance (${broker.id}).`,
|
|
8459
8458
|
style: "switch",
|
|
8460
8459
|
default: false
|
|
8461
8460
|
}));
|
|
@@ -8464,7 +8463,7 @@ var HaExportAddon = class extends require_dist.BaseAddon {
|
|
|
8464
8463
|
id: "ha-export-brokers",
|
|
8465
8464
|
title: "Home Assistant instances",
|
|
8466
8465
|
titleKey: "provider-homeassistant:globalSettings.s_ha-export-brokers.title",
|
|
8467
|
-
description: brokerFields.length > 0 ? "
|
|
8466
|
+
description: brokerFields.length > 0 ? "An instance that is off receives nothing; its exported devices resume when it is turned back on." : "No Home Assistant broker is registered yet.",
|
|
8468
8467
|
columns: 1,
|
|
8469
8468
|
fields: brokerFields.length > 0 ? brokerFields : [{
|
|
8470
8469
|
type: "info",
|
|
@@ -8485,7 +8484,7 @@ var HaExportAddon = class extends require_dist.BaseAddon {
|
|
|
8485
8484
|
key: "publicBaseUrl",
|
|
8486
8485
|
label: "Hub URL Home Assistant can reach",
|
|
8487
8486
|
labelKey: "provider-homeassistant:globalSettings.s_ha-export-transport.publicBaseUrl.label",
|
|
8488
|
-
description: "Used
|
|
8487
|
+
description: "Used for the signed image links Home Assistant fetches; leave empty to derive one automatically.",
|
|
8489
8488
|
descriptionKey: "provider-homeassistant:globalSettings.s_ha-export-transport.publicBaseUrl.description",
|
|
8490
8489
|
default: ""
|
|
8491
8490
|
}]
|
|
@@ -8502,7 +8501,7 @@ var HaExportAddon = class extends require_dist.BaseAddon {
|
|
|
8502
8501
|
key: "reconcileIntervalSec",
|
|
8503
8502
|
label: "Reconcile interval (s)",
|
|
8504
8503
|
labelKey: "provider-homeassistant:globalSettings.s_ha-export-advanced.reconcileIntervalSec.label",
|
|
8505
|
-
description: "Full re-announce and re-push cadence.
|
|
8504
|
+
description: "Full re-announce and re-push cadence.",
|
|
8506
8505
|
descriptionKey: "provider-homeassistant:globalSettings.s_ha-export-advanced.reconcileIntervalSec.description",
|
|
8507
8506
|
default: DEFAULT_CONFIG.reconcileIntervalSec
|
|
8508
8507
|
}]
|
|
@@ -8526,7 +8525,6 @@ var HaExportAddon = class extends require_dist.BaseAddon {
|
|
|
8526
8525
|
type: "boolean",
|
|
8527
8526
|
key: `haExport:${deviceId}:${brokerId}`,
|
|
8528
8527
|
label: `Export to ${this.brokerName(brokerId)}`,
|
|
8529
|
-
description: "Entities for this device are pushed to that Home Assistant instance.",
|
|
8530
8528
|
style: "switch",
|
|
8531
8529
|
value: isExposed(this.config.membership, brokerId, idStr),
|
|
8532
8530
|
immediate: true
|
|
@@ -8542,7 +8540,7 @@ var HaExportAddon = class extends require_dist.BaseAddon {
|
|
|
8542
8540
|
id: "ha-export",
|
|
8543
8541
|
title: "Home Assistant",
|
|
8544
8542
|
titleKey: "provider-homeassistant:contribution.s_ha-export.title",
|
|
8545
|
-
description: enabled.length > 0 ? "Each
|
|
8543
|
+
description: enabled.length > 0 ? "Each instance receives only the devices switched on for it." : "No Home Assistant instance is enabled for export.",
|
|
8546
8544
|
tab: "export",
|
|
8547
8545
|
columns: 1,
|
|
8548
8546
|
order: 30,
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { $ as oauthIntegrationCapability, C as buildAddonRouteProvider, Et as nodePin, Ft as string, I as deviceExportCapability, a as COCO_TO_MACRO, bt as BaseAddon, c as FanDirectionSchema, i as CAMERA_SWITCH_ORDER, l as HvacModeSchema, o as CameraSwitchIdSchema, p as addonRoutesCapability, t as AlarmArmModeSchema, u as MediaPlayerRepeatSchema, zt as EventCategory } from "../dist-
|
|
1
|
+
import { $ as oauthIntegrationCapability, C as buildAddonRouteProvider, Et as nodePin, Ft as string, I as deviceExportCapability, a as COCO_TO_MACRO, bt as BaseAddon, c as FanDirectionSchema, i as CAMERA_SWITCH_ORDER, l as HvacModeSchema, o as CameraSwitchIdSchema, p as addonRoutesCapability, t as AlarmArmModeSchema, u as MediaPlayerRepeatSchema, zt as EventCategory } from "../dist-BRSVYxR3.mjs";
|
|
2
2
|
import { createHmac, timingSafeEqual } from "node:crypto";
|
|
3
3
|
import "node:zlib";
|
|
4
4
|
import "node:fs";
|
|
@@ -8427,7 +8427,6 @@ var HaExportAddon = class extends BaseAddon {
|
|
|
8427
8427
|
type: "boolean",
|
|
8428
8428
|
key: `exportTo:${broker.id}`,
|
|
8429
8429
|
label: broker.name,
|
|
8430
|
-
description: `Push entities to this Home Assistant instance (${broker.id}).`,
|
|
8431
8430
|
style: "switch",
|
|
8432
8431
|
default: false
|
|
8433
8432
|
}));
|
|
@@ -8436,7 +8435,7 @@ var HaExportAddon = class extends BaseAddon {
|
|
|
8436
8435
|
id: "ha-export-brokers",
|
|
8437
8436
|
title: "Home Assistant instances",
|
|
8438
8437
|
titleKey: "provider-homeassistant:globalSettings.s_ha-export-brokers.title",
|
|
8439
|
-
description: brokerFields.length > 0 ? "
|
|
8438
|
+
description: brokerFields.length > 0 ? "An instance that is off receives nothing; its exported devices resume when it is turned back on." : "No Home Assistant broker is registered yet.",
|
|
8440
8439
|
columns: 1,
|
|
8441
8440
|
fields: brokerFields.length > 0 ? brokerFields : [{
|
|
8442
8441
|
type: "info",
|
|
@@ -8457,7 +8456,7 @@ var HaExportAddon = class extends BaseAddon {
|
|
|
8457
8456
|
key: "publicBaseUrl",
|
|
8458
8457
|
label: "Hub URL Home Assistant can reach",
|
|
8459
8458
|
labelKey: "provider-homeassistant:globalSettings.s_ha-export-transport.publicBaseUrl.label",
|
|
8460
|
-
description: "Used
|
|
8459
|
+
description: "Used for the signed image links Home Assistant fetches; leave empty to derive one automatically.",
|
|
8461
8460
|
descriptionKey: "provider-homeassistant:globalSettings.s_ha-export-transport.publicBaseUrl.description",
|
|
8462
8461
|
default: ""
|
|
8463
8462
|
}]
|
|
@@ -8474,7 +8473,7 @@ var HaExportAddon = class extends BaseAddon {
|
|
|
8474
8473
|
key: "reconcileIntervalSec",
|
|
8475
8474
|
label: "Reconcile interval (s)",
|
|
8476
8475
|
labelKey: "provider-homeassistant:globalSettings.s_ha-export-advanced.reconcileIntervalSec.label",
|
|
8477
|
-
description: "Full re-announce and re-push cadence.
|
|
8476
|
+
description: "Full re-announce and re-push cadence.",
|
|
8478
8477
|
descriptionKey: "provider-homeassistant:globalSettings.s_ha-export-advanced.reconcileIntervalSec.description",
|
|
8479
8478
|
default: DEFAULT_CONFIG.reconcileIntervalSec
|
|
8480
8479
|
}]
|
|
@@ -8498,7 +8497,6 @@ var HaExportAddon = class extends BaseAddon {
|
|
|
8498
8497
|
type: "boolean",
|
|
8499
8498
|
key: `haExport:${deviceId}:${brokerId}`,
|
|
8500
8499
|
label: `Export to ${this.brokerName(brokerId)}`,
|
|
8501
|
-
description: "Entities for this device are pushed to that Home Assistant instance.",
|
|
8502
8500
|
style: "switch",
|
|
8503
8501
|
value: isExposed(this.config.membership, brokerId, idStr),
|
|
8504
8502
|
immediate: true
|
|
@@ -8514,7 +8512,7 @@ var HaExportAddon = class extends BaseAddon {
|
|
|
8514
8512
|
id: "ha-export",
|
|
8515
8513
|
title: "Home Assistant",
|
|
8516
8514
|
titleKey: "provider-homeassistant:contribution.s_ha-export.title",
|
|
8517
|
-
description: enabled.length > 0 ? "Each
|
|
8515
|
+
description: enabled.length > 0 ? "Each instance receives only the devices switched on for it." : "No Home Assistant instance is enabled for export.",
|
|
8518
8516
|
tab: "export",
|
|
8519
8517
|
columns: 1,
|
|
8520
8518
|
order: 30,
|
package/i18n/en.json
CHANGED
|
@@ -1,10 +1,8 @@
|
|
|
1
1
|
{
|
|
2
2
|
"globalSettings.s_ha-calendars-import.title": "Calendars to import",
|
|
3
|
-
"globalSettings.s_ha-calendars-import.description": "Pick which Home Assistant calendar entities feed System → Calendars. Nothing selected = no calendars imported.",
|
|
4
3
|
"globalSettings.s_ha-calendars-import.calendarIds.label": "Calendars",
|
|
5
4
|
"globalSettings.s_ha-calendars-import.calendarIds.description": "Discovered from connected HA brokers. Select at least one to import; leave empty to import none.",
|
|
6
5
|
"globalSettings.s_ha-broker.title": "Home Assistant broker",
|
|
7
|
-
"globalSettings.s_ha-broker.description": "Home Assistant brokers are managed in Connectivity → Brokers.",
|
|
8
6
|
"globalSettings.s_ha-broker.brokerHelp.label": "Brokers are managed separately",
|
|
9
7
|
"haBrokerSettings.s_ha-broker-credentials.title": "Home Assistant connection",
|
|
10
8
|
"haBrokerSettings.s_ha-broker-credentials.authKind.label": "Auth mode",
|
|
@@ -17,14 +15,14 @@
|
|
|
17
15
|
"globalSettings.s_ha-export-brokers.ha-export___no-brokers.label": "No brokers",
|
|
18
16
|
"globalSettings.s_ha-export-transport.title": "Connection",
|
|
19
17
|
"globalSettings.s_ha-export-transport.publicBaseUrl.label": "Hub URL Home Assistant can reach",
|
|
20
|
-
"globalSettings.s_ha-export-transport.publicBaseUrl.description": "Used
|
|
18
|
+
"globalSettings.s_ha-export-transport.publicBaseUrl.description": "Used for the signed image links Home Assistant fetches; leave empty to derive one automatically.",
|
|
21
19
|
"globalSettings.s_ha-export-advanced.title": "Advanced",
|
|
22
20
|
"globalSettings.s_ha-export-advanced.reconcileIntervalSec.label": "Reconcile interval (s)",
|
|
23
|
-
"globalSettings.s_ha-export-advanced.reconcileIntervalSec.description": "Full re-announce and re-push cadence.
|
|
21
|
+
"globalSettings.s_ha-export-advanced.reconcileIntervalSec.description": "Full re-announce and re-push cadence.",
|
|
24
22
|
"contribution.s_ha-export.title": "Home Assistant",
|
|
25
23
|
"haConfig.s_connection.title": "Home Assistant notify",
|
|
26
24
|
"haConfig.s_connection.service.label": "Notify service",
|
|
27
|
-
"haConfig.s_connection.service.description": "The
|
|
25
|
+
"haConfig.s_connection.service.description": "The part after `notify.` (e.g. `mobile_app_pixel_7`); use Discover to list them.",
|
|
28
26
|
"haConfig.s_connection.brokerId.label": "Broker",
|
|
29
|
-
"haConfig.s_connection.brokerId.description": "Optional
|
|
27
|
+
"haConfig.s_connection.brokerId.description": "Optional; blank uses the only configured broker."
|
|
30
28
|
}
|
package/i18n/it.json
CHANGED
|
@@ -1,10 +1,8 @@
|
|
|
1
1
|
{
|
|
2
2
|
"globalSettings.s_ha-calendars-import.title": "Calendari da importare",
|
|
3
|
-
"globalSettings.s_ha-calendars-import.description": "Scegli quali entità calendario di Home Assistant alimentano Sistema → Calendari. Nessuna selezione = nessun calendario importato.",
|
|
4
3
|
"globalSettings.s_ha-calendars-import.calendarIds.label": "Calendari",
|
|
5
4
|
"globalSettings.s_ha-calendars-import.calendarIds.description": "Rilevati dai broker HA collegati. Seleziona almeno un calendario da importare; lascia vuoto per non importarne nessuno.",
|
|
6
5
|
"globalSettings.s_ha-broker.title": "Broker Home Assistant",
|
|
7
|
-
"globalSettings.s_ha-broker.description": "I broker Home Assistant si gestiscono in Connettività → Broker.",
|
|
8
6
|
"globalSettings.s_ha-broker.brokerHelp.label": "I broker si gestiscono separatamente",
|
|
9
7
|
"haBrokerSettings.s_ha-broker-credentials.title": "Connessione a Home Assistant",
|
|
10
8
|
"haBrokerSettings.s_ha-broker-credentials.authKind.label": "Modalità di autenticazione",
|
|
@@ -17,14 +15,14 @@
|
|
|
17
15
|
"globalSettings.s_ha-export-brokers.ha-export___no-brokers.label": "Nessun broker",
|
|
18
16
|
"globalSettings.s_ha-export-transport.title": "Connessione",
|
|
19
17
|
"globalSettings.s_ha-export-transport.publicBaseUrl.label": "URL dell'hub raggiungibile da Home Assistant",
|
|
20
|
-
"globalSettings.s_ha-export-transport.publicBaseUrl.description": "
|
|
18
|
+
"globalSettings.s_ha-export-transport.publicBaseUrl.description": "Usato per i link firmati delle immagini che Home Assistant scarica; lascia vuoto per ricavarlo automaticamente.",
|
|
21
19
|
"globalSettings.s_ha-export-advanced.title": "Avanzate",
|
|
22
20
|
"globalSettings.s_ha-export-advanced.reconcileIntervalSec.label": "Intervallo di riconciliazione (s)",
|
|
23
|
-
"globalSettings.s_ha-export-advanced.reconcileIntervalSec.description": "
|
|
21
|
+
"globalSettings.s_ha-export-advanced.reconcileIntervalSec.description": "Cadenza di ri-annuncio e ri-invio completo.",
|
|
24
22
|
"contribution.s_ha-export.title": "Home Assistant",
|
|
25
23
|
"haConfig.s_connection.title": "Notifica Home Assistant",
|
|
26
24
|
"haConfig.s_connection.service.label": "Servizio di notifica",
|
|
27
|
-
"haConfig.s_connection.service.description": "
|
|
25
|
+
"haConfig.s_connection.service.description": "La parte dopo `notify.` (es. `mobile_app_pixel_7`); usa Discover per elencarli.",
|
|
28
26
|
"haConfig.s_connection.brokerId.label": "Broker",
|
|
29
|
-
"haConfig.s_connection.brokerId.description": "Facoltativo
|
|
27
|
+
"haConfig.s_connection.brokerId.description": "Facoltativo; se vuoto usa l'unico broker configurato."
|
|
30
28
|
}
|