@camstack/addon-provider-homeassistant 1.2.615 → 1.2.617
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-i6ntIgzS.js → dist-CfZUXrNa.js} +237 -61
- package/dist/{dist-DULXoGnO.mjs → dist-D6huwmAr.mjs} +237 -61
- 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-CfZUXrNa.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-D6huwmAr.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
|
|
@@ -687,6 +696,14 @@ var EventCategory = /* @__PURE__ */ function(EventCategory) {
|
|
|
687
696
|
EventCategory["BackupRestored"] = "backup.restored";
|
|
688
697
|
EventCategory["NotificationDispatched"] = "notification.dispatched";
|
|
689
698
|
EventCategory["NotificationFailed"] = "notification.failed";
|
|
699
|
+
/**
|
|
700
|
+
* A notification rule that cannot work (D905): its stored row does not load,
|
|
701
|
+
* or it still names a device / delivery target the prune CONFIRMED deleted.
|
|
702
|
+
* One edge per rule per distinct set of reasons; never on an unanswered read.
|
|
703
|
+
*/
|
|
704
|
+
EventCategory["NotificationRuleBroken"] = "notification.rule-broken";
|
|
705
|
+
/** The clear of {@link NotificationRuleBroken}: the rule loads and names nothing deleted. */
|
|
706
|
+
EventCategory["NotificationRuleRepaired"] = "notification.rule-repaired";
|
|
690
707
|
EventCategory["DeviceUpdated"] = "device.updated";
|
|
691
708
|
/**
|
|
692
709
|
* Transport-level connectivity. Emitted by the device driver when
|
|
@@ -5547,7 +5564,7 @@ var ZodIssueCode = {
|
|
|
5547
5564
|
var ZodFirstPartyTypeKind;
|
|
5548
5565
|
ZodFirstPartyTypeKind || (ZodFirstPartyTypeKind = {});
|
|
5549
5566
|
//#endregion
|
|
5550
|
-
//#region ../types/dist/sleep-
|
|
5567
|
+
//#region ../types/dist/sleep-DJFUfKvA.mjs
|
|
5551
5568
|
/**
|
|
5552
5569
|
* The audio chunk plane's byte format, and the ONE expansion from a coded
|
|
5553
5570
|
* window to float samples (D455).
|
|
@@ -8146,7 +8163,7 @@ var EntryDescriptorSchema = object({
|
|
|
8146
8163
|
/** JSON Schema of the entry body; `secret: true` marks a password field. */
|
|
8147
8164
|
fields: record(string(), unknown())
|
|
8148
8165
|
}).strict();
|
|
8149
|
-
/** What crosses the wire
|
|
8166
|
+
/** What crosses the wire from an addon: JSON only, no Zod. An unknown key is refused. */
|
|
8150
8167
|
var RecordKindDeclarationSchema = object({
|
|
8151
8168
|
database: _enum(RECORD_DATABASES).default("settings"),
|
|
8152
8169
|
class: _enum(RECORD_CLASSES),
|
|
@@ -8165,14 +8182,6 @@ var RecordKindDeclarationSchema = object({
|
|
|
8165
8182
|
secretPaths: array(string().min(1)).default([]),
|
|
8166
8183
|
/** The id key of each array that carries a secret (`{ headers: 'name' }`). */
|
|
8167
8184
|
secretArrayKeys: record(string(), string()).default({}),
|
|
8168
|
-
/**
|
|
8169
|
-
* RETIRED (D900): the legacy table a kind adopted from during the records
|
|
8170
|
-
* migration. Nothing declares it any more and nothing reads it; the schema
|
|
8171
|
-
* still ACCEPTS it because the catalog rows the migration wrote carry it
|
|
8172
|
-
* (an orphaned kind is never redeclared) and an addon built before the
|
|
8173
|
-
* removal still sends it. Never set it.
|
|
8174
|
-
*/
|
|
8175
|
-
adoptsFrom: string().min(1).optional(),
|
|
8176
8185
|
/** Kinds that must agree through `transact` sit in one file under one family name. */
|
|
8177
8186
|
transactFamily: string().min(1).optional(),
|
|
8178
8187
|
entry: EntryDescriptorSchema.optional()
|
|
@@ -13171,17 +13180,6 @@ object({
|
|
|
13171
13180
|
createdAt: number(),
|
|
13172
13181
|
updatedAt: number()
|
|
13173
13182
|
});
|
|
13174
|
-
object({
|
|
13175
|
-
id: string(),
|
|
13176
|
-
label: string(),
|
|
13177
|
-
isAdmin: boolean().default(false),
|
|
13178
|
-
allowedProviders: AllowedProviderSchema,
|
|
13179
|
-
allowedDevices: AllowedDevicesSchema,
|
|
13180
|
-
tokenHash: string(),
|
|
13181
|
-
tokenPrefix: string(),
|
|
13182
|
-
createdAt: number(),
|
|
13183
|
-
lastUsedAt: number().optional()
|
|
13184
|
-
});
|
|
13185
13183
|
object({
|
|
13186
13184
|
id: string(),
|
|
13187
13185
|
userId: string(),
|
|
@@ -17231,16 +17229,36 @@ var RecordKindStateSchema = _enum([
|
|
|
17231
17229
|
var DeclareKindResultSchema = object({
|
|
17232
17230
|
kindId: number().int(),
|
|
17233
17231
|
state: RecordKindStateSchema,
|
|
17234
|
-
createdIndexes: array(string())
|
|
17235
|
-
/**
|
|
17236
|
-
* RETIRED (D900): always `null`. It carried the records-migration boot guard;
|
|
17237
|
-
* it stays on the wire, null, because an addon built before the removal reads
|
|
17238
|
-
* an ABSENT field as "adoption pending" and refuses to start.
|
|
17239
|
-
*/
|
|
17240
|
-
adoptionPending: _null()
|
|
17232
|
+
createdIndexes: array(string())
|
|
17241
17233
|
});
|
|
17242
17234
|
/** Keychain refs a write released (the old marker is gone from the row): the owner deletes the values. */
|
|
17243
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
|
+
]);
|
|
17244
17262
|
var RecordSecretRefsSchema = record(string(), record(string(), string()));
|
|
17245
17263
|
method(object({ kinds: record(RecordKindNameSchema, RecordKindDeclarationSchema) }), object({ kinds: record(string(), DeclareKindResultSchema) }), {
|
|
17246
17264
|
kind: "mutation",
|
|
@@ -17347,6 +17365,16 @@ method(object({ kinds: record(RecordKindNameSchema, RecordKindDeclarationSchema)
|
|
|
17347
17365
|
}), {
|
|
17348
17366
|
kind: "mutation",
|
|
17349
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"
|
|
17350
17378
|
}), method(object({
|
|
17351
17379
|
deviceId: number().int(),
|
|
17352
17380
|
kinds: array(RecordKindNameSchema).optional()
|
|
@@ -43197,9 +43225,13 @@ var NcSystemEventKindSchema = _enum([
|
|
|
43197
43225
|
"node-updating",
|
|
43198
43226
|
"node-inference-unavailable",
|
|
43199
43227
|
"detection-blind",
|
|
43228
|
+
"motion-noisy",
|
|
43229
|
+
"motion-calm",
|
|
43200
43230
|
"recording-stalled",
|
|
43201
43231
|
"recording-healthy",
|
|
43202
43232
|
"recording-degraded",
|
|
43233
|
+
"device-attention-required",
|
|
43234
|
+
"device-attention-resolved",
|
|
43203
43235
|
"storage-location-low",
|
|
43204
43236
|
"storage-location-critical",
|
|
43205
43237
|
"storage-location-ok",
|
|
@@ -43223,6 +43255,8 @@ var NcSystemEventKindSchema = _enum([
|
|
|
43223
43255
|
"alert-critical",
|
|
43224
43256
|
"alert-error",
|
|
43225
43257
|
"alert-critical-resolved",
|
|
43258
|
+
"rule-broken",
|
|
43259
|
+
"rule-repaired",
|
|
43226
43260
|
"camera-online",
|
|
43227
43261
|
"camera-offline",
|
|
43228
43262
|
"camera-disabled",
|
|
@@ -56636,6 +56670,16 @@ var DishwasherStatusSchema = object({
|
|
|
56636
56670
|
powerState: string().nullable(),
|
|
56637
56671
|
saltLevel: DishwasherConsumableLevelSchema.nullable(),
|
|
56638
56672
|
rinseAidLevel: DishwasherConsumableLevelSchema.nullable(),
|
|
56673
|
+
/**
|
|
56674
|
+
* True while the appliance asks for its filter to be cleaned (smart-filter, filter-system or
|
|
56675
|
+
* combined care-and-filter reminder raised); false when every such reminder reads clear; null
|
|
56676
|
+
* when none is reported. A cleared reminder is not an unknown one.
|
|
56677
|
+
*/
|
|
56678
|
+
filterCleaningDue: boolean().nullable(),
|
|
56679
|
+
/** True while the machine-care (descaling / cleaning-program) reminder is raised; false when clear; null when not reported. */
|
|
56680
|
+
machineCareDue: boolean().nullable(),
|
|
56681
|
+
/** Program runs left before the machine-care reminder is due; null when the appliance does not say. */
|
|
56682
|
+
machineCareRemainingRuns: number().int().nonnegative().nullable(),
|
|
56639
56683
|
/** Option states: null when the appliance does not expose the option or has not said. */
|
|
56640
56684
|
halfLoad: boolean().nullable(),
|
|
56641
56685
|
hygienePlus: boolean().nullable(),
|
|
@@ -65286,16 +65330,6 @@ var UpdateUserInputSchema = object({
|
|
|
65286
65330
|
allowedDevices: record(string(), union([array(string()), literal("*")])).optional(),
|
|
65287
65331
|
scopes: array(TokenScopeSchema).optional()
|
|
65288
65332
|
});
|
|
65289
|
-
var ApiKeySummarySchema = object({
|
|
65290
|
-
id: string(),
|
|
65291
|
-
label: string(),
|
|
65292
|
-
isAdmin: boolean().default(false),
|
|
65293
|
-
allowedProviders: union([array(string()), literal("*")]).optional(),
|
|
65294
|
-
allowedDevices: record(string(), union([array(string()), literal("*")])).optional(),
|
|
65295
|
-
tokenPrefix: string(),
|
|
65296
|
-
createdAt: number(),
|
|
65297
|
-
lastUsedAt: number().optional()
|
|
65298
|
-
});
|
|
65299
65333
|
var OauthSessionSummarySchema = object({
|
|
65300
65334
|
id: string(),
|
|
65301
65335
|
userId: string(),
|
|
@@ -65317,8 +65351,7 @@ var TotpStatusSchema = object({
|
|
|
65317
65351
|
confirmedAt: number().nullable()
|
|
65318
65352
|
});
|
|
65319
65353
|
/**
|
|
65320
|
-
* user-management — singleton capability for user accounts
|
|
65321
|
-
* legacy API-key rows.
|
|
65354
|
+
* user-management — singleton capability for user accounts.
|
|
65322
65355
|
*
|
|
65323
65356
|
* v2 model: every method gated by `auth: 'admin'`. Admin-only delegation
|
|
65324
65357
|
* — the subset check on `setUserScopes` is moot
|
|
@@ -65374,10 +65407,6 @@ method(_void(), array(UserSummarySchema), { auth: "admin" }), method(CreateUserI
|
|
|
65374
65407
|
}), UserSummarySchema.extend({ passwordHash: string() }).nullable(), {
|
|
65375
65408
|
kind: "mutation",
|
|
65376
65409
|
access: "view"
|
|
65377
|
-
}), method(_void(), array(ApiKeySummarySchema), { auth: "admin" }), method(object({ id: string() }), object({ success: literal(true) }), {
|
|
65378
|
-
kind: "mutation",
|
|
65379
|
-
auth: "admin",
|
|
65380
|
-
access: "delete"
|
|
65381
65410
|
}), method(object({ userId: string() }), TotpSetupResultSchema, {
|
|
65382
65411
|
kind: "mutation",
|
|
65383
65412
|
auth: "admin",
|
|
@@ -74833,6 +74862,12 @@ Object.freeze({
|
|
|
74833
74862
|
addonId: null,
|
|
74834
74863
|
access: "view"
|
|
74835
74864
|
},
|
|
74865
|
+
"records.transact": {
|
|
74866
|
+
capName: "records",
|
|
74867
|
+
capScope: "system",
|
|
74868
|
+
addonId: null,
|
|
74869
|
+
access: "create"
|
|
74870
|
+
},
|
|
74836
74871
|
"sceneMonitor.captureReference": {
|
|
74837
74872
|
capName: "scene-monitor",
|
|
74838
74873
|
capScope: "device",
|
|
@@ -76165,12 +76200,6 @@ Object.freeze({
|
|
|
76165
76200
|
addonId: null,
|
|
76166
76201
|
access: "view"
|
|
76167
76202
|
},
|
|
76168
|
-
"userManagement.listApiKeys": {
|
|
76169
|
-
capName: "user-management",
|
|
76170
|
-
capScope: "system",
|
|
76171
|
-
addonId: null,
|
|
76172
|
-
access: "view"
|
|
76173
|
-
},
|
|
76174
76203
|
"userManagement.listExternalIdentities": {
|
|
76175
76204
|
capName: "user-management",
|
|
76176
76205
|
capScope: "system",
|
|
@@ -76225,12 +76254,6 @@ Object.freeze({
|
|
|
76225
76254
|
addonId: null,
|
|
76226
76255
|
access: "create"
|
|
76227
76256
|
},
|
|
76228
|
-
"userManagement.revokeApiKey": {
|
|
76229
|
-
capName: "user-management",
|
|
76230
|
-
capScope: "system",
|
|
76231
|
-
addonId: null,
|
|
76232
|
-
access: "delete"
|
|
76233
|
-
},
|
|
76234
76257
|
"userManagement.revokeOauthSession": {
|
|
76235
76258
|
capName: "user-management",
|
|
76236
76259
|
capScope: "system",
|
|
@@ -79802,9 +79825,13 @@ new Map(Object.entries({
|
|
|
79802
79825
|
"stream-online": "device-events",
|
|
79803
79826
|
"stream-offline": "device-events",
|
|
79804
79827
|
"detection-blind": "device-events",
|
|
79828
|
+
"motion-noisy": "device-events",
|
|
79829
|
+
"motion-calm": "device-events",
|
|
79805
79830
|
"recording-stalled": "device-events",
|
|
79806
79831
|
"recording-healthy": "device-events",
|
|
79807
79832
|
"recording-degraded": "device-events",
|
|
79833
|
+
"device-attention-required": "device-events",
|
|
79834
|
+
"device-attention-resolved": "device-events",
|
|
79808
79835
|
"node-online": "system",
|
|
79809
79836
|
"node-offline": "system",
|
|
79810
79837
|
"node-restarting": "system",
|
|
@@ -79821,6 +79848,8 @@ new Map(Object.entries({
|
|
|
79821
79848
|
"alert-critical": "system",
|
|
79822
79849
|
"alert-error": "system",
|
|
79823
79850
|
"alert-critical-resolved": "system",
|
|
79851
|
+
"rule-broken": "system",
|
|
79852
|
+
"rule-repaired": "system",
|
|
79824
79853
|
"storage-location-low": "system",
|
|
79825
79854
|
"storage-location-critical": "system",
|
|
79826
79855
|
"storage-location-ok": "system",
|
|
@@ -79885,6 +79914,12 @@ var NC_SYSTEM_EVENT_KIND_GROUP_SPECS = [
|
|
|
79885
79914
|
label: "Detecting nothing",
|
|
79886
79915
|
kinds: ["detection-blind"]
|
|
79887
79916
|
},
|
|
79917
|
+
{
|
|
79918
|
+
id: "motion-noise",
|
|
79919
|
+
family: "device-events",
|
|
79920
|
+
label: "Motion without a subject",
|
|
79921
|
+
kinds: ["motion-noisy", "motion-calm"]
|
|
79922
|
+
},
|
|
79888
79923
|
{
|
|
79889
79924
|
id: "recording",
|
|
79890
79925
|
family: "device-events",
|
|
@@ -79895,6 +79930,12 @@ var NC_SYSTEM_EVENT_KIND_GROUP_SPECS = [
|
|
|
79895
79930
|
"recording-degraded"
|
|
79896
79931
|
]
|
|
79897
79932
|
},
|
|
79933
|
+
{
|
|
79934
|
+
id: "device-attention",
|
|
79935
|
+
family: "device-events",
|
|
79936
|
+
label: "Needs attention",
|
|
79937
|
+
kinds: ["device-attention-required", "device-attention-resolved"]
|
|
79938
|
+
},
|
|
79898
79939
|
{
|
|
79899
79940
|
id: "nodes",
|
|
79900
79941
|
family: "system",
|
|
@@ -79955,6 +79996,12 @@ var NC_SYSTEM_EVENT_KIND_GROUP_SPECS = [
|
|
|
79955
79996
|
"alert-critical-resolved"
|
|
79956
79997
|
]
|
|
79957
79998
|
},
|
|
79999
|
+
{
|
|
80000
|
+
id: "rule-health",
|
|
80001
|
+
family: "system",
|
|
80002
|
+
label: "Notification rules",
|
|
80003
|
+
kinds: ["rule-broken", "rule-repaired"]
|
|
80004
|
+
},
|
|
79958
80005
|
{
|
|
79959
80006
|
id: "alarm",
|
|
79960
80007
|
family: "alarm",
|
|
@@ -80028,6 +80075,7 @@ var ALERT_EPISODE = [
|
|
|
80028
80075
|
"alert-error",
|
|
80029
80076
|
"alert-critical-resolved"
|
|
80030
80077
|
];
|
|
80078
|
+
var DEVICE_ATTENTION = ["device-attention-required", "device-attention-resolved"];
|
|
80031
80079
|
var UPDATES = [
|
|
80032
80080
|
"addon-update-available",
|
|
80033
80081
|
"server-update-available",
|
|
@@ -80057,9 +80105,12 @@ var DEVICE_EVENTS = [
|
|
|
80057
80105
|
"stream-online",
|
|
80058
80106
|
"stream-offline",
|
|
80059
80107
|
"detection-blind",
|
|
80108
|
+
"motion-noisy",
|
|
80109
|
+
"motion-calm",
|
|
80060
80110
|
"recording-stalled",
|
|
80061
80111
|
"recording-healthy",
|
|
80062
80112
|
"recording-degraded",
|
|
80113
|
+
...DEVICE_ATTENTION,
|
|
80063
80114
|
...ALARM
|
|
80064
80115
|
];
|
|
80065
80116
|
/** Every kind a summary may speak about — the two summarisable families. */
|
|
@@ -80227,7 +80278,13 @@ var STATE_SUMMARY_VARS = [
|
|
|
80227
80278
|
[...RULE_TEXT],
|
|
80228
80279
|
[...RULE_TEXT],
|
|
80229
80280
|
[...RULE_TEXT],
|
|
80230
|
-
|
|
80281
|
+
[...RULE_TEXT],
|
|
80282
|
+
[...RULE_TEXT],
|
|
80283
|
+
([...RULE_TEXT], [...DEVICE_ATTENTION, ...ALERT_EPISODE]),
|
|
80284
|
+
[...RULE_TEXT],
|
|
80285
|
+
[...RULE_TEXT],
|
|
80286
|
+
[...RULE_TEXT],
|
|
80287
|
+
[...RULE_TEXT],
|
|
80231
80288
|
[...RULE_TEXT],
|
|
80232
80289
|
[...RULE_TEXT],
|
|
80233
80290
|
[...RULE_TEXT],
|
|
@@ -80245,11 +80302,11 @@ var STATE_SUMMARY_VARS = [
|
|
|
80245
80302
|
[...RULE_TEXT],
|
|
80246
80303
|
[...RULE_TEXT],
|
|
80247
80304
|
[...RULE_TEXT],
|
|
80305
|
+
([...RULE_TEXT], [...DEVICE_ATTENTION, ...ALERT_EPISODE]),
|
|
80248
80306
|
([...RULE_TEXT], [...ALERT_EPISODE]),
|
|
80307
|
+
([...RULE_TEXT], [...DEVICE_ATTENTION, ...ALERT_EPISODE]),
|
|
80249
80308
|
([...RULE_TEXT], [...ALERT_EPISODE]),
|
|
80250
|
-
([...RULE_TEXT], [...ALERT_EPISODE]),
|
|
80251
|
-
([...RULE_TEXT], [...ALERT_EPISODE]),
|
|
80252
|
-
([...RULE_TEXT], [...ALERT_EPISODE]),
|
|
80309
|
+
([...RULE_TEXT], [...DEVICE_ATTENTION, ...ALERT_EPISODE]),
|
|
80253
80310
|
[...RULE_TEXT],
|
|
80254
80311
|
[...RULE_TEXT],
|
|
80255
80312
|
[...RULE_TEXT],
|
|
@@ -80270,6 +80327,125 @@ var STATE_SUMMARY_VARS = [
|
|
|
80270
80327
|
[...RULE_TEXT],
|
|
80271
80328
|
...STATE_SUMMARY_VARS
|
|
80272
80329
|
];
|
|
80330
|
+
new Map([
|
|
80331
|
+
{
|
|
80332
|
+
id: "device-connectivity",
|
|
80333
|
+
family: "device-events",
|
|
80334
|
+
label: "Device connectivity (offline / back online)",
|
|
80335
|
+
bad: ["device-offline"],
|
|
80336
|
+
recovery: ["device-online"],
|
|
80337
|
+
snapshotLabel: "Devices offline now",
|
|
80338
|
+
snapshotSection: "device-state"
|
|
80339
|
+
},
|
|
80340
|
+
{
|
|
80341
|
+
id: "device-switch",
|
|
80342
|
+
family: "device-events",
|
|
80343
|
+
label: "Device switched off / back on",
|
|
80344
|
+
bad: ["device-disabled"],
|
|
80345
|
+
recovery: ["device-enabled"],
|
|
80346
|
+
snapshotLabel: "Devices switched off now",
|
|
80347
|
+
snapshotSection: "device-state"
|
|
80348
|
+
},
|
|
80349
|
+
{
|
|
80350
|
+
id: "stream-connectivity",
|
|
80351
|
+
family: "device-events",
|
|
80352
|
+
label: "Stream connectivity (offline / back online)",
|
|
80353
|
+
bad: ["stream-offline"],
|
|
80354
|
+
recovery: ["stream-online"],
|
|
80355
|
+
snapshotLabel: "Streams offline now",
|
|
80356
|
+
snapshotSection: "streams"
|
|
80357
|
+
},
|
|
80358
|
+
{
|
|
80359
|
+
id: "battery",
|
|
80360
|
+
family: "device-events",
|
|
80361
|
+
label: "Battery (low / back to normal)",
|
|
80362
|
+
bad: ["device-battery-low"],
|
|
80363
|
+
recovery: ["device-battery-normal"],
|
|
80364
|
+
snapshotLabel: "Batteries low now",
|
|
80365
|
+
snapshotSection: "battery"
|
|
80366
|
+
},
|
|
80367
|
+
{
|
|
80368
|
+
id: "consumables",
|
|
80369
|
+
family: "device-events",
|
|
80370
|
+
label: "Consumables (low / replaced)",
|
|
80371
|
+
bad: ["device-consumable-low"],
|
|
80372
|
+
recovery: ["device-consumable-normal"],
|
|
80373
|
+
snapshotLabel: "Consumables low now",
|
|
80374
|
+
snapshotSection: "consumables"
|
|
80375
|
+
},
|
|
80376
|
+
{
|
|
80377
|
+
id: "tanks",
|
|
80378
|
+
family: "device-events",
|
|
80379
|
+
label: "Tanks (low or full / back to normal)",
|
|
80380
|
+
bad: ["device-tank-low", "device-tank-full"],
|
|
80381
|
+
recovery: ["device-tank-normal"],
|
|
80382
|
+
snapshotLabel: "Tanks low or full now",
|
|
80383
|
+
snapshotSection: "tanks"
|
|
80384
|
+
},
|
|
80385
|
+
{
|
|
80386
|
+
id: "motion-noise",
|
|
80387
|
+
family: "device-events",
|
|
80388
|
+
label: "Motion without a subject (constant / calm again)",
|
|
80389
|
+
bad: ["motion-noisy"],
|
|
80390
|
+
recovery: ["motion-calm"],
|
|
80391
|
+
snapshotLabel: "Cameras with constant motion now",
|
|
80392
|
+
snapshotSection: null
|
|
80393
|
+
},
|
|
80394
|
+
{
|
|
80395
|
+
id: "recording-health",
|
|
80396
|
+
family: "device-events",
|
|
80397
|
+
label: "Recording health (stalled or degraded / recording again)",
|
|
80398
|
+
bad: ["recording-stalled", "recording-degraded"],
|
|
80399
|
+
recovery: ["recording-healthy"],
|
|
80400
|
+
snapshotLabel: "Recordings stalled now",
|
|
80401
|
+
snapshotSection: null
|
|
80402
|
+
},
|
|
80403
|
+
{
|
|
80404
|
+
id: "device-attention",
|
|
80405
|
+
family: "device-events",
|
|
80406
|
+
label: "Device needs attention (raised / resolved)",
|
|
80407
|
+
bad: ["device-attention-required"],
|
|
80408
|
+
recovery: ["device-attention-resolved"],
|
|
80409
|
+
snapshotLabel: "Devices needing attention now",
|
|
80410
|
+
snapshotSection: null
|
|
80411
|
+
},
|
|
80412
|
+
{
|
|
80413
|
+
id: "node-connectivity",
|
|
80414
|
+
family: "system",
|
|
80415
|
+
label: "Node connectivity (offline / back online)",
|
|
80416
|
+
bad: ["node-offline"],
|
|
80417
|
+
recovery: ["node-online"],
|
|
80418
|
+
snapshotLabel: "Nodes offline now",
|
|
80419
|
+
snapshotSection: "nodes"
|
|
80420
|
+
},
|
|
80421
|
+
{
|
|
80422
|
+
id: "storage-space",
|
|
80423
|
+
family: "system",
|
|
80424
|
+
label: "Storage space (low or critical / ok again)",
|
|
80425
|
+
bad: ["storage-location-low", "storage-location-critical"],
|
|
80426
|
+
recovery: ["storage-location-ok"],
|
|
80427
|
+
snapshotLabel: "Storage locations low now",
|
|
80428
|
+
snapshotSection: null
|
|
80429
|
+
},
|
|
80430
|
+
{
|
|
80431
|
+
id: "critical-alerts",
|
|
80432
|
+
family: "system",
|
|
80433
|
+
label: "Critical alerts (raised / resolved)",
|
|
80434
|
+
bad: ["alert-critical"],
|
|
80435
|
+
recovery: ["alert-critical-resolved"],
|
|
80436
|
+
snapshotLabel: "Critical alerts open now",
|
|
80437
|
+
snapshotSection: null
|
|
80438
|
+
},
|
|
80439
|
+
{
|
|
80440
|
+
id: "rule-health",
|
|
80441
|
+
family: "system",
|
|
80442
|
+
label: "Rule health (broken / repaired)",
|
|
80443
|
+
bad: ["rule-broken"],
|
|
80444
|
+
recovery: ["rule-repaired"],
|
|
80445
|
+
snapshotLabel: "Notification rules broken now",
|
|
80446
|
+
snapshotSection: null
|
|
80447
|
+
}
|
|
80448
|
+
].flatMap((spec) => [...spec.bad, ...spec.recovery].map((kind) => [kind, spec])));
|
|
80273
80449
|
new Set([
|
|
80274
80450
|
"disarmed",
|
|
80275
80451
|
"armed_home",
|
|
@@ -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
|
|
@@ -686,6 +695,14 @@ var EventCategory = /* @__PURE__ */ function(EventCategory) {
|
|
|
686
695
|
EventCategory["BackupRestored"] = "backup.restored";
|
|
687
696
|
EventCategory["NotificationDispatched"] = "notification.dispatched";
|
|
688
697
|
EventCategory["NotificationFailed"] = "notification.failed";
|
|
698
|
+
/**
|
|
699
|
+
* A notification rule that cannot work (D905): its stored row does not load,
|
|
700
|
+
* or it still names a device / delivery target the prune CONFIRMED deleted.
|
|
701
|
+
* One edge per rule per distinct set of reasons; never on an unanswered read.
|
|
702
|
+
*/
|
|
703
|
+
EventCategory["NotificationRuleBroken"] = "notification.rule-broken";
|
|
704
|
+
/** The clear of {@link NotificationRuleBroken}: the rule loads and names nothing deleted. */
|
|
705
|
+
EventCategory["NotificationRuleRepaired"] = "notification.rule-repaired";
|
|
689
706
|
EventCategory["DeviceUpdated"] = "device.updated";
|
|
690
707
|
/**
|
|
691
708
|
* Transport-level connectivity. Emitted by the device driver when
|
|
@@ -5546,7 +5563,7 @@ var ZodIssueCode = {
|
|
|
5546
5563
|
var ZodFirstPartyTypeKind;
|
|
5547
5564
|
ZodFirstPartyTypeKind || (ZodFirstPartyTypeKind = {});
|
|
5548
5565
|
//#endregion
|
|
5549
|
-
//#region ../types/dist/sleep-
|
|
5566
|
+
//#region ../types/dist/sleep-DJFUfKvA.mjs
|
|
5550
5567
|
/**
|
|
5551
5568
|
* The audio chunk plane's byte format, and the ONE expansion from a coded
|
|
5552
5569
|
* window to float samples (D455).
|
|
@@ -8145,7 +8162,7 @@ var EntryDescriptorSchema = object({
|
|
|
8145
8162
|
/** JSON Schema of the entry body; `secret: true` marks a password field. */
|
|
8146
8163
|
fields: record(string(), unknown())
|
|
8147
8164
|
}).strict();
|
|
8148
|
-
/** What crosses the wire
|
|
8165
|
+
/** What crosses the wire from an addon: JSON only, no Zod. An unknown key is refused. */
|
|
8149
8166
|
var RecordKindDeclarationSchema = object({
|
|
8150
8167
|
database: _enum(RECORD_DATABASES).default("settings"),
|
|
8151
8168
|
class: _enum(RECORD_CLASSES),
|
|
@@ -8164,14 +8181,6 @@ var RecordKindDeclarationSchema = object({
|
|
|
8164
8181
|
secretPaths: array(string().min(1)).default([]),
|
|
8165
8182
|
/** The id key of each array that carries a secret (`{ headers: 'name' }`). */
|
|
8166
8183
|
secretArrayKeys: record(string(), string()).default({}),
|
|
8167
|
-
/**
|
|
8168
|
-
* RETIRED (D900): the legacy table a kind adopted from during the records
|
|
8169
|
-
* migration. Nothing declares it any more and nothing reads it; the schema
|
|
8170
|
-
* still ACCEPTS it because the catalog rows the migration wrote carry it
|
|
8171
|
-
* (an orphaned kind is never redeclared) and an addon built before the
|
|
8172
|
-
* removal still sends it. Never set it.
|
|
8173
|
-
*/
|
|
8174
|
-
adoptsFrom: string().min(1).optional(),
|
|
8175
8184
|
/** Kinds that must agree through `transact` sit in one file under one family name. */
|
|
8176
8185
|
transactFamily: string().min(1).optional(),
|
|
8177
8186
|
entry: EntryDescriptorSchema.optional()
|
|
@@ -13170,17 +13179,6 @@ object({
|
|
|
13170
13179
|
createdAt: number(),
|
|
13171
13180
|
updatedAt: number()
|
|
13172
13181
|
});
|
|
13173
|
-
object({
|
|
13174
|
-
id: string(),
|
|
13175
|
-
label: string(),
|
|
13176
|
-
isAdmin: boolean().default(false),
|
|
13177
|
-
allowedProviders: AllowedProviderSchema,
|
|
13178
|
-
allowedDevices: AllowedDevicesSchema,
|
|
13179
|
-
tokenHash: string(),
|
|
13180
|
-
tokenPrefix: string(),
|
|
13181
|
-
createdAt: number(),
|
|
13182
|
-
lastUsedAt: number().optional()
|
|
13183
|
-
});
|
|
13184
13182
|
object({
|
|
13185
13183
|
id: string(),
|
|
13186
13184
|
userId: string(),
|
|
@@ -17230,16 +17228,36 @@ var RecordKindStateSchema = _enum([
|
|
|
17230
17228
|
var DeclareKindResultSchema = object({
|
|
17231
17229
|
kindId: number().int(),
|
|
17232
17230
|
state: RecordKindStateSchema,
|
|
17233
|
-
createdIndexes: array(string())
|
|
17234
|
-
/**
|
|
17235
|
-
* RETIRED (D900): always `null`. It carried the records-migration boot guard;
|
|
17236
|
-
* it stays on the wire, null, because an addon built before the removal reads
|
|
17237
|
-
* an ABSENT field as "adoption pending" and refuses to start.
|
|
17238
|
-
*/
|
|
17239
|
-
adoptionPending: _null()
|
|
17231
|
+
createdIndexes: array(string())
|
|
17240
17232
|
});
|
|
17241
17233
|
/** Keychain refs a write released (the old marker is gone from the row): the owner deletes the values. */
|
|
17242
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
|
+
]);
|
|
17243
17261
|
var RecordSecretRefsSchema = record(string(), record(string(), string()));
|
|
17244
17262
|
method(object({ kinds: record(RecordKindNameSchema, RecordKindDeclarationSchema) }), object({ kinds: record(string(), DeclareKindResultSchema) }), {
|
|
17245
17263
|
kind: "mutation",
|
|
@@ -17346,6 +17364,16 @@ method(object({ kinds: record(RecordKindNameSchema, RecordKindDeclarationSchema)
|
|
|
17346
17364
|
}), {
|
|
17347
17365
|
kind: "mutation",
|
|
17348
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"
|
|
17349
17377
|
}), method(object({
|
|
17350
17378
|
deviceId: number().int(),
|
|
17351
17379
|
kinds: array(RecordKindNameSchema).optional()
|
|
@@ -43196,9 +43224,13 @@ var NcSystemEventKindSchema = _enum([
|
|
|
43196
43224
|
"node-updating",
|
|
43197
43225
|
"node-inference-unavailable",
|
|
43198
43226
|
"detection-blind",
|
|
43227
|
+
"motion-noisy",
|
|
43228
|
+
"motion-calm",
|
|
43199
43229
|
"recording-stalled",
|
|
43200
43230
|
"recording-healthy",
|
|
43201
43231
|
"recording-degraded",
|
|
43232
|
+
"device-attention-required",
|
|
43233
|
+
"device-attention-resolved",
|
|
43202
43234
|
"storage-location-low",
|
|
43203
43235
|
"storage-location-critical",
|
|
43204
43236
|
"storage-location-ok",
|
|
@@ -43222,6 +43254,8 @@ var NcSystemEventKindSchema = _enum([
|
|
|
43222
43254
|
"alert-critical",
|
|
43223
43255
|
"alert-error",
|
|
43224
43256
|
"alert-critical-resolved",
|
|
43257
|
+
"rule-broken",
|
|
43258
|
+
"rule-repaired",
|
|
43225
43259
|
"camera-online",
|
|
43226
43260
|
"camera-offline",
|
|
43227
43261
|
"camera-disabled",
|
|
@@ -56635,6 +56669,16 @@ var DishwasherStatusSchema = object({
|
|
|
56635
56669
|
powerState: string().nullable(),
|
|
56636
56670
|
saltLevel: DishwasherConsumableLevelSchema.nullable(),
|
|
56637
56671
|
rinseAidLevel: DishwasherConsumableLevelSchema.nullable(),
|
|
56672
|
+
/**
|
|
56673
|
+
* True while the appliance asks for its filter to be cleaned (smart-filter, filter-system or
|
|
56674
|
+
* combined care-and-filter reminder raised); false when every such reminder reads clear; null
|
|
56675
|
+
* when none is reported. A cleared reminder is not an unknown one.
|
|
56676
|
+
*/
|
|
56677
|
+
filterCleaningDue: boolean().nullable(),
|
|
56678
|
+
/** True while the machine-care (descaling / cleaning-program) reminder is raised; false when clear; null when not reported. */
|
|
56679
|
+
machineCareDue: boolean().nullable(),
|
|
56680
|
+
/** Program runs left before the machine-care reminder is due; null when the appliance does not say. */
|
|
56681
|
+
machineCareRemainingRuns: number().int().nonnegative().nullable(),
|
|
56638
56682
|
/** Option states: null when the appliance does not expose the option or has not said. */
|
|
56639
56683
|
halfLoad: boolean().nullable(),
|
|
56640
56684
|
hygienePlus: boolean().nullable(),
|
|
@@ -65285,16 +65329,6 @@ var UpdateUserInputSchema = object({
|
|
|
65285
65329
|
allowedDevices: record(string(), union([array(string()), literal("*")])).optional(),
|
|
65286
65330
|
scopes: array(TokenScopeSchema).optional()
|
|
65287
65331
|
});
|
|
65288
|
-
var ApiKeySummarySchema = object({
|
|
65289
|
-
id: string(),
|
|
65290
|
-
label: string(),
|
|
65291
|
-
isAdmin: boolean().default(false),
|
|
65292
|
-
allowedProviders: union([array(string()), literal("*")]).optional(),
|
|
65293
|
-
allowedDevices: record(string(), union([array(string()), literal("*")])).optional(),
|
|
65294
|
-
tokenPrefix: string(),
|
|
65295
|
-
createdAt: number(),
|
|
65296
|
-
lastUsedAt: number().optional()
|
|
65297
|
-
});
|
|
65298
65332
|
var OauthSessionSummarySchema = object({
|
|
65299
65333
|
id: string(),
|
|
65300
65334
|
userId: string(),
|
|
@@ -65316,8 +65350,7 @@ var TotpStatusSchema = object({
|
|
|
65316
65350
|
confirmedAt: number().nullable()
|
|
65317
65351
|
});
|
|
65318
65352
|
/**
|
|
65319
|
-
* user-management — singleton capability for user accounts
|
|
65320
|
-
* legacy API-key rows.
|
|
65353
|
+
* user-management — singleton capability for user accounts.
|
|
65321
65354
|
*
|
|
65322
65355
|
* v2 model: every method gated by `auth: 'admin'`. Admin-only delegation
|
|
65323
65356
|
* — the subset check on `setUserScopes` is moot
|
|
@@ -65373,10 +65406,6 @@ method(_void(), array(UserSummarySchema), { auth: "admin" }), method(CreateUserI
|
|
|
65373
65406
|
}), UserSummarySchema.extend({ passwordHash: string() }).nullable(), {
|
|
65374
65407
|
kind: "mutation",
|
|
65375
65408
|
access: "view"
|
|
65376
|
-
}), method(_void(), array(ApiKeySummarySchema), { auth: "admin" }), method(object({ id: string() }), object({ success: literal(true) }), {
|
|
65377
|
-
kind: "mutation",
|
|
65378
|
-
auth: "admin",
|
|
65379
|
-
access: "delete"
|
|
65380
65409
|
}), method(object({ userId: string() }), TotpSetupResultSchema, {
|
|
65381
65410
|
kind: "mutation",
|
|
65382
65411
|
auth: "admin",
|
|
@@ -74832,6 +74861,12 @@ Object.freeze({
|
|
|
74832
74861
|
addonId: null,
|
|
74833
74862
|
access: "view"
|
|
74834
74863
|
},
|
|
74864
|
+
"records.transact": {
|
|
74865
|
+
capName: "records",
|
|
74866
|
+
capScope: "system",
|
|
74867
|
+
addonId: null,
|
|
74868
|
+
access: "create"
|
|
74869
|
+
},
|
|
74835
74870
|
"sceneMonitor.captureReference": {
|
|
74836
74871
|
capName: "scene-monitor",
|
|
74837
74872
|
capScope: "device",
|
|
@@ -76164,12 +76199,6 @@ Object.freeze({
|
|
|
76164
76199
|
addonId: null,
|
|
76165
76200
|
access: "view"
|
|
76166
76201
|
},
|
|
76167
|
-
"userManagement.listApiKeys": {
|
|
76168
|
-
capName: "user-management",
|
|
76169
|
-
capScope: "system",
|
|
76170
|
-
addonId: null,
|
|
76171
|
-
access: "view"
|
|
76172
|
-
},
|
|
76173
76202
|
"userManagement.listExternalIdentities": {
|
|
76174
76203
|
capName: "user-management",
|
|
76175
76204
|
capScope: "system",
|
|
@@ -76224,12 +76253,6 @@ Object.freeze({
|
|
|
76224
76253
|
addonId: null,
|
|
76225
76254
|
access: "create"
|
|
76226
76255
|
},
|
|
76227
|
-
"userManagement.revokeApiKey": {
|
|
76228
|
-
capName: "user-management",
|
|
76229
|
-
capScope: "system",
|
|
76230
|
-
addonId: null,
|
|
76231
|
-
access: "delete"
|
|
76232
|
-
},
|
|
76233
76256
|
"userManagement.revokeOauthSession": {
|
|
76234
76257
|
capName: "user-management",
|
|
76235
76258
|
capScope: "system",
|
|
@@ -79801,9 +79824,13 @@ new Map(Object.entries({
|
|
|
79801
79824
|
"stream-online": "device-events",
|
|
79802
79825
|
"stream-offline": "device-events",
|
|
79803
79826
|
"detection-blind": "device-events",
|
|
79827
|
+
"motion-noisy": "device-events",
|
|
79828
|
+
"motion-calm": "device-events",
|
|
79804
79829
|
"recording-stalled": "device-events",
|
|
79805
79830
|
"recording-healthy": "device-events",
|
|
79806
79831
|
"recording-degraded": "device-events",
|
|
79832
|
+
"device-attention-required": "device-events",
|
|
79833
|
+
"device-attention-resolved": "device-events",
|
|
79807
79834
|
"node-online": "system",
|
|
79808
79835
|
"node-offline": "system",
|
|
79809
79836
|
"node-restarting": "system",
|
|
@@ -79820,6 +79847,8 @@ new Map(Object.entries({
|
|
|
79820
79847
|
"alert-critical": "system",
|
|
79821
79848
|
"alert-error": "system",
|
|
79822
79849
|
"alert-critical-resolved": "system",
|
|
79850
|
+
"rule-broken": "system",
|
|
79851
|
+
"rule-repaired": "system",
|
|
79823
79852
|
"storage-location-low": "system",
|
|
79824
79853
|
"storage-location-critical": "system",
|
|
79825
79854
|
"storage-location-ok": "system",
|
|
@@ -79884,6 +79913,12 @@ var NC_SYSTEM_EVENT_KIND_GROUP_SPECS = [
|
|
|
79884
79913
|
label: "Detecting nothing",
|
|
79885
79914
|
kinds: ["detection-blind"]
|
|
79886
79915
|
},
|
|
79916
|
+
{
|
|
79917
|
+
id: "motion-noise",
|
|
79918
|
+
family: "device-events",
|
|
79919
|
+
label: "Motion without a subject",
|
|
79920
|
+
kinds: ["motion-noisy", "motion-calm"]
|
|
79921
|
+
},
|
|
79887
79922
|
{
|
|
79888
79923
|
id: "recording",
|
|
79889
79924
|
family: "device-events",
|
|
@@ -79894,6 +79929,12 @@ var NC_SYSTEM_EVENT_KIND_GROUP_SPECS = [
|
|
|
79894
79929
|
"recording-degraded"
|
|
79895
79930
|
]
|
|
79896
79931
|
},
|
|
79932
|
+
{
|
|
79933
|
+
id: "device-attention",
|
|
79934
|
+
family: "device-events",
|
|
79935
|
+
label: "Needs attention",
|
|
79936
|
+
kinds: ["device-attention-required", "device-attention-resolved"]
|
|
79937
|
+
},
|
|
79897
79938
|
{
|
|
79898
79939
|
id: "nodes",
|
|
79899
79940
|
family: "system",
|
|
@@ -79954,6 +79995,12 @@ var NC_SYSTEM_EVENT_KIND_GROUP_SPECS = [
|
|
|
79954
79995
|
"alert-critical-resolved"
|
|
79955
79996
|
]
|
|
79956
79997
|
},
|
|
79998
|
+
{
|
|
79999
|
+
id: "rule-health",
|
|
80000
|
+
family: "system",
|
|
80001
|
+
label: "Notification rules",
|
|
80002
|
+
kinds: ["rule-broken", "rule-repaired"]
|
|
80003
|
+
},
|
|
79957
80004
|
{
|
|
79958
80005
|
id: "alarm",
|
|
79959
80006
|
family: "alarm",
|
|
@@ -80027,6 +80074,7 @@ var ALERT_EPISODE = [
|
|
|
80027
80074
|
"alert-error",
|
|
80028
80075
|
"alert-critical-resolved"
|
|
80029
80076
|
];
|
|
80077
|
+
var DEVICE_ATTENTION = ["device-attention-required", "device-attention-resolved"];
|
|
80030
80078
|
var UPDATES = [
|
|
80031
80079
|
"addon-update-available",
|
|
80032
80080
|
"server-update-available",
|
|
@@ -80056,9 +80104,12 @@ var DEVICE_EVENTS = [
|
|
|
80056
80104
|
"stream-online",
|
|
80057
80105
|
"stream-offline",
|
|
80058
80106
|
"detection-blind",
|
|
80107
|
+
"motion-noisy",
|
|
80108
|
+
"motion-calm",
|
|
80059
80109
|
"recording-stalled",
|
|
80060
80110
|
"recording-healthy",
|
|
80061
80111
|
"recording-degraded",
|
|
80112
|
+
...DEVICE_ATTENTION,
|
|
80062
80113
|
...ALARM
|
|
80063
80114
|
];
|
|
80064
80115
|
/** Every kind a summary may speak about — the two summarisable families. */
|
|
@@ -80226,7 +80277,13 @@ var STATE_SUMMARY_VARS = [
|
|
|
80226
80277
|
[...RULE_TEXT],
|
|
80227
80278
|
[...RULE_TEXT],
|
|
80228
80279
|
[...RULE_TEXT],
|
|
80229
|
-
|
|
80280
|
+
[...RULE_TEXT],
|
|
80281
|
+
[...RULE_TEXT],
|
|
80282
|
+
([...RULE_TEXT], [...DEVICE_ATTENTION, ...ALERT_EPISODE]),
|
|
80283
|
+
[...RULE_TEXT],
|
|
80284
|
+
[...RULE_TEXT],
|
|
80285
|
+
[...RULE_TEXT],
|
|
80286
|
+
[...RULE_TEXT],
|
|
80230
80287
|
[...RULE_TEXT],
|
|
80231
80288
|
[...RULE_TEXT],
|
|
80232
80289
|
[...RULE_TEXT],
|
|
@@ -80244,11 +80301,11 @@ var STATE_SUMMARY_VARS = [
|
|
|
80244
80301
|
[...RULE_TEXT],
|
|
80245
80302
|
[...RULE_TEXT],
|
|
80246
80303
|
[...RULE_TEXT],
|
|
80304
|
+
([...RULE_TEXT], [...DEVICE_ATTENTION, ...ALERT_EPISODE]),
|
|
80247
80305
|
([...RULE_TEXT], [...ALERT_EPISODE]),
|
|
80306
|
+
([...RULE_TEXT], [...DEVICE_ATTENTION, ...ALERT_EPISODE]),
|
|
80248
80307
|
([...RULE_TEXT], [...ALERT_EPISODE]),
|
|
80249
|
-
([...RULE_TEXT], [...ALERT_EPISODE]),
|
|
80250
|
-
([...RULE_TEXT], [...ALERT_EPISODE]),
|
|
80251
|
-
([...RULE_TEXT], [...ALERT_EPISODE]),
|
|
80308
|
+
([...RULE_TEXT], [...DEVICE_ATTENTION, ...ALERT_EPISODE]),
|
|
80252
80309
|
[...RULE_TEXT],
|
|
80253
80310
|
[...RULE_TEXT],
|
|
80254
80311
|
[...RULE_TEXT],
|
|
@@ -80269,6 +80326,125 @@ var STATE_SUMMARY_VARS = [
|
|
|
80269
80326
|
[...RULE_TEXT],
|
|
80270
80327
|
...STATE_SUMMARY_VARS
|
|
80271
80328
|
];
|
|
80329
|
+
new Map([
|
|
80330
|
+
{
|
|
80331
|
+
id: "device-connectivity",
|
|
80332
|
+
family: "device-events",
|
|
80333
|
+
label: "Device connectivity (offline / back online)",
|
|
80334
|
+
bad: ["device-offline"],
|
|
80335
|
+
recovery: ["device-online"],
|
|
80336
|
+
snapshotLabel: "Devices offline now",
|
|
80337
|
+
snapshotSection: "device-state"
|
|
80338
|
+
},
|
|
80339
|
+
{
|
|
80340
|
+
id: "device-switch",
|
|
80341
|
+
family: "device-events",
|
|
80342
|
+
label: "Device switched off / back on",
|
|
80343
|
+
bad: ["device-disabled"],
|
|
80344
|
+
recovery: ["device-enabled"],
|
|
80345
|
+
snapshotLabel: "Devices switched off now",
|
|
80346
|
+
snapshotSection: "device-state"
|
|
80347
|
+
},
|
|
80348
|
+
{
|
|
80349
|
+
id: "stream-connectivity",
|
|
80350
|
+
family: "device-events",
|
|
80351
|
+
label: "Stream connectivity (offline / back online)",
|
|
80352
|
+
bad: ["stream-offline"],
|
|
80353
|
+
recovery: ["stream-online"],
|
|
80354
|
+
snapshotLabel: "Streams offline now",
|
|
80355
|
+
snapshotSection: "streams"
|
|
80356
|
+
},
|
|
80357
|
+
{
|
|
80358
|
+
id: "battery",
|
|
80359
|
+
family: "device-events",
|
|
80360
|
+
label: "Battery (low / back to normal)",
|
|
80361
|
+
bad: ["device-battery-low"],
|
|
80362
|
+
recovery: ["device-battery-normal"],
|
|
80363
|
+
snapshotLabel: "Batteries low now",
|
|
80364
|
+
snapshotSection: "battery"
|
|
80365
|
+
},
|
|
80366
|
+
{
|
|
80367
|
+
id: "consumables",
|
|
80368
|
+
family: "device-events",
|
|
80369
|
+
label: "Consumables (low / replaced)",
|
|
80370
|
+
bad: ["device-consumable-low"],
|
|
80371
|
+
recovery: ["device-consumable-normal"],
|
|
80372
|
+
snapshotLabel: "Consumables low now",
|
|
80373
|
+
snapshotSection: "consumables"
|
|
80374
|
+
},
|
|
80375
|
+
{
|
|
80376
|
+
id: "tanks",
|
|
80377
|
+
family: "device-events",
|
|
80378
|
+
label: "Tanks (low or full / back to normal)",
|
|
80379
|
+
bad: ["device-tank-low", "device-tank-full"],
|
|
80380
|
+
recovery: ["device-tank-normal"],
|
|
80381
|
+
snapshotLabel: "Tanks low or full now",
|
|
80382
|
+
snapshotSection: "tanks"
|
|
80383
|
+
},
|
|
80384
|
+
{
|
|
80385
|
+
id: "motion-noise",
|
|
80386
|
+
family: "device-events",
|
|
80387
|
+
label: "Motion without a subject (constant / calm again)",
|
|
80388
|
+
bad: ["motion-noisy"],
|
|
80389
|
+
recovery: ["motion-calm"],
|
|
80390
|
+
snapshotLabel: "Cameras with constant motion now",
|
|
80391
|
+
snapshotSection: null
|
|
80392
|
+
},
|
|
80393
|
+
{
|
|
80394
|
+
id: "recording-health",
|
|
80395
|
+
family: "device-events",
|
|
80396
|
+
label: "Recording health (stalled or degraded / recording again)",
|
|
80397
|
+
bad: ["recording-stalled", "recording-degraded"],
|
|
80398
|
+
recovery: ["recording-healthy"],
|
|
80399
|
+
snapshotLabel: "Recordings stalled now",
|
|
80400
|
+
snapshotSection: null
|
|
80401
|
+
},
|
|
80402
|
+
{
|
|
80403
|
+
id: "device-attention",
|
|
80404
|
+
family: "device-events",
|
|
80405
|
+
label: "Device needs attention (raised / resolved)",
|
|
80406
|
+
bad: ["device-attention-required"],
|
|
80407
|
+
recovery: ["device-attention-resolved"],
|
|
80408
|
+
snapshotLabel: "Devices needing attention now",
|
|
80409
|
+
snapshotSection: null
|
|
80410
|
+
},
|
|
80411
|
+
{
|
|
80412
|
+
id: "node-connectivity",
|
|
80413
|
+
family: "system",
|
|
80414
|
+
label: "Node connectivity (offline / back online)",
|
|
80415
|
+
bad: ["node-offline"],
|
|
80416
|
+
recovery: ["node-online"],
|
|
80417
|
+
snapshotLabel: "Nodes offline now",
|
|
80418
|
+
snapshotSection: "nodes"
|
|
80419
|
+
},
|
|
80420
|
+
{
|
|
80421
|
+
id: "storage-space",
|
|
80422
|
+
family: "system",
|
|
80423
|
+
label: "Storage space (low or critical / ok again)",
|
|
80424
|
+
bad: ["storage-location-low", "storage-location-critical"],
|
|
80425
|
+
recovery: ["storage-location-ok"],
|
|
80426
|
+
snapshotLabel: "Storage locations low now",
|
|
80427
|
+
snapshotSection: null
|
|
80428
|
+
},
|
|
80429
|
+
{
|
|
80430
|
+
id: "critical-alerts",
|
|
80431
|
+
family: "system",
|
|
80432
|
+
label: "Critical alerts (raised / resolved)",
|
|
80433
|
+
bad: ["alert-critical"],
|
|
80434
|
+
recovery: ["alert-critical-resolved"],
|
|
80435
|
+
snapshotLabel: "Critical alerts open now",
|
|
80436
|
+
snapshotSection: null
|
|
80437
|
+
},
|
|
80438
|
+
{
|
|
80439
|
+
id: "rule-health",
|
|
80440
|
+
family: "system",
|
|
80441
|
+
label: "Rule health (broken / repaired)",
|
|
80442
|
+
bad: ["rule-broken"],
|
|
80443
|
+
recovery: ["rule-repaired"],
|
|
80444
|
+
snapshotLabel: "Notification rules broken now",
|
|
80445
|
+
snapshotSection: null
|
|
80446
|
+
}
|
|
80447
|
+
].flatMap((spec) => [...spec.bad, ...spec.recovery].map((kind) => [kind, spec])));
|
|
80272
80448
|
new Set([
|
|
80273
80449
|
"disarmed",
|
|
80274
80450
|
"armed_home",
|
|
@@ -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-CfZUXrNa.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-D6huwmAr.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
|
}
|