@camstack/addon-model-studio 1.1.268 → 1.1.270

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 (19) hide show
  1. package/dist/{MotionZonesSettings-Bbrx9VW1.mjs → MotionZonesSettings-DzJf18cG.mjs} +2 -2
  2. package/dist/{PrivacyMaskSettings-Bc3Nh1vj.mjs → PrivacyMaskSettings-BfcxIzcV.mjs} +4 -4
  3. package/dist/{SceneMonitorEditor-DoqQ-nbD.mjs → SceneMonitorEditor-CXZ7rmkI.mjs} +3 -3
  4. package/dist/_stub.js +4956 -4393
  5. package/dist/{_virtual_mf-localSharedImportMap___mfe_internal__addon_model_studio_page-BalgjE7Q.mjs → _virtual_mf-localSharedImportMap___mfe_internal__addon_model_studio_page-02gJTlkt.mjs} +4 -4
  6. package/dist/_virtual_mf___mfe_internal__addon_model_studio_page__loadShare___mf_0_camstack_mf_1_types__loadShare__.js-BpItLART.mjs +26 -0
  7. package/dist/addon-model-studio.css +1 -1
  8. package/dist/{hostInit-BxoVlAJO.mjs → hostInit-CLORa_rj.mjs} +3 -3
  9. package/dist/model-studio.addon.js +268 -27
  10. package/dist/model-studio.addon.mjs +268 -27
  11. package/dist/{player-overlays-DqOjIJBM.mjs → player-overlays-mDdhIu2Z.mjs} +1 -1
  12. package/dist/remoteEntry.js +1 -1
  13. package/dist/{responsive-DMQNbXa7.mjs → responsive-BDYhKoco.mjs} +1 -1
  14. package/dist/{scene-monitor-copy-D7Oz3W2_.mjs → scene-monitor-copy-CqHEekjf.mjs} +1 -1
  15. package/dist/{square-cSGFDS5x.mjs → square-Br-2YTir.mjs} +1 -1
  16. package/dist/{trash-2-8LnhGolp.mjs → trash-2-Dyh-Oss-.mjs} +1 -1
  17. package/dist/{virtual_mf-REMOTE_ENTRY_ID___mfe_internal__addon_model_studio_page__remoteEntry_js-BbWnFACc.mjs → virtual_mf-REMOTE_ENTRY_ID___mfe_internal__addon_model_studio_page__remoteEntry_js-CfBTbbuC.mjs} +1 -1
  18. package/package.json +1 -1
  19. package/dist/_virtual_mf___mfe_internal__addon_model_studio_page__loadShare___mf_0_camstack_mf_1_types__loadShare__.js-D4LoTU4p.mjs +0 -26
