@camstack/addon-admin-ui 1.2.435 → 1.2.437

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 (142) hide show
  1. package/dist/assets/{AddonAssetIcon-DwyvMm0j.js → AddonAssetIcon-C3Ltt0yX.js} +1 -1
  2. package/dist/assets/Addons-CkBmnKjV.js +4 -0
  3. package/dist/assets/{AdminPage-Dla2hgly.js → AdminPage-B7Z1OWO3.js} +1 -1
  4. package/dist/assets/{AdminSectionedPage-C6laWV2D.js → AdminSectionedPage-USP4OV_Y.js} +1 -1
  5. package/dist/assets/AiProfiles-QWD8PlMr.js +3 -0
  6. package/dist/assets/{BrokerForm-XPsm7VqN.js → BrokerForm-BxmxiIRw.js} +1 -1
  7. package/dist/assets/Build-CXn4HT3p.js +40 -0
  8. package/dist/assets/{Calendars-D9aQ6xfy.js → Calendars-DN9ln21d.js} +1 -1
  9. package/dist/assets/Cluster-tgWdVHND.js +1 -0
  10. package/dist/assets/ClusterStepModel-BizBdfIU.js +1 -0
  11. package/dist/assets/{CompositionEditor-Djw5jKF1.js → CompositionEditor-GiDCG4Aj.js} +1 -1
  12. package/dist/assets/CompositionEditorPage-wfYMLlvy.js +1 -0
  13. package/dist/assets/Data-CmT5GPx9.js +2 -0
  14. package/dist/assets/DeviceDetail-moNYFDGE.js +2 -0
  15. package/dist/assets/{DeviceDoActionFields-DLWA9-J9.js → DeviceDoActionFields-C1LG9nW0.js} +1 -1
  16. package/dist/assets/{Devices-C1k3PqRv.js → Devices-837Dt931.js} +1 -1
  17. package/dist/assets/{EmbedPlayerPage-Dz0lVYTn.js → EmbedPlayerPage-Crrh_6YT.js} +1 -1
  18. package/dist/assets/Identity-CNNb8wrU.js +1 -0
  19. package/dist/assets/IntegrationDetail-BER_0Zaz.js +1 -0
  20. package/dist/assets/IntegrationHub-BEu0isNR.js +1 -0
  21. package/dist/assets/Integrations-CuZucOyR.js +1 -0
  22. package/dist/assets/Integrations-Sjh868gF.js +1 -0
  23. package/dist/assets/Library-B4Nw3n28.js +1 -0
  24. package/dist/assets/Locations-B7dC2DyF.js +3 -0
  25. package/dist/assets/{Logs-C5wdcV2o.js → Logs-4XWMmfpD.js} +1 -1
  26. package/dist/assets/{MaskShapeCanvas-WPSz6MvT.js → MaskShapeCanvas-Bwqusno0.js} +1 -1
  27. package/dist/assets/{MotionZonesSettings-CxZucl1G.js → MotionZonesSettings-CZbGV_dv.js} +1 -1
  28. package/dist/assets/MyAccess-TAG05L5N.js +2 -0
  29. package/dist/assets/Network-ReY1qUoQ.js +1 -0
  30. package/dist/assets/{NodeAddonsSettingsPanel-CSyREPja.js → NodeAddonsSettingsPanel-DIKEaj5p.js} +1 -1
  31. package/dist/assets/Notifications-CqTEfaZ_.js +1 -0
  32. package/dist/assets/{PrivacyMaskSettings-DQ7Xe8cq.js → PrivacyMaskSettings-CTKUYU5o.js} +1 -1
  33. package/dist/assets/Recordings-EMQC9iqz.js +1 -0
  34. package/dist/assets/ScanNetworkModal-DK98Sjd4.js +1 -0
  35. package/dist/assets/SceneMonitorEditor-CG4pADlP.js +1 -0
  36. package/dist/assets/SessionsList-B1Ni2lo_.js +2 -0
  37. package/dist/assets/{Showroom-DZRq9gks.js → Showroom-BKLoHB4Z.js} +1 -1
  38. package/dist/assets/System-DEOHPmr3.js +1 -0
  39. package/dist/assets/{Terminal-Dt_ribAu.js → Terminal-dVu7TTAE.js} +3 -3
  40. package/dist/assets/{Viewer-DbBh61dj.js → Viewer-B9mEIKqz.js} +1 -1
  41. package/dist/assets/{_virtual_mf-localSharedImportMap___mfe_internal__admin_ui_host-CEvIRFB4.js → _virtual_mf-localSharedImportMap___mfe_internal__admin_ui_host-BX43JXOX.js} +1 -1
  42. package/dist/assets/{addon-icons-context-r49093mC.js → addon-icons-context-BjcmJD_J.js} +1 -1
  43. package/dist/assets/{archive-CgDcyTmT.js → archive-Bcg0gLgY.js} +1 -1
  44. package/dist/assets/{authed-media-CN55sP4S.js → authed-media-Cf82_ejX.js} +1 -1
  45. package/dist/assets/{bell-off-CdHPL528.js → bell-off-BnByNJjy.js} +1 -1
  46. package/dist/assets/{board-model-DXmUHcnO.js → board-model-D8m2YmcS.js} +1 -1
  47. package/dist/assets/{boxes-DJvrVSZy.js → boxes-V2c7jrxe.js} +1 -1
  48. package/dist/assets/circle-slash-B_FzZotu.js +1 -0
  49. package/dist/assets/client-CUuI767h.js +358 -0
  50. package/dist/assets/{cloud-upload-BkTrXwKr.js → cloud-upload-aziKggfg.js} +1 -1
  51. package/dist/assets/crop-DzZyuK_f.js +1 -0
  52. package/dist/assets/{device-integration-icon-CViPS882.js → device-integration-icon-3UfBj_i6.js} +1 -1
  53. package/dist/assets/device-picker-model-DJj6igTj.js +1 -0
  54. package/dist/assets/dist-DsAwO6-i.js +358 -0
  55. package/dist/assets/{dist-0P_zMe7Y.js → dist-t-gGaOd0.js} +1 -1
  56. package/dist/assets/{eraser-BCiOGK5K.js → eraser-CsYhDDbY.js} +1 -1
  57. package/dist/assets/{hard-drive-download-Df-zlQQG.js → hard-drive-download-CWqd_JKb.js} +1 -1
  58. package/dist/assets/{history-CWpQe6k9.js → history-DOf9zSG-.js} +1 -1
  59. package/dist/assets/{hostInit-Cnw529bc.js → hostInit-BCqJwB4Y.js} +1 -1
  60. package/dist/assets/i18n-RHwbGLC0.js +1 -0
  61. package/dist/assets/icons-BrAHwVJD.js +1 -0
  62. package/dist/assets/index-CeO2wVZi.js +4 -0
  63. package/dist/assets/index-M0Q7O5pF.css +2 -0
  64. package/dist/assets/{key-CZcpRn4A.js → key-D0VHbthb.js} +1 -1
  65. package/dist/assets/{key-round-BBPO5HDK.js → key-round-CasJ848Z.js} +1 -1
  66. package/dist/assets/{layers-DLOgDOBH.js → layers-CFb4zoU6.js} +1 -1
  67. package/dist/assets/{linked-devices-model-f_SAvOZs.js → linked-devices-model-DbkbB7KM.js} +1 -1
  68. package/dist/assets/{list-ordered-BaNkdvWk.js → list-ordered-B14sQnH2.js} +1 -1
  69. package/dist/assets/{location-owned-usage-BFxIuzRL.js → location-owned-usage-C21QUrwl.js} +1 -1
  70. package/dist/assets/{log-in-CL3_o1dD.js → log-in-UZRiT8Rq.js} +1 -1
  71. package/dist/assets/{memory-stick-CHkvUw7C.js → memory-stick-l6hXPEuG.js} +1 -1
  72. package/dist/assets/{message-square-plus-CIeWtcNn.js → message-square-plus-C3grB9GT.js} +1 -1
  73. package/dist/assets/{mf-entry-bootstrap-0-657dd3ff.js → mf-entry-bootstrap-0-5e54ea5d.js} +2 -2
  74. package/dist/assets/{mic-off-DS8OGDQW.js → mic-off-wol-RBiS.js} +1 -1
  75. package/dist/assets/{monitor-off-DC9Xug5Z.js → monitor-off-BUehkWHc.js} +1 -1
  76. package/dist/assets/{monitor-smartphone-CS_5BZqr.js → monitor-smartphone-CCDiXDn-.js} +1 -1
  77. package/dist/assets/mount-DJj6igTj.js +1 -0
  78. package/dist/assets/{notification-schedule-field-aMkV5LtX.js → notification-schedule-field-DiZ-TJBp.js} +1 -1
  79. package/dist/assets/player-overlays-Db_o1Zm2.js +1 -0
  80. package/dist/assets/{recycle-wY_-o-u0.js → recycle-BVxTT0po.js} +1 -1
  81. package/dist/assets/remoteEntry-DSZ__m0a.js +1 -0
  82. package/dist/assets/{scan-eye-A6IBODIs.js → scan-eye-C5EKCLMY.js} +1 -1
  83. package/dist/assets/{scissors-BzZpfzIa.js → scissors-DjP6Unuk.js} +1 -1
  84. package/dist/assets/{search-x-DqjVJK7_.js → search-x-gjRI7PKB.js} +1 -1
  85. package/dist/assets/{send-BDCQEx8-.js → send-CV6GWVOX.js} +1 -1
  86. package/dist/assets/{settings-2-BBgeb4tF.js → settings-2--KyzHb5N.js} +1 -1
  87. package/dist/assets/{speaker-Bw_8wVkA.js → speaker-CnmwOCLp.js} +1 -1
  88. package/dist/assets/src-CL0G8g2V.js +67 -0
  89. package/dist/assets/{timer-reset-CNH944ar.js → timer-reset-nORqwwje.js} +1 -1
  90. package/dist/assets/{ungroup-D4fdKtA6.js → ungroup-BQTGGbbf.js} +1 -1
  91. package/dist/assets/{unlink-BKDNubwr.js → unlink-669jprEf.js} +1 -1
  92. package/dist/assets/{usb-CU5DhEWn.js → usb-BT4hzhxS.js} +1 -1
  93. package/dist/assets/{use-scenes-feed-Bk660KRI.js → use-scenes-feed-DCExYbbk.js} +1 -1
  94. package/dist/assets/{use-stationary-objects-BVxOU14q.js → use-stationary-objects-DPwgtmOw.js} +1 -1
  95. package/dist/assets/useEventInvalidation-DJj6igTj.js +1 -0
  96. package/dist/assets/{useNodeUrlSelection-Bg0rHiIl.js → useNodeUrlSelection-ibxCoFYh.js} +1 -1
  97. package/dist/assets/user-round-NWWWc7PC.js +1 -0
  98. package/dist/assets/{user-x-DRzptq94.js → user-x-Drhirj9Y.js} +1 -1
  99. package/dist/assets/{video-CEzO-5-D.js → video-Dzs93Xor.js} +1 -1
  100. package/dist/assets/{virtual_mf-REMOTE_ENTRY_ID___mfe_internal__admin_ui_host__remoteEntry-_hash_-DzDhE-1_.js → virtual_mf-REMOTE_ENTRY_ID___mfe_internal__admin_ui_host__remoteEntry-_hash_-DVRZb8h3.js} +2 -2
  101. package/dist/index.html +11 -11
  102. package/dist/server/addon.js +269 -28
  103. package/package.json +1 -1
  104. package/dist/assets/Addons-N1hcMjwi.js +0 -4
  105. package/dist/assets/AiProfiles-CW5cr9nz.js +0 -3
  106. package/dist/assets/Build-Dg7gaee7.js +0 -40
  107. package/dist/assets/Cluster-NV3ZrTk7.js +0 -1
  108. package/dist/assets/ClusterStepModel-BUROhnKA.js +0 -1
  109. package/dist/assets/CompositionEditorPage-BNAhOgDE.js +0 -1
  110. package/dist/assets/Data-Bkq3Cr_h.js +0 -2
  111. package/dist/assets/DeviceDetail-BR_FSl-i.js +0 -2
  112. package/dist/assets/Identity-CJN1MNrJ.js +0 -1
  113. package/dist/assets/IntegrationDetail-DomJ4oV8.js +0 -1
  114. package/dist/assets/IntegrationHub-BTJM3uSD.js +0 -1
  115. package/dist/assets/Integrations-B3EhTwi-.js +0 -1
  116. package/dist/assets/Integrations-w1Zb-AYc.js +0 -1
  117. package/dist/assets/Library-BLUxFISX.js +0 -1
  118. package/dist/assets/Locations-5WWzr64x.js +0 -3
  119. package/dist/assets/MyAccess-2bAujGDI.js +0 -2
  120. package/dist/assets/Network-DFt5Vib8.js +0 -1
  121. package/dist/assets/Notifications-KG9O3i8q.js +0 -1
  122. package/dist/assets/Recordings-BbQTlUaN.js +0 -1
  123. package/dist/assets/ScanNetworkModal-Dw7_YiJk.js +0 -1
  124. package/dist/assets/SceneMonitorEditor-CQtUJ-Cg.js +0 -1
  125. package/dist/assets/SessionsList-BuiRHWv-.js +0 -2
  126. package/dist/assets/System-n6EeqhH2.js +0 -1
  127. package/dist/assets/circle-slash-BvkFL8F1.js +0 -1
  128. package/dist/assets/client-CVIfL49c.js +0 -358
  129. package/dist/assets/crop-DUVdBcFC.js +0 -1
  130. package/dist/assets/device-picker-model-mxypQ5EF.js +0 -1
  131. package/dist/assets/dist-U5_IP253.js +0 -358
  132. package/dist/assets/i18n-CmGpgquB.js +0 -1
  133. package/dist/assets/icons-aI8aLvw4.js +0 -1
  134. package/dist/assets/index-DKqvG7BE.css +0 -2
  135. package/dist/assets/index-DkNBNJNl.js +0 -4
  136. package/dist/assets/mount-mxypQ5EF.js +0 -1
  137. package/dist/assets/octagon-alert-Cdtac8l_.js +0 -1
  138. package/dist/assets/player-overlays-CZXV2ES3.js +0 -1
  139. package/dist/assets/remoteEntry-BFNP-i5_.js +0 -1
  140. package/dist/assets/src-DOs8Kg5s.js +0 -67
  141. package/dist/assets/useEventInvalidation-mxypQ5EF.js +0 -1
  142. package/dist/assets/user-round-CYlbEszq.js +0 -1
