@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
|
@@ -36,7 +36,7 @@ async function r() {
|
|
|
36
36
|
}
|
|
37
37
|
},
|
|
38
38
|
"@camstack/types": {
|
|
39
|
-
version: "1.2.
|
|
39
|
+
version: "1.2.382",
|
|
40
40
|
scope: "default",
|
|
41
41
|
shareConfig: {
|
|
42
42
|
singleton: !0,
|
|
@@ -45,7 +45,7 @@ async function r() {
|
|
|
45
45
|
}
|
|
46
46
|
},
|
|
47
47
|
"@camstack/sdk": {
|
|
48
|
-
version: "1.2.
|
|
48
|
+
version: "1.2.133",
|
|
49
49
|
scope: "default",
|
|
50
50
|
shareConfig: {
|
|
51
51
|
singleton: !0,
|
|
@@ -81,7 +81,7 @@ async function r() {
|
|
|
81
81
|
}
|
|
82
82
|
},
|
|
83
83
|
"@camstack/ui-library": {
|
|
84
|
-
version: "1.2.
|
|
84
|
+
version: "1.2.300",
|
|
85
85
|
scope: "default",
|
|
86
86
|
shareConfig: {
|
|
87
87
|
singleton: !0,
|
|
@@ -5800,7 +5800,7 @@ var ZodIssueCode = {
|
|
|
5800
5800
|
var ZodFirstPartyTypeKind;
|
|
5801
5801
|
ZodFirstPartyTypeKind || (ZodFirstPartyTypeKind = {});
|
|
5802
5802
|
//#endregion
|
|
5803
|
-
//#region ../types/dist/sleep-
|
|
5803
|
+
//#region ../types/dist/sleep-BOjuyoPC.mjs
|
|
5804
5804
|
/**
|
|
5805
5805
|
* The audio chunk plane's byte format, and the ONE expansion from a coded
|
|
5806
5806
|
* window to float samples (D455).
|
|
@@ -5917,7 +5917,7 @@ function isKeychainStoredField(field) {
|
|
|
5917
5917
|
var SECRET_CLEAR = { $secretClear: true };
|
|
5918
5918
|
/** The `'***'` token D634 redaction writes for non-admins. */
|
|
5919
5919
|
var LEGACY_DEVICE_REDACTION = "***";
|
|
5920
|
-
function isRecord$
|
|
5920
|
+
function isRecord$5(value) {
|
|
5921
5921
|
return typeof value === "object" && value !== null && !Array.isArray(value);
|
|
5922
5922
|
}
|
|
5923
5923
|
function makeSecretMarker(ref) {
|
|
@@ -5928,12 +5928,12 @@ function makeSecretMarker(ref) {
|
|
|
5928
5928
|
}
|
|
5929
5929
|
/** A stored marker: an object whose `$secret` is a non-empty string. */
|
|
5930
5930
|
function isSecretMarker(value) {
|
|
5931
|
-
if (!isRecord$
|
|
5931
|
+
if (!isRecord$5(value)) return false;
|
|
5932
5932
|
const ref = value["$secret"];
|
|
5933
5933
|
return typeof ref === "string" && ref.length > 0;
|
|
5934
5934
|
}
|
|
5935
5935
|
function isSecretClear(value) {
|
|
5936
|
-
return isRecord$
|
|
5936
|
+
return isRecord$5(value) && value["$secretClear"] === true;
|
|
5937
5937
|
}
|
|
5938
5938
|
/**
|
|
5939
5939
|
* The UI view of a stored secret field value: a marker becomes "set", inline
|
|
@@ -6543,7 +6543,7 @@ var KeychainWriteRefusedError = class extends Error {
|
|
|
6543
6543
|
}
|
|
6544
6544
|
};
|
|
6545
6545
|
var KEEP = { kind: "keep" };
|
|
6546
|
-
function isRecord$
|
|
6546
|
+
function isRecord$4(value) {
|
|
6547
6547
|
return typeof value === "object" && value !== null && !Array.isArray(value);
|
|
6548
6548
|
}
|
|
6549
6549
|
function defaultMintId() {
|
|
@@ -6556,7 +6556,7 @@ function collectSecretMarkerRefs(value, out = []) {
|
|
|
6556
6556
|
return out;
|
|
6557
6557
|
}
|
|
6558
6558
|
if (Array.isArray(value)) for (const item of value) collectSecretMarkerRefs(item, out);
|
|
6559
|
-
else if (isRecord$
|
|
6559
|
+
else if (isRecord$4(value)) for (const child of Object.values(value)) collectSecretMarkerRefs(child, out);
|
|
6560
6560
|
return out;
|
|
6561
6561
|
}
|
|
6562
6562
|
async function storedValueEquals(secrets, marker, candidate) {
|
|
@@ -6611,7 +6611,7 @@ function rowId(row, idKey) {
|
|
|
6611
6611
|
return null;
|
|
6612
6612
|
}
|
|
6613
6613
|
async function writeArray(ctx, node, incoming, stored, fieldPath) {
|
|
6614
|
-
const storedRows = Array.isArray(stored) ? stored.filter(isRecord$
|
|
6614
|
+
const storedRows = Array.isArray(stored) ? stored.filter(isRecord$4) : [];
|
|
6615
6615
|
if (!Array.isArray(incoming)) {
|
|
6616
6616
|
ctx.deletes.push(...collectSecretMarkerRefs(storedRows));
|
|
6617
6617
|
return {
|
|
@@ -6627,7 +6627,7 @@ async function writeArray(ctx, node, incoming, stored, fieldPath) {
|
|
|
6627
6627
|
const kept = /* @__PURE__ */ new Set();
|
|
6628
6628
|
const rows = [];
|
|
6629
6629
|
for (const row of incoming) {
|
|
6630
|
-
if (!isRecord$
|
|
6630
|
+
if (!isRecord$4(row)) {
|
|
6631
6631
|
rows.push(row);
|
|
6632
6632
|
continue;
|
|
6633
6633
|
}
|
|
@@ -6652,7 +6652,7 @@ async function writeNode(ctx, node, incoming, stored, fieldPath) {
|
|
|
6652
6652
|
case "leaf": return writeLeaf(ctx, incoming, stored, fieldPath);
|
|
6653
6653
|
case "array": return writeArray(ctx, node, incoming, stored, fieldPath);
|
|
6654
6654
|
case "object": {
|
|
6655
|
-
if (!isRecord$
|
|
6655
|
+
if (!isRecord$4(incoming)) {
|
|
6656
6656
|
if (incoming === void 0) return KEEP;
|
|
6657
6657
|
ctx.deletes.push(...collectSecretMarkerRefs(stored));
|
|
6658
6658
|
return {
|
|
@@ -6660,7 +6660,7 @@ async function writeNode(ctx, node, incoming, stored, fieldPath) {
|
|
|
6660
6660
|
value: incoming
|
|
6661
6661
|
};
|
|
6662
6662
|
}
|
|
6663
|
-
const storedObj = isRecord$
|
|
6663
|
+
const storedObj = isRecord$4(stored) ? stored : {};
|
|
6664
6664
|
return {
|
|
6665
6665
|
kind: "value",
|
|
6666
6666
|
value: await writeMembers(ctx, node.children, incoming, storedObj, (m) => `${fieldPath}.${m}`)
|
|
@@ -6783,7 +6783,7 @@ async function resolveSecretMarkers(value, secrets, options = {}) {
|
|
|
6783
6783
|
value: items
|
|
6784
6784
|
};
|
|
6785
6785
|
}
|
|
6786
|
-
if (isRecord$
|
|
6786
|
+
if (isRecord$4(v)) {
|
|
6787
6787
|
const out = {};
|
|
6788
6788
|
for (const [k, child] of Object.entries(v)) {
|
|
6789
6789
|
const s = substitute(child);
|
|
@@ -6815,7 +6815,7 @@ var SecretOverwriteRefusedError = class extends Error {
|
|
|
6815
6815
|
this.name = "SecretOverwriteRefusedError";
|
|
6816
6816
|
}
|
|
6817
6817
|
};
|
|
6818
|
-
function isRecord$
|
|
6818
|
+
function isRecord$3(value) {
|
|
6819
6819
|
return typeof value === "object" && value !== null && !Array.isArray(value);
|
|
6820
6820
|
}
|
|
6821
6821
|
function resolvedValue(pass, marker) {
|
|
@@ -6844,7 +6844,7 @@ function inArray(pass, incoming, stored) {
|
|
|
6844
6844
|
return incoming.map((item, index) => {
|
|
6845
6845
|
const twin = stored[index];
|
|
6846
6846
|
if (isSecretMarker(twin)) return typeof item === "string" && item === resolvedValue(pass, twin) ? twin : item;
|
|
6847
|
-
if (isRecord$
|
|
6847
|
+
if (isRecord$3(item) && isRecord$3(twin)) return inArrayRow(pass, item, twin);
|
|
6848
6848
|
if (Array.isArray(item) && Array.isArray(twin)) return inArray(pass, item, twin);
|
|
6849
6849
|
return item;
|
|
6850
6850
|
});
|
|
@@ -6855,7 +6855,7 @@ function inArrayRow(pass, incoming, stored) {
|
|
|
6855
6855
|
const twin = stored[key];
|
|
6856
6856
|
if (isSecretMarker(twin)) {
|
|
6857
6857
|
if (typeof value === "string" && value === resolvedValue(pass, twin)) out[key] = twin;
|
|
6858
|
-
} else if (isRecord$
|
|
6858
|
+
} else if (isRecord$3(value) && isRecord$3(twin)) out[key] = inArrayRow(pass, value, twin);
|
|
6859
6859
|
else if (Array.isArray(value) && Array.isArray(twin)) out[key] = inArray(pass, value, twin);
|
|
6860
6860
|
}
|
|
6861
6861
|
return out;
|
|
@@ -6863,7 +6863,7 @@ function inArrayRow(pass, incoming, stored) {
|
|
|
6863
6863
|
async function walk(pass, incoming, stored) {
|
|
6864
6864
|
if (isSecretMarker(stored)) return atMarker(pass, incoming, stored);
|
|
6865
6865
|
if (Array.isArray(incoming) && Array.isArray(stored)) return inArray(pass, incoming, stored);
|
|
6866
|
-
if (!isRecord$
|
|
6866
|
+
if (!isRecord$3(incoming) || !isRecord$3(stored)) return incoming;
|
|
6867
6867
|
const out = { ...incoming };
|
|
6868
6868
|
for (const [key, value] of Object.entries(incoming)) out[key] = await walk(pass, value, stored[key]);
|
|
6869
6869
|
return out;
|
|
@@ -6894,7 +6894,7 @@ async function restoreUnchangedSecrets(input) {
|
|
|
6894
6894
|
function isJsonEqual(a, b) {
|
|
6895
6895
|
if (Object.is(a, b)) return true;
|
|
6896
6896
|
if (Array.isArray(a)) return Array.isArray(b) && a.length === b.length && a.every((v, i) => isJsonEqual(v, b[i]));
|
|
6897
|
-
if (isRecord$
|
|
6897
|
+
if (isRecord$3(a) && isRecord$3(b)) {
|
|
6898
6898
|
const keys = Object.keys(a);
|
|
6899
6899
|
if (keys.length !== Object.keys(b).length) return false;
|
|
6900
6900
|
return keys.every((k) => Object.prototype.hasOwnProperty.call(b, k) && isJsonEqual(a[k], b[k]));
|
|
@@ -6918,7 +6918,7 @@ function markerKeysOf(blob, owner) {
|
|
|
6918
6918
|
}
|
|
6919
6919
|
function nodeFromStored(value, owner) {
|
|
6920
6920
|
if (isSecretMarker(value)) return isSecretRefOwnedBy(value.$secret, owner) ? { kind: "leaf" } : null;
|
|
6921
|
-
if (!isRecord$
|
|
6921
|
+
if (!isRecord$3(value)) return null;
|
|
6922
6922
|
const children = /* @__PURE__ */ new Map();
|
|
6923
6923
|
for (const [key, child] of Object.entries(value)) {
|
|
6924
6924
|
const node = nodeFromStored(child, owner);
|
|
@@ -7706,7 +7706,7 @@ var BaseAddon = class {
|
|
|
7706
7706
|
if (!ctx) return;
|
|
7707
7707
|
const addonId = ctx.id;
|
|
7708
7708
|
setImmediate(() => {
|
|
7709
|
-
ctx.api.addons
|
|
7709
|
+
ctx.api.addons.restartAddon.mutate({ addonId }).then(() => {
|
|
7710
7710
|
ctx.logger.info("addon auto-restart triggered by restart-required setting change", { meta: { changedFields: patchKeys.filter((k) => restartKeys.has(k)) } });
|
|
7711
7711
|
}).catch((err) => {
|
|
7712
7712
|
ctx.logger.error("addon auto-restart failed", { meta: { error: err instanceof Error ? err.message : String(err) } });
|
|
@@ -8829,7 +8829,7 @@ object({
|
|
|
8829
8829
|
params: record(string(), union([string(), number()])).optional()
|
|
8830
8830
|
});
|
|
8831
8831
|
//#endregion
|
|
8832
|
-
//#region ../types/dist/err-msg
|
|
8832
|
+
//#region ../types/dist/err-msg-BXKzRBwg.mjs
|
|
8833
8833
|
var DeviceType = /* @__PURE__ */ function(DeviceType) {
|
|
8834
8834
|
DeviceType["Camera"] = "camera";
|
|
8835
8835
|
DeviceType["Hub"] = "hub";
|
|
@@ -8921,6 +8921,10 @@ var DeviceType = /* @__PURE__ */ function(DeviceType) {
|
|
|
8921
8921
|
* native PetKit (`nodepetkit` `FeederDevice`), reusable by other feeder
|
|
8922
8922
|
* integrations sharing the same food/desiccant/hopper surface. */
|
|
8923
8923
|
DeviceType["PetFeeder"] = "pet-feeder";
|
|
8924
|
+
/** Built-in dishwasher — program lifecycle, door / remote-start gates,
|
|
8925
|
+
* salt and rinse-aid levels. Installed with the `dishwasher` cap.
|
|
8926
|
+
* Sources: native Bosch Home Connect, reusable by similar integrations. */
|
|
8927
|
+
DeviceType["Dishwasher"] = "dishwasher";
|
|
8924
8928
|
return DeviceType;
|
|
8925
8929
|
}({});
|
|
8926
8930
|
var DeviceFeature = /* @__PURE__ */ function(DeviceFeature) {
|
|
@@ -9168,7 +9172,7 @@ var DeviceRole = /* @__PURE__ */ function(DeviceRole) {
|
|
|
9168
9172
|
return DeviceRole;
|
|
9169
9173
|
}({});
|
|
9170
9174
|
//#endregion
|
|
9171
|
-
//#region ../types/dist/composition-
|
|
9175
|
+
//#region ../types/dist/composition-CB6PMT9p.mjs
|
|
9172
9176
|
/**
|
|
9173
9177
|
* The ffmpeg build every CamStack node downloads, per platform and arch.
|
|
9174
9178
|
*
|
|
@@ -13710,8 +13714,13 @@ var AlertSeveritySchema = _enum([
|
|
|
13710
13714
|
"info",
|
|
13711
13715
|
"success",
|
|
13712
13716
|
"warning",
|
|
13713
|
-
"error"
|
|
13717
|
+
"error",
|
|
13718
|
+
"critical"
|
|
13714
13719
|
]);
|
|
13720
|
+
var AlertActionSchema = object({
|
|
13721
|
+
label: string(),
|
|
13722
|
+
href: string().optional()
|
|
13723
|
+
});
|
|
13715
13724
|
var AlertStatusSchema = _enum([
|
|
13716
13725
|
"active",
|
|
13717
13726
|
"in-progress",
|
|
@@ -13729,6 +13738,7 @@ var AlertSchema = object({
|
|
|
13729
13738
|
severity: AlertSeveritySchema,
|
|
13730
13739
|
title: string(),
|
|
13731
13740
|
message: string(),
|
|
13741
|
+
action: AlertActionSchema.optional(),
|
|
13732
13742
|
status: AlertStatusSchema,
|
|
13733
13743
|
progress: number().optional(),
|
|
13734
13744
|
read: boolean(),
|
|
@@ -16981,13 +16991,23 @@ method(object({ ownerPrefix: string().min(1).optional() }), object({ tables: arr
|
|
|
16981
16991
|
}), RecordQueryResultSchema, { auth: "admin" }), method(object({
|
|
16982
16992
|
owner: string().min(1),
|
|
16983
16993
|
kind: RecordKindNameSchema,
|
|
16984
|
-
records: array(RecordInputSchema).
|
|
16994
|
+
records: array(RecordInputSchema).max(RECORD_BATCH_MAX),
|
|
16985
16995
|
/** The LAST batch: the copy is complete, the boot guard stops asking. */
|
|
16986
16996
|
complete: boolean().optional()
|
|
16987
|
-
}), object({ adopted: number().int() }), {
|
|
16997
|
+
}).refine((input) => input.records.length > 0 || input.complete === true, { message: "records must be non-empty unless complete is true" }), object({ adopted: number().int() }), {
|
|
16988
16998
|
kind: "mutation",
|
|
16989
16999
|
auth: "admin"
|
|
16990
|
-
})
|
|
17000
|
+
}), method(object({
|
|
17001
|
+
collection: string().min(1),
|
|
17002
|
+
cursor: string().optional(),
|
|
17003
|
+
limit: number().int().min(1).max(1e3).optional()
|
|
17004
|
+
}), object({
|
|
17005
|
+
rows: array(object({
|
|
17006
|
+
id: string(),
|
|
17007
|
+
data: record(string(), unknown())
|
|
17008
|
+
})),
|
|
17009
|
+
nextCursor: string().nullable()
|
|
17010
|
+
}), { auth: "admin" }), method(object({ collection: string().min(1) }), object({ adopted: boolean() }), { auth: "admin" });
|
|
16991
17011
|
/**
|
|
16992
17012
|
* record-entries - the ONE admin surface for every list of user-created entries
|
|
16993
17013
|
* (D881): notification targets, brokers, LLM profiles, anything an addon
|
|
@@ -53687,7 +53707,7 @@ var BatteryStatusSchema = object({
|
|
|
53687
53707
|
*/
|
|
53688
53708
|
binary: boolean().optional()
|
|
53689
53709
|
});
|
|
53690
|
-
DeviceType.Camera, DeviceType.Sensor, DeviceType.Button, DeviceType.Switch, DeviceType.PetFeeder, DeviceType.Container, method(object({
|
|
53710
|
+
DeviceType.Camera, DeviceType.Sensor, DeviceType.Button, DeviceType.Switch, DeviceType.PetFeeder, DeviceType.Container, DeviceType.Thermostat, method(object({
|
|
53691
53711
|
deviceId: number(),
|
|
53692
53712
|
/** Bound on the wait. Sensible range 3000–10000ms. */
|
|
53693
53713
|
timeoutMs: number().int().min(500).max(3e4).default(8e3)
|
|
@@ -54563,6 +54583,98 @@ object({
|
|
|
54563
54583
|
deviceId: number(),
|
|
54564
54584
|
status: DeviceStatusSchema
|
|
54565
54585
|
});
|
|
54586
|
+
/**
|
|
54587
|
+
* Smart-dishwasher cap — program lifecycle, door / remote-start gates,
|
|
54588
|
+
* consumable levels (salt, rinse aid) and common program options.
|
|
54589
|
+
*
|
|
54590
|
+
* Sources: native Bosch Home Connect (`dishwasher` device type). Reusable
|
|
54591
|
+
* by any integration that exposes the same program / option surface.
|
|
54592
|
+
*
|
|
54593
|
+
* `kind: 'poll'` — cloud REST APIs typically have no push channel; the
|
|
54594
|
+
* provider refreshes the slice on an interval and eagerly after commands.
|
|
54595
|
+
*/
|
|
54596
|
+
var DishwasherStateSchema = _enum([
|
|
54597
|
+
"idle",
|
|
54598
|
+
"running",
|
|
54599
|
+
"paused",
|
|
54600
|
+
"finished",
|
|
54601
|
+
"error",
|
|
54602
|
+
"unavailable"
|
|
54603
|
+
]);
|
|
54604
|
+
var DishwasherConsumableLevelSchema = _enum([
|
|
54605
|
+
"ok",
|
|
54606
|
+
"low",
|
|
54607
|
+
"empty"
|
|
54608
|
+
]);
|
|
54609
|
+
object({
|
|
54610
|
+
state: DishwasherStateSchema,
|
|
54611
|
+
/** Active program id/name, or null when none selected / unknown. */
|
|
54612
|
+
program: string().nullable(),
|
|
54613
|
+
/** Program tokens the hardware accepts — drives the UI selector. */
|
|
54614
|
+
availablePrograms: array(string()),
|
|
54615
|
+
/** Minutes remaining on the active cycle, or null when not running. */
|
|
54616
|
+
remainingMinutes: number().int().nonnegative().nullable(),
|
|
54617
|
+
/** Cycle completion 0..100, or null when not applicable. */
|
|
54618
|
+
progressPercent: number().min(0).max(100).nullable(),
|
|
54619
|
+
/** True when the door is reported open. */
|
|
54620
|
+
doorOpen: boolean(),
|
|
54621
|
+
/** True when remote start is allowed (door closed, power on, etc.). */
|
|
54622
|
+
remoteStartAllowed: boolean(),
|
|
54623
|
+
/** Main power / switched-on state. */
|
|
54624
|
+
powerOn: boolean(),
|
|
54625
|
+
saltLevel: DishwasherConsumableLevelSchema.nullable(),
|
|
54626
|
+
rinseAidLevel: DishwasherConsumableLevelSchema.nullable(),
|
|
54627
|
+
halfLoad: boolean(),
|
|
54628
|
+
hygienePlus: boolean(),
|
|
54629
|
+
errorCode: number().nullable(),
|
|
54630
|
+
errorLabel: string().nullable(),
|
|
54631
|
+
lastFetchedAt: number()
|
|
54632
|
+
});
|
|
54633
|
+
DeviceType.Dishwasher, method(object({ deviceId: number().int().nonnegative() }), _void(), {
|
|
54634
|
+
kind: "mutation",
|
|
54635
|
+
auth: "protected"
|
|
54636
|
+
}), method(object({ deviceId: number().int().nonnegative() }), _void(), {
|
|
54637
|
+
kind: "mutation",
|
|
54638
|
+
auth: "protected"
|
|
54639
|
+
}), method(object({ deviceId: number().int().nonnegative() }), _void(), {
|
|
54640
|
+
kind: "mutation",
|
|
54641
|
+
auth: "protected"
|
|
54642
|
+
}), method(object({
|
|
54643
|
+
deviceId: number().int().nonnegative(),
|
|
54644
|
+
program: string().min(1)
|
|
54645
|
+
}), _void(), {
|
|
54646
|
+
kind: "mutation",
|
|
54647
|
+
auth: "protected"
|
|
54648
|
+
}), method(object({
|
|
54649
|
+
deviceId: number().int().nonnegative(),
|
|
54650
|
+
on: boolean()
|
|
54651
|
+
}), _void(), {
|
|
54652
|
+
kind: "mutation",
|
|
54653
|
+
auth: "protected"
|
|
54654
|
+
}), method(object({
|
|
54655
|
+
deviceId: number().int().nonnegative(),
|
|
54656
|
+
on: boolean()
|
|
54657
|
+
}), _void(), {
|
|
54658
|
+
kind: "mutation",
|
|
54659
|
+
auth: "protected"
|
|
54660
|
+
}), method(object({
|
|
54661
|
+
deviceId: number().int().nonnegative(),
|
|
54662
|
+
on: boolean()
|
|
54663
|
+
}), _void(), {
|
|
54664
|
+
kind: "mutation",
|
|
54665
|
+
auth: "protected"
|
|
54666
|
+
}), method(object({
|
|
54667
|
+
deviceId: number().int().nonnegative(),
|
|
54668
|
+
key: string().min(1),
|
|
54669
|
+
value: union([
|
|
54670
|
+
boolean(),
|
|
54671
|
+
string(),
|
|
54672
|
+
number()
|
|
54673
|
+
])
|
|
54674
|
+
}), _void(), {
|
|
54675
|
+
kind: "mutation",
|
|
54676
|
+
auth: "protected"
|
|
54677
|
+
});
|
|
54566
54678
|
object({
|
|
54567
54679
|
/** Ms epoch of the last press. null = never observed since this provider started. */
|
|
54568
54680
|
lastPressedAt: number().nullable(),
|
|
@@ -55128,6 +55240,13 @@ object({
|
|
|
55128
55240
|
lastChangedAt: number()
|
|
55129
55241
|
});
|
|
55130
55242
|
DeviceType.Sensor;
|
|
55243
|
+
object({
|
|
55244
|
+
/** Radiator valve opening 0 (closed) .. 100 (open). Null = not yet known. */
|
|
55245
|
+
position: number().min(0).max(100).nullable(),
|
|
55246
|
+
/** Ms epoch when the slice was last updated (push or poll). */
|
|
55247
|
+
lastFetchedAt: number()
|
|
55248
|
+
});
|
|
55249
|
+
DeviceType.Thermostat;
|
|
55131
55250
|
object({
|
|
55132
55251
|
/** Whether the humidifier is currently on. */
|
|
55133
55252
|
on: boolean(),
|
|
@@ -62292,7 +62411,7 @@ var AccessoryKind = {
|
|
|
62292
62411
|
PrivacyMask: DeviceRole.PrivacyMask
|
|
62293
62412
|
};
|
|
62294
62413
|
AccessoryKind.Siren, AccessoryKind.Floodlight, AccessoryKind.Spotlight, AccessoryKind.PirSensor, AccessoryKind.Chime, AccessoryKind.Autotrack, AccessoryKind.Nightvision, AccessoryKind.PrivacyMask;
|
|
62295
|
-
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;
|
|
62414
|
+
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;
|
|
62296
62415
|
new Set(Object.values(DeviceType));
|
|
62297
62416
|
Object.freeze({
|
|
62298
62417
|
"accessories.getStatus": {
|
|
@@ -64713,6 +64832,60 @@ Object.freeze({
|
|
|
64713
64832
|
addonId: null,
|
|
64714
64833
|
access: "view"
|
|
64715
64834
|
},
|
|
64835
|
+
"dishwasher.getStatus": {
|
|
64836
|
+
capName: "dishwasher",
|
|
64837
|
+
capScope: "device",
|
|
64838
|
+
addonId: null,
|
|
64839
|
+
access: "view"
|
|
64840
|
+
},
|
|
64841
|
+
"dishwasher.pause": {
|
|
64842
|
+
capName: "dishwasher",
|
|
64843
|
+
capScope: "device",
|
|
64844
|
+
addonId: null,
|
|
64845
|
+
access: "create"
|
|
64846
|
+
},
|
|
64847
|
+
"dishwasher.setHalfLoad": {
|
|
64848
|
+
capName: "dishwasher",
|
|
64849
|
+
capScope: "device",
|
|
64850
|
+
addonId: null,
|
|
64851
|
+
access: "create"
|
|
64852
|
+
},
|
|
64853
|
+
"dishwasher.setHygienePlus": {
|
|
64854
|
+
capName: "dishwasher",
|
|
64855
|
+
capScope: "device",
|
|
64856
|
+
addonId: null,
|
|
64857
|
+
access: "create"
|
|
64858
|
+
},
|
|
64859
|
+
"dishwasher.setOption": {
|
|
64860
|
+
capName: "dishwasher",
|
|
64861
|
+
capScope: "device",
|
|
64862
|
+
addonId: null,
|
|
64863
|
+
access: "create"
|
|
64864
|
+
},
|
|
64865
|
+
"dishwasher.setPower": {
|
|
64866
|
+
capName: "dishwasher",
|
|
64867
|
+
capScope: "device",
|
|
64868
|
+
addonId: null,
|
|
64869
|
+
access: "create"
|
|
64870
|
+
},
|
|
64871
|
+
"dishwasher.setProgram": {
|
|
64872
|
+
capName: "dishwasher",
|
|
64873
|
+
capScope: "device",
|
|
64874
|
+
addonId: null,
|
|
64875
|
+
access: "create"
|
|
64876
|
+
},
|
|
64877
|
+
"dishwasher.start": {
|
|
64878
|
+
capName: "dishwasher",
|
|
64879
|
+
capScope: "device",
|
|
64880
|
+
addonId: null,
|
|
64881
|
+
access: "create"
|
|
64882
|
+
},
|
|
64883
|
+
"dishwasher.stop": {
|
|
64884
|
+
capName: "dishwasher",
|
|
64885
|
+
capScope: "device",
|
|
64886
|
+
addonId: null,
|
|
64887
|
+
access: "create"
|
|
64888
|
+
},
|
|
64716
64889
|
"doorbell.getStatus": {
|
|
64717
64890
|
capName: "doorbell",
|
|
64718
64891
|
capScope: "device",
|
|
@@ -64923,6 +65096,12 @@ Object.freeze({
|
|
|
64923
65096
|
addonId: null,
|
|
64924
65097
|
access: "view"
|
|
64925
65098
|
},
|
|
65099
|
+
"heatingValve.getStatus": {
|
|
65100
|
+
capName: "heating-valve",
|
|
65101
|
+
capScope: "device",
|
|
65102
|
+
addonId: null,
|
|
65103
|
+
access: "view"
|
|
65104
|
+
},
|
|
64926
65105
|
"humidifier.getStatus": {
|
|
64927
65106
|
capName: "humidifier",
|
|
64928
65107
|
capScope: "device",
|
|
@@ -69063,6 +69242,12 @@ Object.freeze({
|
|
|
69063
69242
|
addonId: null,
|
|
69064
69243
|
access: "delete"
|
|
69065
69244
|
},
|
|
69245
|
+
"storageAdmin.isAdoptedLegacyTable": {
|
|
69246
|
+
capName: "storage-admin",
|
|
69247
|
+
capScope: "system",
|
|
69248
|
+
addonId: null,
|
|
69249
|
+
access: "view"
|
|
69250
|
+
},
|
|
69066
69251
|
"storageAdmin.listKinds": {
|
|
69067
69252
|
capName: "storage-admin",
|
|
69068
69253
|
capScope: "system",
|
|
@@ -69075,6 +69260,12 @@ Object.freeze({
|
|
|
69075
69260
|
addonId: null,
|
|
69076
69261
|
access: "view"
|
|
69077
69262
|
},
|
|
69263
|
+
"storageAdmin.readLegacyCollection": {
|
|
69264
|
+
capName: "storage-admin",
|
|
69265
|
+
capScope: "system",
|
|
69266
|
+
addonId: null,
|
|
69267
|
+
access: "view"
|
|
69268
|
+
},
|
|
69078
69269
|
"storageAdmin.readRecords": {
|
|
69079
69270
|
capName: "storage-admin",
|
|
69080
69271
|
capScope: "system",
|
|
@@ -70498,7 +70689,7 @@ Object.freeze({
|
|
|
70498
70689
|
access: "create"
|
|
70499
70690
|
}
|
|
70500
70691
|
});
|
|
70501
|
-
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;
|
|
70692
|
+
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;
|
|
70502
70693
|
DeviceFeature.BatteryOperated;
|
|
70503
70694
|
Object.freeze({
|
|
70504
70695
|
"accessories.getStatus": [{
|
|
@@ -71322,6 +71513,51 @@ Object.freeze({
|
|
|
71322
71513
|
form: "single",
|
|
71323
71514
|
optional: false
|
|
71324
71515
|
}],
|
|
71516
|
+
"dishwasher.getStatus": [{
|
|
71517
|
+
name: "deviceId",
|
|
71518
|
+
form: "single",
|
|
71519
|
+
optional: false
|
|
71520
|
+
}],
|
|
71521
|
+
"dishwasher.pause": [{
|
|
71522
|
+
name: "deviceId",
|
|
71523
|
+
form: "single",
|
|
71524
|
+
optional: false
|
|
71525
|
+
}],
|
|
71526
|
+
"dishwasher.setHalfLoad": [{
|
|
71527
|
+
name: "deviceId",
|
|
71528
|
+
form: "single",
|
|
71529
|
+
optional: false
|
|
71530
|
+
}],
|
|
71531
|
+
"dishwasher.setHygienePlus": [{
|
|
71532
|
+
name: "deviceId",
|
|
71533
|
+
form: "single",
|
|
71534
|
+
optional: false
|
|
71535
|
+
}],
|
|
71536
|
+
"dishwasher.setOption": [{
|
|
71537
|
+
name: "deviceId",
|
|
71538
|
+
form: "single",
|
|
71539
|
+
optional: false
|
|
71540
|
+
}],
|
|
71541
|
+
"dishwasher.setPower": [{
|
|
71542
|
+
name: "deviceId",
|
|
71543
|
+
form: "single",
|
|
71544
|
+
optional: false
|
|
71545
|
+
}],
|
|
71546
|
+
"dishwasher.setProgram": [{
|
|
71547
|
+
name: "deviceId",
|
|
71548
|
+
form: "single",
|
|
71549
|
+
optional: false
|
|
71550
|
+
}],
|
|
71551
|
+
"dishwasher.start": [{
|
|
71552
|
+
name: "deviceId",
|
|
71553
|
+
form: "single",
|
|
71554
|
+
optional: false
|
|
71555
|
+
}],
|
|
71556
|
+
"dishwasher.stop": [{
|
|
71557
|
+
name: "deviceId",
|
|
71558
|
+
form: "single",
|
|
71559
|
+
optional: false
|
|
71560
|
+
}],
|
|
71325
71561
|
"doorbell.getStatus": [{
|
|
71326
71562
|
name: "deviceId",
|
|
71327
71563
|
form: "single",
|
|
@@ -71391,6 +71627,11 @@ Object.freeze({
|
|
|
71391
71627
|
form: "single",
|
|
71392
71628
|
optional: false
|
|
71393
71629
|
}],
|
|
71630
|
+
"heatingValve.getStatus": [{
|
|
71631
|
+
name: "deviceId",
|
|
71632
|
+
form: "single",
|
|
71633
|
+
optional: false
|
|
71634
|
+
}],
|
|
71394
71635
|
"humidifier.getStatus": [{
|
|
71395
71636
|
name: "deviceId",
|
|
71396
71637
|
form: "single",
|