@camstack/addon-provider-homeassistant 1.2.603 → 1.2.604

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 CHANGED
@@ -1,5 +1,5 @@
1
1
  Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
2
- const require_dist = require("./dist-DVNChk7-.js");
2
+ const require_dist = require("./dist-BUoXKXFs.js");
3
3
  let node_crypto = require("node:crypto");
4
4
  let node_zlib = require("node:zlib");
5
5
  //#region src/ha-admin-link.ts
package/dist/addon.mjs CHANGED
@@ -1,4 +1,4 @@
1
- import { A as connectivityCapability, At as boolean, B as floodCapability, Bt as EventCategory, C as buildAddonRouteProvider, Ct as defineEntryKind, D as carbonMonoxideCapability, Dt as settingsBrokersAdoptsFrom, E as calendarSourceCapability, F as deviceAdoptionCapability, Ft as record, G as lawnMowerControlCapability, H as humidifierCapability, It as string, J as motionCapability, K as lockControlCapability, L as enumSensorCapability, Lt as union, M as controlCapability, Mt as literal, N as coverCapability, Nt as number, O as climateControlCapability, Ot as _enum, P as deviceAdminLinkCapability, Pt as object, Q as numericSensorCapability, R as eventEmitterCapability, Rt as unknown, S as brokerCapability, St as createEvent, T as buttonCapability, Tt as entryBody, U as humiditySensorCapability, V as gasCapability, W as imageCapability, X as notificationOutputCapability, Y as normalizeUnit, Z as notifierCapability, _ as automationControlCapability, _t as DeviceRole, at as scriptRunnerCapability, b as binaryCapability, ct as tamperCapability, d as TargetSchema, dt as vacuumControlCapability, et as parseAdminBase, f as accessoriesCapability, ft as valveCapability, g as ambientLightSensorCapability, gt as DeviceFeature, h as alarmPanelCapability, ht as weatherCapability, it as pressureSensorCapability, j as contactCapability, jt as discriminatedUnion, k as colorCapability, kt as array, lt as temperatureSensorCapability, m as airQualitySensorCapability, mt as waterHeaterCapability, n as BaseDevice, nt as prepareNotification, ot as smokeCapability, p as addonRoutesCapability, pt as vibrationCapability, q as mediaPlayerCapability, r as BaseDeviceProvider, rt as presenceCapability, s as EnumSensorDateTimeFormatSchema, st as switchCapability, tt as powerMeterCapability, ut as updateCapability, v as batteryCapability, vt as DeviceType, w as buildDeviceAdminUrl, wt as defineRecordKinds, x as brightnessCapability, xt as RecordSecretUnavailableError, y as bestLocationMatch, yt as errMsg, z as fanControlCapability, zt as url } from "./dist-CM5Z-Rdj.mjs";
1
+ import { A as connectivityCapability, At as boolean, B as floodCapability, Bt as EventCategory, C as buildAddonRouteProvider, Ct as defineEntryKind, D as carbonMonoxideCapability, Dt as settingsBrokersAdoptsFrom, E as calendarSourceCapability, F as deviceAdoptionCapability, Ft as record, G as lawnMowerControlCapability, H as humidifierCapability, It as string, J as motionCapability, K as lockControlCapability, L as enumSensorCapability, Lt as union, M as controlCapability, Mt as literal, N as coverCapability, Nt as number, O as climateControlCapability, Ot as _enum, P as deviceAdminLinkCapability, Pt as object, Q as numericSensorCapability, R as eventEmitterCapability, Rt as unknown, S as brokerCapability, St as createEvent, T as buttonCapability, Tt as entryBody, U as humiditySensorCapability, V as gasCapability, W as imageCapability, X as notificationOutputCapability, Y as normalizeUnit, Z as notifierCapability, _ as automationControlCapability, _t as DeviceRole, at as scriptRunnerCapability, b as binaryCapability, ct as tamperCapability, d as TargetSchema, dt as vacuumControlCapability, et as parseAdminBase, f as accessoriesCapability, ft as valveCapability, g as ambientLightSensorCapability, gt as DeviceFeature, h as alarmPanelCapability, ht as weatherCapability, it as pressureSensorCapability, j as contactCapability, jt as discriminatedUnion, k as colorCapability, kt as array, lt as temperatureSensorCapability, m as airQualitySensorCapability, mt as waterHeaterCapability, n as BaseDevice, nt as prepareNotification, ot as smokeCapability, p as addonRoutesCapability, pt as vibrationCapability, q as mediaPlayerCapability, r as BaseDeviceProvider, rt as presenceCapability, s as EnumSensorDateTimeFormatSchema, st as switchCapability, tt as powerMeterCapability, ut as updateCapability, v as batteryCapability, vt as DeviceType, w as buildDeviceAdminUrl, wt as defineRecordKinds, x as brightnessCapability, xt as RecordSecretUnavailableError, y as bestLocationMatch, yt as errMsg, z as fanControlCapability, zt as url } from "./dist-CA_cJwK-.mjs";
2
2
  import { randomUUID } from "node:crypto";
