@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.
- package/dist/{MotionZonesSettings-Bbrx9VW1.mjs → MotionZonesSettings-DzJf18cG.mjs} +2 -2
- package/dist/{PrivacyMaskSettings-Bc3Nh1vj.mjs → PrivacyMaskSettings-BfcxIzcV.mjs} +4 -4
- package/dist/{SceneMonitorEditor-DoqQ-nbD.mjs → SceneMonitorEditor-CXZ7rmkI.mjs} +3 -3
- package/dist/_stub.js +4956 -4393
- 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
- package/dist/_virtual_mf___mfe_internal__addon_model_studio_page__loadShare___mf_0_camstack_mf_1_types__loadShare__.js-BpItLART.mjs +26 -0
- package/dist/addon-model-studio.css +1 -1
- package/dist/{hostInit-BxoVlAJO.mjs → hostInit-CLORa_rj.mjs} +3 -3
- package/dist/model-studio.addon.js +268 -27
- package/dist/model-studio.addon.mjs +268 -27
- package/dist/{player-overlays-DqOjIJBM.mjs → player-overlays-mDdhIu2Z.mjs} +1 -1
- package/dist/remoteEntry.js +1 -1
- package/dist/{responsive-DMQNbXa7.mjs → responsive-BDYhKoco.mjs} +1 -1
- package/dist/{scene-monitor-copy-D7Oz3W2_.mjs → scene-monitor-copy-CqHEekjf.mjs} +1 -1
- package/dist/{square-cSGFDS5x.mjs → square-Br-2YTir.mjs} +1 -1
- package/dist/{trash-2-8LnhGolp.mjs → trash-2-Dyh-Oss-.mjs} +1 -1
- 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
- package/package.json +1 -1
- 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-
|
|
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$
|
|
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$
|
|
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$
|
|
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$
|
|
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$
|
|
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$
|
|
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$
|
|
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$
|
|
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$
|
|
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$
|
|
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$
|
|
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$
|
|
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$
|
|
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$
|
|
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$
|
|
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$
|
|
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
|
|
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
|
|
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-
|
|
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).
|
|
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-
|
|
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"
|
package/dist/remoteEntry.js
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import { n as e, t } from "./virtual_mf-REMOTE_ENTRY_ID___mfe_internal__addon_model_studio_page__remoteEntry_js-
|
|
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-
|
|
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-
|
|
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"
|
|
@@ -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-
|
|
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
|
}
|