@camstack/addon-admin-ui 1.2.438 → 1.2.440
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/assets/{AddonAssetIcon-n8Qr5_Kp.js → AddonAssetIcon-DoCqXzAv.js} +1 -1
- package/dist/assets/Addons-CrSVEbe3.js +4 -0
- package/dist/assets/{AdminPage-D2JwPYR7.js → AdminPage-KGO_m_yt.js} +1 -1
- package/dist/assets/{AdminSectionedPage-5tMwz6Be.js → AdminSectionedPage-BiMhPKOP.js} +1 -1
- package/dist/assets/AiProfiles-D8mKo1K9.js +3 -0
- package/dist/assets/{BrokerForm-Dbt1v9HX.js → BrokerForm-yx58WRgh.js} +1 -1
- package/dist/assets/{Build-Bv-SRt3z.js → Build-BArewEF3.js} +5 -5
- package/dist/assets/{Calendars-CPdNc3AH.js → Calendars-BdN8ZQmv.js} +1 -1
- package/dist/assets/{Cluster-iOH_2qVx.js → Cluster-Bn5YZafT.js} +1 -1
- package/dist/assets/{ClusterStepModel-vvtitbie.js → ClusterStepModel-DPmlzTfm.js} +1 -1
- package/dist/assets/CompositionEditor-BhL25d6e.js +1 -0
- package/dist/assets/CompositionEditorPage-BwqVkeY-.js +1 -0
- package/dist/assets/Data-BvY-zVHv.js +2 -0
- package/dist/assets/DeviceDetail-g2esa6u-.js +2 -0
- package/dist/assets/{DeviceDoActionFields-CBs8E-hd.js → DeviceDoActionFields-C6f9gioM.js} +1 -1
- package/dist/assets/Devices-CtivG8K9.js +1 -0
- package/dist/assets/{EmbedPlayerPage-OppPi2oS.js → EmbedPlayerPage-BD-Z7zz-.js} +1 -1
- package/dist/assets/Identity-BQNP0wku.js +1 -0
- package/dist/assets/IntegrationDetail-CzEG-I4B.js +1 -0
- package/dist/assets/IntegrationHub-tqxee2Rm.js +1 -0
- package/dist/assets/Integrations-C7Ptcn3c.js +1 -0
- package/dist/assets/Integrations-GZm_SrQK.js +1 -0
- package/dist/assets/Library-ToUHY4O3.js +1 -0
- package/dist/assets/Locations-CPFCvUKd.js +3 -0
- package/dist/assets/{Logs-BppneNXQ.js → Logs-Ds6SPC6o.js} +1 -1
- package/dist/assets/{MaskShapeCanvas-Bwqusno0.js → MaskShapeCanvas-BoY32Qvt.js} +1 -1
- package/dist/assets/{MotionZonesSettings-CZbGV_dv.js → MotionZonesSettings-DBW4jTEr.js} +1 -1
- package/dist/assets/{MyAccess-7TTQLj-6.js → MyAccess-2mSUBp14.js} +1 -1
- package/dist/assets/{Network-D4qKoubf.js → Network-BddKO6B1.js} +1 -1
- package/dist/assets/{NodeAddonsSettingsPanel-DOLEqwOJ.js → NodeAddonsSettingsPanel-CIISQuIL.js} +1 -1
- package/dist/assets/Notifications-DWJcnXvV.js +1 -0
- package/dist/assets/{PrivacyMaskSettings-CTKUYU5o.js → PrivacyMaskSettings-z8P3R0fA.js} +1 -1
- package/dist/assets/Recordings-g1Jxg_Lr.js +1 -0
- package/dist/assets/{ScanNetworkModal-O2KH9u3g.js → ScanNetworkModal-D7N2aC7y.js} +1 -1
- package/dist/assets/{SceneMonitorEditor-CG4pADlP.js → SceneMonitorEditor-CyjEekEM.js} +1 -1
- package/dist/assets/SessionsList-bmTxxIOE.js +2 -0
- package/dist/assets/{Showroom-BXD3terh.js → Showroom-PlFtcQrL.js} +1 -1
- package/dist/assets/{System-CHwXBdVd.js → System-DxszqVYV.js} +1 -1
- package/dist/assets/{Terminal-D2WVII9y.js → Terminal-BMG2w8DZ.js} +3 -3
- package/dist/assets/{Viewer-BdY4QQPs.js → Viewer-CRLD_tt7.js} +1 -1
- package/dist/assets/{_virtual_mf-localSharedImportMap___mfe_internal__admin_ui_host-D8hkm2kB.js → _virtual_mf-localSharedImportMap___mfe_internal__admin_ui_host-GapjKGVe.js} +1 -1
- package/dist/assets/{addon-icons-context-Drfj1y7k.js → addon-icons-context-BrgGsfoE.js} +1 -1
- package/dist/assets/{archive-Bcg0gLgY.js → archive-Dx-auPAN.js} +1 -1
- package/dist/assets/{authed-media-CFsHrcXx.js → authed-media-MhMmWNH3.js} +1 -1
- package/dist/assets/{bell-off-BnByNJjy.js → bell-off-BQQTURVF.js} +1 -1
- package/dist/assets/{board-model-D8m2YmcS.js → board-model-Bdetmchn.js} +1 -1
- package/dist/assets/{boxes-V2c7jrxe.js → boxes-BIK98bHo.js} +1 -1
- package/dist/assets/circle-slash-DKE4hxbW.js +1 -0
- package/dist/assets/client-Cy6wyTLQ.js +358 -0
- package/dist/assets/{cloud-upload-aziKggfg.js → cloud-upload-FvK6xW2I.js} +1 -1
- package/dist/assets/crop-7vsE3Qcd.js +1 -0
- package/dist/assets/{device-integration-icon-Bd49r785.js → device-integration-icon-ClmWzwM_.js} +1 -1
- package/dist/assets/device-picker-model-DVvq9nYp.js +1 -0
- package/dist/assets/dist-BPMeH1J4.js +358 -0
- package/dist/assets/dist-CEnfZ10I.js +1 -0
- package/dist/assets/{eraser-CsYhDDbY.js → eraser-CUAqtnBD.js} +1 -1
- package/dist/assets/{hard-drive-download-CWqd_JKb.js → hard-drive-download-XGtks2vE.js} +1 -1
- package/dist/assets/{history-DOf9zSG-.js → history-DqvhlzWX.js} +1 -1
- package/dist/assets/{hostInit-C_3liyhx.js → hostInit-DzBGXsvZ.js} +1 -1
- package/dist/assets/i18n-B1bxeya5.js +1 -0
- package/dist/assets/{icons-BrAHwVJD.js → icons-DNRi-jSy.js} +1 -1
- package/dist/assets/index-CN7xsFJi.css +2 -0
- package/dist/assets/index-yoPG03d0.js +4 -0
- package/dist/assets/{key-D0VHbthb.js → key-bw9xhRgT.js} +1 -1
- package/dist/assets/{key-round-CasJ848Z.js → key-round-BngMS2dZ.js} +1 -1
- package/dist/assets/{layers-CFb4zoU6.js → layers-CIl8QXpN.js} +1 -1
- package/dist/assets/{linked-devices-model-B7EZaQcp.js → linked-devices-model-CclOXMLj.js} +1 -1
- package/dist/assets/{list-ordered-B14sQnH2.js → list-ordered-_52_xrQ7.js} +1 -1
- package/dist/assets/location-owned-usage-5eb6nny3.js +1 -0
- package/dist/assets/{log-in-UZRiT8Rq.js → log-in-DH9Lu6bJ.js} +1 -1
- package/dist/assets/{memory-stick-l6hXPEuG.js → memory-stick-CzaP6KiN.js} +1 -1
- package/dist/assets/{message-square-plus-C3grB9GT.js → message-square-plus-vMywres_.js} +1 -1
- package/dist/assets/{mf-entry-bootstrap-0-aa799d5d.js → mf-entry-bootstrap-0-54468006.js} +2 -2
- package/dist/assets/{mic-off-wol-RBiS.js → mic-off-Da09u2hl.js} +1 -1
- package/dist/assets/{monitor-off-BUehkWHc.js → monitor-off-jOOWdiSg.js} +1 -1
- package/dist/assets/{monitor-smartphone-CCDiXDn-.js → monitor-smartphone-D_W4zyWO.js} +1 -1
- package/dist/assets/mount-DVvq9nYp.js +1 -0
- package/dist/assets/notification-schedule-field-LytDFkpQ.js +1 -0
- package/dist/assets/{player-overlays-Db_o1Zm2.js → player-overlays-CCZE3o8q.js} +1 -1
- package/dist/assets/{recycle-BVxTT0po.js → recycle-BVcCaHVd.js} +1 -1
- package/dist/assets/remoteEntry-BOaeaEWk.js +1 -0
- package/dist/assets/{scan-eye-C5EKCLMY.js → scan-eye-CHwWv39K.js} +1 -1
- package/dist/assets/{scissors-DjP6Unuk.js → scissors-BrUBwnKn.js} +1 -1
- package/dist/assets/{search-x-gjRI7PKB.js → search-x-BcR2pidC.js} +1 -1
- package/dist/assets/{send-CV6GWVOX.js → send-8R5TbxHN.js} +1 -1
- package/dist/assets/{settings-2--KyzHb5N.js → settings-2-C4PaSGfb.js} +1 -1
- package/dist/assets/{speaker-CnmwOCLp.js → speaker-CBRM7GNH.js} +1 -1
- package/dist/assets/src-Cw4W7OtK.js +67 -0
- package/dist/assets/{timer-reset-nORqwwje.js → timer-reset-DlfKkTg_.js} +1 -1
- package/dist/assets/{ungroup-BQTGGbbf.js → ungroup-BzlNECzG.js} +1 -1
- package/dist/assets/{unlink-669jprEf.js → unlink-HIuzqEig.js} +1 -1
- package/dist/assets/{usb-BT4hzhxS.js → usb-DqboQtO8.js} +1 -1
- package/dist/assets/{use-scenes-feed-CAUwbJgh.js → use-scenes-feed-Cnl4Is6T.js} +1 -1
- package/dist/assets/{use-stationary-objects-CwdwiqSu.js → use-stationary-objects-DmFWTPK0.js} +1 -1
- package/dist/assets/useEventInvalidation-DVvq9nYp.js +1 -0
- package/dist/assets/{useNodeUrlSelection-2GpIyOt_.js → useNodeUrlSelection-CSh6gqLc.js} +1 -1
- package/dist/assets/user-round-C4K7vDWN.js +1 -0
- package/dist/assets/{user-x-Drhirj9Y.js → user-x-ciro8k7Z.js} +1 -1
- package/dist/assets/{video-Dzs93Xor.js → video-BJUj4GaK.js} +1 -1
- package/dist/assets/{virtual_mf-REMOTE_ENTRY_ID___mfe_internal__admin_ui_host__remoteEntry-_hash_-CVZRr77d.js → virtual_mf-REMOTE_ENTRY_ID___mfe_internal__admin_ui_host__remoteEntry-_hash_-CwjeQPZx.js} +2 -2
- package/dist/index.html +11 -11
- package/dist/server/addon.js +324 -37
- package/package.json +1 -1
- package/dist/assets/Addons-Dtpom4zF.js +0 -4
- package/dist/assets/AiProfiles-CrkwNINl.js +0 -3
- package/dist/assets/CompositionEditor-BP-AGI3Y.js +0 -1
- package/dist/assets/CompositionEditorPage-BRatBKGt.js +0 -1
- package/dist/assets/Data-Bk8YwGJK.js +0 -2
- package/dist/assets/DeviceDetail-BtiSYWZr.js +0 -2
- package/dist/assets/Devices-Bgd8Iyo4.js +0 -1
- package/dist/assets/Identity-BlDv0gjH.js +0 -1
- package/dist/assets/IntegrationDetail-CLiGGiDO.js +0 -1
- package/dist/assets/IntegrationHub-elusTiRh.js +0 -1
- package/dist/assets/Integrations-BX33zgRF.js +0 -1
- package/dist/assets/Integrations-DlLfaKrk.js +0 -1
- package/dist/assets/Library-CGx2d-jp.js +0 -1
- package/dist/assets/Locations-CFU7VvDI.js +0 -3
- package/dist/assets/Notifications--kvb7ubW.js +0 -1
- package/dist/assets/Recordings-C3Ikd7pB.js +0 -1
- package/dist/assets/SessionsList-DCXslvk3.js +0 -2
- package/dist/assets/circle-slash-B_FzZotu.js +0 -1
- package/dist/assets/client-CUuI767h.js +0 -358
- package/dist/assets/crop-DzZyuK_f.js +0 -1
- package/dist/assets/device-picker-model-BQdOI8yn.js +0 -1
- package/dist/assets/dist-DsAwO6-i.js +0 -358
- package/dist/assets/dist-t-gGaOd0.js +0 -1
- package/dist/assets/i18n-RHwbGLC0.js +0 -1
- package/dist/assets/index-DrWxDgY9.js +0 -4
- package/dist/assets/index-M0Q7O5pF.css +0 -2
- package/dist/assets/location-owned-usage-CEUpeKPu.js +0 -1
- package/dist/assets/mount-BQdOI8yn.js +0 -1
- package/dist/assets/notification-schedule-field-3QjzRWF0.js +0 -1
- package/dist/assets/remoteEntry-CavKhY-Z.js +0 -1
- package/dist/assets/src-BpDNu6in.js +0 -67
- package/dist/assets/useEventInvalidation-BQdOI8yn.js +0 -1
- package/dist/assets/user-round-NWWWc7PC.js +0 -1
package/dist/server/addon.js
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import path from "node:path";
|
|
2
2
|
import { fileURLToPath } from "node:url";
|
|
3
|
-
//#region ../types/dist/event-category-
|
|
3
|
+
//#region ../types/dist/event-category-DOl51-Ij.mjs
|
|
4
4
|
var EventCategory = /* @__PURE__ */ function(EventCategory) {
|
|
5
5
|
EventCategory["SystemBoot"] = "system.boot";
|
|
6
6
|
EventCategory["SystemAddonsReady"] = "system.addons-ready";
|
|
@@ -79,9 +79,18 @@ var EventCategory = /* @__PURE__ */ function(EventCategory) {
|
|
|
79
79
|
/**
|
|
80
80
|
* The node's one-shot runner boot check (D877): planned runners against the
|
|
81
81
|
* process service, `degraded` when any is failed, refused or missing. The
|
|
82
|
-
* alert centre turns it into one
|
|
82
|
+
* alert centre turns it into one critical alert.
|
|
83
83
|
*/
|
|
84
84
|
EventCategory["SystemRunnerCheck"] = "system.runner-check";
|
|
85
|
+
/**
|
|
86
|
+
* An alert EPISODE opened or closed, emitted by the alert centre for alerts
|
|
87
|
+
* of severity `critical` or `error` (`AlertEpisodePayload`). The alert
|
|
88
|
+
* centre sends no notification of its own: Notification Center turns this
|
|
89
|
+
* into the `alert-critical` / `alert-error` / `alert-critical-resolved`
|
|
90
|
+
* system-event kinds, and reconciles from the alerts store because a bus
|
|
91
|
+
* event may be dropped (D8, D11).
|
|
92
|
+
*/
|
|
93
|
+
EventCategory["AlertEpisode"] = "alert.episode";
|
|
85
94
|
EventCategory["AddonError"] = "addon.error";
|
|
86
95
|
EventCategory["AddonPageReady"] = "addon.page-ready";
|
|
87
96
|
EventCategory["AddonWidgetReady"] = "addon.widget-ready";
|
|
@@ -5406,7 +5415,7 @@ var ZodIssueCode = {
|
|
|
5406
5415
|
var ZodFirstPartyTypeKind;
|
|
5407
5416
|
ZodFirstPartyTypeKind || (ZodFirstPartyTypeKind = {});
|
|
5408
5417
|
//#endregion
|
|
5409
|
-
//#region ../types/dist/sleep-
|
|
5418
|
+
//#region ../types/dist/sleep-BxjU_fJM.mjs
|
|
5410
5419
|
/**
|
|
5411
5420
|
* The audio chunk plane's byte format, and the ONE expansion from a coded
|
|
5412
5421
|
* window to float samples (D455).
|
|
@@ -13106,7 +13115,14 @@ var AlertSeveritySchema = _enum([
|
|
|
13106
13115
|
]);
|
|
13107
13116
|
var AlertActionSchema = object({
|
|
13108
13117
|
label: string(),
|
|
13109
|
-
href: string().optional()
|
|
13118
|
+
href: string().optional(),
|
|
13119
|
+
/**
|
|
13120
|
+
* How `href` is followed. Absent / `app`: an admin-ui route (client-side).
|
|
13121
|
+
* `server`: a route the HUB serves (an addon HTTP route such as an OAuth
|
|
13122
|
+
* start) — the browser must leave the SPA with a full navigation, because
|
|
13123
|
+
* the SPA has no such route and would bounce to the home page.
|
|
13124
|
+
*/
|
|
13125
|
+
navigation: _enum(["app", "server"]).optional()
|
|
13110
13126
|
});
|
|
13111
13127
|
var AlertStatusSchema = _enum([
|
|
13112
13128
|
"active",
|
|
@@ -17270,7 +17286,11 @@ DeviceType.Hub, DeviceDiscoveryStatusSchema.extend({ lastFetchedAt: number().int
|
|
|
17270
17286
|
});
|
|
17271
17287
|
/**
|
|
17272
17288
|
* `device-adoption` — generic discovery + adoption surface,
|
|
17273
|
-
* system-scoped
|
|
17289
|
+
* system-scoped collection (one provider per integration addon), routed
|
|
17290
|
+
* by explicit `{ addonId }` on direct `deviceAdoption.*` calls — the same
|
|
17291
|
+
* pin model as `connection-test`. The admin UI keeps using
|
|
17292
|
+
* `deviceManager.adoption*` (which already threads `addonId`). The de-HA-ified
|
|
17293
|
+
* successor to `ha-discovery`:
|
|
17274
17294
|
* keyed by `integrationId` (the addon resolves integrationId → broker
|
|
17275
17295
|
* internally) rather than a connection-specific `brokerId`, and it
|
|
17276
17296
|
* REUSES the shared `DiscoveredChildDevice` candidate type from
|
|
@@ -41478,6 +41498,9 @@ var NcSystemEventKindSchema = _enum([
|
|
|
41478
41498
|
"server-updated",
|
|
41479
41499
|
"export-completed",
|
|
41480
41500
|
"backup-completed",
|
|
41501
|
+
"alert-critical",
|
|
41502
|
+
"alert-error",
|
|
41503
|
+
"alert-critical-resolved",
|
|
41481
41504
|
"camera-online",
|
|
41482
41505
|
"camera-offline",
|
|
41483
41506
|
"camera-disabled",
|
|
@@ -50510,7 +50533,10 @@ method(StorageMigrationInputSchema, StorageMigrationPlanSchema, { auth: "admin"
|
|
|
50510
50533
|
}), method(object({ jobId: string().optional() }), StorageMigrationJobSchema.nullable(), { auth: "admin" }), method(object({ jobId: string() }), object({ cancelled: boolean() }), {
|
|
50511
50534
|
kind: "mutation",
|
|
50512
50535
|
auth: "admin"
|
|
50513
|
-
}), method(object({}), array(StorageMigrationMoverSchema).readonly(), { auth: "admin" }), method(object({
|
|
50536
|
+
}), method(object({}), array(StorageMigrationMoverSchema).readonly(), { auth: "admin" }), method(object({ locationIds: array(string()).readonly() }), object({
|
|
50537
|
+
clear: boolean(),
|
|
50538
|
+
repointLocationId: string().optional()
|
|
50539
|
+
}), { auth: "admin" }), method(object({}), array(StorageMigrationResidueSchema).readonly(), { auth: "admin" }), method(StorageMigrationDrainInputSchema, object({ jobId: string() }), {
|
|
50514
50540
|
kind: "mutation",
|
|
50515
50541
|
auth: "admin"
|
|
50516
50542
|
}), method(StorageCleanupInputSchema, object({ jobId: string() }), {
|
|
@@ -53945,6 +53971,11 @@ object({
|
|
|
53945
53971
|
*
|
|
53946
53972
|
* `kind: 'poll'` — cloud REST APIs typically have no push channel; the
|
|
53947
53973
|
* provider refreshes the slice on an interval and eagerly after commands.
|
|
53974
|
+
*
|
|
53975
|
+
* UNKNOWN IS NOT OFF. Every field the appliance reports separately is
|
|
53976
|
+
* nullable: `null` means "not known right now" (the appliance has not said,
|
|
53977
|
+
* the link is down, or the description does not carry it) and is never
|
|
53978
|
+
* rendered or exported as `false` / `0`. `availability` says why.
|
|
53948
53979
|
*/
|
|
53949
53980
|
var DishwasherStateSchema = _enum([
|
|
53950
53981
|
"idle",
|
|
@@ -53954,80 +53985,227 @@ var DishwasherStateSchema = _enum([
|
|
|
53954
53985
|
"error",
|
|
53955
53986
|
"unavailable"
|
|
53956
53987
|
]);
|
|
53988
|
+
/**
|
|
53989
|
+
* The appliance's own operation state, uncollapsed. `state` above is the coarse
|
|
53990
|
+
* view for compact surfaces; this is what the appliance said.
|
|
53991
|
+
*/
|
|
53992
|
+
var DishwasherOperationStateSchema = _enum([
|
|
53993
|
+
"Inactive",
|
|
53994
|
+
"Ready",
|
|
53995
|
+
"DelayedStart",
|
|
53996
|
+
"Run",
|
|
53997
|
+
"Pause",
|
|
53998
|
+
"ActionRequired",
|
|
53999
|
+
"Finished",
|
|
54000
|
+
"Error",
|
|
54001
|
+
"Aborting"
|
|
54002
|
+
]);
|
|
54003
|
+
/**
|
|
54004
|
+
* Why fields may be `null`:
|
|
54005
|
+
* - `available` — the link is up and the description is loaded;
|
|
54006
|
+
* - `offline` — the local link is down (values are unknown, not last-known);
|
|
54007
|
+
* - `description-missing` — the link is up but the appliance's description could not
|
|
54008
|
+
* be loaded, so its values cannot be decoded.
|
|
54009
|
+
*/
|
|
54010
|
+
var DishwasherAvailabilitySchema = _enum([
|
|
54011
|
+
"available",
|
|
54012
|
+
"offline",
|
|
54013
|
+
"description-missing"
|
|
54014
|
+
]);
|
|
53957
54015
|
var DishwasherConsumableLevelSchema = _enum([
|
|
53958
54016
|
"ok",
|
|
53959
54017
|
"low",
|
|
53960
54018
|
"empty"
|
|
53961
54019
|
]);
|
|
53962
54020
|
object({
|
|
54021
|
+
availability: DishwasherAvailabilitySchema,
|
|
54022
|
+
/** Coarse state for compact surfaces; `unavailable` whenever the appliance state is not known. */
|
|
53963
54023
|
state: DishwasherStateSchema,
|
|
53964
|
-
/**
|
|
54024
|
+
/** The appliance's operation state as reported; null when not known. */
|
|
54025
|
+
operationState: DishwasherOperationStateSchema.nullable(),
|
|
54026
|
+
/** Feature key of the ACTIVE (running) program, or null when none runs / not known. */
|
|
53965
54027
|
program: string().nullable(),
|
|
53966
|
-
/**
|
|
54028
|
+
/** Feature key of the SELECTED program (what Start would run), or null when none / not known. */
|
|
54029
|
+
selectedProgram: string().nullable(),
|
|
54030
|
+
/** Feature keys of the programs the appliance currently offers — drives the UI selector. */
|
|
53967
54031
|
availablePrograms: array(string()),
|
|
53968
|
-
/**
|
|
53969
|
-
|
|
54032
|
+
/** Seconds remaining on the active cycle, or null when not running / not known. */
|
|
54033
|
+
remainingSeconds: number().int().nonnegative().nullable(),
|
|
54034
|
+
/** Seconds the delayed start is set to (time until the cycle starts), or null. */
|
|
54035
|
+
delayedStartSeconds: number().int().nonnegative().nullable(),
|
|
53970
54036
|
/** Cycle completion 0..100, or null when not applicable. */
|
|
53971
54037
|
progressPercent: number().min(0).max(100).nullable(),
|
|
53972
|
-
/** True when the door is reported open. */
|
|
53973
|
-
doorOpen: boolean(),
|
|
53974
|
-
/** True when
|
|
53975
|
-
|
|
53976
|
-
/**
|
|
53977
|
-
|
|
54038
|
+
/** True when the door is reported open; null when the door state is not known. */
|
|
54039
|
+
doorOpen: boolean().nullable(),
|
|
54040
|
+
/** True when the door is latched (locked) during a cycle; null when not reported. */
|
|
54041
|
+
doorLocked: boolean().nullable(),
|
|
54042
|
+
/** True when remote start is allowed (door closed, power on, etc.); null when not known. */
|
|
54043
|
+
remoteStartAllowed: boolean().nullable(),
|
|
54044
|
+
/** True when the appliance accepts remote control now; null when not known. */
|
|
54045
|
+
remoteControlActive: boolean().nullable(),
|
|
54046
|
+
/** True while somebody operates the appliance at its panel; null when not reported. */
|
|
54047
|
+
localControlActive: boolean().nullable(),
|
|
54048
|
+
/** Main power / switched-on state; null when not known. */
|
|
54049
|
+
powerOn: boolean().nullable(),
|
|
54050
|
+
/** The raw power state (`On`, `Off`, `Standby`, …); null when not known. */
|
|
54051
|
+
powerState: string().nullable(),
|
|
53978
54052
|
saltLevel: DishwasherConsumableLevelSchema.nullable(),
|
|
53979
54053
|
rinseAidLevel: DishwasherConsumableLevelSchema.nullable(),
|
|
53980
|
-
|
|
53981
|
-
|
|
54054
|
+
/** Option states: null when the appliance does not expose the option or has not said. */
|
|
54055
|
+
halfLoad: boolean().nullable(),
|
|
54056
|
+
hygienePlus: boolean().nullable(),
|
|
54057
|
+
/** Extra dry option when the appliance exposes it. */
|
|
54058
|
+
extraDry: boolean().nullable(),
|
|
54059
|
+
/** Intensive zone (lower basket) when the appliance exposes it. */
|
|
54060
|
+
intensiveZone: boolean().nullable(),
|
|
54061
|
+
/** VarioSpeed / VarioSpeed+ when the appliance exposes it. */
|
|
54062
|
+
varioSpeedPlus: boolean().nullable(),
|
|
54063
|
+
/** Child lock (controls disabled on the appliance); null when not known. */
|
|
54064
|
+
childLock: boolean().nullable(),
|
|
54065
|
+
/** Feature keys of the events currently raised (salt low, rinse aid low, program finished, …). */
|
|
54066
|
+
activeEvents: array(string()),
|
|
54067
|
+
/** Numeric error code when the appliance reports one; null otherwise. */
|
|
53982
54068
|
errorCode: number().nullable(),
|
|
54069
|
+
/** Name of the raised alert-level event while the appliance is in error; null otherwise. */
|
|
53983
54070
|
errorLabel: string().nullable(),
|
|
54071
|
+
/** Ms epoch of the last value received from the appliance; 0 = never. */
|
|
53984
54072
|
lastFetchedAt: number()
|
|
53985
54073
|
});
|
|
53986
|
-
|
|
54074
|
+
var DeviceIdSchema = number().int().nonnegative();
|
|
54075
|
+
/** A value a program option or setting can take. */
|
|
54076
|
+
var DishwasherValueSchema = union([
|
|
54077
|
+
boolean(),
|
|
54078
|
+
string(),
|
|
54079
|
+
number()
|
|
54080
|
+
]);
|
|
54081
|
+
var DishwasherAccessSchema = _enum([
|
|
54082
|
+
"none",
|
|
54083
|
+
"read",
|
|
54084
|
+
"readWrite",
|
|
54085
|
+
"writeOnly",
|
|
54086
|
+
"readStatic"
|
|
54087
|
+
]);
|
|
54088
|
+
/**
|
|
54089
|
+
* One option or setting the appliance declares, with the constraints its description
|
|
54090
|
+
* gives. A `readWrite` descriptor that is `available` is what `setOption` accepts.
|
|
54091
|
+
*/
|
|
54092
|
+
var DishwasherOptionDescriptorSchema = object({
|
|
54093
|
+
/** Feature key (`Dishcare.Dishwasher.Option.ExtraDry`). */
|
|
54094
|
+
key: string(),
|
|
54095
|
+
/** Last segment of the key, for display. */
|
|
54096
|
+
name: string(),
|
|
54097
|
+
type: _enum([
|
|
54098
|
+
"boolean",
|
|
54099
|
+
"number",
|
|
54100
|
+
"enum",
|
|
54101
|
+
"string"
|
|
54102
|
+
]),
|
|
54103
|
+
access: DishwasherAccessSchema,
|
|
54104
|
+
/** The appliance reports this entity as currently available. */
|
|
54105
|
+
available: boolean(),
|
|
54106
|
+
/** Unit the description declares for a number; null when it declares none. */
|
|
54107
|
+
unit: string().nullable(),
|
|
54108
|
+
min: number().nullable(),
|
|
54109
|
+
max: number().nullable(),
|
|
54110
|
+
step: number().nullable(),
|
|
54111
|
+
/** Allowed members of an enum; null for other types. */
|
|
54112
|
+
enumValues: array(string()).nullable(),
|
|
54113
|
+
defaultValue: DishwasherValueSchema.nullable()
|
|
54114
|
+
});
|
|
54115
|
+
var DishwasherProgramSchema = object({
|
|
54116
|
+
/** Feature key (`Dishcare.Dishwasher.Program.Eco50`) — what `setProgram` / `start` take. */
|
|
54117
|
+
key: string(),
|
|
54118
|
+
name: string(),
|
|
54119
|
+
/** The appliance currently offers this program. */
|
|
54120
|
+
available: boolean(),
|
|
54121
|
+
/** The options this program lists, with the program-level access / availability / default. */
|
|
54122
|
+
options: array(DishwasherOptionDescriptorSchema)
|
|
54123
|
+
});
|
|
54124
|
+
var DishwasherOptionsSchema = object({
|
|
54125
|
+
availability: DishwasherAvailabilitySchema,
|
|
54126
|
+
/** What the appliance can be told to do, from the commands its description declares. */
|
|
54127
|
+
supportsStart: boolean(),
|
|
54128
|
+
supportsPause: boolean(),
|
|
54129
|
+
supportsResume: boolean(),
|
|
54130
|
+
supportsStop: boolean(),
|
|
54131
|
+
supportsPower: boolean(),
|
|
54132
|
+
/** Every program the description lists, with its options. */
|
|
54133
|
+
programs: array(DishwasherProgramSchema),
|
|
54134
|
+
/** Every option and setting entity the description lists (programs reference these by key). */
|
|
54135
|
+
options: array(DishwasherOptionDescriptorSchema)
|
|
54136
|
+
});
|
|
54137
|
+
DeviceType.Dishwasher, method(object({
|
|
54138
|
+
deviceId: DeviceIdSchema,
|
|
54139
|
+
program: string().min(1).optional(),
|
|
54140
|
+
options: record(string(), DishwasherValueSchema).optional()
|
|
54141
|
+
}), _void(), {
|
|
53987
54142
|
kind: "mutation",
|
|
53988
54143
|
auth: "protected"
|
|
53989
|
-
}), method(object({ deviceId:
|
|
54144
|
+
}), method(object({ deviceId: DeviceIdSchema }), _void(), {
|
|
53990
54145
|
kind: "mutation",
|
|
53991
54146
|
auth: "protected"
|
|
53992
|
-
}), method(object({ deviceId:
|
|
54147
|
+
}), method(object({ deviceId: DeviceIdSchema }), _void(), {
|
|
54148
|
+
kind: "mutation",
|
|
54149
|
+
auth: "protected"
|
|
54150
|
+
}), method(object({ deviceId: DeviceIdSchema }), _void(), {
|
|
53993
54151
|
kind: "mutation",
|
|
53994
54152
|
auth: "protected"
|
|
53995
54153
|
}), method(object({
|
|
53996
|
-
deviceId:
|
|
54154
|
+
deviceId: DeviceIdSchema,
|
|
53997
54155
|
program: string().min(1)
|
|
53998
54156
|
}), _void(), {
|
|
53999
54157
|
kind: "mutation",
|
|
54000
54158
|
auth: "protected"
|
|
54001
54159
|
}), method(object({
|
|
54002
|
-
deviceId:
|
|
54160
|
+
deviceId: DeviceIdSchema,
|
|
54003
54161
|
on: boolean()
|
|
54004
54162
|
}), _void(), {
|
|
54005
54163
|
kind: "mutation",
|
|
54006
54164
|
auth: "protected"
|
|
54007
54165
|
}), method(object({
|
|
54008
|
-
deviceId:
|
|
54166
|
+
deviceId: DeviceIdSchema,
|
|
54009
54167
|
on: boolean()
|
|
54010
54168
|
}), _void(), {
|
|
54011
54169
|
kind: "mutation",
|
|
54012
54170
|
auth: "protected"
|
|
54013
54171
|
}), method(object({
|
|
54014
|
-
deviceId:
|
|
54172
|
+
deviceId: DeviceIdSchema,
|
|
54015
54173
|
on: boolean()
|
|
54016
54174
|
}), _void(), {
|
|
54017
54175
|
kind: "mutation",
|
|
54018
54176
|
auth: "protected"
|
|
54019
54177
|
}), method(object({
|
|
54020
|
-
deviceId:
|
|
54178
|
+
deviceId: DeviceIdSchema,
|
|
54179
|
+
on: boolean()
|
|
54180
|
+
}), _void(), {
|
|
54181
|
+
kind: "mutation",
|
|
54182
|
+
auth: "protected"
|
|
54183
|
+
}), method(object({
|
|
54184
|
+
deviceId: DeviceIdSchema,
|
|
54185
|
+
on: boolean()
|
|
54186
|
+
}), _void(), {
|
|
54187
|
+
kind: "mutation",
|
|
54188
|
+
auth: "protected"
|
|
54189
|
+
}), method(object({
|
|
54190
|
+
deviceId: DeviceIdSchema,
|
|
54191
|
+
on: boolean()
|
|
54192
|
+
}), _void(), {
|
|
54193
|
+
kind: "mutation",
|
|
54194
|
+
auth: "protected"
|
|
54195
|
+
}), method(object({
|
|
54196
|
+
deviceId: DeviceIdSchema,
|
|
54197
|
+
on: boolean()
|
|
54198
|
+
}), _void(), {
|
|
54199
|
+
kind: "mutation",
|
|
54200
|
+
auth: "protected"
|
|
54201
|
+
}), method(object({
|
|
54202
|
+
deviceId: DeviceIdSchema,
|
|
54021
54203
|
key: string().min(1),
|
|
54022
|
-
value:
|
|
54023
|
-
boolean(),
|
|
54024
|
-
string(),
|
|
54025
|
-
number()
|
|
54026
|
-
])
|
|
54204
|
+
value: DishwasherValueSchema
|
|
54027
54205
|
}), _void(), {
|
|
54028
54206
|
kind: "mutation",
|
|
54029
54207
|
auth: "protected"
|
|
54030
|
-
});
|
|
54208
|
+
}), method(object({ deviceId: DeviceIdSchema }), DishwasherOptionsSchema, { auth: "protected" });
|
|
54031
54209
|
object({
|
|
54032
54210
|
/** Ms epoch of the last press. null = never observed since this provider started. */
|
|
54033
54211
|
lastPressedAt: number().nullable(),
|
|
@@ -64087,6 +64265,12 @@ Object.freeze({
|
|
|
64087
64265
|
addonId: null,
|
|
64088
64266
|
access: "view"
|
|
64089
64267
|
},
|
|
64268
|
+
"dishwasher.getOptions": {
|
|
64269
|
+
capName: "dishwasher",
|
|
64270
|
+
capScope: "device",
|
|
64271
|
+
addonId: null,
|
|
64272
|
+
access: "view"
|
|
64273
|
+
},
|
|
64090
64274
|
"dishwasher.getStatus": {
|
|
64091
64275
|
capName: "dishwasher",
|
|
64092
64276
|
capScope: "device",
|
|
@@ -64099,6 +64283,24 @@ Object.freeze({
|
|
|
64099
64283
|
addonId: null,
|
|
64100
64284
|
access: "create"
|
|
64101
64285
|
},
|
|
64286
|
+
"dishwasher.resume": {
|
|
64287
|
+
capName: "dishwasher",
|
|
64288
|
+
capScope: "device",
|
|
64289
|
+
addonId: null,
|
|
64290
|
+
access: "create"
|
|
64291
|
+
},
|
|
64292
|
+
"dishwasher.setChildLock": {
|
|
64293
|
+
capName: "dishwasher",
|
|
64294
|
+
capScope: "device",
|
|
64295
|
+
addonId: null,
|
|
64296
|
+
access: "create"
|
|
64297
|
+
},
|
|
64298
|
+
"dishwasher.setExtraDry": {
|
|
64299
|
+
capName: "dishwasher",
|
|
64300
|
+
capScope: "device",
|
|
64301
|
+
addonId: null,
|
|
64302
|
+
access: "create"
|
|
64303
|
+
},
|
|
64102
64304
|
"dishwasher.setHalfLoad": {
|
|
64103
64305
|
capName: "dishwasher",
|
|
64104
64306
|
capScope: "device",
|
|
@@ -64111,6 +64313,12 @@ Object.freeze({
|
|
|
64111
64313
|
addonId: null,
|
|
64112
64314
|
access: "create"
|
|
64113
64315
|
},
|
|
64316
|
+
"dishwasher.setIntensiveZone": {
|
|
64317
|
+
capName: "dishwasher",
|
|
64318
|
+
capScope: "device",
|
|
64319
|
+
addonId: null,
|
|
64320
|
+
access: "create"
|
|
64321
|
+
},
|
|
64114
64322
|
"dishwasher.setOption": {
|
|
64115
64323
|
capName: "dishwasher",
|
|
64116
64324
|
capScope: "device",
|
|
@@ -64129,6 +64337,12 @@ Object.freeze({
|
|
|
64129
64337
|
addonId: null,
|
|
64130
64338
|
access: "create"
|
|
64131
64339
|
},
|
|
64340
|
+
"dishwasher.setVarioSpeedPlus": {
|
|
64341
|
+
capName: "dishwasher",
|
|
64342
|
+
capScope: "device",
|
|
64343
|
+
addonId: null,
|
|
64344
|
+
access: "create"
|
|
64345
|
+
},
|
|
64132
64346
|
"dishwasher.start": {
|
|
64133
64347
|
capName: "dishwasher",
|
|
64134
64348
|
capScope: "device",
|
|
@@ -68575,6 +68789,12 @@ Object.freeze({
|
|
|
68575
68789
|
addonId: null,
|
|
68576
68790
|
access: "view"
|
|
68577
68791
|
},
|
|
68792
|
+
"storageMigration.moverClearance": {
|
|
68793
|
+
capName: "storage-migration",
|
|
68794
|
+
capScope: "system",
|
|
68795
|
+
addonId: null,
|
|
68796
|
+
access: "view"
|
|
68797
|
+
},
|
|
68578
68798
|
"storageMigration.movers": {
|
|
68579
68799
|
capName: "storage-migration",
|
|
68580
68800
|
capScope: "system",
|
|
@@ -70768,6 +70988,11 @@ Object.freeze({
|
|
|
70768
70988
|
form: "single",
|
|
70769
70989
|
optional: false
|
|
70770
70990
|
}],
|
|
70991
|
+
"dishwasher.getOptions": [{
|
|
70992
|
+
name: "deviceId",
|
|
70993
|
+
form: "single",
|
|
70994
|
+
optional: false
|
|
70995
|
+
}],
|
|
70771
70996
|
"dishwasher.getStatus": [{
|
|
70772
70997
|
name: "deviceId",
|
|
70773
70998
|
form: "single",
|
|
@@ -70778,6 +71003,21 @@ Object.freeze({
|
|
|
70778
71003
|
form: "single",
|
|
70779
71004
|
optional: false
|
|
70780
71005
|
}],
|
|
71006
|
+
"dishwasher.resume": [{
|
|
71007
|
+
name: "deviceId",
|
|
71008
|
+
form: "single",
|
|
71009
|
+
optional: false
|
|
71010
|
+
}],
|
|
71011
|
+
"dishwasher.setChildLock": [{
|
|
71012
|
+
name: "deviceId",
|
|
71013
|
+
form: "single",
|
|
71014
|
+
optional: false
|
|
71015
|
+
}],
|
|
71016
|
+
"dishwasher.setExtraDry": [{
|
|
71017
|
+
name: "deviceId",
|
|
71018
|
+
form: "single",
|
|
71019
|
+
optional: false
|
|
71020
|
+
}],
|
|
70781
71021
|
"dishwasher.setHalfLoad": [{
|
|
70782
71022
|
name: "deviceId",
|
|
70783
71023
|
form: "single",
|
|
@@ -70788,6 +71028,11 @@ Object.freeze({
|
|
|
70788
71028
|
form: "single",
|
|
70789
71029
|
optional: false
|
|
70790
71030
|
}],
|
|
71031
|
+
"dishwasher.setIntensiveZone": [{
|
|
71032
|
+
name: "deviceId",
|
|
71033
|
+
form: "single",
|
|
71034
|
+
optional: false
|
|
71035
|
+
}],
|
|
70791
71036
|
"dishwasher.setOption": [{
|
|
70792
71037
|
name: "deviceId",
|
|
70793
71038
|
form: "single",
|
|
@@ -70803,6 +71048,11 @@ Object.freeze({
|
|
|
70803
71048
|
form: "single",
|
|
70804
71049
|
optional: false
|
|
70805
71050
|
}],
|
|
71051
|
+
"dishwasher.setVarioSpeedPlus": [{
|
|
71052
|
+
name: "deviceId",
|
|
71053
|
+
form: "single",
|
|
71054
|
+
optional: false
|
|
71055
|
+
}],
|
|
70806
71056
|
"dishwasher.start": [{
|
|
70807
71057
|
name: "deviceId",
|
|
70808
71058
|
form: "single",
|
|
@@ -72844,6 +73094,9 @@ new Map(Object.entries({
|
|
|
72844
73094
|
"wrapper-update-available": "system",
|
|
72845
73095
|
"backup-completed": "system",
|
|
72846
73096
|
"export-completed": "system",
|
|
73097
|
+
"alert-critical": "system",
|
|
73098
|
+
"alert-error": "system",
|
|
73099
|
+
"alert-critical-resolved": "system",
|
|
72847
73100
|
"storage-location-low": "system",
|
|
72848
73101
|
"storage-location-critical": "system",
|
|
72849
73102
|
"storage-location-ok": "system",
|
|
@@ -72968,6 +73221,16 @@ var NC_SYSTEM_EVENT_KIND_GROUP_SPECS = [
|
|
|
72968
73221
|
"storage-location-ok"
|
|
72969
73222
|
]
|
|
72970
73223
|
},
|
|
73224
|
+
{
|
|
73225
|
+
id: "alerts",
|
|
73226
|
+
family: "system",
|
|
73227
|
+
label: "Alerts",
|
|
73228
|
+
kinds: [
|
|
73229
|
+
"alert-critical",
|
|
73230
|
+
"alert-error",
|
|
73231
|
+
"alert-critical-resolved"
|
|
73232
|
+
]
|
|
73233
|
+
},
|
|
72971
73234
|
{
|
|
72972
73235
|
id: "alarm",
|
|
72973
73236
|
family: "alarm",
|
|
@@ -73012,6 +73275,21 @@ var NC_SENSOR_RAISED_FIELD_BY_KIND = Object.freeze(Object.fromEntries(Object.ent
|
|
|
73012
73275
|
return [[descriptor.kind, field]];
|
|
73013
73276
|
})));
|
|
73014
73277
|
Object.freeze(Object.keys(NC_SENSOR_RAISED_FIELD_BY_KIND));
|
|
73278
|
+
object({
|
|
73279
|
+
phase: _enum(["raised", "resolved"]),
|
|
73280
|
+
episodeId: string().min(1),
|
|
73281
|
+
alertId: string().min(1),
|
|
73282
|
+
severity: AlertSeveritySchema,
|
|
73283
|
+
category: string(),
|
|
73284
|
+
title: string(),
|
|
73285
|
+
message: string(),
|
|
73286
|
+
sourceType: string().optional(),
|
|
73287
|
+
sourceId: string().optional(),
|
|
73288
|
+
nodeId: string().optional(),
|
|
73289
|
+
/** The alert's own action link (where the operator acts on it), when it has one. */
|
|
73290
|
+
actionUrl: string().optional(),
|
|
73291
|
+
at: number()
|
|
73292
|
+
});
|
|
73015
73293
|
var RULE_BODY_ONLY = ["body"];
|
|
73016
73294
|
var RULE_TEXT = ["title", "body"];
|
|
73017
73295
|
var BATTERY = ["device-battery-low", "device-battery-normal"];
|
|
@@ -73021,6 +73299,11 @@ var TANK = [
|
|
|
73021
73299
|
"device-tank-full",
|
|
73022
73300
|
"device-tank-normal"
|
|
73023
73301
|
];
|
|
73302
|
+
var ALERT_EPISODE = [
|
|
73303
|
+
"alert-critical",
|
|
73304
|
+
"alert-error",
|
|
73305
|
+
"alert-critical-resolved"
|
|
73306
|
+
];
|
|
73024
73307
|
var UPDATES = [
|
|
73025
73308
|
"addon-update-available",
|
|
73026
73309
|
"server-update-available",
|
|
@@ -73213,14 +73496,14 @@ var STATE_SUMMARY_VARS = [
|
|
|
73213
73496
|
([...RULE_TEXT], [...CONSUMABLE]),
|
|
73214
73497
|
([...RULE_TEXT], [...TANK]),
|
|
73215
73498
|
[...RULE_TEXT],
|
|
73216
|
-
([...RULE_TEXT], [...UPDATES]),
|
|
73217
|
-
([...RULE_TEXT], [...UPDATES]),
|
|
73218
|
-
[...RULE_TEXT],
|
|
73499
|
+
([...RULE_TEXT], [...UPDATES, ...ALERT_EPISODE]),
|
|
73500
|
+
([...RULE_TEXT], [...UPDATES, ...ALERT_EPISODE]),
|
|
73219
73501
|
[...RULE_TEXT],
|
|
73220
73502
|
[...RULE_TEXT],
|
|
73221
73503
|
[...RULE_TEXT],
|
|
73222
73504
|
[...RULE_TEXT],
|
|
73223
73505
|
[...RULE_TEXT],
|
|
73506
|
+
([...RULE_TEXT], [...ALERT_EPISODE]),
|
|
73224
73507
|
[...RULE_TEXT],
|
|
73225
73508
|
[...RULE_TEXT],
|
|
73226
73509
|
[...RULE_TEXT],
|
|
@@ -73238,7 +73521,11 @@ var STATE_SUMMARY_VARS = [
|
|
|
73238
73521
|
[...RULE_TEXT],
|
|
73239
73522
|
[...RULE_TEXT],
|
|
73240
73523
|
[...RULE_TEXT],
|
|
73241
|
-
[...RULE_TEXT],
|
|
73524
|
+
([...RULE_TEXT], [...ALERT_EPISODE]),
|
|
73525
|
+
([...RULE_TEXT], [...ALERT_EPISODE]),
|
|
73526
|
+
([...RULE_TEXT], [...ALERT_EPISODE]),
|
|
73527
|
+
([...RULE_TEXT], [...ALERT_EPISODE]),
|
|
73528
|
+
([...RULE_TEXT], [...ALERT_EPISODE]),
|
|
73242
73529
|
[...RULE_TEXT],
|
|
73243
73530
|
[...RULE_TEXT],
|
|
73244
73531
|
[...RULE_TEXT],
|
|
@@ -73797,7 +74084,7 @@ var AdminUIAddon = class extends BaseAddon {
|
|
|
73797
74084
|
capability: adminUiCapability,
|
|
73798
74085
|
provider: {
|
|
73799
74086
|
getStaticDir: async () => ({ staticDir: resolveAdminUiDistDir() }),
|
|
73800
|
-
getVersion: async () => ({ version: "1.2.
|
|
74087
|
+
getVersion: async () => ({ version: "1.2.440" })
|
|
73801
74088
|
}
|
|
73802
74089
|
}];
|
|
73803
74090
|
}
|