@camstack/addon-provider-homeassistant 1.2.616 → 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-DMbVsggA.js → dist-CfZUXrNa.js} +114 -61
- package/dist/{dist-BQjwQmdj.mjs → dist-D6huwmAr.mjs} +114 -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
|
|
@@ -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",
|
|
@@ -56646,6 +56670,16 @@ var DishwasherStatusSchema = object({
|
|
|
56646
56670
|
powerState: string().nullable(),
|
|
56647
56671
|
saltLevel: DishwasherConsumableLevelSchema.nullable(),
|
|
56648
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(),
|
|
56649
56683
|
/** Option states: null when the appliance does not expose the option or has not said. */
|
|
56650
56684
|
halfLoad: boolean().nullable(),
|
|
56651
56685
|
hygienePlus: boolean().nullable(),
|
|
@@ -65296,16 +65330,6 @@ var UpdateUserInputSchema = object({
|
|
|
65296
65330
|
allowedDevices: record(string(), union([array(string()), literal("*")])).optional(),
|
|
65297
65331
|
scopes: array(TokenScopeSchema).optional()
|
|
65298
65332
|
});
|
|
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
65333
|
var OauthSessionSummarySchema = object({
|
|
65310
65334
|
id: string(),
|
|
65311
65335
|
userId: string(),
|
|
@@ -65327,8 +65351,7 @@ var TotpStatusSchema = object({
|
|
|
65327
65351
|
confirmedAt: number().nullable()
|
|
65328
65352
|
});
|
|
65329
65353
|
/**
|
|
65330
|
-
* user-management — singleton capability for user accounts
|
|
65331
|
-
* legacy API-key rows.
|
|
65354
|
+
* user-management — singleton capability for user accounts.
|
|
65332
65355
|
*
|
|
65333
65356
|
* v2 model: every method gated by `auth: 'admin'`. Admin-only delegation
|
|
65334
65357
|
* — the subset check on `setUserScopes` is moot
|
|
@@ -65384,10 +65407,6 @@ method(_void(), array(UserSummarySchema), { auth: "admin" }), method(CreateUserI
|
|
|
65384
65407
|
}), UserSummarySchema.extend({ passwordHash: string() }).nullable(), {
|
|
65385
65408
|
kind: "mutation",
|
|
65386
65409
|
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
65410
|
}), method(object({ userId: string() }), TotpSetupResultSchema, {
|
|
65392
65411
|
kind: "mutation",
|
|
65393
65412
|
auth: "admin",
|
|
@@ -74843,6 +74862,12 @@ Object.freeze({
|
|
|
74843
74862
|
addonId: null,
|
|
74844
74863
|
access: "view"
|
|
74845
74864
|
},
|
|
74865
|
+
"records.transact": {
|
|
74866
|
+
capName: "records",
|
|
74867
|
+
capScope: "system",
|
|
74868
|
+
addonId: null,
|
|
74869
|
+
access: "create"
|
|
74870
|
+
},
|
|
74846
74871
|
"sceneMonitor.captureReference": {
|
|
74847
74872
|
capName: "scene-monitor",
|
|
74848
74873
|
capScope: "device",
|
|
@@ -76175,12 +76200,6 @@ Object.freeze({
|
|
|
76175
76200
|
addonId: null,
|
|
76176
76201
|
access: "view"
|
|
76177
76202
|
},
|
|
76178
|
-
"userManagement.listApiKeys": {
|
|
76179
|
-
capName: "user-management",
|
|
76180
|
-
capScope: "system",
|
|
76181
|
-
addonId: null,
|
|
76182
|
-
access: "view"
|
|
76183
|
-
},
|
|
76184
76203
|
"userManagement.listExternalIdentities": {
|
|
76185
76204
|
capName: "user-management",
|
|
76186
76205
|
capScope: "system",
|
|
@@ -76235,12 +76254,6 @@ Object.freeze({
|
|
|
76235
76254
|
addonId: null,
|
|
76236
76255
|
access: "create"
|
|
76237
76256
|
},
|
|
76238
|
-
"userManagement.revokeApiKey": {
|
|
76239
|
-
capName: "user-management",
|
|
76240
|
-
capScope: "system",
|
|
76241
|
-
addonId: null,
|
|
76242
|
-
access: "delete"
|
|
76243
|
-
},
|
|
76244
76257
|
"userManagement.revokeOauthSession": {
|
|
76245
76258
|
capName: "user-management",
|
|
76246
76259
|
capScope: "system",
|
|
@@ -79812,9 +79825,13 @@ new Map(Object.entries({
|
|
|
79812
79825
|
"stream-online": "device-events",
|
|
79813
79826
|
"stream-offline": "device-events",
|
|
79814
79827
|
"detection-blind": "device-events",
|
|
79828
|
+
"motion-noisy": "device-events",
|
|
79829
|
+
"motion-calm": "device-events",
|
|
79815
79830
|
"recording-stalled": "device-events",
|
|
79816
79831
|
"recording-healthy": "device-events",
|
|
79817
79832
|
"recording-degraded": "device-events",
|
|
79833
|
+
"device-attention-required": "device-events",
|
|
79834
|
+
"device-attention-resolved": "device-events",
|
|
79818
79835
|
"node-online": "system",
|
|
79819
79836
|
"node-offline": "system",
|
|
79820
79837
|
"node-restarting": "system",
|
|
@@ -79897,6 +79914,12 @@ var NC_SYSTEM_EVENT_KIND_GROUP_SPECS = [
|
|
|
79897
79914
|
label: "Detecting nothing",
|
|
79898
79915
|
kinds: ["detection-blind"]
|
|
79899
79916
|
},
|
|
79917
|
+
{
|
|
79918
|
+
id: "motion-noise",
|
|
79919
|
+
family: "device-events",
|
|
79920
|
+
label: "Motion without a subject",
|
|
79921
|
+
kinds: ["motion-noisy", "motion-calm"]
|
|
79922
|
+
},
|
|
79900
79923
|
{
|
|
79901
79924
|
id: "recording",
|
|
79902
79925
|
family: "device-events",
|
|
@@ -79907,6 +79930,12 @@ var NC_SYSTEM_EVENT_KIND_GROUP_SPECS = [
|
|
|
79907
79930
|
"recording-degraded"
|
|
79908
79931
|
]
|
|
79909
79932
|
},
|
|
79933
|
+
{
|
|
79934
|
+
id: "device-attention",
|
|
79935
|
+
family: "device-events",
|
|
79936
|
+
label: "Needs attention",
|
|
79937
|
+
kinds: ["device-attention-required", "device-attention-resolved"]
|
|
79938
|
+
},
|
|
79910
79939
|
{
|
|
79911
79940
|
id: "nodes",
|
|
79912
79941
|
family: "system",
|
|
@@ -80046,6 +80075,7 @@ var ALERT_EPISODE = [
|
|
|
80046
80075
|
"alert-error",
|
|
80047
80076
|
"alert-critical-resolved"
|
|
80048
80077
|
];
|
|
80078
|
+
var DEVICE_ATTENTION = ["device-attention-required", "device-attention-resolved"];
|
|
80049
80079
|
var UPDATES = [
|
|
80050
80080
|
"addon-update-available",
|
|
80051
80081
|
"server-update-available",
|
|
@@ -80075,9 +80105,12 @@ var DEVICE_EVENTS = [
|
|
|
80075
80105
|
"stream-online",
|
|
80076
80106
|
"stream-offline",
|
|
80077
80107
|
"detection-blind",
|
|
80108
|
+
"motion-noisy",
|
|
80109
|
+
"motion-calm",
|
|
80078
80110
|
"recording-stalled",
|
|
80079
80111
|
"recording-healthy",
|
|
80080
80112
|
"recording-degraded",
|
|
80113
|
+
...DEVICE_ATTENTION,
|
|
80081
80114
|
...ALARM
|
|
80082
80115
|
];
|
|
80083
80116
|
/** Every kind a summary may speak about — the two summarisable families. */
|
|
@@ -80245,7 +80278,9 @@ var STATE_SUMMARY_VARS = [
|
|
|
80245
80278
|
[...RULE_TEXT],
|
|
80246
80279
|
[...RULE_TEXT],
|
|
80247
80280
|
[...RULE_TEXT],
|
|
80248
|
-
|
|
80281
|
+
[...RULE_TEXT],
|
|
80282
|
+
[...RULE_TEXT],
|
|
80283
|
+
([...RULE_TEXT], [...DEVICE_ATTENTION, ...ALERT_EPISODE]),
|
|
80249
80284
|
[...RULE_TEXT],
|
|
80250
80285
|
[...RULE_TEXT],
|
|
80251
80286
|
[...RULE_TEXT],
|
|
@@ -80267,11 +80302,11 @@ var STATE_SUMMARY_VARS = [
|
|
|
80267
80302
|
[...RULE_TEXT],
|
|
80268
80303
|
[...RULE_TEXT],
|
|
80269
80304
|
[...RULE_TEXT],
|
|
80305
|
+
([...RULE_TEXT], [...DEVICE_ATTENTION, ...ALERT_EPISODE]),
|
|
80270
80306
|
([...RULE_TEXT], [...ALERT_EPISODE]),
|
|
80307
|
+
([...RULE_TEXT], [...DEVICE_ATTENTION, ...ALERT_EPISODE]),
|
|
80271
80308
|
([...RULE_TEXT], [...ALERT_EPISODE]),
|
|
80272
|
-
([...RULE_TEXT], [...ALERT_EPISODE]),
|
|
80273
|
-
([...RULE_TEXT], [...ALERT_EPISODE]),
|
|
80274
|
-
([...RULE_TEXT], [...ALERT_EPISODE]),
|
|
80309
|
+
([...RULE_TEXT], [...DEVICE_ATTENTION, ...ALERT_EPISODE]),
|
|
80275
80310
|
[...RULE_TEXT],
|
|
80276
80311
|
[...RULE_TEXT],
|
|
80277
80312
|
[...RULE_TEXT],
|
|
@@ -80347,6 +80382,15 @@ new Map([
|
|
|
80347
80382
|
snapshotLabel: "Tanks low or full now",
|
|
80348
80383
|
snapshotSection: "tanks"
|
|
80349
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
|
+
},
|
|
80350
80394
|
{
|
|
80351
80395
|
id: "recording-health",
|
|
80352
80396
|
family: "device-events",
|
|
@@ -80356,6 +80400,15 @@ new Map([
|
|
|
80356
80400
|
snapshotLabel: "Recordings stalled now",
|
|
80357
80401
|
snapshotSection: null
|
|
80358
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
|
+
},
|
|
80359
80412
|
{
|
|
80360
80413
|
id: "node-connectivity",
|
|
80361
80414
|
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",
|
|
@@ -56645,6 +56669,16 @@ var DishwasherStatusSchema = object({
|
|
|
56645
56669
|
powerState: string().nullable(),
|
|
56646
56670
|
saltLevel: DishwasherConsumableLevelSchema.nullable(),
|
|
56647
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(),
|
|
56648
56682
|
/** Option states: null when the appliance does not expose the option or has not said. */
|
|
56649
56683
|
halfLoad: boolean().nullable(),
|
|
56650
56684
|
hygienePlus: boolean().nullable(),
|
|
@@ -65295,16 +65329,6 @@ var UpdateUserInputSchema = object({
|
|
|
65295
65329
|
allowedDevices: record(string(), union([array(string()), literal("*")])).optional(),
|
|
65296
65330
|
scopes: array(TokenScopeSchema).optional()
|
|
65297
65331
|
});
|
|
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
65332
|
var OauthSessionSummarySchema = object({
|
|
65309
65333
|
id: string(),
|
|
65310
65334
|
userId: string(),
|
|
@@ -65326,8 +65350,7 @@ var TotpStatusSchema = object({
|
|
|
65326
65350
|
confirmedAt: number().nullable()
|
|
65327
65351
|
});
|
|
65328
65352
|
/**
|
|
65329
|
-
* user-management — singleton capability for user accounts
|
|
65330
|
-
* legacy API-key rows.
|
|
65353
|
+
* user-management — singleton capability for user accounts.
|
|
65331
65354
|
*
|
|
65332
65355
|
* v2 model: every method gated by `auth: 'admin'`. Admin-only delegation
|
|
65333
65356
|
* — the subset check on `setUserScopes` is moot
|
|
@@ -65383,10 +65406,6 @@ method(_void(), array(UserSummarySchema), { auth: "admin" }), method(CreateUserI
|
|
|
65383
65406
|
}), UserSummarySchema.extend({ passwordHash: string() }).nullable(), {
|
|
65384
65407
|
kind: "mutation",
|
|
65385
65408
|
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
65409
|
}), method(object({ userId: string() }), TotpSetupResultSchema, {
|
|
65391
65410
|
kind: "mutation",
|
|
65392
65411
|
auth: "admin",
|
|
@@ -74842,6 +74861,12 @@ Object.freeze({
|
|
|
74842
74861
|
addonId: null,
|
|
74843
74862
|
access: "view"
|
|
74844
74863
|
},
|
|
74864
|
+
"records.transact": {
|
|
74865
|
+
capName: "records",
|
|
74866
|
+
capScope: "system",
|
|
74867
|
+
addonId: null,
|
|
74868
|
+
access: "create"
|
|
74869
|
+
},
|
|
74845
74870
|
"sceneMonitor.captureReference": {
|
|
74846
74871
|
capName: "scene-monitor",
|
|
74847
74872
|
capScope: "device",
|
|
@@ -76174,12 +76199,6 @@ Object.freeze({
|
|
|
76174
76199
|
addonId: null,
|
|
76175
76200
|
access: "view"
|
|
76176
76201
|
},
|
|
76177
|
-
"userManagement.listApiKeys": {
|
|
76178
|
-
capName: "user-management",
|
|
76179
|
-
capScope: "system",
|
|
76180
|
-
addonId: null,
|
|
76181
|
-
access: "view"
|
|
76182
|
-
},
|
|
76183
76202
|
"userManagement.listExternalIdentities": {
|
|
76184
76203
|
capName: "user-management",
|
|
76185
76204
|
capScope: "system",
|
|
@@ -76234,12 +76253,6 @@ Object.freeze({
|
|
|
76234
76253
|
addonId: null,
|
|
76235
76254
|
access: "create"
|
|
76236
76255
|
},
|
|
76237
|
-
"userManagement.revokeApiKey": {
|
|
76238
|
-
capName: "user-management",
|
|
76239
|
-
capScope: "system",
|
|
76240
|
-
addonId: null,
|
|
76241
|
-
access: "delete"
|
|
76242
|
-
},
|
|
76243
76256
|
"userManagement.revokeOauthSession": {
|
|
76244
76257
|
capName: "user-management",
|
|
76245
76258
|
capScope: "system",
|
|
@@ -79811,9 +79824,13 @@ new Map(Object.entries({
|
|
|
79811
79824
|
"stream-online": "device-events",
|
|
79812
79825
|
"stream-offline": "device-events",
|
|
79813
79826
|
"detection-blind": "device-events",
|
|
79827
|
+
"motion-noisy": "device-events",
|
|
79828
|
+
"motion-calm": "device-events",
|
|
79814
79829
|
"recording-stalled": "device-events",
|
|
79815
79830
|
"recording-healthy": "device-events",
|
|
79816
79831
|
"recording-degraded": "device-events",
|
|
79832
|
+
"device-attention-required": "device-events",
|
|
79833
|
+
"device-attention-resolved": "device-events",
|
|
79817
79834
|
"node-online": "system",
|
|
79818
79835
|
"node-offline": "system",
|
|
79819
79836
|
"node-restarting": "system",
|
|
@@ -79896,6 +79913,12 @@ var NC_SYSTEM_EVENT_KIND_GROUP_SPECS = [
|
|
|
79896
79913
|
label: "Detecting nothing",
|
|
79897
79914
|
kinds: ["detection-blind"]
|
|
79898
79915
|
},
|
|
79916
|
+
{
|
|
79917
|
+
id: "motion-noise",
|
|
79918
|
+
family: "device-events",
|
|
79919
|
+
label: "Motion without a subject",
|
|
79920
|
+
kinds: ["motion-noisy", "motion-calm"]
|
|
79921
|
+
},
|
|
79899
79922
|
{
|
|
79900
79923
|
id: "recording",
|
|
79901
79924
|
family: "device-events",
|
|
@@ -79906,6 +79929,12 @@ var NC_SYSTEM_EVENT_KIND_GROUP_SPECS = [
|
|
|
79906
79929
|
"recording-degraded"
|
|
79907
79930
|
]
|
|
79908
79931
|
},
|
|
79932
|
+
{
|
|
79933
|
+
id: "device-attention",
|
|
79934
|
+
family: "device-events",
|
|
79935
|
+
label: "Needs attention",
|
|
79936
|
+
kinds: ["device-attention-required", "device-attention-resolved"]
|
|
79937
|
+
},
|
|
79909
79938
|
{
|
|
79910
79939
|
id: "nodes",
|
|
79911
79940
|
family: "system",
|
|
@@ -80045,6 +80074,7 @@ var ALERT_EPISODE = [
|
|
|
80045
80074
|
"alert-error",
|
|
80046
80075
|
"alert-critical-resolved"
|
|
80047
80076
|
];
|
|
80077
|
+
var DEVICE_ATTENTION = ["device-attention-required", "device-attention-resolved"];
|
|
80048
80078
|
var UPDATES = [
|
|
80049
80079
|
"addon-update-available",
|
|
80050
80080
|
"server-update-available",
|
|
@@ -80074,9 +80104,12 @@ var DEVICE_EVENTS = [
|
|
|
80074
80104
|
"stream-online",
|
|
80075
80105
|
"stream-offline",
|
|
80076
80106
|
"detection-blind",
|
|
80107
|
+
"motion-noisy",
|
|
80108
|
+
"motion-calm",
|
|
80077
80109
|
"recording-stalled",
|
|
80078
80110
|
"recording-healthy",
|
|
80079
80111
|
"recording-degraded",
|
|
80112
|
+
...DEVICE_ATTENTION,
|
|
80080
80113
|
...ALARM
|
|
80081
80114
|
];
|
|
80082
80115
|
/** Every kind a summary may speak about — the two summarisable families. */
|
|
@@ -80244,7 +80277,9 @@ var STATE_SUMMARY_VARS = [
|
|
|
80244
80277
|
[...RULE_TEXT],
|
|
80245
80278
|
[...RULE_TEXT],
|
|
80246
80279
|
[...RULE_TEXT],
|
|
80247
|
-
|
|
80280
|
+
[...RULE_TEXT],
|
|
80281
|
+
[...RULE_TEXT],
|
|
80282
|
+
([...RULE_TEXT], [...DEVICE_ATTENTION, ...ALERT_EPISODE]),
|
|
80248
80283
|
[...RULE_TEXT],
|
|
80249
80284
|
[...RULE_TEXT],
|
|
80250
80285
|
[...RULE_TEXT],
|
|
@@ -80266,11 +80301,11 @@ var STATE_SUMMARY_VARS = [
|
|
|
80266
80301
|
[...RULE_TEXT],
|
|
80267
80302
|
[...RULE_TEXT],
|
|
80268
80303
|
[...RULE_TEXT],
|
|
80304
|
+
([...RULE_TEXT], [...DEVICE_ATTENTION, ...ALERT_EPISODE]),
|
|
80269
80305
|
([...RULE_TEXT], [...ALERT_EPISODE]),
|
|
80306
|
+
([...RULE_TEXT], [...DEVICE_ATTENTION, ...ALERT_EPISODE]),
|
|
80270
80307
|
([...RULE_TEXT], [...ALERT_EPISODE]),
|
|
80271
|
-
([...RULE_TEXT], [...ALERT_EPISODE]),
|
|
80272
|
-
([...RULE_TEXT], [...ALERT_EPISODE]),
|
|
80273
|
-
([...RULE_TEXT], [...ALERT_EPISODE]),
|
|
80308
|
+
([...RULE_TEXT], [...DEVICE_ATTENTION, ...ALERT_EPISODE]),
|
|
80274
80309
|
[...RULE_TEXT],
|
|
80275
80310
|
[...RULE_TEXT],
|
|
80276
80311
|
[...RULE_TEXT],
|
|
@@ -80346,6 +80381,15 @@ new Map([
|
|
|
80346
80381
|
snapshotLabel: "Tanks low or full now",
|
|
80347
80382
|
snapshotSection: "tanks"
|
|
80348
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
|
+
},
|
|
80349
80393
|
{
|
|
80350
80394
|
id: "recording-health",
|
|
80351
80395
|
family: "device-events",
|
|
@@ -80355,6 +80399,15 @@ new Map([
|
|
|
80355
80399
|
snapshotLabel: "Recordings stalled now",
|
|
80356
80400
|
snapshotSection: null
|
|
80357
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
|
+
},
|
|
80358
80411
|
{
|
|
80359
80412
|
id: "node-connectivity",
|
|
80360
80413
|
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-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
|
}
|