@@ -5774,7 +5774,7 @@ var ZodIssueCode = {
5774
5774
  var ZodFirstPartyTypeKind;
5775
5775
  ZodFirstPartyTypeKind || (ZodFirstPartyTypeKind = {});
5776
5776
  //#endregion
5777
- //#region ../types/dist/sleep-WsrozGDL.mjs
5777
+ //#region ../types/dist/sleep-BOjuyoPC.mjs
5778
5778
  /**
5779
5779
  * The audio chunk plane's byte format, and the ONE expansion from a coded
5780
5780
  * window to float samples (D455).
@@ -5891,7 +5891,7 @@ function isKeychainStoredField(field) {
5891
5891
  var SECRET_CLEAR = { $secretClear: true };
5892
5892
  /** The `'***'` token D634 redaction writes for non-admins. */
5893
5893
  var LEGACY_DEVICE_REDACTION = "***";
5894
- function isRecord$4(value) {
5894
+ function isRecord$5(value) {
5895
5895
  return typeof value === "object" && value !== null && !Array.isArray(value);
5896
5896
  }
5897
5897
  function makeSecretMarker(ref) {
@@ -5902,12 +5902,12 @@ function makeSecretMarker(ref) {
5902
5902
  }
5903
5903
  /** A stored marker: an object whose `$secret` is a non-empty string. */
5904
5904
  function isSecretMarker(value) {
5905
- if (!isRecord$4(value)) return false;
5905
+ if (!isRecord$5(value)) return false;
5906
5906
  const ref = value["$secret"];
5907
5907
  return typeof ref === "string" && ref.length > 0;
5908
5908
  }
5909
5909
  function isSecretClear(value) {
5910
- return isRecord$4(value) && value["$secretClear"] === true;
5910
+ return isRecord$5(value) && value["$secretClear"] === true;
5911
5911
  }
5912
5912
  /**
5913
5913
  * The UI view of a stored secret field value: a marker becomes "set", inline
@@ -6517,7 +6517,7 @@ var KeychainWriteRefusedError = class extends Error {
6517
6517
  }
6518
6518
  };
6519
6519
  var KEEP = { kind: "keep" };
6520
- function isRecord$3(value) {
6520
+ function isRecord$4(value) {
6521
6521
  return typeof value === "object" && value !== null && !Array.isArray(value);
6522
6522
  }
6523
6523
  function defaultMintId() {
@@ -6530,7 +6530,7 @@ function collectSecretMarkerRefs(value, out = []) {
6530
6530
  return out;
6531
6531
  }
6532
6532
  if (Array.isArray(value)) for (const item of value) collectSecretMarkerRefs(item, out);
6533
- else if (isRecord$3(value)) for (const child of Object.values(value)) collectSecretMarkerRefs(child, out);
6533
+ else if (isRecord$4(value)) for (const child of Object.values(value)) collectSecretMarkerRefs(child, out);
6534
6534
  return out;
6535
6535
  }
6536
6536
  async function storedValueEquals(secrets, marker, candidate) {
@@ -6585,7 +6585,7 @@ function rowId(row, idKey) {
6585
6585
  return null;
6586
6586
  }
6587
6587
  async function writeArray(ctx, node, incoming, stored, fieldPath) {
6588
- const storedRows = Array.isArray(stored) ? stored.filter(isRecord$3) : [];
6588
+ const storedRows = Array.isArray(stored) ? stored.filter(isRecord$4) : [];
6589
6589
  if (!Array.isArray(incoming)) {
6590
6590
  ctx.deletes.push(...collectSecretMarkerRefs(storedRows));
6591
6591
  return {
@@ -6601,7 +6601,7 @@ async function writeArray(ctx, node, incoming, stored, fieldPath) {
6601
6601
  const kept = /* @__PURE__ */ new Set();
6602
6602
  const rows = [];
6603
6603
  for (const row of incoming) {
6604
- if (!isRecord$3(row)) {
6604
+ if (!isRecord$4(row)) {
6605
6605
  rows.push(row);
6606
6606
  continue;
6607
6607
  }
@@ -6626,7 +6626,7 @@ async function writeNode(ctx, node, incoming, stored, fieldPath) {
6626
6626
  case "leaf": return writeLeaf(ctx, incoming, stored, fieldPath);
6627
6627
  case "array": return writeArray(ctx, node, incoming, stored, fieldPath);
6628
6628
  case "object": {
6629
- if (!isRecord$3(incoming)) {
6629
+ if (!isRecord$4(incoming)) {
6630
6630
  if (incoming === void 0) return KEEP;
6631
6631
  ctx.deletes.push(...collectSecretMarkerRefs(stored));
6632
6632
  return {
@@ -6634,7 +6634,7 @@ async function writeNode(ctx, node, incoming, stored, fieldPath) {
6634
6634
  value: incoming
6635
6635
  };
6636
6636
  }
6637
- const storedObj = isRecord$3(stored) ? stored : {};
6637
+ const storedObj = isRecord$4(stored) ? stored : {};
6638
6638
  return {
6639
6639
  kind: "value",
6640
6640
  value: await writeMembers(ctx, node.children, incoming, storedObj, (m) => `${fieldPath}.${m}`)
@@ -6757,7 +6757,7 @@ async function resolveSecretMarkers(value, secrets, options = {}) {
6757
6757
  value: items
6758
6758
  };
6759
6759
  }
6760
- if (isRecord$3(v)) {
6760
+ if (isRecord$4(v)) {
6761
6761
  const out = {};
6762
6762
  for (const [k, child] of Object.entries(v)) {
6763
6763
  const s = substitute(child);
@@ -6789,7 +6789,7 @@ var SecretOverwriteRefusedError = class extends Error {
6789
6789
  this.name = "SecretOverwriteRefusedError";
6790
6790
  }
6791
6791
  };
6792
- function isRecord$2(value) {
6792
+ function isRecord$3(value) {
6793
6793
  return typeof value === "object" && value !== null && !Array.isArray(value);
6794
6794
  }
6795
6795
  function resolvedValue(pass, marker) {
@@ -6818,7 +6818,7 @@ function inArray(pass, incoming, stored) {
6818
6818
  return incoming.map((item, index) => {
6819
6819
  const twin = stored[index];
6820
6820
  if (isSecretMarker(twin)) return typeof item === "string" && item === resolvedValue(pass, twin) ? twin : item;
6821
- if (isRecord$2(item) && isRecord$2(twin)) return inArrayRow(pass, item, twin);
6821
+ if (isRecord$3(item) && isRecord$3(twin)) return inArrayRow(pass, item, twin);
6822
6822
  if (Array.isArray(item) && Array.isArray(twin)) return inArray(pass, item, twin);
6823
6823
  return item;
6824
6824
  });
@@ -6829,7 +6829,7 @@ function inArrayRow(pass, incoming, stored) {
6829
6829
  const twin = stored[key];
6830
6830
  if (isSecretMarker(twin)) {
6831
6831
  if (typeof value === "string" && value === resolvedValue(pass, twin)) out[key] = twin;
6832
- } else if (isRecord$2(value) && isRecord$2(twin)) out[key] = inArrayRow(pass, value, twin);
6832
+ } else if (isRecord$3(value) && isRecord$3(twin)) out[key] = inArrayRow(pass, value, twin);
6833
6833
  else if (Array.isArray(value) && Array.isArray(twin)) out[key] = inArray(pass, value, twin);
6834
6834
  }
6835
6835
  return out;
@@ -6837,7 +6837,7 @@ function inArrayRow(pass, incoming, stored) {
6837
6837
  async function walk(pass, incoming, stored) {
6838
6838
  if (isSecretMarker(stored)) return atMarker(pass, incoming, stored);
6839
6839
  if (Array.isArray(incoming) && Array.isArray(stored)) return inArray(pass, incoming, stored);
6840
- if (!isRecord$2(incoming) || !isRecord$2(stored)) return incoming;
6840
+ if (!isRecord$3(incoming) || !isRecord$3(stored)) return incoming;
6841
6841
  const out = { ...incoming };
6842
6842
  for (const [key, value] of Object.entries(incoming)) out[key] = await walk(pass, value, stored[key]);
6843
6843
  return out;
@@ -6868,7 +6868,7 @@ async function restoreUnchangedSecrets(input) {
6868
6868
  function isJsonEqual(a, b) {
6869
6869
  if (Object.is(a, b)) return true;
6870
6870
  if (Array.isArray(a)) return Array.isArray(b) && a.length === b.length && a.every((v, i) => isJsonEqual(v, b[i]));
6871
- if (isRecord$2(a) && isRecord$2(b)) {
6871
+ if (isRecord$3(a) && isRecord$3(b)) {
6872
6872
  const keys = Object.keys(a);
6873
6873
  if (keys.length !== Object.keys(b).length) return false;
6874
6874
  return keys.every((k) => Object.prototype.hasOwnProperty.call(b, k) && isJsonEqual(a[k], b[k]));
@@ -6892,7 +6892,7 @@ function markerKeysOf(blob, owner) {
6892
6892
  }
6893
6893
  function nodeFromStored(value, owner) {
6894
6894
  if (isSecretMarker(value)) return isSecretRefOwnedBy(value.$secret, owner) ? { kind: "leaf" } : null;
6895
- if (!isRecord$2(value)) return null;
6895
+ if (!isRecord$3(value)) return null;
6896
6896
  const children = /* @__PURE__ */ new Map();
6897
6897
  for (const [key, child] of Object.entries(value)) {
6898
6898
  const node = nodeFromStored(child, owner);
@@ -7680,7 +7680,7 @@ var BaseAddon = class {
7680
7680
  if (!ctx) return;
7681
7681
  const addonId = ctx.id;
7682
7682
  setImmediate(() => {
7683
- ctx.api.addons?.restartAddon?.mutate({ addonId }).then(() => {
7683
+ ctx.api.addons.restartAddon.mutate({ addonId }).then(() => {
7684
7684
  ctx.logger.info("addon auto-restart triggered by restart-required setting change", { meta: { changedFields: patchKeys.filter((k) => restartKeys.has(k)) } });
7685
7685
  }).catch((err) => {
7686
7686
  ctx.logger.error("addon auto-restart failed", { meta: { error: err instanceof Error ? err.message : String(err) } });
@@ -8803,7 +8803,7 @@ object({
8803
8803
  params: record(string(), union([string(), number()])).optional()
8804
8804
  });
8805
8805
  //#endregion
8806
- //#region ../types/dist/err-msg--2RrYiLO.mjs
8806
+ //#region ../types/dist/err-msg-BXKzRBwg.mjs
8807
8807
  var DeviceType = /* @__PURE__ */ function(DeviceType) {
8808
8808
  DeviceType["Camera"] = "camera";
8809
8809
  DeviceType["Hub"] = "hub";
@@ -8895,6 +8895,10 @@ var DeviceType = /* @__PURE__ */ function(DeviceType) {
8895
8895
  * native PetKit (`nodepetkit` `FeederDevice`), reusable by other feeder
8896
8896
  * integrations sharing the same food/desiccant/hopper surface. */
8897
8897
  DeviceType["PetFeeder"] = "pet-feeder";
8898
+ /** Built-in dishwasher — program lifecycle, door / remote-start gates,
8899
+ * salt and rinse-aid levels. Installed with the `dishwasher` cap.
8900
+ * Sources: native Bosch Home Connect, reusable by similar integrations. */
8901
+ DeviceType["Dishwasher"] = "dishwasher";
8898
8902
  return DeviceType;
8899
8903
  }({});
8900
8904
  var DeviceFeature = /* @__PURE__ */ function(DeviceFeature) {
@@ -9142,7 +9146,7 @@ var DeviceRole = /* @__PURE__ */ function(DeviceRole) {
9142
9146
  return DeviceRole;
9143
9147
  }({});
9144
9148
  //#endregion
9145
- //#region ../types/dist/composition-DOwQB_Ua.mjs
9149
+ //#region ../types/dist/composition-CB6PMT9p.mjs
9146
9150
  /**
9147
9151
  * The ffmpeg build every CamStack node downloads, per platform and arch.
9148
9152
  *
@@ -13684,8 +13688,13 @@ var AlertSeveritySchema = _enum([
13684
13688
  "info",
13685
13689
  "success",
13686
13690
  "warning",
13687
- "error"
13691
+ "error",
13692
+ "critical"
13688
13693
  ]);
13694
+ var AlertActionSchema = object({
13695
+ label: string(),
13696
+ href: string().optional()
13697
+ });
13689
13698
  var AlertStatusSchema = _enum([
13690
13699
  "active",
13691
13700
  "in-progress",
@@ -13703,6 +13712,7 @@ var AlertSchema = object({
13703
13712
  severity: AlertSeveritySchema,
13704
13713
  title: string(),
13705
13714
  message: string(),
13715
+ action: AlertActionSchema.optional(),
13706
13716
  status: AlertStatusSchema,
13707
13717
  progress: number().optional(),
13708
13718
  read: boolean(),
@@ -16955,13 +16965,23 @@ method(object({ ownerPrefix: string().min(1).optional() }), object({ tables: arr
16955
16965
  }), RecordQueryResultSchema, { auth: "admin" }), method(object({
16956
16966
  owner: string().min(1),
16957
16967
  kind: RecordKindNameSchema,
16958
- records: array(RecordInputSchema).min(1).max(RECORD_BATCH_MAX),
16968
+ records: array(RecordInputSchema).max(RECORD_BATCH_MAX),
16959
16969
  /** The LAST batch: the copy is complete, the boot guard stops asking. */
16960
16970
  complete: boolean().optional()
16961
- }), object({ adopted: number().int() }), {
16971
+ }).refine((input) => input.records.length > 0 || input.complete === true, { message: "records must be non-empty unless complete is true" }), object({ adopted: number().int() }), {
16962
16972
  kind: "mutation",
16963
16973
  auth: "admin"
16964
- });
16974
+ }), method(object({
16975
+ collection: string().min(1),
16976
+ cursor: string().optional(),
16977
+ limit: number().int().min(1).max(1e3).optional()
16978
+ }), object({
16979
+ rows: array(object({
16980
+ id: string(),
16981
+ data: record(string(), unknown())
16982
+ })),
16983
+ nextCursor: string().nullable()
16984
+ }), { auth: "admin" }), method(object({ collection: string().min(1) }), object({ adopted: boolean() }), { auth: "admin" });
16965
16985
  /**
16966
16986
  * record-entries - the ONE admin surface for every list of user-created entries
16967
16987
  * (D881): notification targets, brokers, LLM profiles, anything an addon
@@ -53661,7 +53681,7 @@ var BatteryStatusSchema = object({
53661
53681
  */
53662
53682
  binary: boolean().optional()
53663
53683
  });
53664
- DeviceType.Camera, DeviceType.Sensor, DeviceType.Button, DeviceType.Switch, DeviceType.PetFeeder, DeviceType.Container, method(object({
53684
+ DeviceType.Camera, DeviceType.Sensor, DeviceType.Button, DeviceType.Switch, DeviceType.PetFeeder, DeviceType.Container, DeviceType.Thermostat, method(object({
53665
53685
  deviceId: number(),
53666
53686
  /** Bound on the wait. Sensible range 3000–10000ms. */
53667
53687
  timeoutMs: number().int().min(500).max(3e4).default(8e3)
@@ -54537,6 +54557,98 @@ object({
54537
54557
  deviceId: number(),
54538
54558
  status: DeviceStatusSchema
54539
54559
  });
54560
+ /**
54561
+ * Smart-dishwasher cap — program lifecycle, door / remote-start gates,
54562
+ * consumable levels (salt, rinse aid) and common program options.
54563
+ *
54564
+ * Sources: native Bosch Home Connect (`dishwasher` device type). Reusable
54565
+ * by any integration that exposes the same program / option surface.
54566
+ *
54567
+ * `kind: 'poll'` — cloud REST APIs typically have no push channel; the
54568
+ * provider refreshes the slice on an interval and eagerly after commands.
54569
+ */
54570
+ var DishwasherStateSchema = _enum([
54571
+ "idle",
54572
+ "running",
54573
+ "paused",
54574
+ "finished",
54575
+ "error",
54576
+ "unavailable"
54577
+ ]);
54578
+ var DishwasherConsumableLevelSchema = _enum([
54579
+ "ok",
54580
+ "low",
54581
+ "empty"
54582
+ ]);
54583
+ object({
54584
+ state: DishwasherStateSchema,
54585
+ /** Active program id/name, or null when none selected / unknown. */
54586
+ program: string().nullable(),
54587
+ /** Program tokens the hardware accepts — drives the UI selector. */
54588
+ availablePrograms: array(string()),
54589
+ /** Minutes remaining on the active cycle, or null when not running. */
54590
+ remainingMinutes: number().int().nonnegative().nullable(),
54591
+ /** Cycle completion 0..100, or null when not applicable. */
54592
+ progressPercent: number().min(0).max(100).nullable(),
54593
+ /** True when the door is reported open. */
54594
+ doorOpen: boolean(),
54595
+ /** True when remote start is allowed (door closed, power on, etc.). */
54596
+ remoteStartAllowed: boolean(),
54597
+ /** Main power / switched-on state. */
54598
+ powerOn: boolean(),
54599
+ saltLevel: DishwasherConsumableLevelSchema.nullable(),
54600
+ rinseAidLevel: DishwasherConsumableLevelSchema.nullable(),
54601
+ halfLoad: boolean(),
54602
+ hygienePlus: boolean(),
54603
+ errorCode: number().nullable(),
54604
+ errorLabel: string().nullable(),
54605
+ lastFetchedAt: number()
54606
+ });
54607
+ DeviceType.Dishwasher, method(object({ deviceId: number().int().nonnegative() }), _void(), {
54608
+ kind: "mutation",
54609
+ auth: "protected"
54610
+ }), method(object({ deviceId: number().int().nonnegative() }), _void(), {
54611
+ kind: "mutation",
54612
+ auth: "protected"
54613
+ }), method(object({ deviceId: number().int().nonnegative() }), _void(), {
54614
+ kind: "mutation",
54615
+ auth: "protected"
54616
+ }), method(object({
54617
+ deviceId: number().int().nonnegative(),
54618
+ program: string().min(1)
54619
+ }), _void(), {
54620
+ kind: "mutation",
54621
+ auth: "protected"
54622
+ }), method(object({
54623
+ deviceId: number().int().nonnegative(),
54624
+ on: boolean()
54625
+ }), _void(), {
54626
+ kind: "mutation",
54627
+ auth: "protected"
54628
+ }), method(object({
54629
+ deviceId: number().int().nonnegative(),
54630
+ on: boolean()
54631
+ }), _void(), {
54632
+ kind: "mutation",
54633
+ auth: "protected"
54634
+ }), method(object({
54635
+ deviceId: number().int().nonnegative(),
54636
+ on: boolean()
54637
+ }), _void(), {
54638
+ kind: "mutation",
54639
+ auth: "protected"
54640
+ }), method(object({
54641
+ deviceId: number().int().nonnegative(),
54642
+ key: string().min(1),
54643
+ value: union([
54644
+ boolean(),
54645
+ string(),
54646
+ number()
54647
+ ])
54648
+ }), _void(), {
54649
+ kind: "mutation",
54650
+ auth: "protected"
54651
+ });
54540
54652
  object({
54541
54653
  /** Ms epoch of the last press. null = never observed since this provider started. */
54542
54654
  lastPressedAt: number().nullable(),
@@ -55102,6 +55214,13 @@ object({
55102
55214
  lastChangedAt: number()
55103
55215
  });
55104
55216
  DeviceType.Sensor;
55217
+ object({
55218
+ /** Radiator valve opening 0 (closed) .. 100 (open). Null = not yet known. */
55219
+ position: number().min(0).max(100).nullable(),
55220
+ /** Ms epoch when the slice was last updated (push or poll). */
55221
+ lastFetchedAt: number()
55222
+ });
55223
+ DeviceType.Thermostat;
55105
55224
  object({
55106
55225
  /** Whether the humidifier is currently on. */
55107
55226
  on: boolean(),
@@ -62266,7 +62385,7 @@ var AccessoryKind = {
62266
62385
  PrivacyMask: DeviceRole.PrivacyMask
62267
62386
  };
62268
62387
  AccessoryKind.Siren, AccessoryKind.Floodlight, AccessoryKind.Spotlight, AccessoryKind.PirSensor, AccessoryKind.Chime, AccessoryKind.Autotrack, AccessoryKind.Nightvision, AccessoryKind.PrivacyMask;
62269
- 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;
62388
+ 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;
62270
62389
  new Set(Object.values(DeviceType));
62271
62390
  Object.freeze({
62272
62391
  "accessories.getStatus": {
@@ -64687,6 +64806,60 @@ Object.freeze({
64687
64806
  addonId: null,
64688
64807
  access: "view"
64689
64808
  },
64809
+ "dishwasher.getStatus": {
64810
+ capName: "dishwasher",
64811
+ capScope: "device",
64812
+ addonId: null,
64813
+ access: "view"
64814
+ },
64815
+ "dishwasher.pause": {
64816
+ capName: "dishwasher",
64817
+ capScope: "device",
64818
+ addonId: null,
64819
+ access: "create"
64820
+ },
64821
+ "dishwasher.setHalfLoad": {
64822
+ capName: "dishwasher",
64823
+ capScope: "device",
64824
+ addonId: null,
64825
+ access: "create"
64826
+ },
64827
+ "dishwasher.setHygienePlus": {
64828
+ capName: "dishwasher",
64829
+ capScope: "device",
64830
+ addonId: null,
64831
+ access: "create"
64832
+ },
64833
+ "dishwasher.setOption": {
64834
+ capName: "dishwasher",
64835
+ capScope: "device",
64836
+ addonId: null,
64837
+ access: "create"
64838
+ },
64839
+ "dishwasher.setPower": {
64840
+ capName: "dishwasher",
64841
+ capScope: "device",
64842
+ addonId: null,
64843
+ access: "create"
64844
+ },
64845
+ "dishwasher.setProgram": {
64846
+ capName: "dishwasher",
64847
+ capScope: "device",
64848
+ addonId: null,
64849
+ access: "create"
64850
+ },
64851
+ "dishwasher.start": {
64852
+ capName: "dishwasher",
64853
+ capScope: "device",
64854
+ addonId: null,
64855
+ access: "create"
64856
+ },
64857
+ "dishwasher.stop": {
64858
+ capName: "dishwasher",
64859
+ capScope: "device",
64860
+ addonId: null,
64861
+ access: "create"
64862
+ },
64690
64863
  "doorbell.getStatus": {
64691
64864
  capName: "doorbell",
64692
64865
  capScope: "device",
@@ -64897,6 +65070,12 @@ Object.freeze({
64897
65070
  addonId: null,
64898
65071
  access: "view"
64899
65072
  },
65073
+ "heatingValve.getStatus": {
65074
+ capName: "heating-valve",
65075
+ capScope: "device",
65076
+ addonId: null,
65077
+ access: "view"
65078
+ },
64900
65079
  "humidifier.getStatus": {
64901
65080
  capName: "humidifier",
64902
65081
  capScope: "device",
@@ -69037,6 +69216,12 @@ Object.freeze({
69037
69216
  addonId: null,
69038
69217
  access: "delete"
69039
69218
  },
69219
+ "storageAdmin.isAdoptedLegacyTable": {
69220
+ capName: "storage-admin",
69221
+ capScope: "system",
69222
+ addonId: null,
69223
+ access: "view"
69224
+ },
69040
69225
  "storageAdmin.listKinds": {
69041
69226
  capName: "storage-admin",
69042
69227
  capScope: "system",
@@ -69049,6 +69234,12 @@ Object.freeze({
69049
69234
  addonId: null,
69050
69235
  access: "view"
69051
69236
  },
69237
+ "storageAdmin.readLegacyCollection": {
69238
+ capName: "storage-admin",
69239
+ capScope: "system",
69240
+ addonId: null,
69241
+ access: "view"
69242
+ },
69052
69243
  "storageAdmin.readRecords": {
69053
69244
  capName: "storage-admin",
69054
69245
  capScope: "system",
@@ -70472,7 +70663,7 @@ Object.freeze({
70472
70663
  access: "create"
70473
70664
  }
70474
70665
  });
70475
- 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;
70666
+ 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;
70476
70667
  DeviceFeature.BatteryOperated;
70477
70668
  Object.freeze({
70478
70669
  "accessories.getStatus": [{
@@ -71296,6 +71487,51 @@ Object.freeze({
71296
71487
  form: "single",
71297
71488
  optional: false
71298
71489
  }],
71490
+ "dishwasher.getStatus": [{
71491
+ name: "deviceId",
71492
+ form: "single",
71493
+ optional: false
71494
+ }],
71495
+ "dishwasher.pause": [{
71496
+ name: "deviceId",
71497
+ form: "single",
71498
+ optional: false
71499
+ }],
71500
+ "dishwasher.setHalfLoad": [{
71501
+ name: "deviceId",
71502
+ form: "single",
71503
+ optional: false
71504
+ }],
71505
+ "dishwasher.setHygienePlus": [{
71506
+ name: "deviceId",
71507
+ form: "single",
71508
+ optional: false
71509
+ }],
71510
+ "dishwasher.setOption": [{
71511
+ name: "deviceId",
71512
+ form: "single",
71513
+ optional: false
71514
+ }],
71515
+ "dishwasher.setPower": [{
71516
+ name: "deviceId",
71517
+ form: "single",
71518
+ optional: false
71519
+ }],
71520
+ "dishwasher.setProgram": [{
71521
+ name: "deviceId",
71522
+ form: "single",
71523
+ optional: false
71524
+ }],
71525
+ "dishwasher.start": [{
71526
+ name: "deviceId",
71527
+ form: "single",
71528
+ optional: false
71529
+ }],
71530
+ "dishwasher.stop": [{
71531
+ name: "deviceId",
71532
+ form: "single",
71533
+ optional: false
71534
+ }],
71299
71535
  "doorbell.getStatus": [{
71300
71536
  name: "deviceId",
71301
71537
  form: "single",
@@ -71365,6 +71601,11 @@ Object.freeze({
71365
71601
  form: "single",
71366
71602
  optional: false
71367
71603
  }],
71604
+ "heatingValve.getStatus": [{
71605
+ name: "deviceId",
71606
+ form: "single",
71607
+ optional: false
71608
+ }],
71368
71609
  "humidifier.getStatus": [{
71369
71610
  name: "deviceId",
71370
71611
  form: "single",
@@ -1,6 +1,6 @@
1
1
  import { S as e, d as t, u as n, v as r } from "./_virtual_mf___mfe_internal__addon_model_studio_page__loadShare__react__loadShare__.js-DMBKVIH7.mjs";
2
2
  import { n as i, r as a, t as o } from "./_virtual_mf___mfe_internal__addon_model_studio_page__loadShare__react_mf_1_jsx_mf_2_runtime__loadShare__.js-ds_Ehzaa.mjs";
3
- import { g as s, h as c } from "./responsive-DMQNbXa7.mjs";
3
+ import { g as s, h as c } from "./responsive-BDYhKoco.mjs";
4
4
  var l = s("chevron-down", [["path", {
5
5
  d: "m6 9 6 6 6-6",
6
6
  key: "qrunsl"
@@ -1,2 +1,2 @@
1
- import { n as e, t } from "./virtual_mf-REMOTE_ENTRY_ID___mfe_internal__addon_model_studio_page__remoteEntry_js-BbWnFACc.mjs";
1
+ import { n as e, t } from "./virtual_mf-REMOTE_ENTRY_ID___mfe_internal__addon_model_studio_page__remoteEntry_js-CfBTbbuC.mjs";
2
2
  export { t as get, e as init };
@@ -1,6 +1,6 @@
1
1
  import { S as e, d as t, g as n, i as r, l as i, n as a, r as o, u as s, v as c, y as l } from "./_virtual_mf___mfe_internal__addon_model_studio_page__loadShare__react__loadShare__.js-DMBKVIH7.mjs";
2
2
  import "./_virtual_mf___mfe_internal__addon_model_studio_page__loadShare__react_mf_1_jsx_mf_2_runtime__loadShare__.js-ds_Ehzaa.mjs";
3
- import { g as u } from "./_virtual_mf___mfe_internal__addon_model_studio_page__loadShare___mf_0_camstack_mf_1_types__loadShare__.js-D4LoTU4p.mjs";
3
+ import { g as u } from "./_virtual_mf___mfe_internal__addon_model_studio_page__loadShare___mf_0_camstack_mf_1_types__loadShare__.js-BpItLART.mjs";
4
4
  //#region ../../node_modules/lucide-react/dist/esm/shared/src/utils/mergeClasses.js
5
5
  e();
6
6
  var d = (...e) => e.filter((e, t, n) => !!e && e.trim() !== "" && n.indexOf(e) === t).join(" ").trim(), f = (e) => e.replace(/([a-z0-9])([A-Z])/g, "$1-$2").toLowerCase(), p = (e) => e.replace(/^([A-Z])|[\s-_]+(\w)/g, (e, t, n) => n ? n.toUpperCase() : t.toLowerCase()), m = (e) => {
@@ -1,6 +1,6 @@
1
1
  import { S as e, g as t, l as n, v as r } from "./_virtual_mf___mfe_internal__addon_model_studio_page__loadShare__react__loadShare__.js-DMBKVIH7.mjs";
2
2
  import { n as i } from "./ui-text-BqZa5BNK.mjs";
3
- import { g as a } from "./responsive-DMQNbXa7.mjs";
3
+ import { g as a } from "./responsive-BDYhKoco.mjs";
4
4
  var o = a("camera", [["path", {
5
5
  d: "M13.997 4a2 2 0 0 1 1.76 1.05l.486.9A2 2 0 0 0 18.003 7H20a2 2 0 0 1 2 2v9a2 2 0 0 1-2 2H4a2 2 0 0 1-2-2V9a2 2 0 0 1 2-2h1.997a2 2 0 0 0 1.759-1.048l.489-.904A2 2 0 0 1 10.004 4z",
6
6
  key: "18u6gg"
@@ -1,4 +1,4 @@
1
- import { g as e } from "./responsive-DMQNbXa7.mjs";
1
+ import { g as e } from "./responsive-BDYhKoco.mjs";
2
2
  var t = e("eye-off", [
3
3
  ["path", {
4
4
  d: "M10.733 5.076a10.744 10.744 0 0 1 11.205 6.575 1 1 0 0 1 0 .696 10.747 10.747 0 0 1-1.444 2.49",
@@ -1,4 +1,4 @@
1
- import { g as e } from "./responsive-DMQNbXa7.mjs";
1
+ import { g as e } from "./responsive-BDYhKoco.mjs";
2
2
  var t = e("trash-2", [
3
3
  ["path", {
4
4
  d: "M10 11v6",
@@ -2753,7 +2753,7 @@ async function rr(e) {
2753
2753
  }
2754
2754
  }
2755
2755
  async function ir() {
2756
- return tr ||= rr(() => import("./_virtual_mf-localSharedImportMap___mfe_internal__addon_model_studio_page-BalgjE7Q.mjs")).catch((e) => {
2756
+ return tr ||= rr(() => import("./_virtual_mf-localSharedImportMap___mfe_internal__addon_model_studio_page-02gJTlkt.mjs")).catch((e) => {
2757
2757
  throw tr = void 0, e;
2758
2758
  }), tr;
2759
2759
  }
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@camstack/addon-model-studio",
3
- "version": "1.1.268",
3
+ "version": "1.1.270",
4
4
  "description": "Custom detection model registry, conversion & distribution for CamStack",
5
5
  "keywords": [
6
6
  "camstack",