@camstack/addon-provider-tuya 0.2.139 → 0.2.141
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 +238 -62
- package/dist/addon.mjs +238 -62
- package/i18n/en.json +1 -1
- package/i18n/it.json +1 -1
- package/package.json +1 -1
package/dist/addon.js
CHANGED
|
@@ -819,7 +819,7 @@ async function discoverDevices(options = {}, binder = createDgramBinder()) {
|
|
|
819
819
|
return [...byId.values()];
|
|
820
820
|
}
|
|
821
821
|
//#endregion
|
|
822
|
-
//#region ../types/dist/event-category-
|
|
822
|
+
//#region ../types/dist/event-category-BfJwUd2S.mjs
|
|
823
823
|
var EventCategory = /* @__PURE__ */ function(EventCategory) {
|
|
824
824
|
EventCategory["SystemBoot"] = "system.boot";
|
|
825
825
|
EventCategory["SystemAddonsReady"] = "system.addons-ready";
|
|
@@ -1136,6 +1136,15 @@ var EventCategory = /* @__PURE__ */ function(EventCategory) {
|
|
|
1136
1136
|
*/
|
|
1137
1137
|
EventCategory["PipelineDetectionBlind"] = "pipeline.detection-blind";
|
|
1138
1138
|
/**
|
|
1139
|
+
* A camera's motion source has fired constantly with no subject for an hour
|
|
1140
|
+
* (motion duty or session count over the bar, zero detections) — it is not
|
|
1141
|
+
* blind, its motion zones or sensitivity want tuning (D907). Paired with
|
|
1142
|
+
* {@link PipelineMotionCalm}.
|
|
1143
|
+
*/
|
|
1144
|
+
EventCategory["PipelineMotionNoisy"] = "pipeline.motion-noisy";
|
|
1145
|
+
/** The recovery edge of {@link PipelineMotionNoisy}: the motion fell back, or a detection arrived. */
|
|
1146
|
+
EventCategory["PipelineMotionCalm"] = "pipeline.motion-calm";
|
|
1147
|
+
/**
|
|
1139
1148
|
* Per-camera pipeline config was mutated by the orchestrator
|
|
1140
1149
|
* (3-level settings change via `setAgentAddonDefaults` /
|
|
1141
1150
|
* `setCameraStepToggle` / `setCameraPipelineForAgent` or a
|
|
@@ -1507,6 +1516,14 @@ var EventCategory = /* @__PURE__ */ function(EventCategory) {
|
|
|
1507
1516
|
EventCategory["BackupRestored"] = "backup.restored";
|
|
1508
1517
|
EventCategory["NotificationDispatched"] = "notification.dispatched";
|
|
1509
1518
|
EventCategory["NotificationFailed"] = "notification.failed";
|
|
1519
|
+
/**
|
|
1520
|
+
* A notification rule that cannot work (D905): its stored row does not load,
|
|
1521
|
+
* or it still names a device / delivery target the prune CONFIRMED deleted.
|
|
1522
|
+
* One edge per rule per distinct set of reasons; never on an unanswered read.
|
|
1523
|
+
*/
|
|
1524
|
+
EventCategory["NotificationRuleBroken"] = "notification.rule-broken";
|
|
1525
|
+
/** The clear of {@link NotificationRuleBroken}: the rule loads and names nothing deleted. */
|
|
1526
|
+
EventCategory["NotificationRuleRepaired"] = "notification.rule-repaired";
|
|
1510
1527
|
EventCategory["DeviceUpdated"] = "device.updated";
|
|
1511
1528
|
/**
|
|
1512
1529
|
* Transport-level connectivity. Emitted by the device driver when
|
|
@@ -6234,7 +6251,7 @@ var ZodIssueCode = {
|
|
|
6234
6251
|
var ZodFirstPartyTypeKind;
|
|
6235
6252
|
ZodFirstPartyTypeKind || (ZodFirstPartyTypeKind = {});
|
|
6236
6253
|
//#endregion
|
|
6237
|
-
//#region ../types/dist/sleep-
|
|
6254
|
+
//#region ../types/dist/sleep-DJFUfKvA.mjs
|
|
6238
6255
|
/**
|
|
6239
6256
|
* The audio chunk plane's byte format, and the ONE expansion from a coded
|
|
6240
6257
|
* window to float samples (D455).
|
|
@@ -8763,7 +8780,7 @@ var EntryDescriptorSchema = object({
|
|
|
8763
8780
|
/** JSON Schema of the entry body; `secret: true` marks a password field. */
|
|
8764
8781
|
fields: record(string(), unknown())
|
|
8765
8782
|
}).strict();
|
|
8766
|
-
/** What crosses the wire
|
|
8783
|
+
/** What crosses the wire from an addon: JSON only, no Zod. An unknown key is refused. */
|
|
8767
8784
|
var RecordKindDeclarationSchema = object({
|
|
8768
8785
|
database: _enum(RECORD_DATABASES).default("settings"),
|
|
8769
8786
|
class: _enum(RECORD_CLASSES),
|
|
@@ -8782,14 +8799,6 @@ var RecordKindDeclarationSchema = object({
|
|
|
8782
8799
|
secretPaths: array(string().min(1)).default([]),
|
|
8783
8800
|
/** The id key of each array that carries a secret (`{ headers: 'name' }`). */
|
|
8784
8801
|
secretArrayKeys: record(string(), string()).default({}),
|
|
8785
|
-
/**
|
|
8786
|
-
* RETIRED (D900): the legacy table a kind adopted from during the records
|
|
8787
|
-
* migration. Nothing declares it any more and nothing reads it; the schema
|
|
8788
|
-
* still ACCEPTS it because the catalog rows the migration wrote carry it
|
|
8789
|
-
* (an orphaned kind is never redeclared) and an addon built before the
|
|
8790
|
-
* removal still sends it. Never set it.
|
|
8791
|
-
*/
|
|
8792
|
-
adoptsFrom: string().min(1).optional(),
|
|
8793
8802
|
/** Kinds that must agree through `transact` sit in one file under one family name. */
|
|
8794
8803
|
transactFamily: string().min(1).optional(),
|
|
8795
8804
|
entry: EntryDescriptorSchema.optional()
|
|
@@ -13467,17 +13476,6 @@ object({
|
|
|
13467
13476
|
createdAt: number(),
|
|
13468
13477
|
updatedAt: number()
|
|
13469
13478
|
});
|
|
13470
|
-
object({
|
|
13471
|
-
id: string(),
|
|
13472
|
-
label: string(),
|
|
13473
|
-
isAdmin: boolean().default(false),
|
|
13474
|
-
allowedProviders: AllowedProviderSchema,
|
|
13475
|
-
allowedDevices: AllowedDevicesSchema,
|
|
13476
|
-
tokenHash: string(),
|
|
13477
|
-
tokenPrefix: string(),
|
|
13478
|
-
createdAt: number(),
|
|
13479
|
-
lastUsedAt: number().optional()
|
|
13480
|
-
});
|
|
13481
13479
|
object({
|
|
13482
13480
|
id: string(),
|
|
13483
13481
|
userId: string(),
|
|
@@ -17459,16 +17457,36 @@ var RecordKindStateSchema = _enum([
|
|
|
17459
17457
|
var DeclareKindResultSchema = object({
|
|
17460
17458
|
kindId: number().int(),
|
|
17461
17459
|
state: RecordKindStateSchema,
|
|
17462
|
-
createdIndexes: array(string())
|
|
17463
|
-
/**
|
|
17464
|
-
* RETIRED (D900): always `null`. It carried the records-migration boot guard;
|
|
17465
|
-
* it stays on the wire, null, because an addon built before the removal reads
|
|
17466
|
-
* an ABSENT field as "adoption pending" and refuses to start.
|
|
17467
|
-
*/
|
|
17468
|
-
adoptionPending: _null()
|
|
17460
|
+
createdIndexes: array(string())
|
|
17469
17461
|
});
|
|
17470
17462
|
/** Keychain refs a write released (the old marker is gone from the row): the owner deletes the values. */
|
|
17471
17463
|
var SecretRefsList = array(string());
|
|
17464
|
+
/**
|
|
17465
|
+
* One op of a `transact`: the single-row writes, each on a kind of the caller.
|
|
17466
|
+
* All ops of one call share ONE database file and ONE `transactFamily`.
|
|
17467
|
+
*/
|
|
17468
|
+
var RecordTransactOpSchema = discriminatedUnion("op", [
|
|
17469
|
+
object({
|
|
17470
|
+
op: literal("put"),
|
|
17471
|
+
kind: RecordKindNameSchema,
|
|
17472
|
+
record: RecordInputSchema,
|
|
17473
|
+
ifRev: number().int().min(0).optional()
|
|
17474
|
+
}),
|
|
17475
|
+
object({
|
|
17476
|
+
op: literal("patch"),
|
|
17477
|
+
kind: RecordKindNameSchema,
|
|
17478
|
+
id: RecordIdSchema,
|
|
17479
|
+
data: RecordBodySchema,
|
|
17480
|
+
at: number().int().nullable().optional(),
|
|
17481
|
+
expiresAt: number().int().nullable().optional(),
|
|
17482
|
+
ifRev: number().int().min(1).optional()
|
|
17483
|
+
}),
|
|
17484
|
+
object({
|
|
17485
|
+
op: literal("delete"),
|
|
17486
|
+
kind: RecordKindNameSchema,
|
|
17487
|
+
id: RecordIdSchema
|
|
17488
|
+
})
|
|
17489
|
+
]);
|
|
17472
17490
|
var RecordSecretRefsSchema = record(string(), record(string(), string()));
|
|
17473
17491
|
method(object({ kinds: record(RecordKindNameSchema, RecordKindDeclarationSchema) }), object({ kinds: record(string(), DeclareKindResultSchema) }), {
|
|
17474
17492
|
kind: "mutation",
|
|
@@ -17575,6 +17593,16 @@ method(object({ kinds: record(RecordKindNameSchema, RecordKindDeclarationSchema)
|
|
|
17575
17593
|
}), {
|
|
17576
17594
|
kind: "mutation",
|
|
17577
17595
|
auth: "admin"
|
|
17596
|
+
}), method(object({ ops: array(RecordTransactOpSchema).min(1).max(RECORD_BATCH_MAX) }), object({
|
|
17597
|
+
results: array(object({
|
|
17598
|
+
rev: number().int().nullable(),
|
|
17599
|
+
deleted: boolean()
|
|
17600
|
+
})),
|
|
17601
|
+
releasedRefs: SecretRefsList,
|
|
17602
|
+
secretRefs: SecretRefsList
|
|
17603
|
+
}), {
|
|
17604
|
+
kind: "mutation",
|
|
17605
|
+
auth: "admin"
|
|
17578
17606
|
}), method(object({
|
|
17579
17607
|
deviceId: number().int(),
|
|
17580
17608
|
kinds: array(RecordKindNameSchema).optional()
|
|
@@ -43186,9 +43214,13 @@ var NcSystemEventKindSchema = _enum([
|
|
|
43186
43214
|
"node-updating",
|
|
43187
43215
|
"node-inference-unavailable",
|
|
43188
43216
|
"detection-blind",
|
|
43217
|
+
"motion-noisy",
|
|
43218
|
+
"motion-calm",
|
|
43189
43219
|
"recording-stalled",
|
|
43190
43220
|
"recording-healthy",
|
|
43191
43221
|
"recording-degraded",
|
|
43222
|
+
"device-attention-required",
|
|
43223
|
+
"device-attention-resolved",
|
|
43192
43224
|
"storage-location-low",
|
|
43193
43225
|
"storage-location-critical",
|
|
43194
43226
|
"storage-location-ok",
|
|
@@ -43212,6 +43244,8 @@ var NcSystemEventKindSchema = _enum([
|
|
|
43212
43244
|
"alert-critical",
|
|
43213
43245
|
"alert-error",
|
|
43214
43246
|
"alert-critical-resolved",
|
|
43247
|
+
"rule-broken",
|
|
43248
|
+
"rule-repaired",
|
|
43215
43249
|
"camera-online",
|
|
43216
43250
|
"camera-offline",
|
|
43217
43251
|
"camera-disabled",
|
|
@@ -56518,6 +56552,16 @@ var DishwasherStatusSchema = object({
|
|
|
56518
56552
|
powerState: string().nullable(),
|
|
56519
56553
|
saltLevel: DishwasherConsumableLevelSchema.nullable(),
|
|
56520
56554
|
rinseAidLevel: DishwasherConsumableLevelSchema.nullable(),
|
|
56555
|
+
/**
|
|
56556
|
+
* True while the appliance asks for its filter to be cleaned (smart-filter, filter-system or
|
|
56557
|
+
* combined care-and-filter reminder raised); false when every such reminder reads clear; null
|
|
56558
|
+
* when none is reported. A cleared reminder is not an unknown one.
|
|
56559
|
+
*/
|
|
56560
|
+
filterCleaningDue: boolean().nullable(),
|
|
56561
|
+
/** True while the machine-care (descaling / cleaning-program) reminder is raised; false when clear; null when not reported. */
|
|
56562
|
+
machineCareDue: boolean().nullable(),
|
|
56563
|
+
/** Program runs left before the machine-care reminder is due; null when the appliance does not say. */
|
|
56564
|
+
machineCareRemainingRuns: number().int().nonnegative().nullable(),
|
|
56521
56565
|
/** Option states: null when the appliance does not expose the option or has not said. */
|
|
56522
56566
|
halfLoad: boolean().nullable(),
|
|
56523
56567
|
hygienePlus: boolean().nullable(),
|
|
@@ -65168,16 +65212,6 @@ var UpdateUserInputSchema = object({
|
|
|
65168
65212
|
allowedDevices: record(string(), union([array(string()), literal("*")])).optional(),
|
|
65169
65213
|
scopes: array(TokenScopeSchema).optional()
|
|
65170
65214
|
});
|
|
65171
|
-
var ApiKeySummarySchema = object({
|
|
65172
|
-
id: string(),
|
|
65173
|
-
label: string(),
|
|
65174
|
-
isAdmin: boolean().default(false),
|
|
65175
|
-
allowedProviders: union([array(string()), literal("*")]).optional(),
|
|
65176
|
-
allowedDevices: record(string(), union([array(string()), literal("*")])).optional(),
|
|
65177
|
-
tokenPrefix: string(),
|
|
65178
|
-
createdAt: number(),
|
|
65179
|
-
lastUsedAt: number().optional()
|
|
65180
|
-
});
|
|
65181
65215
|
var OauthSessionSummarySchema = object({
|
|
65182
65216
|
id: string(),
|
|
65183
65217
|
userId: string(),
|
|
@@ -65199,8 +65233,7 @@ var TotpStatusSchema = object({
|
|
|
65199
65233
|
confirmedAt: number().nullable()
|
|
65200
65234
|
});
|
|
65201
65235
|
/**
|
|
65202
|
-
* user-management — singleton capability for user accounts
|
|
65203
|
-
* legacy API-key rows.
|
|
65236
|
+
* user-management — singleton capability for user accounts.
|
|
65204
65237
|
*
|
|
65205
65238
|
* v2 model: every method gated by `auth: 'admin'`. Admin-only delegation
|
|
65206
65239
|
* — the subset check on `setUserScopes` is moot
|
|
@@ -65256,10 +65289,6 @@ method(_void(), array(UserSummarySchema), { auth: "admin" }), method(CreateUserI
|
|
|
65256
65289
|
}), UserSummarySchema.extend({ passwordHash: string() }).nullable(), {
|
|
65257
65290
|
kind: "mutation",
|
|
65258
65291
|
access: "view"
|
|
65259
|
-
}), method(_void(), array(ApiKeySummarySchema), { auth: "admin" }), method(object({ id: string() }), object({ success: literal(true) }), {
|
|
65260
|
-
kind: "mutation",
|
|
65261
|
-
auth: "admin",
|
|
65262
|
-
access: "delete"
|
|
65263
65292
|
}), method(object({ userId: string() }), TotpSetupResultSchema, {
|
|
65264
65293
|
kind: "mutation",
|
|
65265
65294
|
auth: "admin",
|
|
@@ -74715,6 +74744,12 @@ Object.freeze({
|
|
|
74715
74744
|
addonId: null,
|
|
74716
74745
|
access: "view"
|
|
74717
74746
|
},
|
|
74747
|
+
"records.transact": {
|
|
74748
|
+
capName: "records",
|
|
74749
|
+
capScope: "system",
|
|
74750
|
+
addonId: null,
|
|
74751
|
+
access: "create"
|
|
74752
|
+
},
|
|
74718
74753
|
"sceneMonitor.captureReference": {
|
|
74719
74754
|
capName: "scene-monitor",
|
|
74720
74755
|
capScope: "device",
|
|
@@ -76047,12 +76082,6 @@ Object.freeze({
|
|
|
76047
76082
|
addonId: null,
|
|
76048
76083
|
access: "view"
|
|
76049
76084
|
},
|
|
76050
|
-
"userManagement.listApiKeys": {
|
|
76051
|
-
capName: "user-management",
|
|
76052
|
-
capScope: "system",
|
|
76053
|
-
addonId: null,
|
|
76054
|
-
access: "view"
|
|
76055
|
-
},
|
|
76056
76085
|
"userManagement.listExternalIdentities": {
|
|
76057
76086
|
capName: "user-management",
|
|
76058
76087
|
capScope: "system",
|
|
@@ -76107,12 +76136,6 @@ Object.freeze({
|
|
|
76107
76136
|
addonId: null,
|
|
76108
76137
|
access: "create"
|
|
76109
76138
|
},
|
|
76110
|
-
"userManagement.revokeApiKey": {
|
|
76111
|
-
capName: "user-management",
|
|
76112
|
-
capScope: "system",
|
|
76113
|
-
addonId: null,
|
|
76114
|
-
access: "delete"
|
|
76115
|
-
},
|
|
76116
76139
|
"userManagement.revokeOauthSession": {
|
|
76117
76140
|
capName: "user-management",
|
|
76118
76141
|
capScope: "system",
|
|
@@ -79477,9 +79500,13 @@ new Map(Object.entries({
|
|
|
79477
79500
|
"stream-online": "device-events",
|
|
79478
79501
|
"stream-offline": "device-events",
|
|
79479
79502
|
"detection-blind": "device-events",
|
|
79503
|
+
"motion-noisy": "device-events",
|
|
79504
|
+
"motion-calm": "device-events",
|
|
79480
79505
|
"recording-stalled": "device-events",
|
|
79481
79506
|
"recording-healthy": "device-events",
|
|
79482
79507
|
"recording-degraded": "device-events",
|
|
79508
|
+
"device-attention-required": "device-events",
|
|
79509
|
+
"device-attention-resolved": "device-events",
|
|
79483
79510
|
"node-online": "system",
|
|
79484
79511
|
"node-offline": "system",
|
|
79485
79512
|
"node-restarting": "system",
|
|
@@ -79496,6 +79523,8 @@ new Map(Object.entries({
|
|
|
79496
79523
|
"alert-critical": "system",
|
|
79497
79524
|
"alert-error": "system",
|
|
79498
79525
|
"alert-critical-resolved": "system",
|
|
79526
|
+
"rule-broken": "system",
|
|
79527
|
+
"rule-repaired": "system",
|
|
79499
79528
|
"storage-location-low": "system",
|
|
79500
79529
|
"storage-location-critical": "system",
|
|
79501
79530
|
"storage-location-ok": "system",
|
|
@@ -79560,6 +79589,12 @@ var NC_SYSTEM_EVENT_KIND_GROUP_SPECS = [
|
|
|
79560
79589
|
label: "Detecting nothing",
|
|
79561
79590
|
kinds: ["detection-blind"]
|
|
79562
79591
|
},
|
|
79592
|
+
{
|
|
79593
|
+
id: "motion-noise",
|
|
79594
|
+
family: "device-events",
|
|
79595
|
+
label: "Motion without a subject",
|
|
79596
|
+
kinds: ["motion-noisy", "motion-calm"]
|
|
79597
|
+
},
|
|
79563
79598
|
{
|
|
79564
79599
|
id: "recording",
|
|
79565
79600
|
family: "device-events",
|
|
@@ -79570,6 +79605,12 @@ var NC_SYSTEM_EVENT_KIND_GROUP_SPECS = [
|
|
|
79570
79605
|
"recording-degraded"
|
|
79571
79606
|
]
|
|
79572
79607
|
},
|
|
79608
|
+
{
|
|
79609
|
+
id: "device-attention",
|
|
79610
|
+
family: "device-events",
|
|
79611
|
+
label: "Needs attention",
|
|
79612
|
+
kinds: ["device-attention-required", "device-attention-resolved"]
|
|
79613
|
+
},
|
|
79573
79614
|
{
|
|
79574
79615
|
id: "nodes",
|
|
79575
79616
|
family: "system",
|
|
@@ -79630,6 +79671,12 @@ var NC_SYSTEM_EVENT_KIND_GROUP_SPECS = [
|
|
|
79630
79671
|
"alert-critical-resolved"
|
|
79631
79672
|
]
|
|
79632
79673
|
},
|
|
79674
|
+
{
|
|
79675
|
+
id: "rule-health",
|
|
79676
|
+
family: "system",
|
|
79677
|
+
label: "Notification rules",
|
|
79678
|
+
kinds: ["rule-broken", "rule-repaired"]
|
|
79679
|
+
},
|
|
79633
79680
|
{
|
|
79634
79681
|
id: "alarm",
|
|
79635
79682
|
family: "alarm",
|
|
@@ -79703,6 +79750,7 @@ var ALERT_EPISODE = [
|
|
|
79703
79750
|
"alert-error",
|
|
79704
79751
|
"alert-critical-resolved"
|
|
79705
79752
|
];
|
|
79753
|
+
var DEVICE_ATTENTION = ["device-attention-required", "device-attention-resolved"];
|
|
79706
79754
|
var UPDATES = [
|
|
79707
79755
|
"addon-update-available",
|
|
79708
79756
|
"server-update-available",
|
|
@@ -79732,9 +79780,12 @@ var DEVICE_EVENTS = [
|
|
|
79732
79780
|
"stream-online",
|
|
79733
79781
|
"stream-offline",
|
|
79734
79782
|
"detection-blind",
|
|
79783
|
+
"motion-noisy",
|
|
79784
|
+
"motion-calm",
|
|
79735
79785
|
"recording-stalled",
|
|
79736
79786
|
"recording-healthy",
|
|
79737
79787
|
"recording-degraded",
|
|
79788
|
+
...DEVICE_ATTENTION,
|
|
79738
79789
|
...ALARM
|
|
79739
79790
|
];
|
|
79740
79791
|
/** Every kind a summary may speak about — the two summarisable families. */
|
|
@@ -79902,7 +79953,13 @@ var STATE_SUMMARY_VARS = [
|
|
|
79902
79953
|
[...RULE_TEXT],
|
|
79903
79954
|
[...RULE_TEXT],
|
|
79904
79955
|
[...RULE_TEXT],
|
|
79905
|
-
|
|
79956
|
+
[...RULE_TEXT],
|
|
79957
|
+
[...RULE_TEXT],
|
|
79958
|
+
([...RULE_TEXT], [...DEVICE_ATTENTION, ...ALERT_EPISODE]),
|
|
79959
|
+
[...RULE_TEXT],
|
|
79960
|
+
[...RULE_TEXT],
|
|
79961
|
+
[...RULE_TEXT],
|
|
79962
|
+
[...RULE_TEXT],
|
|
79906
79963
|
[...RULE_TEXT],
|
|
79907
79964
|
[...RULE_TEXT],
|
|
79908
79965
|
[...RULE_TEXT],
|
|
@@ -79920,11 +79977,11 @@ var STATE_SUMMARY_VARS = [
|
|
|
79920
79977
|
[...RULE_TEXT],
|
|
79921
79978
|
[...RULE_TEXT],
|
|
79922
79979
|
[...RULE_TEXT],
|
|
79980
|
+
([...RULE_TEXT], [...DEVICE_ATTENTION, ...ALERT_EPISODE]),
|
|
79923
79981
|
([...RULE_TEXT], [...ALERT_EPISODE]),
|
|
79982
|
+
([...RULE_TEXT], [...DEVICE_ATTENTION, ...ALERT_EPISODE]),
|
|
79924
79983
|
([...RULE_TEXT], [...ALERT_EPISODE]),
|
|
79925
|
-
([...RULE_TEXT], [...ALERT_EPISODE]),
|
|
79926
|
-
([...RULE_TEXT], [...ALERT_EPISODE]),
|
|
79927
|
-
([...RULE_TEXT], [...ALERT_EPISODE]),
|
|
79984
|
+
([...RULE_TEXT], [...DEVICE_ATTENTION, ...ALERT_EPISODE]),
|
|
79928
79985
|
[...RULE_TEXT],
|
|
79929
79986
|
[...RULE_TEXT],
|
|
79930
79987
|
[...RULE_TEXT],
|
|
@@ -79945,6 +80002,125 @@ var STATE_SUMMARY_VARS = [
|
|
|
79945
80002
|
[...RULE_TEXT],
|
|
79946
80003
|
...STATE_SUMMARY_VARS
|
|
79947
80004
|
];
|
|
80005
|
+
new Map([
|
|
80006
|
+
{
|
|
80007
|
+
id: "device-connectivity",
|
|
80008
|
+
family: "device-events",
|
|
80009
|
+
label: "Device connectivity (offline / back online)",
|
|
80010
|
+
bad: ["device-offline"],
|
|
80011
|
+
recovery: ["device-online"],
|
|
80012
|
+
snapshotLabel: "Devices offline now",
|
|
80013
|
+
snapshotSection: "device-state"
|
|
80014
|
+
},
|
|
80015
|
+
{
|
|
80016
|
+
id: "device-switch",
|
|
80017
|
+
family: "device-events",
|
|
80018
|
+
label: "Device switched off / back on",
|
|
80019
|
+
bad: ["device-disabled"],
|
|
80020
|
+
recovery: ["device-enabled"],
|
|
80021
|
+
snapshotLabel: "Devices switched off now",
|
|
80022
|
+
snapshotSection: "device-state"
|
|
80023
|
+
},
|
|
80024
|
+
{
|
|
80025
|
+
id: "stream-connectivity",
|
|
80026
|
+
family: "device-events",
|
|
80027
|
+
label: "Stream connectivity (offline / back online)",
|
|
80028
|
+
bad: ["stream-offline"],
|
|
80029
|
+
recovery: ["stream-online"],
|
|
80030
|
+
snapshotLabel: "Streams offline now",
|
|
80031
|
+
snapshotSection: "streams"
|
|
80032
|
+
},
|
|
80033
|
+
{
|
|
80034
|
+
id: "battery",
|
|
80035
|
+
family: "device-events",
|
|
80036
|
+
label: "Battery (low / back to normal)",
|
|
80037
|
+
bad: ["device-battery-low"],
|
|
80038
|
+
recovery: ["device-battery-normal"],
|
|
80039
|
+
snapshotLabel: "Batteries low now",
|
|
80040
|
+
snapshotSection: "battery"
|
|
80041
|
+
},
|
|
80042
|
+
{
|
|
80043
|
+
id: "consumables",
|
|
80044
|
+
family: "device-events",
|
|
80045
|
+
label: "Consumables (low / replaced)",
|
|
80046
|
+
bad: ["device-consumable-low"],
|
|
80047
|
+
recovery: ["device-consumable-normal"],
|
|
80048
|
+
snapshotLabel: "Consumables low now",
|
|
80049
|
+
snapshotSection: "consumables"
|
|
80050
|
+
},
|
|
80051
|
+
{
|
|
80052
|
+
id: "tanks",
|
|
80053
|
+
family: "device-events",
|
|
80054
|
+
label: "Tanks (low or full / back to normal)",
|
|
80055
|
+
bad: ["device-tank-low", "device-tank-full"],
|
|
80056
|
+
recovery: ["device-tank-normal"],
|
|
80057
|
+
snapshotLabel: "Tanks low or full now",
|
|
80058
|
+
snapshotSection: "tanks"
|
|
80059
|
+
},
|
|
80060
|
+
{
|
|
80061
|
+
id: "motion-noise",
|
|
80062
|
+
family: "device-events",
|
|
80063
|
+
label: "Motion without a subject (constant / calm again)",
|
|
80064
|
+
bad: ["motion-noisy"],
|
|
80065
|
+
recovery: ["motion-calm"],
|
|
80066
|
+
snapshotLabel: "Cameras with constant motion now",
|
|
80067
|
+
snapshotSection: null
|
|
80068
|
+
},
|
|
80069
|
+
{
|
|
80070
|
+
id: "recording-health",
|
|
80071
|
+
family: "device-events",
|
|
80072
|
+
label: "Recording health (stalled or degraded / recording again)",
|
|
80073
|
+
bad: ["recording-stalled", "recording-degraded"],
|
|
80074
|
+
recovery: ["recording-healthy"],
|
|
80075
|
+
snapshotLabel: "Recordings stalled now",
|
|
80076
|
+
snapshotSection: null
|
|
80077
|
+
},
|
|
80078
|
+
{
|
|
80079
|
+
id: "device-attention",
|
|
80080
|
+
family: "device-events",
|
|
80081
|
+
label: "Device needs attention (raised / resolved)",
|
|
80082
|
+
bad: ["device-attention-required"],
|
|
80083
|
+
recovery: ["device-attention-resolved"],
|
|
80084
|
+
snapshotLabel: "Devices needing attention now",
|
|
80085
|
+
snapshotSection: null
|
|
80086
|
+
},
|
|
80087
|
+
{
|
|
80088
|
+
id: "node-connectivity",
|
|
80089
|
+
family: "system",
|
|
80090
|
+
label: "Node connectivity (offline / back online)",
|
|
80091
|
+
bad: ["node-offline"],
|
|
80092
|
+
recovery: ["node-online"],
|
|
80093
|
+
snapshotLabel: "Nodes offline now",
|
|
80094
|
+
snapshotSection: "nodes"
|
|
80095
|
+
},
|
|
80096
|
+
{
|
|
80097
|
+
id: "storage-space",
|
|
80098
|
+
family: "system",
|
|
80099
|
+
label: "Storage space (low or critical / ok again)",
|
|
80100
|
+
bad: ["storage-location-low", "storage-location-critical"],
|
|
80101
|
+
recovery: ["storage-location-ok"],
|
|
80102
|
+
snapshotLabel: "Storage locations low now",
|
|
80103
|
+
snapshotSection: null
|
|
80104
|
+
},
|
|
80105
|
+
{
|
|
80106
|
+
id: "critical-alerts",
|
|
80107
|
+
family: "system",
|
|
80108
|
+
label: "Critical alerts (raised / resolved)",
|
|
80109
|
+
bad: ["alert-critical"],
|
|
80110
|
+
recovery: ["alert-critical-resolved"],
|
|
80111
|
+
snapshotLabel: "Critical alerts open now",
|
|
80112
|
+
snapshotSection: null
|
|
80113
|
+
},
|
|
80114
|
+
{
|
|
80115
|
+
id: "rule-health",
|
|
80116
|
+
family: "system",
|
|
80117
|
+
label: "Rule health (broken / repaired)",
|
|
80118
|
+
bad: ["rule-broken"],
|
|
80119
|
+
recovery: ["rule-repaired"],
|
|
80120
|
+
snapshotLabel: "Notification rules broken now",
|
|
80121
|
+
snapshotSection: null
|
|
80122
|
+
}
|
|
80123
|
+
].flatMap((spec) => [...spec.bad, ...spec.recovery].map((kind) => [kind, spec])));
|
|
79948
80124
|
new Set([
|
|
79949
80125
|
"disarmed",
|
|
79950
80126
|
"armed_home",
|
|
@@ -80544,7 +80720,7 @@ function buildConnectionFormSchema() {
|
|
|
80544
80720
|
id: "credentials",
|
|
80545
80721
|
title: "Tuya IoT cloud project",
|
|
80546
80722
|
titleKey: "provider-tuya:connection.s_credentials.title",
|
|
80547
|
-
description: "Create a
|
|
80723
|
+
description: "Create a project at iot.tuya.com, link your Smart Life / Tuya account to it, and paste its Access ID and Access Secret.",
|
|
80548
80724
|
descriptionKey: "provider-tuya:connection.s_credentials.description",
|
|
80549
80725
|
columns: 1,
|
|
80550
80726
|
fields: [{
|
package/dist/addon.mjs
CHANGED
|
@@ -818,7 +818,7 @@ async function discoverDevices(options = {}, binder = createDgramBinder()) {
|
|
|
818
818
|
return [...byId.values()];
|
|
819
819
|
}
|
|
820
820
|
//#endregion
|
|
821
|
-
//#region ../types/dist/event-category-
|
|
821
|
+
//#region ../types/dist/event-category-BfJwUd2S.mjs
|
|
822
822
|
var EventCategory = /* @__PURE__ */ function(EventCategory) {
|
|
823
823
|
EventCategory["SystemBoot"] = "system.boot";
|
|
824
824
|
EventCategory["SystemAddonsReady"] = "system.addons-ready";
|
|
@@ -1135,6 +1135,15 @@ var EventCategory = /* @__PURE__ */ function(EventCategory) {
|
|
|
1135
1135
|
*/
|
|
1136
1136
|
EventCategory["PipelineDetectionBlind"] = "pipeline.detection-blind";
|
|
1137
1137
|
/**
|
|
1138
|
+
* A camera's motion source has fired constantly with no subject for an hour
|
|
1139
|
+
* (motion duty or session count over the bar, zero detections) — it is not
|
|
1140
|
+
* blind, its motion zones or sensitivity want tuning (D907). Paired with
|
|
1141
|
+
* {@link PipelineMotionCalm}.
|
|
1142
|
+
*/
|
|
1143
|
+
EventCategory["PipelineMotionNoisy"] = "pipeline.motion-noisy";
|
|
1144
|
+
/** The recovery edge of {@link PipelineMotionNoisy}: the motion fell back, or a detection arrived. */
|
|
1145
|
+
EventCategory["PipelineMotionCalm"] = "pipeline.motion-calm";
|
|
1146
|
+
/**
|
|
1138
1147
|
* Per-camera pipeline config was mutated by the orchestrator
|
|
1139
1148
|
* (3-level settings change via `setAgentAddonDefaults` /
|
|
1140
1149
|
* `setCameraStepToggle` / `setCameraPipelineForAgent` or a
|
|
@@ -1506,6 +1515,14 @@ var EventCategory = /* @__PURE__ */ function(EventCategory) {
|
|
|
1506
1515
|
EventCategory["BackupRestored"] = "backup.restored";
|
|
1507
1516
|
EventCategory["NotificationDispatched"] = "notification.dispatched";
|
|
1508
1517
|
EventCategory["NotificationFailed"] = "notification.failed";
|
|
1518
|
+
/**
|
|
1519
|
+
* A notification rule that cannot work (D905): its stored row does not load,
|
|
1520
|
+
* or it still names a device / delivery target the prune CONFIRMED deleted.
|
|
1521
|
+
* One edge per rule per distinct set of reasons; never on an unanswered read.
|
|
1522
|
+
*/
|
|
1523
|
+
EventCategory["NotificationRuleBroken"] = "notification.rule-broken";
|
|
1524
|
+
/** The clear of {@link NotificationRuleBroken}: the rule loads and names nothing deleted. */
|
|
1525
|
+
EventCategory["NotificationRuleRepaired"] = "notification.rule-repaired";
|
|
1509
1526
|
EventCategory["DeviceUpdated"] = "device.updated";
|
|
1510
1527
|
/**
|
|
1511
1528
|
* Transport-level connectivity. Emitted by the device driver when
|
|
@@ -6233,7 +6250,7 @@ var ZodIssueCode = {
|
|
|
6233
6250
|
var ZodFirstPartyTypeKind;
|
|
6234
6251
|
ZodFirstPartyTypeKind || (ZodFirstPartyTypeKind = {});
|
|
6235
6252
|
//#endregion
|
|
6236
|
-
//#region ../types/dist/sleep-
|
|
6253
|
+
//#region ../types/dist/sleep-DJFUfKvA.mjs
|
|
6237
6254
|
/**
|
|
6238
6255
|
* The audio chunk plane's byte format, and the ONE expansion from a coded
|
|
6239
6256
|
* window to float samples (D455).
|
|
@@ -8762,7 +8779,7 @@ var EntryDescriptorSchema = object({
|
|
|
8762
8779
|
/** JSON Schema of the entry body; `secret: true` marks a password field. */
|
|
8763
8780
|
fields: record(string(), unknown())
|
|
8764
8781
|
}).strict();
|
|
8765
|
-
/** What crosses the wire
|
|
8782
|
+
/** What crosses the wire from an addon: JSON only, no Zod. An unknown key is refused. */
|
|
8766
8783
|
var RecordKindDeclarationSchema = object({
|
|
8767
8784
|
database: _enum(RECORD_DATABASES).default("settings"),
|
|
8768
8785
|
class: _enum(RECORD_CLASSES),
|
|
@@ -8781,14 +8798,6 @@ var RecordKindDeclarationSchema = object({
|
|
|
8781
8798
|
secretPaths: array(string().min(1)).default([]),
|
|
8782
8799
|
/** The id key of each array that carries a secret (`{ headers: 'name' }`). */
|
|
8783
8800
|
secretArrayKeys: record(string(), string()).default({}),
|
|
8784
|
-
/**
|
|
8785
|
-
* RETIRED (D900): the legacy table a kind adopted from during the records
|
|
8786
|
-
* migration. Nothing declares it any more and nothing reads it; the schema
|
|
8787
|
-
* still ACCEPTS it because the catalog rows the migration wrote carry it
|
|
8788
|
-
* (an orphaned kind is never redeclared) and an addon built before the
|
|
8789
|
-
* removal still sends it. Never set it.
|
|
8790
|
-
*/
|
|
8791
|
-
adoptsFrom: string().min(1).optional(),
|
|
8792
8801
|
/** Kinds that must agree through `transact` sit in one file under one family name. */
|
|
8793
8802
|
transactFamily: string().min(1).optional(),
|
|
8794
8803
|
entry: EntryDescriptorSchema.optional()
|
|
@@ -13466,17 +13475,6 @@ object({
|
|
|
13466
13475
|
createdAt: number(),
|
|
13467
13476
|
updatedAt: number()
|
|
13468
13477
|
});
|
|
13469
|
-
object({
|
|
13470
|
-
id: string(),
|
|
13471
|
-
label: string(),
|
|
13472
|
-
isAdmin: boolean().default(false),
|
|
13473
|
-
allowedProviders: AllowedProviderSchema,
|
|
13474
|
-
allowedDevices: AllowedDevicesSchema,
|
|
13475
|
-
tokenHash: string(),
|
|
13476
|
-
tokenPrefix: string(),
|
|
13477
|
-
createdAt: number(),
|
|
13478
|
-
lastUsedAt: number().optional()
|
|
13479
|
-
});
|
|
13480
13478
|
object({
|
|
13481
13479
|
id: string(),
|
|
13482
13480
|
userId: string(),
|
|
@@ -17458,16 +17456,36 @@ var RecordKindStateSchema = _enum([
|
|
|
17458
17456
|
var DeclareKindResultSchema = object({
|
|
17459
17457
|
kindId: number().int(),
|
|
17460
17458
|
state: RecordKindStateSchema,
|
|
17461
|
-
createdIndexes: array(string())
|
|
17462
|
-
/**
|
|
17463
|
-
* RETIRED (D900): always `null`. It carried the records-migration boot guard;
|
|
17464
|
-
* it stays on the wire, null, because an addon built before the removal reads
|
|
17465
|
-
* an ABSENT field as "adoption pending" and refuses to start.
|
|
17466
|
-
*/
|
|
17467
|
-
adoptionPending: _null()
|
|
17459
|
+
createdIndexes: array(string())
|
|
17468
17460
|
});
|
|
17469
17461
|
/** Keychain refs a write released (the old marker is gone from the row): the owner deletes the values. */
|
|
17470
17462
|
var SecretRefsList = array(string());
|
|
17463
|
+
/**
|
|
17464
|
+
* One op of a `transact`: the single-row writes, each on a kind of the caller.
|
|
17465
|
+
* All ops of one call share ONE database file and ONE `transactFamily`.
|
|
17466
|
+
*/
|
|
17467
|
+
var RecordTransactOpSchema = discriminatedUnion("op", [
|
|
17468
|
+
object({
|
|
17469
|
+
op: literal("put"),
|
|
17470
|
+
kind: RecordKindNameSchema,
|
|
17471
|
+
record: RecordInputSchema,
|
|
17472
|
+
ifRev: number().int().min(0).optional()
|
|
17473
|
+
}),
|
|
17474
|
+
object({
|
|
17475
|
+
op: literal("patch"),
|
|
17476
|
+
kind: RecordKindNameSchema,
|
|
17477
|
+
id: RecordIdSchema,
|
|
17478
|
+
data: RecordBodySchema,
|
|
17479
|
+
at: number().int().nullable().optional(),
|
|
17480
|
+
expiresAt: number().int().nullable().optional(),
|
|
17481
|
+
ifRev: number().int().min(1).optional()
|
|
17482
|
+
}),
|
|
17483
|
+
object({
|
|
17484
|
+
op: literal("delete"),
|
|
17485
|
+
kind: RecordKindNameSchema,
|
|
17486
|
+
id: RecordIdSchema
|
|
17487
|
+
})
|
|
17488
|
+
]);
|
|
17471
17489
|
var RecordSecretRefsSchema = record(string(), record(string(), string()));
|
|
17472
17490
|
method(object({ kinds: record(RecordKindNameSchema, RecordKindDeclarationSchema) }), object({ kinds: record(string(), DeclareKindResultSchema) }), {
|
|
17473
17491
|
kind: "mutation",
|
|
@@ -17574,6 +17592,16 @@ method(object({ kinds: record(RecordKindNameSchema, RecordKindDeclarationSchema)
|
|
|
17574
17592
|
}), {
|
|
17575
17593
|
kind: "mutation",
|
|
17576
17594
|
auth: "admin"
|
|
17595
|
+
}), method(object({ ops: array(RecordTransactOpSchema).min(1).max(RECORD_BATCH_MAX) }), object({
|
|
17596
|
+
results: array(object({
|
|
17597
|
+
rev: number().int().nullable(),
|
|
17598
|
+
deleted: boolean()
|
|
17599
|
+
})),
|
|
17600
|
+
releasedRefs: SecretRefsList,
|
|
17601
|
+
secretRefs: SecretRefsList
|
|
17602
|
+
}), {
|
|
17603
|
+
kind: "mutation",
|
|
17604
|
+
auth: "admin"
|
|
17577
17605
|
}), method(object({
|
|
17578
17606
|
deviceId: number().int(),
|
|
17579
17607
|
kinds: array(RecordKindNameSchema).optional()
|
|
@@ -43185,9 +43213,13 @@ var NcSystemEventKindSchema = _enum([
|
|
|
43185
43213
|
"node-updating",
|
|
43186
43214
|
"node-inference-unavailable",
|
|
43187
43215
|
"detection-blind",
|
|
43216
|
+
"motion-noisy",
|
|
43217
|
+
"motion-calm",
|
|
43188
43218
|
"recording-stalled",
|
|
43189
43219
|
"recording-healthy",
|
|
43190
43220
|
"recording-degraded",
|
|
43221
|
+
"device-attention-required",
|
|
43222
|
+
"device-attention-resolved",
|
|
43191
43223
|
"storage-location-low",
|
|
43192
43224
|
"storage-location-critical",
|
|
43193
43225
|
"storage-location-ok",
|
|
@@ -43211,6 +43243,8 @@ var NcSystemEventKindSchema = _enum([
|
|
|
43211
43243
|
"alert-critical",
|
|
43212
43244
|
"alert-error",
|
|
43213
43245
|
"alert-critical-resolved",
|
|
43246
|
+
"rule-broken",
|
|
43247
|
+
"rule-repaired",
|
|
43214
43248
|
"camera-online",
|
|
43215
43249
|
"camera-offline",
|
|
43216
43250
|
"camera-disabled",
|
|
@@ -56517,6 +56551,16 @@ var DishwasherStatusSchema = object({
|
|
|
56517
56551
|
powerState: string().nullable(),
|
|
56518
56552
|
saltLevel: DishwasherConsumableLevelSchema.nullable(),
|
|
56519
56553
|
rinseAidLevel: DishwasherConsumableLevelSchema.nullable(),
|
|
56554
|
+
/**
|
|
56555
|
+
* True while the appliance asks for its filter to be cleaned (smart-filter, filter-system or
|
|
56556
|
+
* combined care-and-filter reminder raised); false when every such reminder reads clear; null
|
|
56557
|
+
* when none is reported. A cleared reminder is not an unknown one.
|
|
56558
|
+
*/
|
|
56559
|
+
filterCleaningDue: boolean().nullable(),
|
|
56560
|
+
/** True while the machine-care (descaling / cleaning-program) reminder is raised; false when clear; null when not reported. */
|
|
56561
|
+
machineCareDue: boolean().nullable(),
|
|
56562
|
+
/** Program runs left before the machine-care reminder is due; null when the appliance does not say. */
|
|
56563
|
+
machineCareRemainingRuns: number().int().nonnegative().nullable(),
|
|
56520
56564
|
/** Option states: null when the appliance does not expose the option or has not said. */
|
|
56521
56565
|
halfLoad: boolean().nullable(),
|
|
56522
56566
|
hygienePlus: boolean().nullable(),
|
|
@@ -65167,16 +65211,6 @@ var UpdateUserInputSchema = object({
|
|
|
65167
65211
|
allowedDevices: record(string(), union([array(string()), literal("*")])).optional(),
|
|
65168
65212
|
scopes: array(TokenScopeSchema).optional()
|
|
65169
65213
|
});
|
|
65170
|
-
var ApiKeySummarySchema = object({
|
|
65171
|
-
id: string(),
|
|
65172
|
-
label: string(),
|
|
65173
|
-
isAdmin: boolean().default(false),
|
|
65174
|
-
allowedProviders: union([array(string()), literal("*")]).optional(),
|
|
65175
|
-
allowedDevices: record(string(), union([array(string()), literal("*")])).optional(),
|
|
65176
|
-
tokenPrefix: string(),
|
|
65177
|
-
createdAt: number(),
|
|
65178
|
-
lastUsedAt: number().optional()
|
|
65179
|
-
});
|
|
65180
65214
|
var OauthSessionSummarySchema = object({
|
|
65181
65215
|
id: string(),
|
|
65182
65216
|
userId: string(),
|
|
@@ -65198,8 +65232,7 @@ var TotpStatusSchema = object({
|
|
|
65198
65232
|
confirmedAt: number().nullable()
|
|
65199
65233
|
});
|
|
65200
65234
|
/**
|
|
65201
|
-
* user-management — singleton capability for user accounts
|
|
65202
|
-
* legacy API-key rows.
|
|
65235
|
+
* user-management — singleton capability for user accounts.
|
|
65203
65236
|
*
|
|
65204
65237
|
* v2 model: every method gated by `auth: 'admin'`. Admin-only delegation
|
|
65205
65238
|
* — the subset check on `setUserScopes` is moot
|
|
@@ -65255,10 +65288,6 @@ method(_void(), array(UserSummarySchema), { auth: "admin" }), method(CreateUserI
|
|
|
65255
65288
|
}), UserSummarySchema.extend({ passwordHash: string() }).nullable(), {
|
|
65256
65289
|
kind: "mutation",
|
|
65257
65290
|
access: "view"
|
|
65258
|
-
}), method(_void(), array(ApiKeySummarySchema), { auth: "admin" }), method(object({ id: string() }), object({ success: literal(true) }), {
|
|
65259
|
-
kind: "mutation",
|
|
65260
|
-
auth: "admin",
|
|
65261
|
-
access: "delete"
|
|
65262
65291
|
}), method(object({ userId: string() }), TotpSetupResultSchema, {
|
|
65263
65292
|
kind: "mutation",
|
|
65264
65293
|
auth: "admin",
|
|
@@ -74714,6 +74743,12 @@ Object.freeze({
|
|
|
74714
74743
|
addonId: null,
|
|
74715
74744
|
access: "view"
|
|
74716
74745
|
},
|
|
74746
|
+
"records.transact": {
|
|
74747
|
+
capName: "records",
|
|
74748
|
+
capScope: "system",
|
|
74749
|
+
addonId: null,
|
|
74750
|
+
access: "create"
|
|
74751
|
+
},
|
|
74717
74752
|
"sceneMonitor.captureReference": {
|
|
74718
74753
|
capName: "scene-monitor",
|
|
74719
74754
|
capScope: "device",
|
|
@@ -76046,12 +76081,6 @@ Object.freeze({
|
|
|
76046
76081
|
addonId: null,
|
|
76047
76082
|
access: "view"
|
|
76048
76083
|
},
|
|
76049
|
-
"userManagement.listApiKeys": {
|
|
76050
|
-
capName: "user-management",
|
|
76051
|
-
capScope: "system",
|
|
76052
|
-
addonId: null,
|
|
76053
|
-
access: "view"
|
|
76054
|
-
},
|
|
76055
76084
|
"userManagement.listExternalIdentities": {
|
|
76056
76085
|
capName: "user-management",
|
|
76057
76086
|
capScope: "system",
|
|
@@ -76106,12 +76135,6 @@ Object.freeze({
|
|
|
76106
76135
|
addonId: null,
|
|
76107
76136
|
access: "create"
|
|
76108
76137
|
},
|
|
76109
|
-
"userManagement.revokeApiKey": {
|
|
76110
|
-
capName: "user-management",
|
|
76111
|
-
capScope: "system",
|
|
76112
|
-
addonId: null,
|
|
76113
|
-
access: "delete"
|
|
76114
|
-
},
|
|
76115
76138
|
"userManagement.revokeOauthSession": {
|
|
76116
76139
|
capName: "user-management",
|
|
76117
76140
|
capScope: "system",
|
|
@@ -79476,9 +79499,13 @@ new Map(Object.entries({
|
|
|
79476
79499
|
"stream-online": "device-events",
|
|
79477
79500
|
"stream-offline": "device-events",
|
|
79478
79501
|
"detection-blind": "device-events",
|
|
79502
|
+
"motion-noisy": "device-events",
|
|
79503
|
+
"motion-calm": "device-events",
|
|
79479
79504
|
"recording-stalled": "device-events",
|
|
79480
79505
|
"recording-healthy": "device-events",
|
|
79481
79506
|
"recording-degraded": "device-events",
|
|
79507
|
+
"device-attention-required": "device-events",
|
|
79508
|
+
"device-attention-resolved": "device-events",
|
|
79482
79509
|
"node-online": "system",
|
|
79483
79510
|
"node-offline": "system",
|
|
79484
79511
|
"node-restarting": "system",
|
|
@@ -79495,6 +79522,8 @@ new Map(Object.entries({
|
|
|
79495
79522
|
"alert-critical": "system",
|
|
79496
79523
|
"alert-error": "system",
|
|
79497
79524
|
"alert-critical-resolved": "system",
|
|
79525
|
+
"rule-broken": "system",
|
|
79526
|
+
"rule-repaired": "system",
|
|
79498
79527
|
"storage-location-low": "system",
|
|
79499
79528
|
"storage-location-critical": "system",
|
|
79500
79529
|
"storage-location-ok": "system",
|
|
@@ -79559,6 +79588,12 @@ var NC_SYSTEM_EVENT_KIND_GROUP_SPECS = [
|
|
|
79559
79588
|
label: "Detecting nothing",
|
|
79560
79589
|
kinds: ["detection-blind"]
|
|
79561
79590
|
},
|
|
79591
|
+
{
|
|
79592
|
+
id: "motion-noise",
|
|
79593
|
+
family: "device-events",
|
|
79594
|
+
label: "Motion without a subject",
|
|
79595
|
+
kinds: ["motion-noisy", "motion-calm"]
|
|
79596
|
+
},
|
|
79562
79597
|
{
|
|
79563
79598
|
id: "recording",
|
|
79564
79599
|
family: "device-events",
|
|
@@ -79569,6 +79604,12 @@ var NC_SYSTEM_EVENT_KIND_GROUP_SPECS = [
|
|
|
79569
79604
|
"recording-degraded"
|
|
79570
79605
|
]
|
|
79571
79606
|
},
|
|
79607
|
+
{
|
|
79608
|
+
id: "device-attention",
|
|
79609
|
+
family: "device-events",
|
|
79610
|
+
label: "Needs attention",
|
|
79611
|
+
kinds: ["device-attention-required", "device-attention-resolved"]
|
|
79612
|
+
},
|
|
79572
79613
|
{
|
|
79573
79614
|
id: "nodes",
|
|
79574
79615
|
family: "system",
|
|
@@ -79629,6 +79670,12 @@ var NC_SYSTEM_EVENT_KIND_GROUP_SPECS = [
|
|
|
79629
79670
|
"alert-critical-resolved"
|
|
79630
79671
|
]
|
|
79631
79672
|
},
|
|
79673
|
+
{
|
|
79674
|
+
id: "rule-health",
|
|
79675
|
+
family: "system",
|
|
79676
|
+
label: "Notification rules",
|
|
79677
|
+
kinds: ["rule-broken", "rule-repaired"]
|
|
79678
|
+
},
|
|
79632
79679
|
{
|
|
79633
79680
|
id: "alarm",
|
|
79634
79681
|
family: "alarm",
|
|
@@ -79702,6 +79749,7 @@ var ALERT_EPISODE = [
|
|
|
79702
79749
|
"alert-error",
|
|
79703
79750
|
"alert-critical-resolved"
|
|
79704
79751
|
];
|
|
79752
|
+
var DEVICE_ATTENTION = ["device-attention-required", "device-attention-resolved"];
|
|
79705
79753
|
var UPDATES = [
|
|
79706
79754
|
"addon-update-available",
|
|
79707
79755
|
"server-update-available",
|
|
@@ -79731,9 +79779,12 @@ var DEVICE_EVENTS = [
|
|
|
79731
79779
|
"stream-online",
|
|
79732
79780
|
"stream-offline",
|
|
79733
79781
|
"detection-blind",
|
|
79782
|
+
"motion-noisy",
|
|
79783
|
+
"motion-calm",
|
|
79734
79784
|
"recording-stalled",
|
|
79735
79785
|
"recording-healthy",
|
|
79736
79786
|
"recording-degraded",
|
|
79787
|
+
...DEVICE_ATTENTION,
|
|
79737
79788
|
...ALARM
|
|
79738
79789
|
];
|
|
79739
79790
|
/** Every kind a summary may speak about — the two summarisable families. */
|
|
@@ -79901,7 +79952,13 @@ var STATE_SUMMARY_VARS = [
|
|
|
79901
79952
|
[...RULE_TEXT],
|
|
79902
79953
|
[...RULE_TEXT],
|
|
79903
79954
|
[...RULE_TEXT],
|
|
79904
|
-
|
|
79955
|
+
[...RULE_TEXT],
|
|
79956
|
+
[...RULE_TEXT],
|
|
79957
|
+
([...RULE_TEXT], [...DEVICE_ATTENTION, ...ALERT_EPISODE]),
|
|
79958
|
+
[...RULE_TEXT],
|
|
79959
|
+
[...RULE_TEXT],
|
|
79960
|
+
[...RULE_TEXT],
|
|
79961
|
+
[...RULE_TEXT],
|
|
79905
79962
|
[...RULE_TEXT],
|
|
79906
79963
|
[...RULE_TEXT],
|
|
79907
79964
|
[...RULE_TEXT],
|
|
@@ -79919,11 +79976,11 @@ var STATE_SUMMARY_VARS = [
|
|
|
79919
79976
|
[...RULE_TEXT],
|
|
79920
79977
|
[...RULE_TEXT],
|
|
79921
79978
|
[...RULE_TEXT],
|
|
79979
|
+
([...RULE_TEXT], [...DEVICE_ATTENTION, ...ALERT_EPISODE]),
|
|
79922
79980
|
([...RULE_TEXT], [...ALERT_EPISODE]),
|
|
79981
|
+
([...RULE_TEXT], [...DEVICE_ATTENTION, ...ALERT_EPISODE]),
|
|
79923
79982
|
([...RULE_TEXT], [...ALERT_EPISODE]),
|
|
79924
|
-
([...RULE_TEXT], [...ALERT_EPISODE]),
|
|
79925
|
-
([...RULE_TEXT], [...ALERT_EPISODE]),
|
|
79926
|
-
([...RULE_TEXT], [...ALERT_EPISODE]),
|
|
79983
|
+
([...RULE_TEXT], [...DEVICE_ATTENTION, ...ALERT_EPISODE]),
|
|
79927
79984
|
[...RULE_TEXT],
|
|
79928
79985
|
[...RULE_TEXT],
|
|
79929
79986
|
[...RULE_TEXT],
|
|
@@ -79944,6 +80001,125 @@ var STATE_SUMMARY_VARS = [
|
|
|
79944
80001
|
[...RULE_TEXT],
|
|
79945
80002
|
...STATE_SUMMARY_VARS
|
|
79946
80003
|
];
|
|
80004
|
+
new Map([
|
|
80005
|
+
{
|
|
80006
|
+
id: "device-connectivity",
|
|
80007
|
+
family: "device-events",
|
|
80008
|
+
label: "Device connectivity (offline / back online)",
|
|
80009
|
+
bad: ["device-offline"],
|
|
80010
|
+
recovery: ["device-online"],
|
|
80011
|
+
snapshotLabel: "Devices offline now",
|
|
80012
|
+
snapshotSection: "device-state"
|
|
80013
|
+
},
|
|
80014
|
+
{
|
|
80015
|
+
id: "device-switch",
|
|
80016
|
+
family: "device-events",
|
|
80017
|
+
label: "Device switched off / back on",
|
|
80018
|
+
bad: ["device-disabled"],
|
|
80019
|
+
recovery: ["device-enabled"],
|
|
80020
|
+
snapshotLabel: "Devices switched off now",
|
|
80021
|
+
snapshotSection: "device-state"
|
|
80022
|
+
},
|
|
80023
|
+
{
|
|
80024
|
+
id: "stream-connectivity",
|
|
80025
|
+
family: "device-events",
|
|
80026
|
+
label: "Stream connectivity (offline / back online)",
|
|
80027
|
+
bad: ["stream-offline"],
|
|
80028
|
+
recovery: ["stream-online"],
|
|
80029
|
+
snapshotLabel: "Streams offline now",
|
|
80030
|
+
snapshotSection: "streams"
|
|
80031
|
+
},
|
|
80032
|
+
{
|
|
80033
|
+
id: "battery",
|
|
80034
|
+
family: "device-events",
|
|
80035
|
+
label: "Battery (low / back to normal)",
|
|
80036
|
+
bad: ["device-battery-low"],
|
|
80037
|
+
recovery: ["device-battery-normal"],
|
|
80038
|
+
snapshotLabel: "Batteries low now",
|
|
80039
|
+
snapshotSection: "battery"
|
|
80040
|
+
},
|
|
80041
|
+
{
|
|
80042
|
+
id: "consumables",
|
|
80043
|
+
family: "device-events",
|
|
80044
|
+
label: "Consumables (low / replaced)",
|
|
80045
|
+
bad: ["device-consumable-low"],
|
|
80046
|
+
recovery: ["device-consumable-normal"],
|
|
80047
|
+
snapshotLabel: "Consumables low now",
|
|
80048
|
+
snapshotSection: "consumables"
|
|
80049
|
+
},
|
|
80050
|
+
{
|
|
80051
|
+
id: "tanks",
|
|
80052
|
+
family: "device-events",
|
|
80053
|
+
label: "Tanks (low or full / back to normal)",
|
|
80054
|
+
bad: ["device-tank-low", "device-tank-full"],
|
|
80055
|
+
recovery: ["device-tank-normal"],
|
|
80056
|
+
snapshotLabel: "Tanks low or full now",
|
|
80057
|
+
snapshotSection: "tanks"
|
|
80058
|
+
},
|
|
80059
|
+
{
|
|
80060
|
+
id: "motion-noise",
|
|
80061
|
+
family: "device-events",
|
|
80062
|
+
label: "Motion without a subject (constant / calm again)",
|
|
80063
|
+
bad: ["motion-noisy"],
|
|
80064
|
+
recovery: ["motion-calm"],
|
|
80065
|
+
snapshotLabel: "Cameras with constant motion now",
|
|
80066
|
+
snapshotSection: null
|
|
80067
|
+
},
|
|
80068
|
+
{
|
|
80069
|
+
id: "recording-health",
|
|
80070
|
+
family: "device-events",
|
|
80071
|
+
label: "Recording health (stalled or degraded / recording again)",
|
|
80072
|
+
bad: ["recording-stalled", "recording-degraded"],
|
|
80073
|
+
recovery: ["recording-healthy"],
|
|
80074
|
+
snapshotLabel: "Recordings stalled now",
|
|
80075
|
+
snapshotSection: null
|
|
80076
|
+
},
|
|
80077
|
+
{
|
|
80078
|
+
id: "device-attention",
|
|
80079
|
+
family: "device-events",
|
|
80080
|
+
label: "Device needs attention (raised / resolved)",
|
|
80081
|
+
bad: ["device-attention-required"],
|
|
80082
|
+
recovery: ["device-attention-resolved"],
|
|
80083
|
+
snapshotLabel: "Devices needing attention now",
|
|
80084
|
+
snapshotSection: null
|
|
80085
|
+
},
|
|
80086
|
+
{
|
|
80087
|
+
id: "node-connectivity",
|
|
80088
|
+
family: "system",
|
|
80089
|
+
label: "Node connectivity (offline / back online)",
|
|
80090
|
+
bad: ["node-offline"],
|
|
80091
|
+
recovery: ["node-online"],
|
|
80092
|
+
snapshotLabel: "Nodes offline now",
|
|
80093
|
+
snapshotSection: "nodes"
|
|
80094
|
+
},
|
|
80095
|
+
{
|
|
80096
|
+
id: "storage-space",
|
|
80097
|
+
family: "system",
|
|
80098
|
+
label: "Storage space (low or critical / ok again)",
|
|
80099
|
+
bad: ["storage-location-low", "storage-location-critical"],
|
|
80100
|
+
recovery: ["storage-location-ok"],
|
|
80101
|
+
snapshotLabel: "Storage locations low now",
|
|
80102
|
+
snapshotSection: null
|
|
80103
|
+
},
|
|
80104
|
+
{
|
|
80105
|
+
id: "critical-alerts",
|
|
80106
|
+
family: "system",
|
|
80107
|
+
label: "Critical alerts (raised / resolved)",
|
|
80108
|
+
bad: ["alert-critical"],
|
|
80109
|
+
recovery: ["alert-critical-resolved"],
|
|
80110
|
+
snapshotLabel: "Critical alerts open now",
|
|
80111
|
+
snapshotSection: null
|
|
80112
|
+
},
|
|
80113
|
+
{
|
|
80114
|
+
id: "rule-health",
|
|
80115
|
+
family: "system",
|
|
80116
|
+
label: "Rule health (broken / repaired)",
|
|
80117
|
+
bad: ["rule-broken"],
|
|
80118
|
+
recovery: ["rule-repaired"],
|
|
80119
|
+
snapshotLabel: "Notification rules broken now",
|
|
80120
|
+
snapshotSection: null
|
|
80121
|
+
}
|
|
80122
|
+
].flatMap((spec) => [...spec.bad, ...spec.recovery].map((kind) => [kind, spec])));
|
|
79947
80123
|
new Set([
|
|
79948
80124
|
"disarmed",
|
|
79949
80125
|
"armed_home",
|
|
@@ -80543,7 +80719,7 @@ function buildConnectionFormSchema() {
|
|
|
80543
80719
|
id: "credentials",
|
|
80544
80720
|
title: "Tuya IoT cloud project",
|
|
80545
80721
|
titleKey: "provider-tuya:connection.s_credentials.title",
|
|
80546
|
-
description: "Create a
|
|
80722
|
+
description: "Create a project at iot.tuya.com, link your Smart Life / Tuya account to it, and paste its Access ID and Access Secret.",
|
|
80547
80723
|
descriptionKey: "provider-tuya:connection.s_credentials.description",
|
|
80548
80724
|
columns: 1,
|
|
80549
80725
|
fields: [{
|
package/i18n/en.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"connection.s_credentials.title": "Tuya IoT cloud project",
|
|
3
|
-
"connection.s_credentials.description": "Create a
|
|
3
|
+
"connection.s_credentials.description": "Create a project at iot.tuya.com, link your Smart Life / Tuya account to it, and paste its Access ID and Access Secret.",
|
|
4
4
|
"connection.s_credentials.accessId.label": "Access ID / Client ID",
|
|
5
5
|
"connection.s_credentials.accessSecret.label": "Access Secret / Client Secret",
|
|
6
6
|
"connection.s_region.title": "Region",
|
package/i18n/it.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"connection.s_credentials.title": "Progetto cloud Tuya IoT",
|
|
3
|
-
"connection.s_credentials.description": "Crea un progetto
|
|
3
|
+
"connection.s_credentials.description": "Crea un progetto su iot.tuya.com, collega il tuo account Smart Life / Tuya e incolla Access ID e Access Secret.",
|
|
4
4
|
"connection.s_credentials.accessId.label": "Access ID / Client ID",
|
|
5
5
|
"connection.s_credentials.accessSecret.label": "Access Secret / Client Secret",
|
|
6
6
|
"connection.s_region.title": "Regione",
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@camstack/addon-provider-tuya",
|
|
3
|
-
"version": "0.2.
|
|
3
|
+
"version": "0.2.141",
|
|
4
4
|
"description": "Tuya / Smart Life device-provider addon for CamStack — account-onboarded (Tuya IoT cloud fetch of device localKeys) + LOCAL DP control via the @apocaliss92/nodetuya encrypted-LAN client, exposing switch / water-heater-family kettle entities",
|
|
5
5
|
"keywords": [
|
|
6
6
|
"camstack",
|