@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.
Files changed (136) hide show
  1. package/dist/assets/{AddonAssetIcon-n8Qr5_Kp.js → AddonAssetIcon-DoCqXzAv.js} +1 -1
  2. package/dist/assets/Addons-CrSVEbe3.js +4 -0
  3. package/dist/assets/{AdminPage-D2JwPYR7.js → AdminPage-KGO_m_yt.js} +1 -1
  4. package/dist/assets/{AdminSectionedPage-5tMwz6Be.js → AdminSectionedPage-BiMhPKOP.js} +1 -1
  5. package/dist/assets/AiProfiles-D8mKo1K9.js +3 -0
  6. package/dist/assets/{BrokerForm-Dbt1v9HX.js → BrokerForm-yx58WRgh.js} +1 -1
  7. package/dist/assets/{Build-Bv-SRt3z.js → Build-BArewEF3.js} +5 -5
  8. package/dist/assets/{Calendars-CPdNc3AH.js → Calendars-BdN8ZQmv.js} +1 -1
  9. package/dist/assets/{Cluster-iOH_2qVx.js → Cluster-Bn5YZafT.js} +1 -1
  10. package/dist/assets/{ClusterStepModel-vvtitbie.js → ClusterStepModel-DPmlzTfm.js} +1 -1
  11. package/dist/assets/CompositionEditor-BhL25d6e.js +1 -0
  12. package/dist/assets/CompositionEditorPage-BwqVkeY-.js +1 -0
  13. package/dist/assets/Data-BvY-zVHv.js +2 -0
  14. package/dist/assets/DeviceDetail-g2esa6u-.js +2 -0
  15. package/dist/assets/{DeviceDoActionFields-CBs8E-hd.js → DeviceDoActionFields-C6f9gioM.js} +1 -1
  16. package/dist/assets/Devices-CtivG8K9.js +1 -0
  17. package/dist/assets/{EmbedPlayerPage-OppPi2oS.js → EmbedPlayerPage-BD-Z7zz-.js} +1 -1
  18. package/dist/assets/Identity-BQNP0wku.js +1 -0
  19. package/dist/assets/IntegrationDetail-CzEG-I4B.js +1 -0
  20. package/dist/assets/IntegrationHub-tqxee2Rm.js +1 -0
  21. package/dist/assets/Integrations-C7Ptcn3c.js +1 -0
  22. package/dist/assets/Integrations-GZm_SrQK.js +1 -0
  23. package/dist/assets/Library-ToUHY4O3.js +1 -0
  24. package/dist/assets/Locations-CPFCvUKd.js +3 -0
  25. package/dist/assets/{Logs-BppneNXQ.js → Logs-Ds6SPC6o.js} +1 -1
  26. package/dist/assets/{MaskShapeCanvas-Bwqusno0.js → MaskShapeCanvas-BoY32Qvt.js} +1 -1
  27. package/dist/assets/{MotionZonesSettings-CZbGV_dv.js → MotionZonesSettings-DBW4jTEr.js} +1 -1
  28. package/dist/assets/{MyAccess-7TTQLj-6.js → MyAccess-2mSUBp14.js} +1 -1
  29. package/dist/assets/{Network-D4qKoubf.js → Network-BddKO6B1.js} +1 -1
  30. package/dist/assets/{NodeAddonsSettingsPanel-DOLEqwOJ.js → NodeAddonsSettingsPanel-CIISQuIL.js} +1 -1
  31. package/dist/assets/Notifications-DWJcnXvV.js +1 -0
  32. package/dist/assets/{PrivacyMaskSettings-CTKUYU5o.js → PrivacyMaskSettings-z8P3R0fA.js} +1 -1
  33. package/dist/assets/Recordings-g1Jxg_Lr.js +1 -0
  34. package/dist/assets/{ScanNetworkModal-O2KH9u3g.js → ScanNetworkModal-D7N2aC7y.js} +1 -1
  35. package/dist/assets/{SceneMonitorEditor-CG4pADlP.js → SceneMonitorEditor-CyjEekEM.js} +1 -1
  36. package/dist/assets/SessionsList-bmTxxIOE.js +2 -0
  37. package/dist/assets/{Showroom-BXD3terh.js → Showroom-PlFtcQrL.js} +1 -1
  38. package/dist/assets/{System-CHwXBdVd.js → System-DxszqVYV.js} +1 -1
  39. package/dist/assets/{Terminal-D2WVII9y.js → Terminal-BMG2w8DZ.js} +3 -3
  40. package/dist/assets/{Viewer-BdY4QQPs.js → Viewer-CRLD_tt7.js} +1 -1
  41. 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
  42. package/dist/assets/{addon-icons-context-Drfj1y7k.js → addon-icons-context-BrgGsfoE.js} +1 -1
  43. package/dist/assets/{archive-Bcg0gLgY.js → archive-Dx-auPAN.js} +1 -1
  44. package/dist/assets/{authed-media-CFsHrcXx.js → authed-media-MhMmWNH3.js} +1 -1
  45. package/dist/assets/{bell-off-BnByNJjy.js → bell-off-BQQTURVF.js} +1 -1
  46. package/dist/assets/{board-model-D8m2YmcS.js → board-model-Bdetmchn.js} +1 -1
  47. package/dist/assets/{boxes-V2c7jrxe.js → boxes-BIK98bHo.js} +1 -1
  48. package/dist/assets/circle-slash-DKE4hxbW.js +1 -0
  49. package/dist/assets/client-Cy6wyTLQ.js +358 -0
  50. package/dist/assets/{cloud-upload-aziKggfg.js → cloud-upload-FvK6xW2I.js} +1 -1
  51. package/dist/assets/crop-7vsE3Qcd.js +1 -0
  52. package/dist/assets/{device-integration-icon-Bd49r785.js → device-integration-icon-ClmWzwM_.js} +1 -1
  53. package/dist/assets/device-picker-model-DVvq9nYp.js +1 -0
  54. package/dist/assets/dist-BPMeH1J4.js +358 -0
  55. package/dist/assets/dist-CEnfZ10I.js +1 -0
  56. package/dist/assets/{eraser-CsYhDDbY.js → eraser-CUAqtnBD.js} +1 -1
  57. package/dist/assets/{hard-drive-download-CWqd_JKb.js → hard-drive-download-XGtks2vE.js} +1 -1
  58. package/dist/assets/{history-DOf9zSG-.js → history-DqvhlzWX.js} +1 -1
  59. package/dist/assets/{hostInit-C_3liyhx.js → hostInit-DzBGXsvZ.js} +1 -1
  60. package/dist/assets/i18n-B1bxeya5.js +1 -0
  61. package/dist/assets/{icons-BrAHwVJD.js → icons-DNRi-jSy.js} +1 -1
  62. package/dist/assets/index-CN7xsFJi.css +2 -0
  63. package/dist/assets/index-yoPG03d0.js +4 -0
  64. package/dist/assets/{key-D0VHbthb.js → key-bw9xhRgT.js} +1 -1
  65. package/dist/assets/{key-round-CasJ848Z.js → key-round-BngMS2dZ.js} +1 -1
  66. package/dist/assets/{layers-CFb4zoU6.js → layers-CIl8QXpN.js} +1 -1
  67. package/dist/assets/{linked-devices-model-B7EZaQcp.js → linked-devices-model-CclOXMLj.js} +1 -1
  68. package/dist/assets/{list-ordered-B14sQnH2.js → list-ordered-_52_xrQ7.js} +1 -1
  69. package/dist/assets/location-owned-usage-5eb6nny3.js +1 -0
  70. package/dist/assets/{log-in-UZRiT8Rq.js → log-in-DH9Lu6bJ.js} +1 -1
  71. package/dist/assets/{memory-stick-l6hXPEuG.js → memory-stick-CzaP6KiN.js} +1 -1
  72. package/dist/assets/{message-square-plus-C3grB9GT.js → message-square-plus-vMywres_.js} +1 -1
  73. package/dist/assets/{mf-entry-bootstrap-0-aa799d5d.js → mf-entry-bootstrap-0-54468006.js} +2 -2
  74. package/dist/assets/{mic-off-wol-RBiS.js → mic-off-Da09u2hl.js} +1 -1
  75. package/dist/assets/{monitor-off-BUehkWHc.js → monitor-off-jOOWdiSg.js} +1 -1
  76. package/dist/assets/{monitor-smartphone-CCDiXDn-.js → monitor-smartphone-D_W4zyWO.js} +1 -1
  77. package/dist/assets/mount-DVvq9nYp.js +1 -0
  78. package/dist/assets/notification-schedule-field-LytDFkpQ.js +1 -0
  79. package/dist/assets/{player-overlays-Db_o1Zm2.js → player-overlays-CCZE3o8q.js} +1 -1
  80. package/dist/assets/{recycle-BVxTT0po.js → recycle-BVcCaHVd.js} +1 -1
  81. package/dist/assets/remoteEntry-BOaeaEWk.js +1 -0
  82. package/dist/assets/{scan-eye-C5EKCLMY.js → scan-eye-CHwWv39K.js} +1 -1
  83. package/dist/assets/{scissors-DjP6Unuk.js → scissors-BrUBwnKn.js} +1 -1
  84. package/dist/assets/{search-x-gjRI7PKB.js → search-x-BcR2pidC.js} +1 -1
  85. package/dist/assets/{send-CV6GWVOX.js → send-8R5TbxHN.js} +1 -1
  86. package/dist/assets/{settings-2--KyzHb5N.js → settings-2-C4PaSGfb.js} +1 -1
  87. package/dist/assets/{speaker-CnmwOCLp.js → speaker-CBRM7GNH.js} +1 -1
  88. package/dist/assets/src-Cw4W7OtK.js +67 -0
  89. package/dist/assets/{timer-reset-nORqwwje.js → timer-reset-DlfKkTg_.js} +1 -1
  90. package/dist/assets/{ungroup-BQTGGbbf.js → ungroup-BzlNECzG.js} +1 -1
  91. package/dist/assets/{unlink-669jprEf.js → unlink-HIuzqEig.js} +1 -1
  92. package/dist/assets/{usb-BT4hzhxS.js → usb-DqboQtO8.js} +1 -1
  93. package/dist/assets/{use-scenes-feed-CAUwbJgh.js → use-scenes-feed-Cnl4Is6T.js} +1 -1
  94. package/dist/assets/{use-stationary-objects-CwdwiqSu.js → use-stationary-objects-DmFWTPK0.js} +1 -1
  95. package/dist/assets/useEventInvalidation-DVvq9nYp.js +1 -0
  96. package/dist/assets/{useNodeUrlSelection-2GpIyOt_.js → useNodeUrlSelection-CSh6gqLc.js} +1 -1
  97. package/dist/assets/user-round-C4K7vDWN.js +1 -0
  98. package/dist/assets/{user-x-Drhirj9Y.js → user-x-ciro8k7Z.js} +1 -1
  99. package/dist/assets/{video-Dzs93Xor.js → video-BJUj4GaK.js} +1 -1
  100. 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
  101. package/dist/index.html +11 -11
  102. package/dist/server/addon.js +324 -37
  103. package/package.json +1 -1
  104. package/dist/assets/Addons-Dtpom4zF.js +0 -4
  105. package/dist/assets/AiProfiles-CrkwNINl.js +0 -3
  106. package/dist/assets/CompositionEditor-BP-AGI3Y.js +0 -1
  107. package/dist/assets/CompositionEditorPage-BRatBKGt.js +0 -1
  108. package/dist/assets/Data-Bk8YwGJK.js +0 -2
  109. package/dist/assets/DeviceDetail-BtiSYWZr.js +0 -2
  110. package/dist/assets/Devices-Bgd8Iyo4.js +0 -1
  111. package/dist/assets/Identity-BlDv0gjH.js +0 -1
  112. package/dist/assets/IntegrationDetail-CLiGGiDO.js +0 -1
  113. package/dist/assets/IntegrationHub-elusTiRh.js +0 -1
  114. package/dist/assets/Integrations-BX33zgRF.js +0 -1
  115. package/dist/assets/Integrations-DlLfaKrk.js +0 -1
  116. package/dist/assets/Library-CGx2d-jp.js +0 -1
  117. package/dist/assets/Locations-CFU7VvDI.js +0 -3
  118. package/dist/assets/Notifications--kvb7ubW.js +0 -1
  119. package/dist/assets/Recordings-C3Ikd7pB.js +0 -1
  120. package/dist/assets/SessionsList-DCXslvk3.js +0 -2
  121. package/dist/assets/circle-slash-B_FzZotu.js +0 -1
  122. package/dist/assets/client-CUuI767h.js +0 -358
  123. package/dist/assets/crop-DzZyuK_f.js +0 -1
  124. package/dist/assets/device-picker-model-BQdOI8yn.js +0 -1
  125. package/dist/assets/dist-DsAwO6-i.js +0 -358
  126. package/dist/assets/dist-t-gGaOd0.js +0 -1
  127. package/dist/assets/i18n-RHwbGLC0.js +0 -1
  128. package/dist/assets/index-DrWxDgY9.js +0 -4
  129. package/dist/assets/index-M0Q7O5pF.css +0 -2
  130. package/dist/assets/location-owned-usage-CEUpeKPu.js +0 -1
  131. package/dist/assets/mount-BQdOI8yn.js +0 -1
  132. package/dist/assets/notification-schedule-field-3QjzRWF0.js +0 -1
  133. package/dist/assets/remoteEntry-CavKhY-Z.js +0 -1
  134. package/dist/assets/src-BpDNu6in.js +0 -67
  135. package/dist/assets/useEventInvalidation-BQdOI8yn.js +0 -1
  136. package/dist/assets/user-round-NWWWc7PC.js +0 -1
