@camstack/addon-provider-petkit 0.2.127 → 0.2.129
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 +341 -37
- package/dist/addon.mjs +341 -37
- package/package.json +1 -1
package/dist/addon.js
CHANGED
|
@@ -1101,7 +1101,7 @@ var Nodepetkit = class {
|
|
|
1101
1101
|
}
|
|
1102
1102
|
};
|
|
1103
1103
|
//#endregion
|
|
1104
|
-
//#region ../types/dist/event-category-
|
|
1104
|
+
//#region ../types/dist/event-category-DOl51-Ij.mjs
|
|
1105
1105
|
var EventCategory = /* @__PURE__ */ function(EventCategory) {
|
|
1106
1106
|
EventCategory["SystemBoot"] = "system.boot";
|
|
1107
1107
|
EventCategory["SystemAddonsReady"] = "system.addons-ready";
|
|
@@ -1180,9 +1180,18 @@ var EventCategory = /* @__PURE__ */ function(EventCategory) {
|
|
|
1180
1180
|
/**
|
|
1181
1181
|
* The node's one-shot runner boot check (D877): planned runners against the
|
|
1182
1182
|
* process service, `degraded` when any is failed, refused or missing. The
|
|
1183
|
-
* alert centre turns it into one
|
|
1183
|
+
* alert centre turns it into one critical alert.
|
|
1184
1184
|
*/
|
|
1185
1185
|
EventCategory["SystemRunnerCheck"] = "system.runner-check";
|
|
1186
|
+
/**
|
|
1187
|
+
* An alert EPISODE opened or closed, emitted by the alert centre for alerts
|
|
1188
|
+
* of severity `critical` or `error` (`AlertEpisodePayload`). The alert
|
|
1189
|
+
* centre sends no notification of its own: Notification Center turns this
|
|
1190
|
+
* into the `alert-critical` / `alert-error` / `alert-critical-resolved`
|
|
1191
|
+
* system-event kinds, and reconciles from the alerts store because a bus
|
|
1192
|
+
* event may be dropped (D8, D11).
|
|
1193
|
+
*/
|
|
1194
|
+
EventCategory["AlertEpisode"] = "alert.episode";
|
|
1186
1195
|
EventCategory["AddonError"] = "addon.error";
|
|
1187
1196
|
EventCategory["AddonPageReady"] = "addon.page-ready";
|
|
1188
1197
|
EventCategory["AddonWidgetReady"] = "addon.widget-ready";
|
|
@@ -6507,7 +6516,7 @@ var ZodIssueCode = {
|
|
|
6507
6516
|
var ZodFirstPartyTypeKind;
|
|
6508
6517
|
ZodFirstPartyTypeKind || (ZodFirstPartyTypeKind = {});
|
|
6509
6518
|
//#endregion
|
|
6510
|
-
//#region ../types/dist/sleep-
|
|
6519
|
+
//#region ../types/dist/sleep-BxjU_fJM.mjs
|
|
6511
6520
|
/**
|
|
6512
6521
|
* The audio chunk plane's byte format, and the ONE expansion from a coded
|
|
6513
6522
|
* window to float samples (D455).
|
|
@@ -14270,7 +14279,14 @@ var AlertSeveritySchema = _enum([
|
|
|
14270
14279
|
]);
|
|
14271
14280
|
var AlertActionSchema = object({
|
|
14272
14281
|
label: string(),
|
|
14273
|
-
href: string().optional()
|
|
14282
|
+
href: string().optional(),
|
|
14283
|
+
/**
|
|
14284
|
+
* How `href` is followed. Absent / `app`: an admin-ui route (client-side).
|
|
14285
|
+
* `server`: a route the HUB serves (an addon HTTP route such as an OAuth
|
|
14286
|
+
* start) — the browser must leave the SPA with a full navigation, because
|
|
14287
|
+
* the SPA has no such route and would bounce to the home page.
|
|
14288
|
+
*/
|
|
14289
|
+
navigation: _enum(["app", "server"]).optional()
|
|
14274
14290
|
});
|
|
14275
14291
|
var AlertStatusSchema = _enum([
|
|
14276
14292
|
"active",
|
|
@@ -18651,7 +18667,11 @@ var deviceDiscoveryCapability = {
|
|
|
18651
18667
|
};
|
|
18652
18668
|
/**
|
|
18653
18669
|
* `device-adoption` — generic discovery + adoption surface,
|
|
18654
|
-
* system-scoped
|
|
18670
|
+
* system-scoped collection (one provider per integration addon), routed
|
|
18671
|
+
* by explicit `{ addonId }` on direct `deviceAdoption.*` calls — the same
|
|
18672
|
+
* pin model as `connection-test`. The admin UI keeps using
|
|
18673
|
+
* `deviceManager.adoption*` (which already threads `addonId`). The de-HA-ified
|
|
18674
|
+
* successor to `ha-discovery`:
|
|
18655
18675
|
* keyed by `integrationId` (the addon resolves integrationId → broker
|
|
18656
18676
|
* internally) rather than a connection-specific `brokerId`, and it
|
|
18657
18677
|
* REUSES the shared `DiscoveredChildDevice` candidate type from
|
|
@@ -18816,7 +18836,7 @@ var ResyncResultSchema = object({
|
|
|
18816
18836
|
var deviceAdoptionCapability = {
|
|
18817
18837
|
name: "device-adoption",
|
|
18818
18838
|
scope: "system",
|
|
18819
|
-
mode: "
|
|
18839
|
+
mode: "collection",
|
|
18820
18840
|
status: {
|
|
18821
18841
|
schema: AdoptionStatusSchema,
|
|
18822
18842
|
kind: "poll"
|
|
@@ -42999,6 +43019,9 @@ var NcSystemEventKindSchema = _enum([
|
|
|
42999
43019
|
"server-updated",
|
|
43000
43020
|
"export-completed",
|
|
43001
43021
|
"backup-completed",
|
|
43022
|
+
"alert-critical",
|
|
43023
|
+
"alert-error",
|
|
43024
|
+
"alert-critical-resolved",
|
|
43002
43025
|
"camera-online",
|
|
43003
43026
|
"camera-offline",
|
|
43004
43027
|
"camera-disabled",
|
|
@@ -52075,7 +52098,10 @@ method(StorageMigrationInputSchema, StorageMigrationPlanSchema, { auth: "admin"
|
|
|
52075
52098
|
}), method(object({ jobId: string().optional() }), StorageMigrationJobSchema.nullable(), { auth: "admin" }), method(object({ jobId: string() }), object({ cancelled: boolean() }), {
|
|
52076
52099
|
kind: "mutation",
|
|
52077
52100
|
auth: "admin"
|
|
52078
|
-
}), method(object({}), array(StorageMigrationMoverSchema).readonly(), { auth: "admin" }), method(object({
|
|
52101
|
+
}), method(object({}), array(StorageMigrationMoverSchema).readonly(), { auth: "admin" }), method(object({ locationIds: array(string()).readonly() }), object({
|
|
52102
|
+
clear: boolean(),
|
|
52103
|
+
repointLocationId: string().optional()
|
|
52104
|
+
}), { auth: "admin" }), method(object({}), array(StorageMigrationResidueSchema).readonly(), { auth: "admin" }), method(StorageMigrationDrainInputSchema, object({ jobId: string() }), {
|
|
52079
52105
|
kind: "mutation",
|
|
52080
52106
|
auth: "admin"
|
|
52081
52107
|
}), method(StorageCleanupInputSchema, object({ jobId: string() }), {
|
|
@@ -56339,6 +56365,11 @@ onStatusChanged: { data: object({
|
|
|
56339
56365
|
*
|
|
56340
56366
|
* `kind: 'poll'` — cloud REST APIs typically have no push channel; the
|
|
56341
56367
|
* provider refreshes the slice on an interval and eagerly after commands.
|
|
56368
|
+
*
|
|
56369
|
+
* UNKNOWN IS NOT OFF. Every field the appliance reports separately is
|
|
56370
|
+
* nullable: `null` means "not known right now" (the appliance has not said,
|
|
56371
|
+
* the link is down, or the description does not carry it) and is never
|
|
56372
|
+
* rendered or exported as `false` / `0`. `availability` says why.
|
|
56342
56373
|
*/
|
|
56343
56374
|
var DishwasherStateSchema = _enum([
|
|
56344
56375
|
"idle",
|
|
@@ -56348,35 +56379,155 @@ var DishwasherStateSchema = _enum([
|
|
|
56348
56379
|
"error",
|
|
56349
56380
|
"unavailable"
|
|
56350
56381
|
]);
|
|
56382
|
+
/**
|
|
56383
|
+
* The appliance's own operation state, uncollapsed. `state` above is the coarse
|
|
56384
|
+
* view for compact surfaces; this is what the appliance said.
|
|
56385
|
+
*/
|
|
56386
|
+
var DishwasherOperationStateSchema = _enum([
|
|
56387
|
+
"Inactive",
|
|
56388
|
+
"Ready",
|
|
56389
|
+
"DelayedStart",
|
|
56390
|
+
"Run",
|
|
56391
|
+
"Pause",
|
|
56392
|
+
"ActionRequired",
|
|
56393
|
+
"Finished",
|
|
56394
|
+
"Error",
|
|
56395
|
+
"Aborting"
|
|
56396
|
+
]);
|
|
56397
|
+
/**
|
|
56398
|
+
* Why fields may be `null`:
|
|
56399
|
+
* - `available` — the link is up and the description is loaded;
|
|
56400
|
+
* - `offline` — the local link is down (values are unknown, not last-known);
|
|
56401
|
+
* - `description-missing` — the link is up but the appliance's description could not
|
|
56402
|
+
* be loaded, so its values cannot be decoded.
|
|
56403
|
+
*/
|
|
56404
|
+
var DishwasherAvailabilitySchema = _enum([
|
|
56405
|
+
"available",
|
|
56406
|
+
"offline",
|
|
56407
|
+
"description-missing"
|
|
56408
|
+
]);
|
|
56351
56409
|
var DishwasherConsumableLevelSchema = _enum([
|
|
56352
56410
|
"ok",
|
|
56353
56411
|
"low",
|
|
56354
56412
|
"empty"
|
|
56355
56413
|
]);
|
|
56356
56414
|
var DishwasherStatusSchema = object({
|
|
56415
|
+
availability: DishwasherAvailabilitySchema,
|
|
56416
|
+
/** Coarse state for compact surfaces; `unavailable` whenever the appliance state is not known. */
|
|
56357
56417
|
state: DishwasherStateSchema,
|
|
56358
|
-
/**
|
|
56418
|
+
/** The appliance's operation state as reported; null when not known. */
|
|
56419
|
+
operationState: DishwasherOperationStateSchema.nullable(),
|
|
56420
|
+
/** Feature key of the ACTIVE (running) program, or null when none runs / not known. */
|
|
56359
56421
|
program: string().nullable(),
|
|
56360
|
-
/**
|
|
56422
|
+
/** Feature key of the SELECTED program (what Start would run), or null when none / not known. */
|
|
56423
|
+
selectedProgram: string().nullable(),
|
|
56424
|
+
/** Feature keys of the programs the appliance currently offers — drives the UI selector. */
|
|
56361
56425
|
availablePrograms: array(string()),
|
|
56362
|
-
/**
|
|
56363
|
-
|
|
56426
|
+
/** Seconds remaining on the active cycle, or null when not running / not known. */
|
|
56427
|
+
remainingSeconds: number().int().nonnegative().nullable(),
|
|
56428
|
+
/** Seconds the delayed start is set to (time until the cycle starts), or null. */
|
|
56429
|
+
delayedStartSeconds: number().int().nonnegative().nullable(),
|
|
56364
56430
|
/** Cycle completion 0..100, or null when not applicable. */
|
|
56365
56431
|
progressPercent: number().min(0).max(100).nullable(),
|
|
56366
|
-
/** True when the door is reported open. */
|
|
56367
|
-
doorOpen: boolean(),
|
|
56368
|
-
/** True when
|
|
56369
|
-
|
|
56370
|
-
/**
|
|
56371
|
-
|
|
56432
|
+
/** True when the door is reported open; null when the door state is not known. */
|
|
56433
|
+
doorOpen: boolean().nullable(),
|
|
56434
|
+
/** True when the door is latched (locked) during a cycle; null when not reported. */
|
|
56435
|
+
doorLocked: boolean().nullable(),
|
|
56436
|
+
/** True when remote start is allowed (door closed, power on, etc.); null when not known. */
|
|
56437
|
+
remoteStartAllowed: boolean().nullable(),
|
|
56438
|
+
/** True when the appliance accepts remote control now; null when not known. */
|
|
56439
|
+
remoteControlActive: boolean().nullable(),
|
|
56440
|
+
/** True while somebody operates the appliance at its panel; null when not reported. */
|
|
56441
|
+
localControlActive: boolean().nullable(),
|
|
56442
|
+
/** Main power / switched-on state; null when not known. */
|
|
56443
|
+
powerOn: boolean().nullable(),
|
|
56444
|
+
/** The raw power state (`On`, `Off`, `Standby`, …); null when not known. */
|
|
56445
|
+
powerState: string().nullable(),
|
|
56372
56446
|
saltLevel: DishwasherConsumableLevelSchema.nullable(),
|
|
56373
56447
|
rinseAidLevel: DishwasherConsumableLevelSchema.nullable(),
|
|
56374
|
-
|
|
56375
|
-
|
|
56448
|
+
/** Option states: null when the appliance does not expose the option or has not said. */
|
|
56449
|
+
halfLoad: boolean().nullable(),
|
|
56450
|
+
hygienePlus: boolean().nullable(),
|
|
56451
|
+
/** Extra dry option when the appliance exposes it. */
|
|
56452
|
+
extraDry: boolean().nullable(),
|
|
56453
|
+
/** Intensive zone (lower basket) when the appliance exposes it. */
|
|
56454
|
+
intensiveZone: boolean().nullable(),
|
|
56455
|
+
/** VarioSpeed / VarioSpeed+ when the appliance exposes it. */
|
|
56456
|
+
varioSpeedPlus: boolean().nullable(),
|
|
56457
|
+
/** Child lock (controls disabled on the appliance); null when not known. */
|
|
56458
|
+
childLock: boolean().nullable(),
|
|
56459
|
+
/** Feature keys of the events currently raised (salt low, rinse aid low, program finished, …). */
|
|
56460
|
+
activeEvents: array(string()),
|
|
56461
|
+
/** Numeric error code when the appliance reports one; null otherwise. */
|
|
56376
56462
|
errorCode: number().nullable(),
|
|
56463
|
+
/** Name of the raised alert-level event while the appliance is in error; null otherwise. */
|
|
56377
56464
|
errorLabel: string().nullable(),
|
|
56465
|
+
/** Ms epoch of the last value received from the appliance; 0 = never. */
|
|
56378
56466
|
lastFetchedAt: number()
|
|
56379
56467
|
});
|
|
56468
|
+
var DeviceIdSchema = number().int().nonnegative();
|
|
56469
|
+
/** A value a program option or setting can take. */
|
|
56470
|
+
var DishwasherValueSchema = union([
|
|
56471
|
+
boolean(),
|
|
56472
|
+
string(),
|
|
56473
|
+
number()
|
|
56474
|
+
]);
|
|
56475
|
+
var DishwasherAccessSchema = _enum([
|
|
56476
|
+
"none",
|
|
56477
|
+
"read",
|
|
56478
|
+
"readWrite",
|
|
56479
|
+
"writeOnly",
|
|
56480
|
+
"readStatic"
|
|
56481
|
+
]);
|
|
56482
|
+
/**
|
|
56483
|
+
* One option or setting the appliance declares, with the constraints its description
|
|
56484
|
+
* gives. A `readWrite` descriptor that is `available` is what `setOption` accepts.
|
|
56485
|
+
*/
|
|
56486
|
+
var DishwasherOptionDescriptorSchema = object({
|
|
56487
|
+
/** Feature key (`Dishcare.Dishwasher.Option.ExtraDry`). */
|
|
56488
|
+
key: string(),
|
|
56489
|
+
/** Last segment of the key, for display. */
|
|
56490
|
+
name: string(),
|
|
56491
|
+
type: _enum([
|
|
56492
|
+
"boolean",
|
|
56493
|
+
"number",
|
|
56494
|
+
"enum",
|
|
56495
|
+
"string"
|
|
56496
|
+
]),
|
|
56497
|
+
access: DishwasherAccessSchema,
|
|
56498
|
+
/** The appliance reports this entity as currently available. */
|
|
56499
|
+
available: boolean(),
|
|
56500
|
+
/** Unit the description declares for a number; null when it declares none. */
|
|
56501
|
+
unit: string().nullable(),
|
|
56502
|
+
min: number().nullable(),
|
|
56503
|
+
max: number().nullable(),
|
|
56504
|
+
step: number().nullable(),
|
|
56505
|
+
/** Allowed members of an enum; null for other types. */
|
|
56506
|
+
enumValues: array(string()).nullable(),
|
|
56507
|
+
defaultValue: DishwasherValueSchema.nullable()
|
|
56508
|
+
});
|
|
56509
|
+
var DishwasherProgramSchema = object({
|
|
56510
|
+
/** Feature key (`Dishcare.Dishwasher.Program.Eco50`) — what `setProgram` / `start` take. */
|
|
56511
|
+
key: string(),
|
|
56512
|
+
name: string(),
|
|
56513
|
+
/** The appliance currently offers this program. */
|
|
56514
|
+
available: boolean(),
|
|
56515
|
+
/** The options this program lists, with the program-level access / availability / default. */
|
|
56516
|
+
options: array(DishwasherOptionDescriptorSchema)
|
|
56517
|
+
});
|
|
56518
|
+
var DishwasherOptionsSchema = object({
|
|
56519
|
+
availability: DishwasherAvailabilitySchema,
|
|
56520
|
+
/** What the appliance can be told to do, from the commands its description declares. */
|
|
56521
|
+
supportsStart: boolean(),
|
|
56522
|
+
supportsPause: boolean(),
|
|
56523
|
+
supportsResume: boolean(),
|
|
56524
|
+
supportsStop: boolean(),
|
|
56525
|
+
supportsPower: boolean(),
|
|
56526
|
+
/** Every program the description lists, with its options. */
|
|
56527
|
+
programs: array(DishwasherProgramSchema),
|
|
56528
|
+
/** Every option and setting entity the description lists (programs reference these by key). */
|
|
56529
|
+
options: array(DishwasherOptionDescriptorSchema)
|
|
56530
|
+
});
|
|
56380
56531
|
var dishwasherCapability = {
|
|
56381
56532
|
name: "dishwasher",
|
|
56382
56533
|
scope: "device",
|
|
@@ -56384,58 +56535,102 @@ var dishwasherCapability = {
|
|
|
56384
56535
|
mode: "singleton",
|
|
56385
56536
|
deviceTypes: [DeviceType.Dishwasher],
|
|
56386
56537
|
methods: {
|
|
56387
|
-
|
|
56538
|
+
/**
|
|
56539
|
+
* Start a program. Without `program` the selected one starts. `options` are
|
|
56540
|
+
* option feature keys; each is checked against the program's constraints.
|
|
56541
|
+
*/
|
|
56542
|
+
start: method(object({
|
|
56543
|
+
deviceId: DeviceIdSchema,
|
|
56544
|
+
program: string().min(1).optional(),
|
|
56545
|
+
options: record(string(), DishwasherValueSchema).optional()
|
|
56546
|
+
}), _void(), {
|
|
56388
56547
|
kind: "mutation",
|
|
56389
56548
|
auth: "protected"
|
|
56390
56549
|
}),
|
|
56391
|
-
pause: method(object({ deviceId:
|
|
56550
|
+
pause: method(object({ deviceId: DeviceIdSchema }), _void(), {
|
|
56392
56551
|
kind: "mutation",
|
|
56393
56552
|
auth: "protected"
|
|
56394
56553
|
}),
|
|
56395
|
-
|
|
56554
|
+
resume: method(object({ deviceId: DeviceIdSchema }), _void(), {
|
|
56396
56555
|
kind: "mutation",
|
|
56397
56556
|
auth: "protected"
|
|
56398
56557
|
}),
|
|
56558
|
+
stop: method(object({ deviceId: DeviceIdSchema }), _void(), {
|
|
56559
|
+
kind: "mutation",
|
|
56560
|
+
auth: "protected"
|
|
56561
|
+
}),
|
|
56562
|
+
/** Select (not start) a program; refused when the appliance does not offer it. */
|
|
56399
56563
|
setProgram: method(object({
|
|
56400
|
-
deviceId:
|
|
56564
|
+
deviceId: DeviceIdSchema,
|
|
56401
56565
|
program: string().min(1)
|
|
56402
56566
|
}), _void(), {
|
|
56403
56567
|
kind: "mutation",
|
|
56404
56568
|
auth: "protected"
|
|
56405
56569
|
}),
|
|
56406
56570
|
setPower: method(object({
|
|
56407
|
-
deviceId:
|
|
56571
|
+
deviceId: DeviceIdSchema,
|
|
56408
56572
|
on: boolean()
|
|
56409
56573
|
}), _void(), {
|
|
56410
56574
|
kind: "mutation",
|
|
56411
56575
|
auth: "protected"
|
|
56412
56576
|
}),
|
|
56413
56577
|
setHalfLoad: method(object({
|
|
56414
|
-
deviceId:
|
|
56578
|
+
deviceId: DeviceIdSchema,
|
|
56415
56579
|
on: boolean()
|
|
56416
56580
|
}), _void(), {
|
|
56417
56581
|
kind: "mutation",
|
|
56418
56582
|
auth: "protected"
|
|
56419
56583
|
}),
|
|
56420
56584
|
setHygienePlus: method(object({
|
|
56421
|
-
deviceId:
|
|
56585
|
+
deviceId: DeviceIdSchema,
|
|
56422
56586
|
on: boolean()
|
|
56423
56587
|
}), _void(), {
|
|
56424
56588
|
kind: "mutation",
|
|
56425
56589
|
auth: "protected"
|
|
56426
56590
|
}),
|
|
56591
|
+
setExtraDry: method(object({
|
|
56592
|
+
deviceId: DeviceIdSchema,
|
|
56593
|
+
on: boolean()
|
|
56594
|
+
}), _void(), {
|
|
56595
|
+
kind: "mutation",
|
|
56596
|
+
auth: "protected"
|
|
56597
|
+
}),
|
|
56598
|
+
setIntensiveZone: method(object({
|
|
56599
|
+
deviceId: DeviceIdSchema,
|
|
56600
|
+
on: boolean()
|
|
56601
|
+
}), _void(), {
|
|
56602
|
+
kind: "mutation",
|
|
56603
|
+
auth: "protected"
|
|
56604
|
+
}),
|
|
56605
|
+
setVarioSpeedPlus: method(object({
|
|
56606
|
+
deviceId: DeviceIdSchema,
|
|
56607
|
+
on: boolean()
|
|
56608
|
+
}), _void(), {
|
|
56609
|
+
kind: "mutation",
|
|
56610
|
+
auth: "protected"
|
|
56611
|
+
}),
|
|
56612
|
+
setChildLock: method(object({
|
|
56613
|
+
deviceId: DeviceIdSchema,
|
|
56614
|
+
on: boolean()
|
|
56615
|
+
}), _void(), {
|
|
56616
|
+
kind: "mutation",
|
|
56617
|
+
auth: "protected"
|
|
56618
|
+
}),
|
|
56619
|
+
/**
|
|
56620
|
+
* Write any option or setting by feature key. Refused when the description does
|
|
56621
|
+
* not list it, it is not writable or not available now, or the value is outside
|
|
56622
|
+
* its declared range / members.
|
|
56623
|
+
*/
|
|
56427
56624
|
setOption: method(object({
|
|
56428
|
-
deviceId:
|
|
56625
|
+
deviceId: DeviceIdSchema,
|
|
56429
56626
|
key: string().min(1),
|
|
56430
|
-
value:
|
|
56431
|
-
boolean(),
|
|
56432
|
-
string(),
|
|
56433
|
-
number()
|
|
56434
|
-
])
|
|
56627
|
+
value: DishwasherValueSchema
|
|
56435
56628
|
}), _void(), {
|
|
56436
56629
|
kind: "mutation",
|
|
56437
56630
|
auth: "protected"
|
|
56438
|
-
})
|
|
56631
|
+
}),
|
|
56632
|
+
/** What this appliance can do, from its own description — the UI is derived from it. */
|
|
56633
|
+
getOptions: method(object({ deviceId: DeviceIdSchema }), DishwasherOptionsSchema, { auth: "protected" })
|
|
56439
56634
|
},
|
|
56440
56635
|
status: {
|
|
56441
56636
|
schema: DishwasherStatusSchema,
|
|
@@ -70384,6 +70579,12 @@ Object.freeze({
|
|
|
70384
70579
|
addonId: null,
|
|
70385
70580
|
access: "view"
|
|
70386
70581
|
},
|
|
70582
|
+
"dishwasher.getOptions": {
|
|
70583
|
+
capName: "dishwasher",
|
|
70584
|
+
capScope: "device",
|
|
70585
|
+
addonId: null,
|
|
70586
|
+
access: "view"
|
|
70587
|
+
},
|
|
70387
70588
|
"dishwasher.getStatus": {
|
|
70388
70589
|
capName: "dishwasher",
|
|
70389
70590
|
capScope: "device",
|
|
@@ -70396,6 +70597,24 @@ Object.freeze({
|
|
|
70396
70597
|
addonId: null,
|
|
70397
70598
|
access: "create"
|
|
70398
70599
|
},
|
|
70600
|
+
"dishwasher.resume": {
|
|
70601
|
+
capName: "dishwasher",
|
|
70602
|
+
capScope: "device",
|
|
70603
|
+
addonId: null,
|
|
70604
|
+
access: "create"
|
|
70605
|
+
},
|
|
70606
|
+
"dishwasher.setChildLock": {
|
|
70607
|
+
capName: "dishwasher",
|
|
70608
|
+
capScope: "device",
|
|
70609
|
+
addonId: null,
|
|
70610
|
+
access: "create"
|
|
70611
|
+
},
|
|
70612
|
+
"dishwasher.setExtraDry": {
|
|
70613
|
+
capName: "dishwasher",
|
|
70614
|
+
capScope: "device",
|
|
70615
|
+
addonId: null,
|
|
70616
|
+
access: "create"
|
|
70617
|
+
},
|
|
70399
70618
|
"dishwasher.setHalfLoad": {
|
|
70400
70619
|
capName: "dishwasher",
|
|
70401
70620
|
capScope: "device",
|
|
@@ -70408,6 +70627,12 @@ Object.freeze({
|
|
|
70408
70627
|
addonId: null,
|
|
70409
70628
|
access: "create"
|
|
70410
70629
|
},
|
|
70630
|
+
"dishwasher.setIntensiveZone": {
|
|
70631
|
+
capName: "dishwasher",
|
|
70632
|
+
capScope: "device",
|
|
70633
|
+
addonId: null,
|
|
70634
|
+
access: "create"
|
|
70635
|
+
},
|
|
70411
70636
|
"dishwasher.setOption": {
|
|
70412
70637
|
capName: "dishwasher",
|
|
70413
70638
|
capScope: "device",
|
|
@@ -70426,6 +70651,12 @@ Object.freeze({
|
|
|
70426
70651
|
addonId: null,
|
|
70427
70652
|
access: "create"
|
|
70428
70653
|
},
|
|
70654
|
+
"dishwasher.setVarioSpeedPlus": {
|
|
70655
|
+
capName: "dishwasher",
|
|
70656
|
+
capScope: "device",
|
|
70657
|
+
addonId: null,
|
|
70658
|
+
access: "create"
|
|
70659
|
+
},
|
|
70429
70660
|
"dishwasher.start": {
|
|
70430
70661
|
capName: "dishwasher",
|
|
70431
70662
|
capScope: "device",
|
|
@@ -74872,6 +75103,12 @@ Object.freeze({
|
|
|
74872
75103
|
addonId: null,
|
|
74873
75104
|
access: "view"
|
|
74874
75105
|
},
|
|
75106
|
+
"storageMigration.moverClearance": {
|
|
75107
|
+
capName: "storage-migration",
|
|
75108
|
+
capScope: "system",
|
|
75109
|
+
addonId: null,
|
|
75110
|
+
access: "view"
|
|
75111
|
+
},
|
|
74875
75112
|
"storageMigration.movers": {
|
|
74876
75113
|
capName: "storage-migration",
|
|
74877
75114
|
capScope: "system",
|
|
@@ -77065,6 +77302,11 @@ Object.freeze({
|
|
|
77065
77302
|
form: "single",
|
|
77066
77303
|
optional: false
|
|
77067
77304
|
}],
|
|
77305
|
+
"dishwasher.getOptions": [{
|
|
77306
|
+
name: "deviceId",
|
|
77307
|
+
form: "single",
|
|
77308
|
+
optional: false
|
|
77309
|
+
}],
|
|
77068
77310
|
"dishwasher.getStatus": [{
|
|
77069
77311
|
name: "deviceId",
|
|
77070
77312
|
form: "single",
|
|
@@ -77075,6 +77317,21 @@ Object.freeze({
|
|
|
77075
77317
|
form: "single",
|
|
77076
77318
|
optional: false
|
|
77077
77319
|
}],
|
|
77320
|
+
"dishwasher.resume": [{
|
|
77321
|
+
name: "deviceId",
|
|
77322
|
+
form: "single",
|
|
77323
|
+
optional: false
|
|
77324
|
+
}],
|
|
77325
|
+
"dishwasher.setChildLock": [{
|
|
77326
|
+
name: "deviceId",
|
|
77327
|
+
form: "single",
|
|
77328
|
+
optional: false
|
|
77329
|
+
}],
|
|
77330
|
+
"dishwasher.setExtraDry": [{
|
|
77331
|
+
name: "deviceId",
|
|
77332
|
+
form: "single",
|
|
77333
|
+
optional: false
|
|
77334
|
+
}],
|
|
77078
77335
|
"dishwasher.setHalfLoad": [{
|
|
77079
77336
|
name: "deviceId",
|
|
77080
77337
|
form: "single",
|
|
@@ -77085,6 +77342,11 @@ Object.freeze({
|
|
|
77085
77342
|
form: "single",
|
|
77086
77343
|
optional: false
|
|
77087
77344
|
}],
|
|
77345
|
+
"dishwasher.setIntensiveZone": [{
|
|
77346
|
+
name: "deviceId",
|
|
77347
|
+
form: "single",
|
|
77348
|
+
optional: false
|
|
77349
|
+
}],
|
|
77088
77350
|
"dishwasher.setOption": [{
|
|
77089
77351
|
name: "deviceId",
|
|
77090
77352
|
form: "single",
|
|
@@ -77100,6 +77362,11 @@ Object.freeze({
|
|
|
77100
77362
|
form: "single",
|
|
77101
77363
|
optional: false
|
|
77102
77364
|
}],
|
|
77365
|
+
"dishwasher.setVarioSpeedPlus": [{
|
|
77366
|
+
name: "deviceId",
|
|
77367
|
+
form: "single",
|
|
77368
|
+
optional: false
|
|
77369
|
+
}],
|
|
77103
77370
|
"dishwasher.start": [{
|
|
77104
77371
|
name: "deviceId",
|
|
77105
77372
|
form: "single",
|
|
@@ -79141,6 +79408,9 @@ new Map(Object.entries({
|
|
|
79141
79408
|
"wrapper-update-available": "system",
|
|
79142
79409
|
"backup-completed": "system",
|
|
79143
79410
|
"export-completed": "system",
|
|
79411
|
+
"alert-critical": "system",
|
|
79412
|
+
"alert-error": "system",
|
|
79413
|
+
"alert-critical-resolved": "system",
|
|
79144
79414
|
"storage-location-low": "system",
|
|
79145
79415
|
"storage-location-critical": "system",
|
|
79146
79416
|
"storage-location-ok": "system",
|
|
@@ -79265,6 +79535,16 @@ var NC_SYSTEM_EVENT_KIND_GROUP_SPECS = [
|
|
|
79265
79535
|
"storage-location-ok"
|
|
79266
79536
|
]
|
|
79267
79537
|
},
|
|
79538
|
+
{
|
|
79539
|
+
id: "alerts",
|
|
79540
|
+
family: "system",
|
|
79541
|
+
label: "Alerts",
|
|
79542
|
+
kinds: [
|
|
79543
|
+
"alert-critical",
|
|
79544
|
+
"alert-error",
|
|
79545
|
+
"alert-critical-resolved"
|
|
79546
|
+
]
|
|
79547
|
+
},
|
|
79268
79548
|
{
|
|
79269
79549
|
id: "alarm",
|
|
79270
79550
|
family: "alarm",
|
|
@@ -79309,6 +79589,21 @@ var NC_SENSOR_RAISED_FIELD_BY_KIND = Object.freeze(Object.fromEntries(Object.ent
|
|
|
79309
79589
|
return [[descriptor.kind, field]];
|
|
79310
79590
|
})));
|
|
79311
79591
|
Object.freeze(Object.keys(NC_SENSOR_RAISED_FIELD_BY_KIND));
|
|
79592
|
+
object({
|
|
79593
|
+
phase: _enum(["raised", "resolved"]),
|
|
79594
|
+
episodeId: string().min(1),
|
|
79595
|
+
alertId: string().min(1),
|
|
79596
|
+
severity: AlertSeveritySchema,
|
|
79597
|
+
category: string(),
|
|
79598
|
+
title: string(),
|
|
79599
|
+
message: string(),
|
|
79600
|
+
sourceType: string().optional(),
|
|
79601
|
+
sourceId: string().optional(),
|
|
79602
|
+
nodeId: string().optional(),
|
|
79603
|
+
/** The alert's own action link (where the operator acts on it), when it has one. */
|
|
79604
|
+
actionUrl: string().optional(),
|
|
79605
|
+
at: number()
|
|
79606
|
+
});
|
|
79312
79607
|
var RULE_BODY_ONLY = ["body"];
|
|
79313
79608
|
var RULE_TEXT = ["title", "body"];
|
|
79314
79609
|
var BATTERY = ["device-battery-low", "device-battery-normal"];
|
|
@@ -79318,6 +79613,11 @@ var TANK = [
|
|
|
79318
79613
|
"device-tank-full",
|
|
79319
79614
|
"device-tank-normal"
|
|
79320
79615
|
];
|
|
79616
|
+
var ALERT_EPISODE = [
|
|
79617
|
+
"alert-critical",
|
|
79618
|
+
"alert-error",
|
|
79619
|
+
"alert-critical-resolved"
|
|
79620
|
+
];
|
|
79321
79621
|
var UPDATES = [
|
|
79322
79622
|
"addon-update-available",
|
|
79323
79623
|
"server-update-available",
|
|
@@ -79510,14 +79810,14 @@ var STATE_SUMMARY_VARS = [
|
|
|
79510
79810
|
([...RULE_TEXT], [...CONSUMABLE]),
|
|
79511
79811
|
([...RULE_TEXT], [...TANK]),
|
|
79512
79812
|
[...RULE_TEXT],
|
|
79513
|
-
([...RULE_TEXT], [...UPDATES]),
|
|
79514
|
-
([...RULE_TEXT], [...UPDATES]),
|
|
79515
|
-
[...RULE_TEXT],
|
|
79813
|
+
([...RULE_TEXT], [...UPDATES, ...ALERT_EPISODE]),
|
|
79814
|
+
([...RULE_TEXT], [...UPDATES, ...ALERT_EPISODE]),
|
|
79516
79815
|
[...RULE_TEXT],
|
|
79517
79816
|
[...RULE_TEXT],
|
|
79518
79817
|
[...RULE_TEXT],
|
|
79519
79818
|
[...RULE_TEXT],
|
|
79520
79819
|
[...RULE_TEXT],
|
|
79820
|
+
([...RULE_TEXT], [...ALERT_EPISODE]),
|
|
79521
79821
|
[...RULE_TEXT],
|
|
79522
79822
|
[...RULE_TEXT],
|
|
79523
79823
|
[...RULE_TEXT],
|
|
@@ -79535,7 +79835,11 @@ var STATE_SUMMARY_VARS = [
|
|
|
79535
79835
|
[...RULE_TEXT],
|
|
79536
79836
|
[...RULE_TEXT],
|
|
79537
79837
|
[...RULE_TEXT],
|
|
79538
|
-
[...RULE_TEXT],
|
|
79838
|
+
([...RULE_TEXT], [...ALERT_EPISODE]),
|
|
79839
|
+
([...RULE_TEXT], [...ALERT_EPISODE]),
|
|
79840
|
+
([...RULE_TEXT], [...ALERT_EPISODE]),
|
|
79841
|
+
([...RULE_TEXT], [...ALERT_EPISODE]),
|
|
79842
|
+
([...RULE_TEXT], [...ALERT_EPISODE]),
|
|
79539
79843
|
[...RULE_TEXT],
|
|
79540
79844
|
[...RULE_TEXT],
|
|
79541
79845
|
[...RULE_TEXT],
|
package/dist/addon.mjs
CHANGED
|
@@ -1100,7 +1100,7 @@ var Nodepetkit = class {
|
|
|
1100
1100
|
}
|
|
1101
1101
|
};
|
|
1102
1102
|
//#endregion
|
|
1103
|
-
//#region ../types/dist/event-category-
|
|
1103
|
+
//#region ../types/dist/event-category-DOl51-Ij.mjs
|
|
1104
1104
|
var EventCategory = /* @__PURE__ */ function(EventCategory) {
|
|
1105
1105
|
EventCategory["SystemBoot"] = "system.boot";
|
|
1106
1106
|
EventCategory["SystemAddonsReady"] = "system.addons-ready";
|
|
@@ -1179,9 +1179,18 @@ var EventCategory = /* @__PURE__ */ function(EventCategory) {
|
|
|
1179
1179
|
/**
|
|
1180
1180
|
* The node's one-shot runner boot check (D877): planned runners against the
|
|
1181
1181
|
* process service, `degraded` when any is failed, refused or missing. The
|
|
1182
|
-
* alert centre turns it into one
|
|
1182
|
+
* alert centre turns it into one critical alert.
|
|
1183
1183
|
*/
|
|
1184
1184
|
EventCategory["SystemRunnerCheck"] = "system.runner-check";
|
|
1185
|
+
/**
|
|
1186
|
+
* An alert EPISODE opened or closed, emitted by the alert centre for alerts
|
|
1187
|
+
* of severity `critical` or `error` (`AlertEpisodePayload`). The alert
|
|
1188
|
+
* centre sends no notification of its own: Notification Center turns this
|
|
1189
|
+
* into the `alert-critical` / `alert-error` / `alert-critical-resolved`
|
|
1190
|
+
* system-event kinds, and reconciles from the alerts store because a bus
|
|
1191
|
+
* event may be dropped (D8, D11).
|
|
1192
|
+
*/
|
|
1193
|
+
EventCategory["AlertEpisode"] = "alert.episode";
|
|
1185
1194
|
EventCategory["AddonError"] = "addon.error";
|
|
1186
1195
|
EventCategory["AddonPageReady"] = "addon.page-ready";
|
|
1187
1196
|
EventCategory["AddonWidgetReady"] = "addon.widget-ready";
|
|
@@ -6506,7 +6515,7 @@ var ZodIssueCode = {
|
|
|
6506
6515
|
var ZodFirstPartyTypeKind;
|
|
6507
6516
|
ZodFirstPartyTypeKind || (ZodFirstPartyTypeKind = {});
|
|
6508
6517
|
//#endregion
|
|
6509
|
-
//#region ../types/dist/sleep-
|
|
6518
|
+
//#region ../types/dist/sleep-BxjU_fJM.mjs
|
|
6510
6519
|
/**
|
|
6511
6520
|
* The audio chunk plane's byte format, and the ONE expansion from a coded
|
|
6512
6521
|
* window to float samples (D455).
|
|
@@ -14269,7 +14278,14 @@ var AlertSeveritySchema = _enum([
|
|
|
14269
14278
|
]);
|
|
14270
14279
|
var AlertActionSchema = object({
|
|
14271
14280
|
label: string(),
|
|
14272
|
-
href: string().optional()
|
|
14281
|
+
href: string().optional(),
|
|
14282
|
+
/**
|
|
14283
|
+
* How `href` is followed. Absent / `app`: an admin-ui route (client-side).
|
|
14284
|
+
* `server`: a route the HUB serves (an addon HTTP route such as an OAuth
|
|
14285
|
+
* start) — the browser must leave the SPA with a full navigation, because
|
|
14286
|
+
* the SPA has no such route and would bounce to the home page.
|
|
14287
|
+
*/
|
|
14288
|
+
navigation: _enum(["app", "server"]).optional()
|
|
14273
14289
|
});
|
|
14274
14290
|
var AlertStatusSchema = _enum([
|
|
14275
14291
|
"active",
|
|
@@ -18650,7 +18666,11 @@ var deviceDiscoveryCapability = {
|
|
|
18650
18666
|
};
|
|
18651
18667
|
/**
|
|
18652
18668
|
* `device-adoption` — generic discovery + adoption surface,
|
|
18653
|
-
* system-scoped
|
|
18669
|
+
* system-scoped collection (one provider per integration addon), routed
|
|
18670
|
+
* by explicit `{ addonId }` on direct `deviceAdoption.*` calls — the same
|
|
18671
|
+
* pin model as `connection-test`. The admin UI keeps using
|
|
18672
|
+
* `deviceManager.adoption*` (which already threads `addonId`). The de-HA-ified
|
|
18673
|
+
* successor to `ha-discovery`:
|
|
18654
18674
|
* keyed by `integrationId` (the addon resolves integrationId → broker
|
|
18655
18675
|
* internally) rather than a connection-specific `brokerId`, and it
|
|
18656
18676
|
* REUSES the shared `DiscoveredChildDevice` candidate type from
|
|
@@ -18815,7 +18835,7 @@ var ResyncResultSchema = object({
|
|
|
18815
18835
|
var deviceAdoptionCapability = {
|
|
18816
18836
|
name: "device-adoption",
|
|
18817
18837
|
scope: "system",
|
|
18818
|
-
mode: "
|
|
18838
|
+
mode: "collection",
|
|
18819
18839
|
status: {
|
|
18820
18840
|
schema: AdoptionStatusSchema,
|
|
18821
18841
|
kind: "poll"
|
|
@@ -42998,6 +43018,9 @@ var NcSystemEventKindSchema = _enum([
|
|
|
42998
43018
|
"server-updated",
|
|
42999
43019
|
"export-completed",
|
|
43000
43020
|
"backup-completed",
|
|
43021
|
+
"alert-critical",
|
|
43022
|
+
"alert-error",
|
|
43023
|
+
"alert-critical-resolved",
|
|
43001
43024
|
"camera-online",
|
|
43002
43025
|
"camera-offline",
|
|
43003
43026
|
"camera-disabled",
|
|
@@ -52074,7 +52097,10 @@ method(StorageMigrationInputSchema, StorageMigrationPlanSchema, { auth: "admin"
|
|
|
52074
52097
|
}), method(object({ jobId: string().optional() }), StorageMigrationJobSchema.nullable(), { auth: "admin" }), method(object({ jobId: string() }), object({ cancelled: boolean() }), {
|
|
52075
52098
|
kind: "mutation",
|
|
52076
52099
|
auth: "admin"
|
|
52077
|
-
}), method(object({}), array(StorageMigrationMoverSchema).readonly(), { auth: "admin" }), method(object({
|
|
52100
|
+
}), method(object({}), array(StorageMigrationMoverSchema).readonly(), { auth: "admin" }), method(object({ locationIds: array(string()).readonly() }), object({
|
|
52101
|
+
clear: boolean(),
|
|
52102
|
+
repointLocationId: string().optional()
|
|
52103
|
+
}), { auth: "admin" }), method(object({}), array(StorageMigrationResidueSchema).readonly(), { auth: "admin" }), method(StorageMigrationDrainInputSchema, object({ jobId: string() }), {
|
|
52078
52104
|
kind: "mutation",
|
|
52079
52105
|
auth: "admin"
|
|
52080
52106
|
}), method(StorageCleanupInputSchema, object({ jobId: string() }), {
|
|
@@ -56338,6 +56364,11 @@ onStatusChanged: { data: object({
|
|
|
56338
56364
|
*
|
|
56339
56365
|
* `kind: 'poll'` — cloud REST APIs typically have no push channel; the
|
|
56340
56366
|
* provider refreshes the slice on an interval and eagerly after commands.
|
|
56367
|
+
*
|
|
56368
|
+
* UNKNOWN IS NOT OFF. Every field the appliance reports separately is
|
|
56369
|
+
* nullable: `null` means "not known right now" (the appliance has not said,
|
|
56370
|
+
* the link is down, or the description does not carry it) and is never
|
|
56371
|
+
* rendered or exported as `false` / `0`. `availability` says why.
|
|
56341
56372
|
*/
|
|
56342
56373
|
var DishwasherStateSchema = _enum([
|
|
56343
56374
|
"idle",
|
|
@@ -56347,35 +56378,155 @@ var DishwasherStateSchema = _enum([
|
|
|
56347
56378
|
"error",
|
|
56348
56379
|
"unavailable"
|
|
56349
56380
|
]);
|
|
56381
|
+
/**
|
|
56382
|
+
* The appliance's own operation state, uncollapsed. `state` above is the coarse
|
|
56383
|
+
* view for compact surfaces; this is what the appliance said.
|
|
56384
|
+
*/
|
|
56385
|
+
var DishwasherOperationStateSchema = _enum([
|
|
56386
|
+
"Inactive",
|
|
56387
|
+
"Ready",
|
|
56388
|
+
"DelayedStart",
|
|
56389
|
+
"Run",
|
|
56390
|
+
"Pause",
|
|
56391
|
+
"ActionRequired",
|
|
56392
|
+
"Finished",
|
|
56393
|
+
"Error",
|
|
56394
|
+
"Aborting"
|
|
56395
|
+
]);
|
|
56396
|
+
/**
|
|
56397
|
+
* Why fields may be `null`:
|
|
56398
|
+
* - `available` — the link is up and the description is loaded;
|
|
56399
|
+
* - `offline` — the local link is down (values are unknown, not last-known);
|
|
56400
|
+
* - `description-missing` — the link is up but the appliance's description could not
|
|
56401
|
+
* be loaded, so its values cannot be decoded.
|
|
56402
|
+
*/
|
|
56403
|
+
var DishwasherAvailabilitySchema = _enum([
|
|
56404
|
+
"available",
|
|
56405
|
+
"offline",
|
|
56406
|
+
"description-missing"
|
|
56407
|
+
]);
|
|
56350
56408
|
var DishwasherConsumableLevelSchema = _enum([
|
|
56351
56409
|
"ok",
|
|
56352
56410
|
"low",
|
|
56353
56411
|
"empty"
|
|
56354
56412
|
]);
|
|
56355
56413
|
var DishwasherStatusSchema = object({
|
|
56414
|
+
availability: DishwasherAvailabilitySchema,
|
|
56415
|
+
/** Coarse state for compact surfaces; `unavailable` whenever the appliance state is not known. */
|
|
56356
56416
|
state: DishwasherStateSchema,
|
|
56357
|
-
/**
|
|
56417
|
+
/** The appliance's operation state as reported; null when not known. */
|
|
56418
|
+
operationState: DishwasherOperationStateSchema.nullable(),
|
|
56419
|
+
/** Feature key of the ACTIVE (running) program, or null when none runs / not known. */
|
|
56358
56420
|
program: string().nullable(),
|
|
56359
|
-
/**
|
|
56421
|
+
/** Feature key of the SELECTED program (what Start would run), or null when none / not known. */
|
|
56422
|
+
selectedProgram: string().nullable(),
|
|
56423
|
+
/** Feature keys of the programs the appliance currently offers — drives the UI selector. */
|
|
56360
56424
|
availablePrograms: array(string()),
|
|
56361
|
-
/**
|
|
56362
|
-
|
|
56425
|
+
/** Seconds remaining on the active cycle, or null when not running / not known. */
|
|
56426
|
+
remainingSeconds: number().int().nonnegative().nullable(),
|
|
56427
|
+
/** Seconds the delayed start is set to (time until the cycle starts), or null. */
|
|
56428
|
+
delayedStartSeconds: number().int().nonnegative().nullable(),
|
|
56363
56429
|
/** Cycle completion 0..100, or null when not applicable. */
|
|
56364
56430
|
progressPercent: number().min(0).max(100).nullable(),
|
|
56365
|
-
/** True when the door is reported open. */
|
|
56366
|
-
doorOpen: boolean(),
|
|
56367
|
-
/** True when
|
|
56368
|
-
|
|
56369
|
-
/**
|
|
56370
|
-
|
|
56431
|
+
/** True when the door is reported open; null when the door state is not known. */
|
|
56432
|
+
doorOpen: boolean().nullable(),
|
|
56433
|
+
/** True when the door is latched (locked) during a cycle; null when not reported. */
|
|
56434
|
+
doorLocked: boolean().nullable(),
|
|
56435
|
+
/** True when remote start is allowed (door closed, power on, etc.); null when not known. */
|
|
56436
|
+
remoteStartAllowed: boolean().nullable(),
|
|
56437
|
+
/** True when the appliance accepts remote control now; null when not known. */
|
|
56438
|
+
remoteControlActive: boolean().nullable(),
|
|
56439
|
+
/** True while somebody operates the appliance at its panel; null when not reported. */
|
|
56440
|
+
localControlActive: boolean().nullable(),
|
|
56441
|
+
/** Main power / switched-on state; null when not known. */
|
|
56442
|
+
powerOn: boolean().nullable(),
|
|
56443
|
+
/** The raw power state (`On`, `Off`, `Standby`, …); null when not known. */
|
|
56444
|
+
powerState: string().nullable(),
|
|
56371
56445
|
saltLevel: DishwasherConsumableLevelSchema.nullable(),
|
|
56372
56446
|
rinseAidLevel: DishwasherConsumableLevelSchema.nullable(),
|
|
56373
|
-
|
|
56374
|
-
|
|
56447
|
+
/** Option states: null when the appliance does not expose the option or has not said. */
|
|
56448
|
+
halfLoad: boolean().nullable(),
|
|
56449
|
+
hygienePlus: boolean().nullable(),
|
|
56450
|
+
/** Extra dry option when the appliance exposes it. */
|
|
56451
|
+
extraDry: boolean().nullable(),
|
|
56452
|
+
/** Intensive zone (lower basket) when the appliance exposes it. */
|
|
56453
|
+
intensiveZone: boolean().nullable(),
|
|
56454
|
+
/** VarioSpeed / VarioSpeed+ when the appliance exposes it. */
|
|
56455
|
+
varioSpeedPlus: boolean().nullable(),
|
|
56456
|
+
/** Child lock (controls disabled on the appliance); null when not known. */
|
|
56457
|
+
childLock: boolean().nullable(),
|
|
56458
|
+
/** Feature keys of the events currently raised (salt low, rinse aid low, program finished, …). */
|
|
56459
|
+
activeEvents: array(string()),
|
|
56460
|
+
/** Numeric error code when the appliance reports one; null otherwise. */
|
|
56375
56461
|
errorCode: number().nullable(),
|
|
56462
|
+
/** Name of the raised alert-level event while the appliance is in error; null otherwise. */
|
|
56376
56463
|
errorLabel: string().nullable(),
|
|
56464
|
+
/** Ms epoch of the last value received from the appliance; 0 = never. */
|
|
56377
56465
|
lastFetchedAt: number()
|
|
56378
56466
|
});
|
|
56467
|
+
var DeviceIdSchema = number().int().nonnegative();
|
|
56468
|
+
/** A value a program option or setting can take. */
|
|
56469
|
+
var DishwasherValueSchema = union([
|
|
56470
|
+
boolean(),
|
|
56471
|
+
string(),
|
|
56472
|
+
number()
|
|
56473
|
+
]);
|
|
56474
|
+
var DishwasherAccessSchema = _enum([
|
|
56475
|
+
"none",
|
|
56476
|
+
"read",
|
|
56477
|
+
"readWrite",
|
|
56478
|
+
"writeOnly",
|
|
56479
|
+
"readStatic"
|
|
56480
|
+
]);
|
|
56481
|
+
/**
|
|
56482
|
+
* One option or setting the appliance declares, with the constraints its description
|
|
56483
|
+
* gives. A `readWrite` descriptor that is `available` is what `setOption` accepts.
|
|
56484
|
+
*/
|
|
56485
|
+
var DishwasherOptionDescriptorSchema = object({
|
|
56486
|
+
/** Feature key (`Dishcare.Dishwasher.Option.ExtraDry`). */
|
|
56487
|
+
key: string(),
|
|
56488
|
+
/** Last segment of the key, for display. */
|
|
56489
|
+
name: string(),
|
|
56490
|
+
type: _enum([
|
|
56491
|
+
"boolean",
|
|
56492
|
+
"number",
|
|
56493
|
+
"enum",
|
|
56494
|
+
"string"
|
|
56495
|
+
]),
|
|
56496
|
+
access: DishwasherAccessSchema,
|
|
56497
|
+
/** The appliance reports this entity as currently available. */
|
|
56498
|
+
available: boolean(),
|
|
56499
|
+
/** Unit the description declares for a number; null when it declares none. */
|
|
56500
|
+
unit: string().nullable(),
|
|
56501
|
+
min: number().nullable(),
|
|
56502
|
+
max: number().nullable(),
|
|
56503
|
+
step: number().nullable(),
|
|
56504
|
+
/** Allowed members of an enum; null for other types. */
|
|
56505
|
+
enumValues: array(string()).nullable(),
|
|
56506
|
+
defaultValue: DishwasherValueSchema.nullable()
|
|
56507
|
+
});
|
|
56508
|
+
var DishwasherProgramSchema = object({
|
|
56509
|
+
/** Feature key (`Dishcare.Dishwasher.Program.Eco50`) — what `setProgram` / `start` take. */
|
|
56510
|
+
key: string(),
|
|
56511
|
+
name: string(),
|
|
56512
|
+
/** The appliance currently offers this program. */
|
|
56513
|
+
available: boolean(),
|
|
56514
|
+
/** The options this program lists, with the program-level access / availability / default. */
|
|
56515
|
+
options: array(DishwasherOptionDescriptorSchema)
|
|
56516
|
+
});
|
|
56517
|
+
var DishwasherOptionsSchema = object({
|
|
56518
|
+
availability: DishwasherAvailabilitySchema,
|
|
56519
|
+
/** What the appliance can be told to do, from the commands its description declares. */
|
|
56520
|
+
supportsStart: boolean(),
|
|
56521
|
+
supportsPause: boolean(),
|
|
56522
|
+
supportsResume: boolean(),
|
|
56523
|
+
supportsStop: boolean(),
|
|
56524
|
+
supportsPower: boolean(),
|
|
56525
|
+
/** Every program the description lists, with its options. */
|
|
56526
|
+
programs: array(DishwasherProgramSchema),
|
|
56527
|
+
/** Every option and setting entity the description lists (programs reference these by key). */
|
|
56528
|
+
options: array(DishwasherOptionDescriptorSchema)
|
|
56529
|
+
});
|
|
56379
56530
|
var dishwasherCapability = {
|
|
56380
56531
|
name: "dishwasher",
|
|
56381
56532
|
scope: "device",
|
|
@@ -56383,58 +56534,102 @@ var dishwasherCapability = {
|
|
|
56383
56534
|
mode: "singleton",
|
|
56384
56535
|
deviceTypes: [DeviceType.Dishwasher],
|
|
56385
56536
|
methods: {
|
|
56386
|
-
|
|
56537
|
+
/**
|
|
56538
|
+
* Start a program. Without `program` the selected one starts. `options` are
|
|
56539
|
+
* option feature keys; each is checked against the program's constraints.
|
|
56540
|
+
*/
|
|
56541
|
+
start: method(object({
|
|
56542
|
+
deviceId: DeviceIdSchema,
|
|
56543
|
+
program: string().min(1).optional(),
|
|
56544
|
+
options: record(string(), DishwasherValueSchema).optional()
|
|
56545
|
+
}), _void(), {
|
|
56387
56546
|
kind: "mutation",
|
|
56388
56547
|
auth: "protected"
|
|
56389
56548
|
}),
|
|
56390
|
-
pause: method(object({ deviceId:
|
|
56549
|
+
pause: method(object({ deviceId: DeviceIdSchema }), _void(), {
|
|
56391
56550
|
kind: "mutation",
|
|
56392
56551
|
auth: "protected"
|
|
56393
56552
|
}),
|
|
56394
|
-
|
|
56553
|
+
resume: method(object({ deviceId: DeviceIdSchema }), _void(), {
|
|
56395
56554
|
kind: "mutation",
|
|
56396
56555
|
auth: "protected"
|
|
56397
56556
|
}),
|
|
56557
|
+
stop: method(object({ deviceId: DeviceIdSchema }), _void(), {
|
|
56558
|
+
kind: "mutation",
|
|
56559
|
+
auth: "protected"
|
|
56560
|
+
}),
|
|
56561
|
+
/** Select (not start) a program; refused when the appliance does not offer it. */
|
|
56398
56562
|
setProgram: method(object({
|
|
56399
|
-
deviceId:
|
|
56563
|
+
deviceId: DeviceIdSchema,
|
|
56400
56564
|
program: string().min(1)
|
|
56401
56565
|
}), _void(), {
|
|
56402
56566
|
kind: "mutation",
|
|
56403
56567
|
auth: "protected"
|
|
56404
56568
|
}),
|
|
56405
56569
|
setPower: method(object({
|
|
56406
|
-
deviceId:
|
|
56570
|
+
deviceId: DeviceIdSchema,
|
|
56407
56571
|
on: boolean()
|
|
56408
56572
|
}), _void(), {
|
|
56409
56573
|
kind: "mutation",
|
|
56410
56574
|
auth: "protected"
|
|
56411
56575
|
}),
|
|
56412
56576
|
setHalfLoad: method(object({
|
|
56413
|
-
deviceId:
|
|
56577
|
+
deviceId: DeviceIdSchema,
|
|
56414
56578
|
on: boolean()
|
|
56415
56579
|
}), _void(), {
|
|
56416
56580
|
kind: "mutation",
|
|
56417
56581
|
auth: "protected"
|
|
56418
56582
|
}),
|
|
56419
56583
|
setHygienePlus: method(object({
|
|
56420
|
-
deviceId:
|
|
56584
|
+
deviceId: DeviceIdSchema,
|
|
56421
56585
|
on: boolean()
|
|
56422
56586
|
}), _void(), {
|
|
56423
56587
|
kind: "mutation",
|
|
56424
56588
|
auth: "protected"
|
|
56425
56589
|
}),
|
|
56590
|
+
setExtraDry: method(object({
|
|
56591
|
+
deviceId: DeviceIdSchema,
|
|
56592
|
+
on: boolean()
|
|
56593
|
+
}), _void(), {
|
|
56594
|
+
kind: "mutation",
|
|
56595
|
+
auth: "protected"
|
|
56596
|
+
}),
|
|
56597
|
+
setIntensiveZone: method(object({
|
|
56598
|
+
deviceId: DeviceIdSchema,
|
|
56599
|
+
on: boolean()
|
|
56600
|
+
}), _void(), {
|
|
56601
|
+
kind: "mutation",
|
|
56602
|
+
auth: "protected"
|
|
56603
|
+
}),
|
|
56604
|
+
setVarioSpeedPlus: method(object({
|
|
56605
|
+
deviceId: DeviceIdSchema,
|
|
56606
|
+
on: boolean()
|
|
56607
|
+
}), _void(), {
|
|
56608
|
+
kind: "mutation",
|
|
56609
|
+
auth: "protected"
|
|
56610
|
+
}),
|
|
56611
|
+
setChildLock: method(object({
|
|
56612
|
+
deviceId: DeviceIdSchema,
|
|
56613
|
+
on: boolean()
|
|
56614
|
+
}), _void(), {
|
|
56615
|
+
kind: "mutation",
|
|
56616
|
+
auth: "protected"
|
|
56617
|
+
}),
|
|
56618
|
+
/**
|
|
56619
|
+
* Write any option or setting by feature key. Refused when the description does
|
|
56620
|
+
* not list it, it is not writable or not available now, or the value is outside
|
|
56621
|
+
* its declared range / members.
|
|
56622
|
+
*/
|
|
56426
56623
|
setOption: method(object({
|
|
56427
|
-
deviceId:
|
|
56624
|
+
deviceId: DeviceIdSchema,
|
|
56428
56625
|
key: string().min(1),
|
|
56429
|
-
value:
|
|
56430
|
-
boolean(),
|
|
56431
|
-
string(),
|
|
56432
|
-
number()
|
|
56433
|
-
])
|
|
56626
|
+
value: DishwasherValueSchema
|
|
56434
56627
|
}), _void(), {
|
|
56435
56628
|
kind: "mutation",
|
|
56436
56629
|
auth: "protected"
|
|
56437
|
-
})
|
|
56630
|
+
}),
|
|
56631
|
+
/** What this appliance can do, from its own description — the UI is derived from it. */
|
|
56632
|
+
getOptions: method(object({ deviceId: DeviceIdSchema }), DishwasherOptionsSchema, { auth: "protected" })
|
|
56438
56633
|
},
|
|
56439
56634
|
status: {
|
|
56440
56635
|
schema: DishwasherStatusSchema,
|
|
@@ -70383,6 +70578,12 @@ Object.freeze({
|
|
|
70383
70578
|
addonId: null,
|
|
70384
70579
|
access: "view"
|
|
70385
70580
|
},
|
|
70581
|
+
"dishwasher.getOptions": {
|
|
70582
|
+
capName: "dishwasher",
|
|
70583
|
+
capScope: "device",
|
|
70584
|
+
addonId: null,
|
|
70585
|
+
access: "view"
|
|
70586
|
+
},
|
|
70386
70587
|
"dishwasher.getStatus": {
|
|
70387
70588
|
capName: "dishwasher",
|
|
70388
70589
|
capScope: "device",
|
|
@@ -70395,6 +70596,24 @@ Object.freeze({
|
|
|
70395
70596
|
addonId: null,
|
|
70396
70597
|
access: "create"
|
|
70397
70598
|
},
|
|
70599
|
+
"dishwasher.resume": {
|
|
70600
|
+
capName: "dishwasher",
|
|
70601
|
+
capScope: "device",
|
|
70602
|
+
addonId: null,
|
|
70603
|
+
access: "create"
|
|
70604
|
+
},
|
|
70605
|
+
"dishwasher.setChildLock": {
|
|
70606
|
+
capName: "dishwasher",
|
|
70607
|
+
capScope: "device",
|
|
70608
|
+
addonId: null,
|
|
70609
|
+
access: "create"
|
|
70610
|
+
},
|
|
70611
|
+
"dishwasher.setExtraDry": {
|
|
70612
|
+
capName: "dishwasher",
|
|
70613
|
+
capScope: "device",
|
|
70614
|
+
addonId: null,
|
|
70615
|
+
access: "create"
|
|
70616
|
+
},
|
|
70398
70617
|
"dishwasher.setHalfLoad": {
|
|
70399
70618
|
capName: "dishwasher",
|
|
70400
70619
|
capScope: "device",
|
|
@@ -70407,6 +70626,12 @@ Object.freeze({
|
|
|
70407
70626
|
addonId: null,
|
|
70408
70627
|
access: "create"
|
|
70409
70628
|
},
|
|
70629
|
+
"dishwasher.setIntensiveZone": {
|
|
70630
|
+
capName: "dishwasher",
|
|
70631
|
+
capScope: "device",
|
|
70632
|
+
addonId: null,
|
|
70633
|
+
access: "create"
|
|
70634
|
+
},
|
|
70410
70635
|
"dishwasher.setOption": {
|
|
70411
70636
|
capName: "dishwasher",
|
|
70412
70637
|
capScope: "device",
|
|
@@ -70425,6 +70650,12 @@ Object.freeze({
|
|
|
70425
70650
|
addonId: null,
|
|
70426
70651
|
access: "create"
|
|
70427
70652
|
},
|
|
70653
|
+
"dishwasher.setVarioSpeedPlus": {
|
|
70654
|
+
capName: "dishwasher",
|
|
70655
|
+
capScope: "device",
|
|
70656
|
+
addonId: null,
|
|
70657
|
+
access: "create"
|
|
70658
|
+
},
|
|
70428
70659
|
"dishwasher.start": {
|
|
70429
70660
|
capName: "dishwasher",
|
|
70430
70661
|
capScope: "device",
|
|
@@ -74871,6 +75102,12 @@ Object.freeze({
|
|
|
74871
75102
|
addonId: null,
|
|
74872
75103
|
access: "view"
|
|
74873
75104
|
},
|
|
75105
|
+
"storageMigration.moverClearance": {
|
|
75106
|
+
capName: "storage-migration",
|
|
75107
|
+
capScope: "system",
|
|
75108
|
+
addonId: null,
|
|
75109
|
+
access: "view"
|
|
75110
|
+
},
|
|
74874
75111
|
"storageMigration.movers": {
|
|
74875
75112
|
capName: "storage-migration",
|
|
74876
75113
|
capScope: "system",
|
|
@@ -77064,6 +77301,11 @@ Object.freeze({
|
|
|
77064
77301
|
form: "single",
|
|
77065
77302
|
optional: false
|
|
77066
77303
|
}],
|
|
77304
|
+
"dishwasher.getOptions": [{
|
|
77305
|
+
name: "deviceId",
|
|
77306
|
+
form: "single",
|
|
77307
|
+
optional: false
|
|
77308
|
+
}],
|
|
77067
77309
|
"dishwasher.getStatus": [{
|
|
77068
77310
|
name: "deviceId",
|
|
77069
77311
|
form: "single",
|
|
@@ -77074,6 +77316,21 @@ Object.freeze({
|
|
|
77074
77316
|
form: "single",
|
|
77075
77317
|
optional: false
|
|
77076
77318
|
}],
|
|
77319
|
+
"dishwasher.resume": [{
|
|
77320
|
+
name: "deviceId",
|
|
77321
|
+
form: "single",
|
|
77322
|
+
optional: false
|
|
77323
|
+
}],
|
|
77324
|
+
"dishwasher.setChildLock": [{
|
|
77325
|
+
name: "deviceId",
|
|
77326
|
+
form: "single",
|
|
77327
|
+
optional: false
|
|
77328
|
+
}],
|
|
77329
|
+
"dishwasher.setExtraDry": [{
|
|
77330
|
+
name: "deviceId",
|
|
77331
|
+
form: "single",
|
|
77332
|
+
optional: false
|
|
77333
|
+
}],
|
|
77077
77334
|
"dishwasher.setHalfLoad": [{
|
|
77078
77335
|
name: "deviceId",
|
|
77079
77336
|
form: "single",
|
|
@@ -77084,6 +77341,11 @@ Object.freeze({
|
|
|
77084
77341
|
form: "single",
|
|
77085
77342
|
optional: false
|
|
77086
77343
|
}],
|
|
77344
|
+
"dishwasher.setIntensiveZone": [{
|
|
77345
|
+
name: "deviceId",
|
|
77346
|
+
form: "single",
|
|
77347
|
+
optional: false
|
|
77348
|
+
}],
|
|
77087
77349
|
"dishwasher.setOption": [{
|
|
77088
77350
|
name: "deviceId",
|
|
77089
77351
|
form: "single",
|
|
@@ -77099,6 +77361,11 @@ Object.freeze({
|
|
|
77099
77361
|
form: "single",
|
|
77100
77362
|
optional: false
|
|
77101
77363
|
}],
|
|
77364
|
+
"dishwasher.setVarioSpeedPlus": [{
|
|
77365
|
+
name: "deviceId",
|
|
77366
|
+
form: "single",
|
|
77367
|
+
optional: false
|
|
77368
|
+
}],
|
|
77102
77369
|
"dishwasher.start": [{
|
|
77103
77370
|
name: "deviceId",
|
|
77104
77371
|
form: "single",
|
|
@@ -79140,6 +79407,9 @@ new Map(Object.entries({
|
|
|
79140
79407
|
"wrapper-update-available": "system",
|
|
79141
79408
|
"backup-completed": "system",
|
|
79142
79409
|
"export-completed": "system",
|
|
79410
|
+
"alert-critical": "system",
|
|
79411
|
+
"alert-error": "system",
|
|
79412
|
+
"alert-critical-resolved": "system",
|
|
79143
79413
|
"storage-location-low": "system",
|
|
79144
79414
|
"storage-location-critical": "system",
|
|
79145
79415
|
"storage-location-ok": "system",
|
|
@@ -79264,6 +79534,16 @@ var NC_SYSTEM_EVENT_KIND_GROUP_SPECS = [
|
|
|
79264
79534
|
"storage-location-ok"
|
|
79265
79535
|
]
|
|
79266
79536
|
},
|
|
79537
|
+
{
|
|
79538
|
+
id: "alerts",
|
|
79539
|
+
family: "system",
|
|
79540
|
+
label: "Alerts",
|
|
79541
|
+
kinds: [
|
|
79542
|
+
"alert-critical",
|
|
79543
|
+
"alert-error",
|
|
79544
|
+
"alert-critical-resolved"
|
|
79545
|
+
]
|
|
79546
|
+
},
|
|
79267
79547
|
{
|
|
79268
79548
|
id: "alarm",
|
|
79269
79549
|
family: "alarm",
|
|
@@ -79308,6 +79588,21 @@ var NC_SENSOR_RAISED_FIELD_BY_KIND = Object.freeze(Object.fromEntries(Object.ent
|
|
|
79308
79588
|
return [[descriptor.kind, field]];
|
|
79309
79589
|
})));
|
|
79310
79590
|
Object.freeze(Object.keys(NC_SENSOR_RAISED_FIELD_BY_KIND));
|
|
79591
|
+
object({
|
|
79592
|
+
phase: _enum(["raised", "resolved"]),
|
|
79593
|
+
episodeId: string().min(1),
|
|
79594
|
+
alertId: string().min(1),
|
|
79595
|
+
severity: AlertSeveritySchema,
|
|
79596
|
+
category: string(),
|
|
79597
|
+
title: string(),
|
|
79598
|
+
message: string(),
|
|
79599
|
+
sourceType: string().optional(),
|
|
79600
|
+
sourceId: string().optional(),
|
|
79601
|
+
nodeId: string().optional(),
|
|
79602
|
+
/** The alert's own action link (where the operator acts on it), when it has one. */
|
|
79603
|
+
actionUrl: string().optional(),
|
|
79604
|
+
at: number()
|
|
79605
|
+
});
|
|
79311
79606
|
var RULE_BODY_ONLY = ["body"];
|
|
79312
79607
|
var RULE_TEXT = ["title", "body"];
|
|
79313
79608
|
var BATTERY = ["device-battery-low", "device-battery-normal"];
|
|
@@ -79317,6 +79612,11 @@ var TANK = [
|
|
|
79317
79612
|
"device-tank-full",
|
|
79318
79613
|
"device-tank-normal"
|
|
79319
79614
|
];
|
|
79615
|
+
var ALERT_EPISODE = [
|
|
79616
|
+
"alert-critical",
|
|
79617
|
+
"alert-error",
|
|
79618
|
+
"alert-critical-resolved"
|
|
79619
|
+
];
|
|
79320
79620
|
var UPDATES = [
|
|
79321
79621
|
"addon-update-available",
|
|
79322
79622
|
"server-update-available",
|
|
@@ -79509,14 +79809,14 @@ var STATE_SUMMARY_VARS = [
|
|
|
79509
79809
|
([...RULE_TEXT], [...CONSUMABLE]),
|
|
79510
79810
|
([...RULE_TEXT], [...TANK]),
|
|
79511
79811
|
[...RULE_TEXT],
|
|
79512
|
-
([...RULE_TEXT], [...UPDATES]),
|
|
79513
|
-
([...RULE_TEXT], [...UPDATES]),
|
|
79514
|
-
[...RULE_TEXT],
|
|
79812
|
+
([...RULE_TEXT], [...UPDATES, ...ALERT_EPISODE]),
|
|
79813
|
+
([...RULE_TEXT], [...UPDATES, ...ALERT_EPISODE]),
|
|
79515
79814
|
[...RULE_TEXT],
|
|
79516
79815
|
[...RULE_TEXT],
|
|
79517
79816
|
[...RULE_TEXT],
|
|
79518
79817
|
[...RULE_TEXT],
|
|
79519
79818
|
[...RULE_TEXT],
|
|
79819
|
+
([...RULE_TEXT], [...ALERT_EPISODE]),
|
|
79520
79820
|
[...RULE_TEXT],
|
|
79521
79821
|
[...RULE_TEXT],
|
|
79522
79822
|
[...RULE_TEXT],
|
|
@@ -79534,7 +79834,11 @@ var STATE_SUMMARY_VARS = [
|
|
|
79534
79834
|
[...RULE_TEXT],
|
|
79535
79835
|
[...RULE_TEXT],
|
|
79536
79836
|
[...RULE_TEXT],
|
|
79537
|
-
[...RULE_TEXT],
|
|
79837
|
+
([...RULE_TEXT], [...ALERT_EPISODE]),
|
|
79838
|
+
([...RULE_TEXT], [...ALERT_EPISODE]),
|
|
79839
|
+
([...RULE_TEXT], [...ALERT_EPISODE]),
|
|
79840
|
+
([...RULE_TEXT], [...ALERT_EPISODE]),
|
|
79841
|
+
([...RULE_TEXT], [...ALERT_EPISODE]),
|
|
79538
79842
|
[...RULE_TEXT],
|
|
79539
79843
|
[...RULE_TEXT],
|
|
79540
79844
|
[...RULE_TEXT],
|
package/package.json
CHANGED