@@ -5406,7 +5406,7 @@ var ZodIssueCode = {
5406
5406
  var ZodFirstPartyTypeKind;
5407
5407
  ZodFirstPartyTypeKind || (ZodFirstPartyTypeKind = {});
5408
5408
  //#endregion
5409
- //#region ../types/dist/sleep-WsrozGDL.mjs
5409
+ //#region ../types/dist/sleep-BOjuyoPC.mjs
5410
5410
  /**
5411
5411
  * The audio chunk plane's byte format, and the ONE expansion from a coded
5412
5412
  * window to float samples (D455).
@@ -5523,7 +5523,7 @@ function isKeychainStoredField(field) {
5523
5523
  var SECRET_CLEAR = { $secretClear: true };
5524
5524
  /** The `'***'` token D634 redaction writes for non-admins. */
5525
5525
  var LEGACY_DEVICE_REDACTION = "***";
5526
- function isRecord$4(value) {
5526
+ function isRecord$5(value) {
5527
5527
  return typeof value === "object" && value !== null && !Array.isArray(value);
5528
5528
  }
5529
5529
  function makeSecretMarker(ref) {
@@ -5534,12 +5534,12 @@ function makeSecretMarker(ref) {
5534
5534
  }
5535
5535
  /** A stored marker: an object whose `$secret` is a non-empty string. */
5536
5536
  function isSecretMarker(value) {
5537
- if (!isRecord$4(value)) return false;
5537
+ if (!isRecord$5(value)) return false;
5538
5538
  const ref = value["$secret"];
5539
5539
  return typeof ref === "string" && ref.length > 0;
5540
5540
  }
5541
5541
  function isSecretClear(value) {
5542
- return isRecord$4(value) && value["$secretClear"] === true;
5542
+ return isRecord$5(value) && value["$secretClear"] === true;
5543
5543
  }
5544
5544
  /**
5545
5545
  * The UI view of a stored secret field value: a marker becomes "set", inline
@@ -6149,7 +6149,7 @@ var KeychainWriteRefusedError = class extends Error {
6149
6149
  }
6150
6150
  };
6151
6151
  var KEEP = { kind: "keep" };
6152
- function isRecord$3(value) {
6152
+ function isRecord$4(value) {
6153
6153
  return typeof value === "object" && value !== null && !Array.isArray(value);
6154
6154
  }
6155
6155
  function defaultMintId() {
@@ -6162,7 +6162,7 @@ function collectSecretMarkerRefs(value, out = []) {
6162
6162
  return out;
6163
6163
  }
6164
6164
  if (Array.isArray(value)) for (const item of value) collectSecretMarkerRefs(item, out);
6165
- else if (isRecord$3(value)) for (const child of Object.values(value)) collectSecretMarkerRefs(child, out);
6165
+ else if (isRecord$4(value)) for (const child of Object.values(value)) collectSecretMarkerRefs(child, out);
6166
6166
  return out;
6167
6167
  }
6168
6168
  async function storedValueEquals(secrets, marker, candidate) {
@@ -6217,7 +6217,7 @@ function rowId(row, idKey) {
6217
6217
  return null;
6218
6218
  }
6219
6219
  async function writeArray(ctx, node, incoming, stored, fieldPath) {
6220
- const storedRows = Array.isArray(stored) ? stored.filter(isRecord$3) : [];
6220
+ const storedRows = Array.isArray(stored) ? stored.filter(isRecord$4) : [];
6221
6221
  if (!Array.isArray(incoming)) {
6222
6222
  ctx.deletes.push(...collectSecretMarkerRefs(storedRows));
6223
6223
  return {
@@ -6233,7 +6233,7 @@ async function writeArray(ctx, node, incoming, stored, fieldPath) {
6233
6233
  const kept = /* @__PURE__ */ new Set();
6234
6234
  const rows = [];
6235
6235
  for (const row of incoming) {
6236
- if (!isRecord$3(row)) {
6236
+ if (!isRecord$4(row)) {
6237
6237
  rows.push(row);
6238
6238
  continue;
6239
6239
  }
@@ -6258,7 +6258,7 @@ async function writeNode(ctx, node, incoming, stored, fieldPath) {
6258
6258
  case "leaf": return writeLeaf(ctx, incoming, stored, fieldPath);
6259
6259
  case "array": return writeArray(ctx, node, incoming, stored, fieldPath);
6260
6260
  case "object": {
6261
- if (!isRecord$3(incoming)) {
6261
+ if (!isRecord$4(incoming)) {
6262
6262
  if (incoming === void 0) return KEEP;
6263
6263
  ctx.deletes.push(...collectSecretMarkerRefs(stored));
6264
6264
  return {
@@ -6266,7 +6266,7 @@ async function writeNode(ctx, node, incoming, stored, fieldPath) {
6266
6266
  value: incoming
6267
6267
  };
6268
6268
  }
6269
- const storedObj = isRecord$3(stored) ? stored : {};
6269
+ const storedObj = isRecord$4(stored) ? stored : {};
6270
6270
  return {
6271
6271
  kind: "value",
6272
6272
  value: await writeMembers(ctx, node.children, incoming, storedObj, (m) => `${fieldPath}.${m}`)
@@ -6389,7 +6389,7 @@ async function resolveSecretMarkers(value, secrets, options = {}) {
6389
6389
  value: items
6390
6390
  };
6391
6391
  }
6392
- if (isRecord$3(v)) {
6392
+ if (isRecord$4(v)) {
6393
6393
  const out = {};
6394
6394
  for (const [k, child] of Object.entries(v)) {
6395
6395
  const s = substitute(child);
@@ -6421,7 +6421,7 @@ var SecretOverwriteRefusedError = class extends Error {
6421
6421
  this.name = "SecretOverwriteRefusedError";
6422
6422
  }
6423
6423
  };
6424
- function isRecord$2(value) {
6424
+ function isRecord$3(value) {
6425
6425
  return typeof value === "object" && value !== null && !Array.isArray(value);
6426
6426
  }
6427
6427
  function resolvedValue(pass, marker) {
@@ -6450,7 +6450,7 @@ function inArray(pass, incoming, stored) {
6450
6450
  return incoming.map((item, index) => {
6451
6451
  const twin = stored[index];
6452
6452
  if (isSecretMarker(twin)) return typeof item === "string" && item === resolvedValue(pass, twin) ? twin : item;
6453
- if (isRecord$2(item) && isRecord$2(twin)) return inArrayRow(pass, item, twin);
6453
+ if (isRecord$3(item) && isRecord$3(twin)) return inArrayRow(pass, item, twin);
6454
6454
  if (Array.isArray(item) && Array.isArray(twin)) return inArray(pass, item, twin);
6455
6455
  return item;
6456
6456
  });
@@ -6461,7 +6461,7 @@ function inArrayRow(pass, incoming, stored) {
6461
6461
  const twin = stored[key];
6462
6462
  if (isSecretMarker(twin)) {
6463
6463
  if (typeof value === "string" && value === resolvedValue(pass, twin)) out[key] = twin;
6464
- } else if (isRecord$2(value) && isRecord$2(twin)) out[key] = inArrayRow(pass, value, twin);
6464
+ } else if (isRecord$3(value) && isRecord$3(twin)) out[key] = inArrayRow(pass, value, twin);
6465
6465
  else if (Array.isArray(value) && Array.isArray(twin)) out[key] = inArray(pass, value, twin);
6466
6466
  }
6467
6467
  return out;
@@ -6469,7 +6469,7 @@ function inArrayRow(pass, incoming, stored) {
6469
6469
  async function walk(pass, incoming, stored) {
6470
6470
  if (isSecretMarker(stored)) return atMarker(pass, incoming, stored);
6471
6471
  if (Array.isArray(incoming) && Array.isArray(stored)) return inArray(pass, incoming, stored);
6472
- if (!isRecord$2(incoming) || !isRecord$2(stored)) return incoming;
6472
+ if (!isRecord$3(incoming) || !isRecord$3(stored)) return incoming;
6473
6473
  const out = { ...incoming };
6474
6474
  for (const [key, value] of Object.entries(incoming)) out[key] = await walk(pass, value, stored[key]);
6475
6475
  return out;
@@ -6500,7 +6500,7 @@ async function restoreUnchangedSecrets(input) {
6500
6500
  function isJsonEqual(a, b) {
6501
6501
  if (Object.is(a, b)) return true;
6502
6502
  if (Array.isArray(a)) return Array.isArray(b) && a.length === b.length && a.every((v, i) => isJsonEqual(v, b[i]));
6503
- if (isRecord$2(a) && isRecord$2(b)) {
6503
+ if (isRecord$3(a) && isRecord$3(b)) {
6504
6504
  const keys = Object.keys(a);
6505
6505
  if (keys.length !== Object.keys(b).length) return false;
6506
6506
  return keys.every((k) => Object.prototype.hasOwnProperty.call(b, k) && isJsonEqual(a[k], b[k]));
@@ -6524,7 +6524,7 @@ function markerKeysOf(blob, owner) {
6524
6524
  }
6525
6525
  function nodeFromStored(value, owner) {
6526
6526
  if (isSecretMarker(value)) return isSecretRefOwnedBy(value.$secret, owner) ? { kind: "leaf" } : null;
6527
- if (!isRecord$2(value)) return null;
6527
+ if (!isRecord$3(value)) return null;
6528
6528
  const children = /* @__PURE__ */ new Map();
6529
6529
  for (const [key, child] of Object.entries(value)) {
6530
6530
  const node = nodeFromStored(child, owner);
@@ -7312,7 +7312,7 @@ var BaseAddon = class {
7312
7312
  if (!ctx) return;
7313
7313
  const addonId = ctx.id;
7314
7314
  setImmediate(() => {
7315
- ctx.api.addons?.restartAddon?.mutate({ addonId }).then(() => {
7315
+ ctx.api.addons.restartAddon.mutate({ addonId }).then(() => {
7316
7316
  ctx.logger.info("addon auto-restart triggered by restart-required setting change", { meta: { changedFields: patchKeys.filter((k) => restartKeys.has(k)) } });
7317
7317
  }).catch((err) => {
7318
7318
  ctx.logger.error("addon auto-restart failed", { meta: { error: err instanceof Error ? err.message : String(err) } });
@@ -8372,7 +8372,7 @@ object({
8372
8372
  params: record(string(), union([string(), number()])).optional()
8373
8373
  });
8374
8374
  //#endregion
8375
- //#region ../types/dist/err-msg--2RrYiLO.mjs
8375
+ //#region ../types/dist/err-msg-BXKzRBwg.mjs
8376
8376
  var DeviceType = /* @__PURE__ */ function(DeviceType) {
8377
8377
  DeviceType["Camera"] = "camera";
8378
8378
  DeviceType["Hub"] = "hub";
@@ -8464,6 +8464,10 @@ var DeviceType = /* @__PURE__ */ function(DeviceType) {
8464
8464
  * native PetKit (`nodepetkit` `FeederDevice`), reusable by other feeder
8465
8465
  * integrations sharing the same food/desiccant/hopper surface. */
8466
8466
  DeviceType["PetFeeder"] = "pet-feeder";
8467
+ /** Built-in dishwasher — program lifecycle, door / remote-start gates,
8468
+ * salt and rinse-aid levels. Installed with the `dishwasher` cap.
8469
+ * Sources: native Bosch Home Connect, reusable by similar integrations. */
8470
+ DeviceType["Dishwasher"] = "dishwasher";
8467
8471
  return DeviceType;
8468
8472
  }({});
8469
8473
  var DeviceFeature = /* @__PURE__ */ function(DeviceFeature) {
@@ -8711,7 +8715,7 @@ var DeviceRole = /* @__PURE__ */ function(DeviceRole) {
8711
8715
  return DeviceRole;
8712
8716
  }({});
8713
8717
  //#endregion
8714
- //#region ../types/dist/composition-DOwQB_Ua.mjs
8718
+ //#region ../types/dist/composition-CB6PMT9p.mjs
8715
8719
  /**
8716
8720
  * The ffmpeg build every CamStack node downloads, per platform and arch.
8717
8721
  *
@@ -13097,8 +13101,13 @@ var AlertSeveritySchema = _enum([
13097
13101
  "info",
13098
13102
  "success",
13099
13103
  "warning",
13100
- "error"
13104
+ "error",
13105
+ "critical"
13101
13106
  ]);
13107
+ var AlertActionSchema = object({
13108
+ label: string(),
13109
+ href: string().optional()
13110
+ });
13102
13111
  var AlertStatusSchema = _enum([
13103
13112
  "active",
13104
13113
  "in-progress",
@@ -13116,6 +13125,7 @@ var AlertSchema = object({
13116
13125
  severity: AlertSeveritySchema,
13117
13126
  title: string(),
13118
13127
  message: string(),
13128
+ action: AlertActionSchema.optional(),
13119
13129
  status: AlertStatusSchema,
13120
13130
  progress: number().optional(),
13121
13131
  read: boolean(),
@@ -16340,13 +16350,23 @@ method(object({ ownerPrefix: string().min(1).optional() }), object({ tables: arr
16340
16350
  }), RecordQueryResultSchema, { auth: "admin" }), method(object({
16341
16351
  owner: string().min(1),
16342
16352
  kind: RecordKindNameSchema,
16343
- records: array(RecordInputSchema).min(1).max(RECORD_BATCH_MAX),
16353
+ records: array(RecordInputSchema).max(RECORD_BATCH_MAX),
16344
16354
  /** The LAST batch: the copy is complete, the boot guard stops asking. */
16345
16355
  complete: boolean().optional()
16346
- }), object({ adopted: number().int() }), {
16356
+ }).refine((input) => input.records.length > 0 || input.complete === true, { message: "records must be non-empty unless complete is true" }), object({ adopted: number().int() }), {
16347
16357
  kind: "mutation",
16348
16358
  auth: "admin"
16349
- });
16359
+ }), method(object({
16360
+ collection: string().min(1),
16361
+ cursor: string().optional(),
16362
+ limit: number().int().min(1).max(1e3).optional()
16363
+ }), object({
16364
+ rows: array(object({
16365
+ id: string(),
16366
+ data: record(string(), unknown())
16367
+ })),
16368
+ nextCursor: string().nullable()
16369
+ }), { auth: "admin" }), method(object({ collection: string().min(1) }), object({ adopted: boolean() }), { auth: "admin" });
16350
16370
  /**
16351
16371
  * record-entries - the ONE admin surface for every list of user-created entries
16352
16372
  * (D881): notification targets, brokers, LLM profiles, anything an addon
@@ -53040,7 +53060,7 @@ var BatteryStatusSchema = object({
53040
53060
  */
53041
53061
  binary: boolean().optional()
53042
53062
  });
53043
- DeviceType.Camera, DeviceType.Sensor, DeviceType.Button, DeviceType.Switch, DeviceType.PetFeeder, DeviceType.Container, method(object({
53063
+ DeviceType.Camera, DeviceType.Sensor, DeviceType.Button, DeviceType.Switch, DeviceType.PetFeeder, DeviceType.Container, DeviceType.Thermostat, method(object({
53044
53064
  deviceId: number(),
53045
53065
  /** Bound on the wait. Sensible range 3000–10000ms. */
53046
53066
  timeoutMs: number().int().min(500).max(3e4).default(8e3)
@@ -53916,6 +53936,98 @@ object({
53916
53936
  deviceId: number(),
53917
53937
  status: DeviceStatusSchema
53918
53938
  });
53939
+ /**
53940
+ * Smart-dishwasher cap — program lifecycle, door / remote-start gates,
53941
+ * consumable levels (salt, rinse aid) and common program options.
53942
+ *
53943
+ * Sources: native Bosch Home Connect (`dishwasher` device type). Reusable
53944
+ * by any integration that exposes the same program / option surface.
53945
+ *
53946
+ * `kind: 'poll'` — cloud REST APIs typically have no push channel; the
53947
+ * provider refreshes the slice on an interval and eagerly after commands.
53948
+ */
53949
+ var DishwasherStateSchema = _enum([
53950
+ "idle",
53951
+ "running",
53952
+ "paused",
53953
+ "finished",
53954
+ "error",
53955
+ "unavailable"
53956
+ ]);
53957
+ var DishwasherConsumableLevelSchema = _enum([
53958
+ "ok",
53959
+ "low",
53960
+ "empty"
53961
+ ]);
53962
+ object({
53963
+ state: DishwasherStateSchema,
53964
+ /** Active program id/name, or null when none selected / unknown. */
53965
+ program: string().nullable(),
53966
+ /** Program tokens the hardware accepts — drives the UI selector. */
53967
+ availablePrograms: array(string()),
53968
+ /** Minutes remaining on the active cycle, or null when not running. */
53969
+ remainingMinutes: number().int().nonnegative().nullable(),
53970
+ /** Cycle completion 0..100, or null when not applicable. */
53971
+ 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(),
53978
+ saltLevel: DishwasherConsumableLevelSchema.nullable(),
53979
+ rinseAidLevel: DishwasherConsumableLevelSchema.nullable(),
53980
+ halfLoad: boolean(),
53981
+ hygienePlus: boolean(),
53982
+ errorCode: number().nullable(),
53983
+ errorLabel: string().nullable(),
53984
+ lastFetchedAt: number()
53985
+ });
53986
+ DeviceType.Dishwasher, method(object({ deviceId: number().int().nonnegative() }), _void(), {
53987
+ kind: "mutation",
53988
+ auth: "protected"
53989
+ }), method(object({ deviceId: number().int().nonnegative() }), _void(), {
53990
+ kind: "mutation",
53991
+ auth: "protected"
53992
+ }), method(object({ deviceId: number().int().nonnegative() }), _void(), {
53993
+ kind: "mutation",
53994
+ auth: "protected"
53995
+ }), method(object({
53996
+ deviceId: number().int().nonnegative(),
53997
+ program: string().min(1)
53998
+ }), _void(), {
53999
+ kind: "mutation",
54000
+ auth: "protected"
54001
+ }), method(object({
54002
+ deviceId: number().int().nonnegative(),
54003
+ on: boolean()
54004
+ }), _void(), {
54005
+ kind: "mutation",
54006
+ auth: "protected"
54007
+ }), method(object({
54008
+ deviceId: number().int().nonnegative(),
54009
+ on: boolean()
54010
+ }), _void(), {
54011
+ kind: "mutation",
54012
+ auth: "protected"
54013
+ }), method(object({
54014
+ deviceId: number().int().nonnegative(),
54015
+ on: boolean()
54016
+ }), _void(), {
54017
+ kind: "mutation",
54018
+ auth: "protected"
54019
+ }), method(object({
54020
+ deviceId: number().int().nonnegative(),
54021
+ key: string().min(1),
54022
+ value: union([
54023
+ boolean(),
54024
+ string(),
54025
+ number()
54026
+ ])
54027
+ }), _void(), {
54028
+ kind: "mutation",
54029
+ auth: "protected"
54030
+ });
53919
54031
  object({
53920
54032
  /** Ms epoch of the last press. null = never observed since this provider started. */
53921
54033
  lastPressedAt: number().nullable(),
@@ -54481,6 +54593,13 @@ object({
54481
54593
  lastChangedAt: number()
54482
54594
  });
54483
54595
  DeviceType.Sensor;
54596
+ object({
54597
+ /** Radiator valve opening 0 (closed) .. 100 (open). Null = not yet known. */
54598
+ position: number().min(0).max(100).nullable(),
54599
+ /** Ms epoch when the slice was last updated (push or poll). */
54600
+ lastFetchedAt: number()
54601
+ });
54602
+ DeviceType.Thermostat;
54484
54603
  object({
54485
54604
  /** Whether the humidifier is currently on. */
54486
54605
  on: boolean(),
@@ -61547,7 +61666,7 @@ var AccessoryKind = {
61547
61666
  PrivacyMask: DeviceRole.PrivacyMask
61548
61667
  };
61549
61668
  AccessoryKind.Siren, AccessoryKind.Floodlight, AccessoryKind.Spotlight, AccessoryKind.PirSensor, AccessoryKind.Chime, AccessoryKind.Autotrack, AccessoryKind.Nightvision, AccessoryKind.PrivacyMask;
61550
- DeviceType.Cover, DeviceType.Valve, DeviceType.Humidifier, DeviceType.WaterHeater, DeviceType.Camera, DeviceType.Hub, DeviceType.Switch, DeviceType.Siren, DeviceType.Light, DeviceType.Fan, DeviceType.Sensor, DeviceType.Thermostat, DeviceType.Climate, DeviceType.Button, DeviceType.EventEmitter, DeviceType.Update, DeviceType.Generic, DeviceType.Notifier, DeviceType.Script, DeviceType.Automation, DeviceType.Lock, DeviceType.MediaPlayer, DeviceType.AlarmPanel, DeviceType.Control, DeviceType.Presence, DeviceType.Weather, DeviceType.Vacuum, DeviceType.LawnMower, DeviceType.Container, DeviceType.Image, DeviceType.PetFeeder;
61669
+ DeviceType.Cover, DeviceType.Valve, DeviceType.Humidifier, DeviceType.WaterHeater, DeviceType.Camera, DeviceType.Hub, DeviceType.Switch, DeviceType.Siren, DeviceType.Light, DeviceType.Fan, DeviceType.Sensor, DeviceType.Thermostat, DeviceType.Climate, DeviceType.Button, DeviceType.EventEmitter, DeviceType.Update, DeviceType.Generic, DeviceType.Notifier, DeviceType.Script, DeviceType.Automation, DeviceType.Lock, DeviceType.MediaPlayer, DeviceType.AlarmPanel, DeviceType.Control, DeviceType.Presence, DeviceType.Weather, DeviceType.Vacuum, DeviceType.LawnMower, DeviceType.Container, DeviceType.Image, DeviceType.PetFeeder, DeviceType.Dishwasher;
61551
61670
  new Set(Object.values(DeviceType));
61552
61671
  Object.freeze({
61553
61672
  "accessories.getStatus": {
@@ -63968,6 +64087,60 @@ Object.freeze({
63968
64087
  addonId: null,
63969
64088
  access: "view"
63970
64089
  },
64090
+ "dishwasher.getStatus": {
64091
+ capName: "dishwasher",
64092
+ capScope: "device",
64093
+ addonId: null,
64094
+ access: "view"
64095
+ },
64096
+ "dishwasher.pause": {
64097
+ capName: "dishwasher",
64098
+ capScope: "device",
64099
+ addonId: null,
64100
+ access: "create"
64101
+ },
64102
+ "dishwasher.setHalfLoad": {
64103
+ capName: "dishwasher",
64104
+ capScope: "device",
64105
+ addonId: null,
64106
+ access: "create"
64107
+ },
64108
+ "dishwasher.setHygienePlus": {
64109
+ capName: "dishwasher",
64110
+ capScope: "device",
64111
+ addonId: null,
64112
+ access: "create"
64113
+ },
64114
+ "dishwasher.setOption": {
64115
+ capName: "dishwasher",
64116
+ capScope: "device",
64117
+ addonId: null,
64118
+ access: "create"
64119
+ },
64120
+ "dishwasher.setPower": {
64121
+ capName: "dishwasher",
64122
+ capScope: "device",
64123
+ addonId: null,
64124
+ access: "create"
64125
+ },
64126
+ "dishwasher.setProgram": {
64127
+ capName: "dishwasher",
64128
+ capScope: "device",
64129
+ addonId: null,
64130
+ access: "create"
64131
+ },
64132
+ "dishwasher.start": {
64133
+ capName: "dishwasher",
64134
+ capScope: "device",
64135
+ addonId: null,
64136
+ access: "create"
64137
+ },
64138
+ "dishwasher.stop": {
64139
+ capName: "dishwasher",
64140
+ capScope: "device",
64141
+ addonId: null,
64142
+ access: "create"
64143
+ },
63971
64144
  "doorbell.getStatus": {
63972
64145
  capName: "doorbell",
63973
64146
  capScope: "device",
@@ -64178,6 +64351,12 @@ Object.freeze({
64178
64351
  addonId: null,
64179
64352
  access: "view"
64180
64353
  },
64354
+ "heatingValve.getStatus": {
64355
+ capName: "heating-valve",
64356
+ capScope: "device",
64357
+ addonId: null,
64358
+ access: "view"
64359
+ },
64181
64360
  "humidifier.getStatus": {
64182
64361
  capName: "humidifier",
64183
64362
  capScope: "device",
@@ -68318,6 +68497,12 @@ Object.freeze({
68318
68497
  addonId: null,
68319
68498
  access: "delete"
68320
68499
  },
68500
+ "storageAdmin.isAdoptedLegacyTable": {
68501
+ capName: "storage-admin",
68502
+ capScope: "system",
68503
+ addonId: null,
68504
+ access: "view"
68505
+ },
68321
68506
  "storageAdmin.listKinds": {
68322
68507
  capName: "storage-admin",
68323
68508
  capScope: "system",
@@ -68330,6 +68515,12 @@ Object.freeze({
68330
68515
  addonId: null,
68331
68516
  access: "view"
68332
68517
  },
68518
+ "storageAdmin.readLegacyCollection": {
68519
+ capName: "storage-admin",
68520
+ capScope: "system",
68521
+ addonId: null,
68522
+ access: "view"
68523
+ },
68333
68524
  "storageAdmin.readRecords": {
68334
68525
  capName: "storage-admin",
68335
68526
  capScope: "system",
@@ -69753,7 +69944,7 @@ Object.freeze({
69753
69944
  access: "create"
69754
69945
  }
69755
69946
  });
69756
- DeviceType.Camera, DeviceType.Hub, DeviceType.Light, DeviceType.Siren, DeviceType.Switch, DeviceType.Sensor, DeviceType.Thermostat, DeviceType.Climate, DeviceType.Button, DeviceType.EventEmitter, DeviceType.Update, DeviceType.Generic, DeviceType.Notifier, DeviceType.Script, DeviceType.Automation, DeviceType.Lock, DeviceType.Cover, DeviceType.Valve, DeviceType.Humidifier, DeviceType.WaterHeater, DeviceType.Fan, DeviceType.MediaPlayer, DeviceType.AlarmPanel, DeviceType.Control, DeviceType.Presence, DeviceType.Weather, DeviceType.Vacuum, DeviceType.LawnMower, DeviceType.Container, DeviceType.Image, DeviceType.PetFeeder;
69947
+ DeviceType.Camera, DeviceType.Hub, DeviceType.Light, DeviceType.Siren, DeviceType.Switch, DeviceType.Sensor, DeviceType.Thermostat, DeviceType.Climate, DeviceType.Button, DeviceType.EventEmitter, DeviceType.Update, DeviceType.Generic, DeviceType.Notifier, DeviceType.Script, DeviceType.Automation, DeviceType.Lock, DeviceType.Cover, DeviceType.Valve, DeviceType.Humidifier, DeviceType.WaterHeater, DeviceType.Fan, DeviceType.MediaPlayer, DeviceType.AlarmPanel, DeviceType.Control, DeviceType.Presence, DeviceType.Weather, DeviceType.Vacuum, DeviceType.LawnMower, DeviceType.Container, DeviceType.Image, DeviceType.PetFeeder, DeviceType.Dishwasher;
69757
69948
  DeviceFeature.BatteryOperated;
69758
69949
  Object.freeze({
69759
69950
  "accessories.getStatus": [{
@@ -70577,6 +70768,51 @@ Object.freeze({
70577
70768
  form: "single",
70578
70769
  optional: false
70579
70770
  }],
70771
+ "dishwasher.getStatus": [{
70772
+ name: "deviceId",
70773
+ form: "single",
70774
+ optional: false
70775
+ }],
70776
+ "dishwasher.pause": [{
70777
+ name: "deviceId",
70778
+ form: "single",
70779
+ optional: false
70780
+ }],
70781
+ "dishwasher.setHalfLoad": [{
70782
+ name: "deviceId",
70783
+ form: "single",
70784
+ optional: false
70785
+ }],
70786
+ "dishwasher.setHygienePlus": [{
70787
+ name: "deviceId",
70788
+ form: "single",
70789
+ optional: false
70790
+ }],
70791
+ "dishwasher.setOption": [{
70792
+ name: "deviceId",
70793
+ form: "single",
70794
+ optional: false
70795
+ }],
70796
+ "dishwasher.setPower": [{
70797
+ name: "deviceId",
70798
+ form: "single",
70799
+ optional: false
70800
+ }],
70801
+ "dishwasher.setProgram": [{
70802
+ name: "deviceId",
70803
+ form: "single",
70804
+ optional: false
70805
+ }],
70806
+ "dishwasher.start": [{
70807
+ name: "deviceId",
70808
+ form: "single",
70809
+ optional: false
70810
+ }],
70811
+ "dishwasher.stop": [{
70812
+ name: "deviceId",
70813
+ form: "single",
70814
+ optional: false
70815
+ }],
70580
70816
  "doorbell.getStatus": [{
70581
70817
  name: "deviceId",
70582
70818
  form: "single",
@@ -70646,6 +70882,11 @@ Object.freeze({
70646
70882
  form: "single",
70647
70883
  optional: false
70648
70884
  }],
70885
+ "heatingValve.getStatus": [{
70886
+ name: "deviceId",
70887
+ form: "single",
70888
+ optional: false
70889
+ }],
70649
70890
  "humidifier.getStatus": [{
70650
70891
  name: "deviceId",
70651
70892
  form: "single",
@@ -73556,7 +73797,7 @@ var AdminUIAddon = class extends BaseAddon {
73556
73797
  capability: adminUiCapability,
73557
73798
  provider: {
73558
73799
  getStaticDir: async () => ({ staticDir: resolveAdminUiDistDir() }),
73559
- getVersion: async () => ({ version: "1.2.435" })
73800
+ getVersion: async () => ({ version: "1.2.437" })
73560
73801
  }
73561
73802
  }];
73562
73803
  }
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@camstack/addon-admin-ui",
3
- "version": "1.2.435",
3
+ "version": "1.2.437",
4
4
  "private": false,
5
5
  "type": "module",
6
6
  "description": "Admin UI — Vite frontend build and server-side addon",