@@ -1,6 +1,6 @@
1
1
  import path from "node:path";
2
2
  import { fileURLToPath } from "node:url";
3
- //#region ../types/dist/event-category-BvOFi6PY.mjs
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 alert and a direct critical push.
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-BOjuyoPC.mjs
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 singleton. The de-HA-ified successor to `ha-discovery`:
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({}), array(StorageMigrationResidueSchema).readonly(), { auth: "admin" }), method(StorageMigrationDrainInputSchema, object({ jobId: string() }), {
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
- /** Active program id/name, or null when none selected / unknown. */
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
- /** Program tokens the hardware accepts — drives the UI selector. */
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
- /** Minutes remaining on the active cycle, or null when not running. */
53969
- remainingMinutes: number().int().nonnegative().nullable(),
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 remote start is allowed (door closed, power on, etc.). */
53975
- remoteStartAllowed: boolean(),
53976
- /** Main power / switched-on state. */
53977
- powerOn: boolean(),
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
- halfLoad: boolean(),
53981
- hygienePlus: boolean(),
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
- DeviceType.Dishwasher, method(object({ deviceId: number().int().nonnegative() }), _void(), {
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: number().int().nonnegative() }), _void(), {
54144
+ }), method(object({ deviceId: DeviceIdSchema }), _void(), {
53990
54145
  kind: "mutation",
53991
54146
  auth: "protected"
53992
- }), method(object({ deviceId: number().int().nonnegative() }), _void(), {
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: number().int().nonnegative(),
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: number().int().nonnegative(),
54160
+ deviceId: DeviceIdSchema,
54003
54161
  on: boolean()
54004
54162
  }), _void(), {
54005
54163
  kind: "mutation",
54006
54164
  auth: "protected"
54007
54165
  }), method(object({
54008
- deviceId: number().int().nonnegative(),
54166
+ deviceId: DeviceIdSchema,
54009
54167
  on: boolean()
54010
54168
  }), _void(), {
54011
54169
  kind: "mutation",
54012
54170
  auth: "protected"
54013
54171
  }), method(object({
54014
- deviceId: number().int().nonnegative(),
54172
+ deviceId: DeviceIdSchema,
54015
54173
  on: boolean()
54016
54174
  }), _void(), {
54017
54175
  kind: "mutation",
54018
54176
  auth: "protected"
54019
54177
  }), method(object({
54020
- deviceId: number().int().nonnegative(),
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: union([
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.438" })
74087
+ getVersion: async () => ({ version: "1.2.440" })
73801
74088
  }
73802
74089
  }];
73803
74090
  }
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@camstack/addon-admin-ui",
3
- "version": "1.2.438",
3
+ "version": "1.2.440",
4
4
  "private": false,
5
5
  "type": "module",
6
6
  "description": "Admin UI — Vite frontend build and server-side addon",