3
3
  import { brotliCompressSync, deflateSync, gzipSync } from "node:zlib";
4
4
  //#region src/ha-admin-link.ts
@@ -1,5 +1,5 @@
1
1
  require("node:crypto");
2
- //#region ../types/dist/event-category-BvOFi6PY.mjs
2
+ //#region ../types/dist/event-category-DOl51-Ij.mjs
3
3
  var EventCategory = /* @__PURE__ */ function(EventCategory) {
4
4
  EventCategory["SystemBoot"] = "system.boot";
5
5
  EventCategory["SystemAddonsReady"] = "system.addons-ready";
@@ -78,9 +78,18 @@ var EventCategory = /* @__PURE__ */ function(EventCategory) {
78
78
  /**
79
79
  * The node's one-shot runner boot check (D877): planned runners against the
80
80
  * process service, `degraded` when any is failed, refused or missing. The
81
- * alert centre turns it into one alert and a direct critical push.
81
+ * alert centre turns it into one critical alert.
82
82
  */
83
83
  EventCategory["SystemRunnerCheck"] = "system.runner-check";
84
+ /**
85
+ * An alert EPISODE opened or closed, emitted by the alert centre for alerts
86
+ * of severity `critical` or `error` (`AlertEpisodePayload`). The alert
87
+ * centre sends no notification of its own: Notification Center turns this
88
+ * into the `alert-critical` / `alert-error` / `alert-critical-resolved`
89
+ * system-event kinds, and reconciles from the alerts store because a bus
90
+ * event may be dropped (D8, D11).
91
+ */
92
+ EventCategory["AlertEpisode"] = "alert.episode";
84
93
  EventCategory["AddonError"] = "addon.error";
85
94
  EventCategory["AddonPageReady"] = "addon.page-ready";
86
95
  EventCategory["AddonWidgetReady"] = "addon.widget-ready";
@@ -5538,7 +5547,7 @@ var ZodIssueCode = {
5538
5547
  var ZodFirstPartyTypeKind;
5539
5548
  ZodFirstPartyTypeKind || (ZodFirstPartyTypeKind = {});
5540
5549
  //#endregion
5541
- //#region ../types/dist/sleep-BegKjwUu.mjs
5550
+ //#region ../types/dist/sleep-BxjU_fJM.mjs
5542
5551
  /**
5543
5552
  * The audio chunk plane's byte format, and the ONE expansion from a coded
5544
5553
  * window to float samples (D455).
@@ -13723,7 +13732,14 @@ var AlertSeveritySchema = _enum([
13723
13732
  ]);
13724
13733
  var AlertActionSchema = object({
13725
13734
  label: string(),
13726
- href: string().optional()
13735
+ href: string().optional(),
13736
+ /**
13737
+ * How `href` is followed. Absent / `app`: an admin-ui route (client-side).
13738
+ * `server`: a route the HUB serves (an addon HTTP route such as an OAuth
13739
+ * start) — the browser must leave the SPA with a full navigation, because
13740
+ * the SPA has no such route and would bounce to the home page.
13741
+ */
13742
+ navigation: _enum(["app", "server"]).optional()
13727
13743
  });
13728
13744
  var AlertStatusSchema = _enum([
13729
13745
  "active",
@@ -42744,6 +42760,9 @@ var NcSystemEventKindSchema = _enum([
42744
42760
  "server-updated",
42745
42761
  "export-completed",
42746
42762
  "backup-completed",
42763
+ "alert-critical",
42764
+ "alert-error",
42765
+ "alert-critical-resolved",
42747
42766
  "camera-online",
42748
42767
  "camera-offline",
42749
42768
  "camera-disabled",
@@ -51836,7 +51855,10 @@ method(StorageMigrationInputSchema, StorageMigrationPlanSchema, { auth: "admin"
51836
51855
  }), method(object({ jobId: string().optional() }), StorageMigrationJobSchema.nullable(), { auth: "admin" }), method(object({ jobId: string() }), object({ cancelled: boolean() }), {
51837
51856
  kind: "mutation",
51838
51857
  auth: "admin"
51839
- }), method(object({}), array(StorageMigrationMoverSchema).readonly(), { auth: "admin" }), method(object({}), array(StorageMigrationResidueSchema).readonly(), { auth: "admin" }), method(StorageMigrationDrainInputSchema, object({ jobId: string() }), {
51858
+ }), method(object({}), array(StorageMigrationMoverSchema).readonly(), { auth: "admin" }), method(object({ locationIds: array(string()).readonly() }), object({
51859
+ clear: boolean(),
51860
+ repointLocationId: string().optional()
51861
+ }), { auth: "admin" }), method(object({}), array(StorageMigrationResidueSchema).readonly(), { auth: "admin" }), method(StorageMigrationDrainInputSchema, object({ jobId: string() }), {
51840
51862
  kind: "mutation",
51841
51863
  auth: "admin"
51842
51864
  }), method(StorageCleanupInputSchema, object({ jobId: string() }), {
@@ -56191,6 +56213,11 @@ onStatusChanged: { data: object({
56191
56213
  *
56192
56214
  * `kind: 'poll'` — cloud REST APIs typically have no push channel; the
56193
56215
  * provider refreshes the slice on an interval and eagerly after commands.
56216
+ *
56217
+ * UNKNOWN IS NOT OFF. Every field the appliance reports separately is
56218
+ * nullable: `null` means "not known right now" (the appliance has not said,
56219
+ * the link is down, or the description does not carry it) and is never
56220
+ * rendered or exported as `false` / `0`. `availability` says why.
56194
56221
  */
56195
56222
  var DishwasherStateSchema = _enum([
56196
56223
  "idle",
@@ -56200,43 +56227,155 @@ var DishwasherStateSchema = _enum([
56200
56227
  "error",
56201
56228
  "unavailable"
56202
56229
  ]);
56230
+ /**
56231
+ * The appliance's own operation state, uncollapsed. `state` above is the coarse
56232
+ * view for compact surfaces; this is what the appliance said.
56233
+ */
56234
+ var DishwasherOperationStateSchema = _enum([
56235
+ "Inactive",
56236
+ "Ready",
56237
+ "DelayedStart",
56238
+ "Run",
56239
+ "Pause",
56240
+ "ActionRequired",
56241
+ "Finished",
56242
+ "Error",
56243
+ "Aborting"
56244
+ ]);
56245
+ /**
56246
+ * Why fields may be `null`:
56247
+ * - `available` — the link is up and the description is loaded;
56248
+ * - `offline` — the local link is down (values are unknown, not last-known);
56249
+ * - `description-missing` — the link is up but the appliance's description could not
56250
+ * be loaded, so its values cannot be decoded.
56251
+ */
56252
+ var DishwasherAvailabilitySchema = _enum([
56253
+ "available",
56254
+ "offline",
56255
+ "description-missing"
56256
+ ]);
56203
56257
  var DishwasherConsumableLevelSchema = _enum([
56204
56258
  "ok",
56205
56259
  "low",
56206
56260
  "empty"
56207
56261
  ]);
56208
56262
  var DishwasherStatusSchema = object({
56263
+ availability: DishwasherAvailabilitySchema,
56264
+ /** Coarse state for compact surfaces; `unavailable` whenever the appliance state is not known. */
56209
56265
  state: DishwasherStateSchema,
56210
- /** Active program id/name, or null when none selected / unknown. */
56266
+ /** The appliance's operation state as reported; null when not known. */
56267
+ operationState: DishwasherOperationStateSchema.nullable(),
56268
+ /** Feature key of the ACTIVE (running) program, or null when none runs / not known. */
56211
56269
  program: string().nullable(),
56212
- /** Program tokens the hardware accepts — drives the UI selector. */
56270
+ /** Feature key of the SELECTED program (what Start would run), or null when none / not known. */
56271
+ selectedProgram: string().nullable(),
56272
+ /** Feature keys of the programs the appliance currently offers — drives the UI selector. */
56213
56273
  availablePrograms: array(string()),
56214
- /** Minutes remaining on the active cycle, or null when not running. */
56215
- remainingMinutes: number().int().nonnegative().nullable(),
56274
+ /** Seconds remaining on the active cycle, or null when not running / not known. */
56275
+ remainingSeconds: number().int().nonnegative().nullable(),
56276
+ /** Seconds the delayed start is set to (time until the cycle starts), or null. */
56277
+ delayedStartSeconds: number().int().nonnegative().nullable(),
56216
56278
  /** Cycle completion 0..100, or null when not applicable. */
56217
56279
  progressPercent: number().min(0).max(100).nullable(),
56218
- /** True when the door is reported open. */
56219
- doorOpen: boolean(),
56220
- /** True when remote start is allowed (door closed, power on, etc.). */
56221
- remoteStartAllowed: boolean(),
56222
- /** Main power / switched-on state. */
56223
- powerOn: boolean(),
56280
+ /** True when the door is reported open; null when the door state is not known. */
56281
+ doorOpen: boolean().nullable(),
56282
+ /** True when the door is latched (locked) during a cycle; null when not reported. */
56283
+ doorLocked: boolean().nullable(),
56284
+ /** True when remote start is allowed (door closed, power on, etc.); null when not known. */
56285
+ remoteStartAllowed: boolean().nullable(),
56286
+ /** True when the appliance accepts remote control now; null when not known. */
56287
+ remoteControlActive: boolean().nullable(),
56288
+ /** True while somebody operates the appliance at its panel; null when not reported. */
56289
+ localControlActive: boolean().nullable(),
56290
+ /** Main power / switched-on state; null when not known. */
56291
+ powerOn: boolean().nullable(),
56292
+ /** The raw power state (`On`, `Off`, `Standby`, …); null when not known. */
56293
+ powerState: string().nullable(),
56224
56294
  saltLevel: DishwasherConsumableLevelSchema.nullable(),
56225
56295
  rinseAidLevel: DishwasherConsumableLevelSchema.nullable(),
56226
- halfLoad: boolean(),
56227
- hygienePlus: boolean(),
56296
+ /** Option states: null when the appliance does not expose the option or has not said. */
56297
+ halfLoad: boolean().nullable(),
56298
+ hygienePlus: boolean().nullable(),
56228
56299
  /** Extra dry option when the appliance exposes it. */
56229
- extraDry: boolean(),
56300
+ extraDry: boolean().nullable(),
56230
56301
  /** Intensive zone (lower basket) when the appliance exposes it. */
56231
- intensiveZone: boolean(),
56302
+ intensiveZone: boolean().nullable(),
56232
56303
  /** VarioSpeed / VarioSpeed+ when the appliance exposes it. */
56233
- varioSpeedPlus: boolean(),
56234
- /** Child lock (controls disabled on the appliance). */
56235
- childLock: boolean(),
56304
+ varioSpeedPlus: boolean().nullable(),
56305
+ /** Child lock (controls disabled on the appliance); null when not known. */
56306
+ childLock: boolean().nullable(),
56307
+ /** Feature keys of the events currently raised (salt low, rinse aid low, program finished, …). */
56308
+ activeEvents: array(string()),
56309
+ /** Numeric error code when the appliance reports one; null otherwise. */
56236
56310
  errorCode: number().nullable(),
56311
+ /** Name of the raised alert-level event while the appliance is in error; null otherwise. */
56237
56312
  errorLabel: string().nullable(),
56313
+ /** Ms epoch of the last value received from the appliance; 0 = never. */
56238
56314
  lastFetchedAt: number()
56239
56315
  });
56316
+ var DeviceIdSchema = number().int().nonnegative();
56317
+ /** A value a program option or setting can take. */
56318
+ var DishwasherValueSchema = union([
56319
+ boolean(),
56320
+ string(),
56321
+ number()
56322
+ ]);
56323
+ var DishwasherAccessSchema = _enum([
56324
+ "none",
56325
+ "read",
56326
+ "readWrite",
56327
+ "writeOnly",
56328
+ "readStatic"
56329
+ ]);
56330
+ /**
56331
+ * One option or setting the appliance declares, with the constraints its description
56332
+ * gives. A `readWrite` descriptor that is `available` is what `setOption` accepts.
56333
+ */
56334
+ var DishwasherOptionDescriptorSchema = object({
56335
+ /** Feature key (`Dishcare.Dishwasher.Option.ExtraDry`). */
56336
+ key: string(),
56337
+ /** Last segment of the key, for display. */
56338
+ name: string(),
56339
+ type: _enum([
56340
+ "boolean",
56341
+ "number",
56342
+ "enum",
56343
+ "string"
56344
+ ]),
56345
+ access: DishwasherAccessSchema,
56346
+ /** The appliance reports this entity as currently available. */
56347
+ available: boolean(),
56348
+ /** Unit the description declares for a number; null when it declares none. */
56349
+ unit: string().nullable(),
56350
+ min: number().nullable(),
56351
+ max: number().nullable(),
56352
+ step: number().nullable(),
56353
+ /** Allowed members of an enum; null for other types. */
56354
+ enumValues: array(string()).nullable(),
56355
+ defaultValue: DishwasherValueSchema.nullable()
56356
+ });
56357
+ var DishwasherProgramSchema = object({
56358
+ /** Feature key (`Dishcare.Dishwasher.Program.Eco50`) — what `setProgram` / `start` take. */
56359
+ key: string(),
56360
+ name: string(),
56361
+ /** The appliance currently offers this program. */
56362
+ available: boolean(),
56363
+ /** The options this program lists, with the program-level access / availability / default. */
56364
+ options: array(DishwasherOptionDescriptorSchema)
56365
+ });
56366
+ var DishwasherOptionsSchema = object({
56367
+ availability: DishwasherAvailabilitySchema,
56368
+ /** What the appliance can be told to do, from the commands its description declares. */
56369
+ supportsStart: boolean(),
56370
+ supportsPause: boolean(),
56371
+ supportsResume: boolean(),
56372
+ supportsStop: boolean(),
56373
+ supportsPower: boolean(),
56374
+ /** Every program the description lists, with its options. */
56375
+ programs: array(DishwasherProgramSchema),
56376
+ /** Every option and setting entity the description lists (programs reference these by key). */
56377
+ options: array(DishwasherOptionDescriptorSchema)
56378
+ });
56240
56379
  var dishwasherCapability = {
56241
56380
  name: "dishwasher",
56242
56381
  scope: "device",
@@ -56244,86 +56383,102 @@ var dishwasherCapability = {
56244
56383
  mode: "singleton",
56245
56384
  deviceTypes: [DeviceType.Dishwasher],
56246
56385
  methods: {
56247
- start: method(object({ deviceId: number().int().nonnegative() }), _void(), {
56386
+ /**
56387
+ * Start a program. Without `program` the selected one starts. `options` are
56388
+ * option feature keys; each is checked against the program's constraints.
56389
+ */
56390
+ start: method(object({
56391
+ deviceId: DeviceIdSchema,
56392
+ program: string().min(1).optional(),
56393
+ options: record(string(), DishwasherValueSchema).optional()
56394
+ }), _void(), {
56248
56395
  kind: "mutation",
56249
56396
  auth: "protected"
56250
56397
  }),
56251
- pause: method(object({ deviceId: number().int().nonnegative() }), _void(), {
56398
+ pause: method(object({ deviceId: DeviceIdSchema }), _void(), {
56252
56399
  kind: "mutation",
56253
56400
  auth: "protected"
56254
56401
  }),
56255
- stop: method(object({ deviceId: number().int().nonnegative() }), _void(), {
56402
+ resume: method(object({ deviceId: DeviceIdSchema }), _void(), {
56403
+ kind: "mutation",
56404
+ auth: "protected"
56405
+ }),
56406
+ stop: method(object({ deviceId: DeviceIdSchema }), _void(), {
56256
56407
  kind: "mutation",
56257
56408
  auth: "protected"
56258
56409
  }),
56410
+ /** Select (not start) a program; refused when the appliance does not offer it. */
56259
56411
  setProgram: method(object({
56260
- deviceId: number().int().nonnegative(),
56412
+ deviceId: DeviceIdSchema,
56261
56413
  program: string().min(1)
56262
56414
  }), _void(), {
56263
56415
  kind: "mutation",
56264
56416
  auth: "protected"
56265
56417
  }),
56266
56418
  setPower: method(object({
56267
- deviceId: number().int().nonnegative(),
56419
+ deviceId: DeviceIdSchema,
56268
56420
  on: boolean()
56269
56421
  }), _void(), {
56270
56422
  kind: "mutation",
56271
56423
  auth: "protected"
56272
56424
  }),
56273
56425
  setHalfLoad: method(object({
56274
- deviceId: number().int().nonnegative(),
56426
+ deviceId: DeviceIdSchema,
56275
56427
  on: boolean()
56276
56428
  }), _void(), {
56277
56429
  kind: "mutation",
56278
56430
  auth: "protected"
56279
56431
  }),
56280
56432
  setHygienePlus: method(object({
56281
- deviceId: number().int().nonnegative(),
56433
+ deviceId: DeviceIdSchema,
56282
56434
  on: boolean()
56283
56435
  }), _void(), {
56284
56436
  kind: "mutation",
56285
56437
  auth: "protected"
56286
56438
  }),
56287
56439
  setExtraDry: method(object({
56288
- deviceId: number().int().nonnegative(),
56440
+ deviceId: DeviceIdSchema,
56289
56441
  on: boolean()
56290
56442
  }), _void(), {
56291
56443
  kind: "mutation",
56292
56444
  auth: "protected"
56293
56445
  }),
56294
56446
  setIntensiveZone: method(object({
56295
- deviceId: number().int().nonnegative(),
56447
+ deviceId: DeviceIdSchema,
56296
56448
  on: boolean()
56297
56449
  }), _void(), {
56298
56450
  kind: "mutation",
56299
56451
  auth: "protected"
56300
56452
  }),
56301
56453
  setVarioSpeedPlus: method(object({
56302
- deviceId: number().int().nonnegative(),
56454
+ deviceId: DeviceIdSchema,
56303
56455
  on: boolean()
56304
56456
  }), _void(), {
56305
56457
  kind: "mutation",
56306
56458
  auth: "protected"
56307
56459
  }),
56308
56460
  setChildLock: method(object({
56309
- deviceId: number().int().nonnegative(),
56461
+ deviceId: DeviceIdSchema,
56310
56462
  on: boolean()
56311
56463
  }), _void(), {
56312
56464
  kind: "mutation",
56313
56465
  auth: "protected"
56314
56466
  }),
56467
+ /**
56468
+ * Write any option or setting by feature key. Refused when the description does
56469
+ * not list it, it is not writable or not available now, or the value is outside
56470
+ * its declared range / members.
56471
+ */
56315
56472
  setOption: method(object({
56316
- deviceId: number().int().nonnegative(),
56473
+ deviceId: DeviceIdSchema,
56317
56474
  key: string().min(1),
56318
- value: union([
56319
- boolean(),
56320
- string(),
56321
- number()
56322
- ])
56475
+ value: DishwasherValueSchema
56323
56476
  }), _void(), {
56324
56477
  kind: "mutation",
56325
56478
  auth: "protected"
56326
- })
56479
+ }),
56480
+ /** What this appliance can do, from its own description — the UI is derived from it. */
56481
+ getOptions: method(object({ deviceId: DeviceIdSchema }), DishwasherOptionsSchema, { auth: "protected" })
56327
56482
  },
56328
56483
  status: {
56329
56484
  schema: DishwasherStatusSchema,
@@ -70272,6 +70427,12 @@ Object.freeze({
70272
70427
  addonId: null,
70273
70428
  access: "view"
70274
70429
  },
70430
+ "dishwasher.getOptions": {
70431
+ capName: "dishwasher",
70432
+ capScope: "device",
70433
+ addonId: null,
70434
+ access: "view"
70435
+ },
70275
70436
  "dishwasher.getStatus": {
70276
70437
  capName: "dishwasher",
70277
70438
  capScope: "device",
@@ -70284,6 +70445,12 @@ Object.freeze({
70284
70445
  addonId: null,
70285
70446
  access: "create"
70286
70447
  },
70448
+ "dishwasher.resume": {
70449
+ capName: "dishwasher",
70450
+ capScope: "device",
70451
+ addonId: null,
70452
+ access: "create"
70453
+ },
70287
70454
  "dishwasher.setChildLock": {
70288
70455
  capName: "dishwasher",
70289
70456
  capScope: "device",
@@ -74784,6 +74951,12 @@ Object.freeze({
74784
74951
  addonId: null,
74785
74952
  access: "view"
74786
74953
  },
74954
+ "storageMigration.moverClearance": {
74955
+ capName: "storage-migration",
74956
+ capScope: "system",
74957
+ addonId: null,
74958
+ access: "view"
74959
+ },
74787
74960
  "storageMigration.movers": {
74788
74961
  capName: "storage-migration",
74789
74962
  capScope: "system",
@@ -76977,6 +77150,11 @@ Object.freeze({
76977
77150
  form: "single",
76978
77151
  optional: false
76979
77152
  }],
77153
+ "dishwasher.getOptions": [{
77154
+ name: "deviceId",
77155
+ form: "single",
77156
+ optional: false
77157
+ }],
76980
77158
  "dishwasher.getStatus": [{
76981
77159
  name: "deviceId",
76982
77160
  form: "single",
@@ -76987,6 +77165,11 @@ Object.freeze({
76987
77165
  form: "single",
76988
77166
  optional: false
76989
77167
  }],
77168
+ "dishwasher.resume": [{
77169
+ name: "deviceId",
77170
+ form: "single",
77171
+ optional: false
77172
+ }],
76990
77173
  "dishwasher.setChildLock": [{
76991
77174
  name: "deviceId",
76992
77175
  form: "single",
@@ -79280,6 +79463,9 @@ new Map(Object.entries({
79280
79463
  "wrapper-update-available": "system",
79281
79464
  "backup-completed": "system",
79282
79465
  "export-completed": "system",
79466
+ "alert-critical": "system",
79467
+ "alert-error": "system",
79468
+ "alert-critical-resolved": "system",
79283
79469
  "storage-location-low": "system",
79284
79470
  "storage-location-critical": "system",
79285
79471
  "storage-location-ok": "system",
@@ -79404,6 +79590,16 @@ var NC_SYSTEM_EVENT_KIND_GROUP_SPECS = [
79404
79590
  "storage-location-ok"
79405
79591
  ]
79406
79592
  },
79593
+ {
79594
+ id: "alerts",
79595
+ family: "system",
79596
+ label: "Alerts",
79597
+ kinds: [
79598
+ "alert-critical",
79599
+ "alert-error",
79600
+ "alert-critical-resolved"
79601
+ ]
79602
+ },
79407
79603
  {
79408
79604
  id: "alarm",
79409
79605
  family: "alarm",
@@ -79448,6 +79644,21 @@ var NC_SENSOR_RAISED_FIELD_BY_KIND = Object.freeze(Object.fromEntries(Object.ent
79448
79644
  return [[descriptor.kind, field]];
79449
79645
  })));
79450
79646
  Object.freeze(Object.keys(NC_SENSOR_RAISED_FIELD_BY_KIND));
79647
+ object({
79648
+ phase: _enum(["raised", "resolved"]),
79649
+ episodeId: string().min(1),
79650
+ alertId: string().min(1),
79651
+ severity: AlertSeveritySchema,
79652
+ category: string(),
79653
+ title: string(),
79654
+ message: string(),
79655
+ sourceType: string().optional(),
79656
+ sourceId: string().optional(),
79657
+ nodeId: string().optional(),
79658
+ /** The alert's own action link (where the operator acts on it), when it has one. */
79659
+ actionUrl: string().optional(),
79660
+ at: number()
79661
+ });
79451
79662
  var RULE_BODY_ONLY = ["body"];
79452
79663
  var RULE_TEXT = ["title", "body"];
79453
79664
  var BATTERY = ["device-battery-low", "device-battery-normal"];
@@ -79457,6 +79668,11 @@ var TANK = [
79457
79668
  "device-tank-full",
79458
79669
  "device-tank-normal"
79459
79670
  ];
79671
+ var ALERT_EPISODE = [
79672
+ "alert-critical",
79673
+ "alert-error",
79674
+ "alert-critical-resolved"
79675
+ ];
79460
79676
  var UPDATES = [
79461
79677
  "addon-update-available",
79462
79678
  "server-update-available",
@@ -79649,14 +79865,14 @@ var STATE_SUMMARY_VARS = [
79649
79865
  ([...RULE_TEXT], [...CONSUMABLE]),
79650
79866
  ([...RULE_TEXT], [...TANK]),
79651
79867
  [...RULE_TEXT],
79652
- ([...RULE_TEXT], [...UPDATES]),
79653
- ([...RULE_TEXT], [...UPDATES]),
79654
- [...RULE_TEXT],
79868
+ ([...RULE_TEXT], [...UPDATES, ...ALERT_EPISODE]),
79869
+ ([...RULE_TEXT], [...UPDATES, ...ALERT_EPISODE]),
79655
79870
  [...RULE_TEXT],
79656
79871
  [...RULE_TEXT],
79657
79872
  [...RULE_TEXT],
79658
79873
  [...RULE_TEXT],
79659
79874
  [...RULE_TEXT],
79875
+ ([...RULE_TEXT], [...ALERT_EPISODE]),
79660
79876
  [...RULE_TEXT],
79661
79877
  [...RULE_TEXT],
79662
79878
  [...RULE_TEXT],
@@ -79674,7 +79890,11 @@ var STATE_SUMMARY_VARS = [
79674
79890
  [...RULE_TEXT],
79675
79891
  [...RULE_TEXT],
79676
79892
  [...RULE_TEXT],
79677
- [...RULE_TEXT],
79893
+ ([...RULE_TEXT], [...ALERT_EPISODE]),
79894
+ ([...RULE_TEXT], [...ALERT_EPISODE]),
79895
+ ([...RULE_TEXT], [...ALERT_EPISODE]),
79896
+ ([...RULE_TEXT], [...ALERT_EPISODE]),
79897
+ ([...RULE_TEXT], [...ALERT_EPISODE]),
79678
79898
  [...RULE_TEXT],
79679
79899
  [...RULE_TEXT],
79680
79900
  [...RULE_TEXT],