@camstack/types 1.2.418 → 1.2.419
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/addon.js +2 -2
- package/dist/addon.mjs +2 -2
- package/dist/capabilities/addons.cap.d.ts +67 -1
- package/dist/capabilities/color.cap.d.ts +1 -0
- package/dist/capabilities/composer.cap.d.ts +3 -0
- package/dist/capabilities/core-blocks.cap.d.ts +21 -0
- package/dist/capabilities/group-commands.cap.d.ts +49 -0
- package/dist/capabilities/group-status.cap.d.ts +1 -1
- package/dist/capabilities/index.d.ts +4 -2
- package/dist/capabilities/notification-rules.cap.d.ts +46 -0
- package/dist/capabilities/osd-manager.cap.d.ts +12 -0
- package/dist/client.js +34 -5
- package/dist/client.mjs +34 -5
- package/dist/composition/composition.d.ts +1 -0
- package/dist/composition/helpers/actuator.d.ts +58 -0
- package/dist/composition/helpers/catalog.d.ts +7 -2
- package/dist/composition/helpers/index.d.ts +2 -1
- package/dist/composition/helpers/spec.d.ts +6 -1
- package/dist/{composition-B85l9j1M.mjs → composition-OhpuespA.mjs} +10 -3
- package/dist/{composition-OJKOJJD-.js → composition-re1aezX9.js} +21 -2
- package/dist/device/cap-vocabulary/entries/sensors.d.ts +1 -1
- package/dist/enums/event-category.d.ts +8 -0
- package/dist/enums.js +1 -1
- package/dist/enums.mjs +1 -1
- package/dist/{event-category-DXZ3f9Q5.js → event-category-Ave2VSxY.js} +8 -0
- package/dist/{event-category-DHXxB8t9.mjs → event-category-CT-hz5Rb.mjs} +8 -0
- package/dist/generated/addon-api.d.ts +21 -0
- package/dist/generated/cap-status-types.d.ts +3 -1
- package/dist/generated/capability-router-map.d.ts +5 -2
- package/dist/generated/device-local-state.d.ts +3 -0
- package/dist/generated/device-proxy.d.ts +3 -0
- package/dist/generated/device-scoped-caps.d.ts +1 -1
- package/dist/generated/history-catalog.d.ts +1 -1
- package/dist/generated/method-access-map.d.ts +1 -1
- package/dist/generated/method-device-selectors.d.ts +1 -1
- package/dist/generated/runtime-state-durability.d.ts +1 -1
- package/dist/generated/system-proxy.d.ts +1 -1
- package/dist/index.js +341 -19
- package/dist/index.mjs +328 -20
- package/dist/interfaces/event-bus.d.ts +15 -0
- package/dist/node.js +1 -1
- package/dist/node.mjs +1 -1
- package/dist/{sleep-7Gw3GJ4n.js → sleep-YJ6FVsUu.js} +8 -2
- package/dist/{sleep-B81gwQuR.mjs → sleep-bykKrTgu.mjs} +8 -2
- package/package.json +1 -1
package/dist/index.js
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
|
|
2
|
-
const require_sleep = require("./sleep-
|
|
3
|
-
const require_event_category = require("./event-category-
|
|
4
|
-
const require_composition = require("./composition-
|
|
2
|
+
const require_sleep = require("./sleep-YJ6FVsUu.js");
|
|
3
|
+
const require_event_category = require("./event-category-Ave2VSxY.js");
|
|
4
|
+
const require_composition = require("./composition-re1aezX9.js");
|
|
5
5
|
const require_node_color = require("./node-color.js");
|
|
6
6
|
const require_err_msg = require("./err-msg-BhVbr0NX.js");
|
|
7
7
|
const require_enums = require("./enums.js");
|
|
@@ -13284,6 +13284,7 @@ function numeric(input) {
|
|
|
13284
13284
|
family: "numeric",
|
|
13285
13285
|
deviceType: require_err_msg.DeviceType.Sensor,
|
|
13286
13286
|
memberDeviceType: require_err_msg.DeviceType.Sensor,
|
|
13287
|
+
commandCaps: [],
|
|
13287
13288
|
baseUnit: require_sleep.baseUnitOf(input.quantity),
|
|
13288
13289
|
aggregates: require_composition.NUMERIC_AGGREGATES,
|
|
13289
13290
|
accept: [{
|
|
@@ -13298,6 +13299,7 @@ function binary(input) {
|
|
|
13298
13299
|
family: "binary",
|
|
13299
13300
|
deviceType: require_err_msg.DeviceType.Sensor,
|
|
13300
13301
|
memberDeviceType: require_err_msg.DeviceType.Sensor,
|
|
13302
|
+
commandCaps: [],
|
|
13301
13303
|
quantity: "none",
|
|
13302
13304
|
baseUnit: void 0,
|
|
13303
13305
|
aggregates: require_composition.BINARY_AGGREGATES,
|
|
@@ -13492,13 +13494,139 @@ var GROUP_TEMPLATES = [
|
|
|
13492
13494
|
fieldPath: "on"
|
|
13493
13495
|
}],
|
|
13494
13496
|
companions: [CHANGED]
|
|
13497
|
+
}),
|
|
13498
|
+
actuator({
|
|
13499
|
+
id: "switch",
|
|
13500
|
+
summary: "On when at least one switch is on, or when all of them are. Offline and unknown members are left out of that decision, never read as off, and still receive the command.",
|
|
13501
|
+
deviceType: require_err_msg.DeviceType.Switch,
|
|
13502
|
+
outputCap: "switch",
|
|
13503
|
+
commandCaps: ["switch"]
|
|
13504
|
+
}),
|
|
13505
|
+
actuator({
|
|
13506
|
+
id: "light",
|
|
13507
|
+
summary: "On when at least one light is on, or when all of them are. Brightness and colour are offered only when every member has them. A command is not sent to a member that lacks it.",
|
|
13508
|
+
deviceType: require_err_msg.DeviceType.Light,
|
|
13509
|
+
outputCap: "switch",
|
|
13510
|
+
commandCaps: [
|
|
13511
|
+
"switch",
|
|
13512
|
+
"brightness",
|
|
13513
|
+
"color"
|
|
13514
|
+
]
|
|
13495
13515
|
})
|
|
13496
13516
|
];
|
|
13517
|
+
function actuator(input) {
|
|
13518
|
+
return {
|
|
13519
|
+
...input,
|
|
13520
|
+
family: "actuator",
|
|
13521
|
+
role: void 0,
|
|
13522
|
+
memberDeviceType: input.deviceType,
|
|
13523
|
+
outputField: "on",
|
|
13524
|
+
quantity: "none",
|
|
13525
|
+
baseUnit: void 0,
|
|
13526
|
+
aggregates: require_composition.BINARY_AGGREGATES,
|
|
13527
|
+
defaultAggregate: "any",
|
|
13528
|
+
empty: "offline",
|
|
13529
|
+
accept: [{
|
|
13530
|
+
cap: "switch",
|
|
13531
|
+
fieldPath: "on"
|
|
13532
|
+
}],
|
|
13533
|
+
companions: [CHANGED]
|
|
13534
|
+
};
|
|
13535
|
+
}
|
|
13497
13536
|
var BY_ID = new Map(GROUP_TEMPLATES.map((template) => [template.id, template]));
|
|
13498
13537
|
function groupTemplate(id) {
|
|
13499
13538
|
return BY_ID.get(id) ?? null;
|
|
13500
13539
|
}
|
|
13501
13540
|
//#endregion
|
|
13541
|
+
//#region src/composition/helpers/actuator.ts
|
|
13542
|
+
/**
|
|
13543
|
+
* Actuator groups (D944 phase 1b). The active boolean is the binary reducer
|
|
13544
|
+
* with unknown members left out. A command is one call per member that binds
|
|
13545
|
+
* the cap, including members that are offline. One failure does not cancel
|
|
13546
|
+
* the others.
|
|
13547
|
+
*/
|
|
13548
|
+
/** Caps a light group may expose, in display order. Switch is the active state. */
|
|
13549
|
+
var LIGHT_SHARED_CAPS = [
|
|
13550
|
+
"switch",
|
|
13551
|
+
"brightness",
|
|
13552
|
+
"color"
|
|
13553
|
+
];
|
|
13554
|
+
var COLOR_MODE_FEATURES = [
|
|
13555
|
+
require_err_msg.DeviceFeature.LightColorRgb,
|
|
13556
|
+
require_err_msg.DeviceFeature.LightColorHsv,
|
|
13557
|
+
require_err_msg.DeviceFeature.LightColorMired
|
|
13558
|
+
];
|
|
13559
|
+
/** How many member calls run at once. The rest wait; none are dropped. */
|
|
13560
|
+
var FAN_OUT_CONCURRENCY = 4;
|
|
13561
|
+
/** `at-least-one` is any included member on; `all` is every included member on. */
|
|
13562
|
+
function reducerForActive(active) {
|
|
13563
|
+
return active === "all" ? "all" : "any";
|
|
13564
|
+
}
|
|
13565
|
+
function activeForReducer(reducer) {
|
|
13566
|
+
return reducer === "all" ? "all" : "at-least-one";
|
|
13567
|
+
}
|
|
13568
|
+
/**
|
|
13569
|
+
* Caps every member binds, from {@link LIGHT_SHARED_CAPS}. An empty member
|
|
13570
|
+
* list shares nothing. A member that lacks colour drops colour from the group.
|
|
13571
|
+
*/
|
|
13572
|
+
function sharedLightCaps(memberCaps) {
|
|
13573
|
+
if (memberCaps.length === 0) return [];
|
|
13574
|
+
return LIGHT_SHARED_CAPS.filter((cap) => memberCaps.every((bound) => bound.includes(cap)));
|
|
13575
|
+
}
|
|
13576
|
+
/**
|
|
13577
|
+
* Colour modes every member advertises. Offline does not remove a mode:
|
|
13578
|
+
* the caller passes device features, not liveness. No members → no mode.
|
|
13579
|
+
*/
|
|
13580
|
+
function sharedColorModes(memberFeatures) {
|
|
13581
|
+
if (memberFeatures.length === 0) return [];
|
|
13582
|
+
return COLOR_MODE_FEATURES.filter((mode) => memberFeatures.every((features) => features.includes(mode)));
|
|
13583
|
+
}
|
|
13584
|
+
/**
|
|
13585
|
+
* One call per member that binds `cap`. Offline members stay in the list.
|
|
13586
|
+
* A member without the cap is not called — the command cannot reach it.
|
|
13587
|
+
*/
|
|
13588
|
+
function fanOutTargets(members, cap, method, args) {
|
|
13589
|
+
return members.flatMap((member) => member.caps.includes(cap) ? [{
|
|
13590
|
+
deviceId: member.deviceId,
|
|
13591
|
+
cap,
|
|
13592
|
+
method,
|
|
13593
|
+
args: { ...args }
|
|
13594
|
+
}] : []);
|
|
13595
|
+
}
|
|
13596
|
+
/**
|
|
13597
|
+
* Run every call. A throw is that member's result; the other calls still run.
|
|
13598
|
+
* At most {@link FAN_OUT_CONCURRENCY} are in flight.
|
|
13599
|
+
*/
|
|
13600
|
+
async function runFanOut(calls, invoke) {
|
|
13601
|
+
const results = [];
|
|
13602
|
+
let next = 0;
|
|
13603
|
+
const worker = async () => {
|
|
13604
|
+
for (;;) {
|
|
13605
|
+
const index = next;
|
|
13606
|
+
next += 1;
|
|
13607
|
+
const call = calls[index];
|
|
13608
|
+
if (call === void 0) return;
|
|
13609
|
+
try {
|
|
13610
|
+
await invoke(call);
|
|
13611
|
+
results[index] = {
|
|
13612
|
+
deviceId: call.deviceId,
|
|
13613
|
+
ok: true
|
|
13614
|
+
};
|
|
13615
|
+
} catch (err) {
|
|
13616
|
+
const error = err instanceof Error ? err.message : String(err);
|
|
13617
|
+
results[index] = {
|
|
13618
|
+
deviceId: call.deviceId,
|
|
13619
|
+
ok: false,
|
|
13620
|
+
error
|
|
13621
|
+
};
|
|
13622
|
+
}
|
|
13623
|
+
}
|
|
13624
|
+
};
|
|
13625
|
+
const width = Math.min(4, calls.length);
|
|
13626
|
+
await Promise.all(Array.from({ length: width }, () => worker()));
|
|
13627
|
+
return results;
|
|
13628
|
+
}
|
|
13629
|
+
//#endregion
|
|
13502
13630
|
//#region src/composition/helpers/compile.ts
|
|
13503
13631
|
function sameSource(a, b) {
|
|
13504
13632
|
return a.addonId === b.addonId && a.stableId === b.stableId;
|
|
@@ -13548,7 +13676,7 @@ function draftOf$1(template, spec) {
|
|
|
13548
13676
|
target: {
|
|
13549
13677
|
kind: "new",
|
|
13550
13678
|
type: template.deviceType,
|
|
13551
|
-
role: template.role
|
|
13679
|
+
...template.role === void 0 ? {} : { role: template.role }
|
|
13552
13680
|
},
|
|
13553
13681
|
helper: spec,
|
|
13554
13682
|
features: [{
|
|
@@ -13569,6 +13697,16 @@ function draftOf$1(template, spec) {
|
|
|
13569
13697
|
}]
|
|
13570
13698
|
};
|
|
13571
13699
|
}
|
|
13700
|
+
function criterionProblems(template, spec) {
|
|
13701
|
+
if (template.family === "actuator") {
|
|
13702
|
+
if (spec.active === void 0) return [problem("kind-mismatch", "helper.active", `a ${template.id} group needs an active criterion (at-least-one or all)`)];
|
|
13703
|
+
const reducer = reducerForActive(spec.active);
|
|
13704
|
+
if (spec.aggregate !== reducer) return [problem("kind-mismatch", "helper.aggregate", `active \`${spec.active}\` aggregates by \`${reducer}\`, not \`${spec.aggregate}\``)];
|
|
13705
|
+
return [];
|
|
13706
|
+
}
|
|
13707
|
+
if (spec.active !== void 0) return [problem("kind-mismatch", "helper.active", `a ${template.id} group has no active criterion — that belongs to an actuator group`)];
|
|
13708
|
+
return [];
|
|
13709
|
+
}
|
|
13572
13710
|
function parseDraft(draft) {
|
|
13573
13711
|
const parsed = require_composition.CompositionSchema.safeParse(draft);
|
|
13574
13712
|
if (parsed.success) return {
|
|
@@ -13587,6 +13725,11 @@ function compileHelper(spec) {
|
|
|
13587
13725
|
ok: false,
|
|
13588
13726
|
problems: [problem("member-constraint", "helper.templateId", `unknown template \`${spec.templateId}\``)]
|
|
13589
13727
|
};
|
|
13728
|
+
const criterion = criterionProblems(template, spec);
|
|
13729
|
+
if (criterion.length > 0) return {
|
|
13730
|
+
ok: false,
|
|
13731
|
+
problems: criterion
|
|
13732
|
+
};
|
|
13590
13733
|
if (!template.aggregates.includes(spec.aggregate)) {
|
|
13591
13734
|
const allowed = template.aggregates.join(", ");
|
|
13592
13735
|
return {
|
|
@@ -13853,11 +13996,22 @@ function composableCap(feature, at, lookupCap) {
|
|
|
13853
13996
|
* required field. A REPLACE needs none of it: the cap is bound (a fact), the
|
|
13854
13997
|
* native keeps serving its methods, and only the named fields are owned (D663).
|
|
13855
13998
|
*/
|
|
13856
|
-
|
|
13999
|
+
/**
|
|
14000
|
+
* Caps an actuator helper is allowed to serve. A free composition, and a
|
|
14001
|
+
* reading group, get an empty set — `has-commands` stays for them.
|
|
14002
|
+
*/
|
|
14003
|
+
function actuatorCommandCaps(composition) {
|
|
14004
|
+
const spec = composition.helper;
|
|
14005
|
+
if (spec === void 0) return /* @__PURE__ */ new Set();
|
|
14006
|
+
const template = groupTemplate(spec.templateId);
|
|
14007
|
+
if (template === null || template.family !== "actuator") return /* @__PURE__ */ new Set();
|
|
14008
|
+
return new Set(template.commandCaps);
|
|
14009
|
+
}
|
|
14010
|
+
function builtCapProblems({ def, state, fields: targetFields }, feature, at, deviceType, servedCommands) {
|
|
13857
14011
|
const problems = [];
|
|
13858
14012
|
if (def.deviceTypes !== void 0 && !def.deviceTypes.includes(deviceType)) problems.push(problem("wrong-device-type", `${at}.cap`, `\`${def.name}\` is not offered on a \`${deviceType}\` device (it allows ${def.deviceTypes.join(", ")})`));
|
|
13859
14013
|
const served = Object.entries(def.methods).filter(([name, m]) => m.systemOnly !== true && def.composedMethods?.[name] === void 0).map(([name]) => `\`${name}\``);
|
|
13860
|
-
if (served.length > 0) problems.push(problem("has-commands", `${at}.cap`, `\`${def.name}\` has ${served.join(", ")}, which a composed device cannot serve until commands arrive (slice 3)`));
|
|
14014
|
+
if (served.length > 0 && !servedCommands.has(def.name)) problems.push(problem("has-commands", `${at}.cap`, `\`${def.name}\` has ${served.join(", ")}, which a composed device cannot serve until commands arrive (slice 3)`));
|
|
13861
14015
|
const itemArrayPath = feature.items === void 0 ? null : def.status?.itemArray?.path ?? null;
|
|
13862
14016
|
for (const key of requiredTopLevelKeys(state)) {
|
|
13863
14017
|
if (key === itemArrayPath) continue;
|
|
@@ -13898,11 +14052,11 @@ function planTopLevelField({ def, fields }, field, mode, lookupCap) {
|
|
|
13898
14052
|
events: []
|
|
13899
14053
|
};
|
|
13900
14054
|
}
|
|
13901
|
-
function planFeature(feature, featureIndex, target, lookupCap) {
|
|
14055
|
+
function planFeature(feature, featureIndex, target, lookupCap, servedCommands) {
|
|
13902
14056
|
const at = `features[${featureIndex}]`;
|
|
13903
14057
|
const cap = composableCap(feature, at, lookupCap);
|
|
13904
14058
|
if ("code" in cap) return refused(cap);
|
|
13905
|
-
const capProblems = target.mode === "replace" ? [] : [...builtCapProblems(cap, feature, at, target.deviceType)];
|
|
14059
|
+
const capProblems = target.mode === "replace" ? [] : [...builtCapProblems(cap, feature, at, target.deviceType, servedCommands)];
|
|
13906
14060
|
if (feature.commands !== void 0 && Object.keys(feature.commands).length > 0) capProblems.push(problem("reserved-variant", `${at}.commands`, "commands (`forward`) arrive in slice 3"));
|
|
13907
14061
|
const perField = Object.entries(feature.fields).map(([path, source]) => planTopLevelField(cap, {
|
|
13908
14062
|
featureIndex,
|
|
@@ -13988,6 +14142,7 @@ function featureTargetOf(target, cap, at) {
|
|
|
13988
14142
|
function planComposition(composition, lookupCap, target) {
|
|
13989
14143
|
const planTarget = planTargetOf(composition, target);
|
|
13990
14144
|
if ("code" in planTarget) return refused(planTarget);
|
|
14145
|
+
const servedCommands = actuatorCommandCaps(composition);
|
|
13991
14146
|
const results = composition.features.map((feature, index) => {
|
|
13992
14147
|
const at = `features[${index}]`;
|
|
13993
14148
|
if (feature.kind === "passthrough") return refused(problem("reserved-variant", at, `whole-capability passthrough of \`${feature.cap}\` arrives in slice 3`));
|
|
@@ -14002,9 +14157,9 @@ function planComposition(composition, lookupCap, target) {
|
|
|
14002
14157
|
return nativeReplaceOrBlock(featureTarget, planFeature(feature, index, {
|
|
14003
14158
|
mode: "add",
|
|
14004
14159
|
deviceType: planTarget.found.type
|
|
14005
|
-
}, lookupCap));
|
|
14160
|
+
}, lookupCap, servedCommands));
|
|
14006
14161
|
}
|
|
14007
|
-
const result = planFeature(feature, index, featureTarget, lookupCap);
|
|
14162
|
+
const result = planFeature(feature, index, featureTarget, lookupCap, servedCommands);
|
|
14008
14163
|
return require_composition.compositionFeatureEnabled(feature) ? result : {
|
|
14009
14164
|
problems: result.problems,
|
|
14010
14165
|
fields: [],
|
|
@@ -44918,6 +45073,8 @@ var NcSystemEventKindSchema = zod.z.enum([
|
|
|
44918
45073
|
"detection-blind",
|
|
44919
45074
|
"motion-noisy",
|
|
44920
45075
|
"motion-calm",
|
|
45076
|
+
"package-llm-silent",
|
|
45077
|
+
"package-llm-answered",
|
|
44921
45078
|
"recording-stalled",
|
|
44922
45079
|
"recording-healthy",
|
|
44923
45080
|
"recording-degraded",
|
|
@@ -46562,6 +46719,14 @@ var NC_CONDITION_CATALOG = [
|
|
|
46562
46719
|
value: "motion-calm",
|
|
46563
46720
|
label: "Camera motion calm again"
|
|
46564
46721
|
},
|
|
46722
|
+
{
|
|
46723
|
+
value: "package-llm-silent",
|
|
46724
|
+
label: "Package confirm not answering"
|
|
46725
|
+
},
|
|
46726
|
+
{
|
|
46727
|
+
value: "package-llm-answered",
|
|
46728
|
+
label: "Package confirm answering again"
|
|
46729
|
+
},
|
|
46565
46730
|
{
|
|
46566
46731
|
value: "recording-stalled",
|
|
46567
46732
|
label: "Recording stalled"
|
|
@@ -60593,6 +60758,28 @@ var PackageVersionInfoSchema = zod.z.object({
|
|
|
60593
60758
|
deprecated: zod.z.string().optional(),
|
|
60594
60759
|
distTags: zod.z.array(zod.z.string()).readonly()
|
|
60595
60760
|
});
|
|
60761
|
+
/**
|
|
60762
|
+
* One published document. `ok` is markdown from the registry. `missing` means
|
|
60763
|
+
* the registry answered and the file was not there. `error` is a registry or
|
|
60764
|
+
* tarball failure — never an empty string standing in for either.
|
|
60765
|
+
*/
|
|
60766
|
+
var PackageDocBodySchema = zod.z.discriminatedUnion("status", [
|
|
60767
|
+
zod.z.object({
|
|
60768
|
+
status: zod.z.literal("ok"),
|
|
60769
|
+
markdown: zod.z.string()
|
|
60770
|
+
}),
|
|
60771
|
+
zod.z.object({ status: zod.z.literal("missing") }),
|
|
60772
|
+
zod.z.object({
|
|
60773
|
+
status: zod.z.literal("error"),
|
|
60774
|
+
message: zod.z.string()
|
|
60775
|
+
})
|
|
60776
|
+
]);
|
|
60777
|
+
var PackageDocsSchema = zod.z.object({
|
|
60778
|
+
name: zod.z.string(),
|
|
60779
|
+
version: zod.z.string(),
|
|
60780
|
+
readme: PackageDocBodySchema,
|
|
60781
|
+
changelog: PackageDocBodySchema
|
|
60782
|
+
});
|
|
60596
60783
|
var SearchResultSchema = zod.z.object({
|
|
60597
60784
|
name: zod.z.string(),
|
|
60598
60785
|
version: zod.z.string(),
|
|
@@ -60959,6 +61146,15 @@ var addonsCapability = {
|
|
|
60959
61146
|
auth: "admin"
|
|
60960
61147
|
}),
|
|
60961
61148
|
getVersions: require_sleep.method(zod.z.object({ name: zod.z.string() }), zod.z.array(PackageVersionInfoSchema).readonly()),
|
|
61149
|
+
/**
|
|
61150
|
+
* README and CHANGELOG for one registry package, read on the hub and
|
|
61151
|
+
* cached. `version` omitted resolves the `latest` dist-tag. The browser
|
|
61152
|
+
* never talks to the registry.
|
|
61153
|
+
*/
|
|
61154
|
+
getPackageDocs: require_sleep.method(zod.z.object({
|
|
61155
|
+
name: zod.z.string().min(1),
|
|
61156
|
+
version: zod.z.string().min(1).optional()
|
|
61157
|
+
}), PackageDocsSchema, { auth: "admin" }),
|
|
60962
61158
|
restartAddon: require_sleep.method(zod.z.object({ addonId: zod.z.string() }), RestartAddonResultSchema, {
|
|
60963
61159
|
kind: "mutation",
|
|
60964
61160
|
auth: "admin"
|
|
@@ -62520,6 +62716,10 @@ var ColorStatusSchema = zod.z.object({
|
|
|
62520
62716
|
/** Ms epoch of the last operator-driven change. */
|
|
62521
62717
|
lastChangedAt: zod.z.number()
|
|
62522
62718
|
});
|
|
62719
|
+
function parseColorInput(value) {
|
|
62720
|
+
const parsed = ColorInputSchema.safeParse(value);
|
|
62721
|
+
return parsed.success ? parsed.data : null;
|
|
62722
|
+
}
|
|
62523
62723
|
var colorCapability = {
|
|
62524
62724
|
name: "color",
|
|
62525
62725
|
scope: "device",
|
|
@@ -64718,6 +64918,48 @@ var gasCapability = {
|
|
|
64718
64918
|
volatileStateFields: ["lastChangedAt"]
|
|
64719
64919
|
};
|
|
64720
64920
|
//#endregion
|
|
64921
|
+
//#region src/capabilities/group-commands.cap.ts
|
|
64922
|
+
/**
|
|
64923
|
+
* The last command a helper actuator group sent to each member (D944).
|
|
64924
|
+
* The composer writes this slice; the aggregate pass does not, so a later
|
|
64925
|
+
* reading does not wipe it. History is none — the outcome is the latest
|
|
64926
|
+
* attempt, not a series.
|
|
64927
|
+
*/
|
|
64928
|
+
var GroupCommandResultSchema = zod.z.object({
|
|
64929
|
+
deviceId: zod.z.number().int().nonnegative(),
|
|
64930
|
+
cap: zod.z.string().min(1),
|
|
64931
|
+
method: zod.z.string().min(1),
|
|
64932
|
+
ok: zod.z.boolean(),
|
|
64933
|
+
error: zod.z.string().optional(),
|
|
64934
|
+
/** Ms epoch of the attempt. */
|
|
64935
|
+
at: zod.z.number()
|
|
64936
|
+
});
|
|
64937
|
+
var GroupCommandsSchema = zod.z.object({
|
|
64938
|
+
/** One row per member that has been commanded. A later command replaces that member's row. */
|
|
64939
|
+
results: zod.z.array(GroupCommandResultSchema) });
|
|
64940
|
+
var groupCommandsCapability = {
|
|
64941
|
+
name: "group-commands",
|
|
64942
|
+
scope: "device",
|
|
64943
|
+
deviceNative: true,
|
|
64944
|
+
mode: "singleton",
|
|
64945
|
+
deviceTypes: [require_err_msg.DeviceType.Switch, require_err_msg.DeviceType.Light],
|
|
64946
|
+
methods: {},
|
|
64947
|
+
status: {
|
|
64948
|
+
schema: GroupCommandsSchema,
|
|
64949
|
+
kind: "push"
|
|
64950
|
+
},
|
|
64951
|
+
runtimeState: GroupCommandsSchema,
|
|
64952
|
+
/**
|
|
64953
|
+
* Runtime-state durability: **session** — the last attempt. A restored
|
|
64954
|
+
* failure would outlive the command that caused it.
|
|
64955
|
+
*
|
|
64956
|
+
* See `RuntimeStateDurability`. Enforced by
|
|
64957
|
+
* `scripts/check-runtime-state-durability.ts`.
|
|
64958
|
+
*/
|
|
64959
|
+
durability: "session",
|
|
64960
|
+
history: "none"
|
|
64961
|
+
};
|
|
64962
|
+
//#endregion
|
|
64721
64963
|
//#region src/capabilities/group-status.cap.ts
|
|
64722
64964
|
/**
|
|
64723
64965
|
* How many members of a helper group answered (D944). Counts are integers,
|
|
@@ -64747,7 +64989,11 @@ var groupStatusCapability = {
|
|
|
64747
64989
|
scope: "device",
|
|
64748
64990
|
deviceNative: true,
|
|
64749
64991
|
mode: "singleton",
|
|
64750
|
-
deviceTypes: [
|
|
64992
|
+
deviceTypes: [
|
|
64993
|
+
require_err_msg.DeviceType.Sensor,
|
|
64994
|
+
require_err_msg.DeviceType.Switch,
|
|
64995
|
+
require_err_msg.DeviceType.Light
|
|
64996
|
+
],
|
|
64751
64997
|
methods: {},
|
|
64752
64998
|
status: {
|
|
64753
64999
|
schema: GroupStatusSchema,
|
|
@@ -77734,7 +77980,7 @@ function sourcePickForTemplate(template) {
|
|
|
77734
77980
|
required: false,
|
|
77735
77981
|
minRetentionMs: null
|
|
77736
77982
|
},
|
|
77737
|
-
mustBindCaps: [],
|
|
77983
|
+
mustBindCaps: template.family === "actuator" ? [template.outputCap] : [],
|
|
77738
77984
|
exclude: []
|
|
77739
77985
|
};
|
|
77740
77986
|
}
|
|
@@ -81219,6 +81465,7 @@ var DEVICE_LOCAL_STATE_CAPS = {
|
|
|
81219
81465
|
featureProbe: featureProbeCapability,
|
|
81220
81466
|
flood: floodCapability,
|
|
81221
81467
|
gas: gasCapability,
|
|
81468
|
+
groupCommands: groupCommandsCapability,
|
|
81222
81469
|
groupStatus: groupStatusCapability,
|
|
81223
81470
|
heatingValve: heatingValveCapability,
|
|
81224
81471
|
humidifier: humidifierCapability,
|
|
@@ -83437,6 +83684,13 @@ var METHOD_ACCESS_MAP = Object.freeze({
|
|
|
83437
83684
|
access: "view",
|
|
83438
83685
|
role: "admin"
|
|
83439
83686
|
},
|
|
83687
|
+
"addons.getPackageDocs": {
|
|
83688
|
+
capName: "addons",
|
|
83689
|
+
capScope: "system",
|
|
83690
|
+
addonId: null,
|
|
83691
|
+
access: "view",
|
|
83692
|
+
role: "admin"
|
|
83693
|
+
},
|
|
83440
83694
|
"addons.getVersions": {
|
|
83441
83695
|
capName: "addons",
|
|
83442
83696
|
capScope: "system",
|
|
@@ -86545,6 +86799,13 @@ var METHOD_ACCESS_MAP = Object.freeze({
|
|
|
86545
86799
|
access: "view",
|
|
86546
86800
|
role: "viewer"
|
|
86547
86801
|
},
|
|
86802
|
+
"groupCommands.getStatus": {
|
|
86803
|
+
capName: "group-commands",
|
|
86804
|
+
capScope: "device",
|
|
86805
|
+
addonId: null,
|
|
86806
|
+
access: "view",
|
|
86807
|
+
role: "viewer"
|
|
86808
|
+
},
|
|
86548
86809
|
"groupStatus.getStatus": {
|
|
86549
86810
|
capName: "group-status",
|
|
86550
86811
|
capScope: "device",
|
|
@@ -93090,6 +93351,7 @@ var KNOWN_CAP_NAMES = [
|
|
|
93090
93351
|
"filesystem-browse",
|
|
93091
93352
|
"flood",
|
|
93092
93353
|
"gas",
|
|
93354
|
+
"group-commands",
|
|
93093
93355
|
"group-status",
|
|
93094
93356
|
"heating-valve",
|
|
93095
93357
|
"humidifier",
|
|
@@ -93239,6 +93501,7 @@ var DEVICE_CAP_NAMES = [
|
|
|
93239
93501
|
"feature-probe",
|
|
93240
93502
|
"flood",
|
|
93241
93503
|
"gas",
|
|
93504
|
+
"group-commands",
|
|
93242
93505
|
"group-status",
|
|
93243
93506
|
"heating-valve",
|
|
93244
93507
|
"humidifier",
|
|
@@ -96757,6 +97020,10 @@ var SENSOR_CAP_VOCABULARY = {
|
|
|
96757
97020
|
icon: "flame"
|
|
96758
97021
|
}]
|
|
96759
97022
|
},
|
|
97023
|
+
"group-commands": {
|
|
97024
|
+
scope: "device",
|
|
97025
|
+
noun: t("Group command", "Comando di gruppo")
|
|
97026
|
+
},
|
|
96760
97027
|
"group-status": {
|
|
96761
97028
|
scope: "device",
|
|
96762
97029
|
noun: t("Group", "Gruppo"),
|
|
@@ -98921,6 +99188,7 @@ var CAP_NAMES_WITH_STATUS = [
|
|
|
98921
99188
|
"feature-probe",
|
|
98922
99189
|
"flood",
|
|
98923
99190
|
"gas",
|
|
99191
|
+
"group-commands",
|
|
98924
99192
|
"group-status",
|
|
98925
99193
|
"heating-valve",
|
|
98926
99194
|
"humidifier",
|
|
@@ -99044,6 +99312,7 @@ var CAPABILITY_NAMES = {
|
|
|
99044
99312
|
filesystemBrowse: "filesystem-browse",
|
|
99045
99313
|
flood: "flood",
|
|
99046
99314
|
gas: "gas",
|
|
99315
|
+
groupCommands: "group-commands",
|
|
99047
99316
|
groupStatus: "group-status",
|
|
99048
99317
|
heatingValve: "heating-valve",
|
|
99049
99318
|
humidifier: "humidifier",
|
|
@@ -99451,6 +99720,10 @@ var CAPABILITY_ROUTER_KEYS = [
|
|
|
99451
99720
|
key: "gas",
|
|
99452
99721
|
name: "gas"
|
|
99453
99722
|
},
|
|
99723
|
+
{
|
|
99724
|
+
key: "groupCommands",
|
|
99725
|
+
name: "group-commands"
|
|
99726
|
+
},
|
|
99454
99727
|
{
|
|
99455
99728
|
key: "groupStatus",
|
|
99456
99729
|
name: "group-status"
|
|
@@ -99968,6 +100241,7 @@ var ALL_CAPABILITY_DEFINITIONS = [
|
|
|
99968
100241
|
filesystemBrowseCapability,
|
|
99969
100242
|
floodCapability,
|
|
99970
100243
|
gasCapability,
|
|
100244
|
+
groupCommandsCapability,
|
|
99971
100245
|
groupStatusCapability,
|
|
99972
100246
|
heatingValveCapability,
|
|
99973
100247
|
humidifierCapability,
|
|
@@ -101045,6 +101319,11 @@ var METHOD_DEVICE_SELECTORS = Object.freeze({
|
|
|
101045
101319
|
form: "single",
|
|
101046
101320
|
optional: false
|
|
101047
101321
|
}],
|
|
101322
|
+
"groupCommands.getStatus": [{
|
|
101323
|
+
name: "deviceId",
|
|
101324
|
+
form: "single",
|
|
101325
|
+
optional: false
|
|
101326
|
+
}],
|
|
101048
101327
|
"groupStatus.getStatus": [{
|
|
101049
101328
|
name: "deviceId",
|
|
101050
101329
|
form: "single",
|
|
@@ -103061,7 +103340,7 @@ function getCapsByProviderKind(kind) {
|
|
|
103061
103340
|
//#region src/generated/runtime-state-durability.ts
|
|
103062
103341
|
/**
|
|
103063
103342
|
* Per-cap runtime-state policy, projected from every `*.cap.ts` that declares
|
|
103064
|
-
* `runtimeState`.
|
|
103343
|
+
* `runtimeState`. 74 caps: 38 `restored`, 36 `session`.
|
|
103065
103344
|
*
|
|
103066
103345
|
* A cap absent from this map has no runtime-state slice at all. A cap PRESENT
|
|
103067
103346
|
* with `durability: 'session'` has one and has decided not to keep it.
|
|
@@ -103179,6 +103458,10 @@ var RUNTIME_STATE_POLICY = {
|
|
|
103179
103458
|
durability: "restored",
|
|
103180
103459
|
volatileFields: ["lastChangedAt"]
|
|
103181
103460
|
},
|
|
103461
|
+
"group-commands": {
|
|
103462
|
+
durability: "session",
|
|
103463
|
+
volatileFields: []
|
|
103464
|
+
},
|
|
103182
103465
|
"group-status": {
|
|
103183
103466
|
durability: "session",
|
|
103184
103467
|
volatileFields: []
|
|
@@ -103525,7 +103808,7 @@ var BucketAccumulator = class {
|
|
|
103525
103808
|
//#region src/generated/history-catalog.ts
|
|
103526
103809
|
/**
|
|
103527
103810
|
* Cap history catalog, projected from every `*.cap.ts` `history` block.
|
|
103528
|
-
* 41 caps with series (75 series),
|
|
103811
|
+
* 41 caps with series (75 series), 32 caps answered `'none'`.
|
|
103529
103812
|
* Field keys are `runtimeState` paths (`a.b` into fixed objects only).
|
|
103530
103813
|
*/
|
|
103531
103814
|
var HISTORY_CATALOG = {
|
|
@@ -103926,6 +104209,7 @@ var HISTORY_NONE_CAPS = [
|
|
|
103926
104209
|
"doorbell",
|
|
103927
104210
|
"event-emitter",
|
|
103928
104211
|
"feature-probe",
|
|
104212
|
+
"group-commands",
|
|
103929
104213
|
"group-status",
|
|
103930
104214
|
"image",
|
|
103931
104215
|
"image-settings",
|
|
@@ -104505,6 +104789,7 @@ function createSystemProxy(api) {
|
|
|
104505
104789
|
listCapabilityProviders: (input) => dispatch("addons", "listCapabilityProviders", "query", input),
|
|
104506
104790
|
setCapabilityProviderEnabled: (input) => dispatch("addons", "setCapabilityProviderEnabled", "mutation", input),
|
|
104507
104791
|
getVersions: (input) => dispatch("addons", "getVersions", "query", input),
|
|
104792
|
+
getPackageDocs: (input) => dispatch("addons", "getPackageDocs", "query", input),
|
|
104508
104793
|
restartAddon: (input) => dispatch("addons", "restartAddon", "mutation", input),
|
|
104509
104794
|
retryLoad: (input) => dispatch("addons", "retryLoad", "mutation", input),
|
|
104510
104795
|
getAutoUpdateSettings: (input) => dispatch("addons", "getAutoUpdateSettings", "query", input),
|
|
@@ -106087,8 +106372,8 @@ var NC_SYSTEM_EVENT_FILTER_KEYS = [
|
|
|
106087
106372
|
function systemEventFilterApplies(kind, filter) {
|
|
106088
106373
|
if (LEGACY_KINDS_WITHOUT_FILTERS.has(kind)) return false;
|
|
106089
106374
|
switch (filter) {
|
|
106090
|
-
case "deviceIds": return kind.startsWith("device-") || kind.startsWith("stream-") || kind === "detection-blind" || kind.startsWith("motion-") || kind.startsWith("recording-") || kind === "alarm-triggered";
|
|
106091
|
-
case "deviceTypes": return kind.startsWith("device-") || kind === "detection-blind" || kind.startsWith("motion-");
|
|
106375
|
+
case "deviceIds": return kind.startsWith("device-") || kind.startsWith("stream-") || kind === "detection-blind" || kind.startsWith("motion-") || kind.startsWith("package-llm-") || kind.startsWith("recording-") || kind === "alarm-triggered";
|
|
106376
|
+
case "deviceTypes": return kind.startsWith("device-") || kind === "detection-blind" || kind.startsWith("motion-") || kind.startsWith("package-llm-");
|
|
106092
106377
|
case "nodeIds": return kind.startsWith("node-") || kind === "addon-crash-loop" || kind === "addon-update-available" || kind === "addon-updated" || kind === "server-update-available" || kind === "wrapper-update-available" || kind === "server-updated" || kind.startsWith("storage-location-") || kind.startsWith("alert-");
|
|
106093
106378
|
case "packageNames": return kind.endsWith("update-available") || kind === "addon-updated" || kind === "node-updating" || kind === "server-updated";
|
|
106094
106379
|
case "consumableLowPercent": return NC_CONSUMABLE_SYSTEM_EVENT_KINDS.includes(kind);
|
|
@@ -106145,6 +106430,8 @@ var NC_SYSTEM_EVENT_FAMILY = {
|
|
|
106145
106430
|
"detection-blind": "device-events",
|
|
106146
106431
|
"motion-noisy": "device-events",
|
|
106147
106432
|
"motion-calm": "device-events",
|
|
106433
|
+
"package-llm-silent": "device-events",
|
|
106434
|
+
"package-llm-answered": "device-events",
|
|
106148
106435
|
"recording-stalled": "device-events",
|
|
106149
106436
|
"recording-healthy": "device-events",
|
|
106150
106437
|
"recording-degraded": "device-events",
|
|
@@ -106246,6 +106533,12 @@ var NC_SYSTEM_EVENT_KIND_GROUP_SPECS = [
|
|
|
106246
106533
|
label: "Motion without a subject",
|
|
106247
106534
|
kinds: ["motion-noisy", "motion-calm"]
|
|
106248
106535
|
},
|
|
106536
|
+
{
|
|
106537
|
+
id: "package-llm",
|
|
106538
|
+
family: "device-events",
|
|
106539
|
+
label: "Package confirm",
|
|
106540
|
+
kinds: ["package-llm-silent", "package-llm-answered"]
|
|
106541
|
+
},
|
|
106249
106542
|
{
|
|
106250
106543
|
id: "recording",
|
|
106251
106544
|
family: "device-events",
|
|
@@ -108166,6 +108459,8 @@ var DEVICE_EVENTS = [
|
|
|
108166
108459
|
"detection-blind",
|
|
108167
108460
|
"motion-noisy",
|
|
108168
108461
|
"motion-calm",
|
|
108462
|
+
"package-llm-silent",
|
|
108463
|
+
"package-llm-answered",
|
|
108169
108464
|
"recording-stalled",
|
|
108170
108465
|
"recording-healthy",
|
|
108171
108466
|
"recording-degraded",
|
|
@@ -108769,7 +109064,8 @@ var NC_TEMPLATE_VARS = [
|
|
|
108769
109064
|
systemEventKinds: [
|
|
108770
109065
|
"recording-degraded",
|
|
108771
109066
|
...DEVICE_ATTENTION,
|
|
108772
|
-
...ALERT_EPISODE
|
|
109067
|
+
...ALERT_EPISODE,
|
|
109068
|
+
"package-llm-silent"
|
|
108773
109069
|
]
|
|
108774
109070
|
},
|
|
108775
109071
|
{
|
|
@@ -108862,7 +109158,8 @@ var NC_TEMPLATE_VARS = [
|
|
|
108862
109158
|
systemEventKinds: [
|
|
108863
109159
|
"storage-location-low",
|
|
108864
109160
|
"storage-location-critical",
|
|
108865
|
-
"storage-location-ok"
|
|
109161
|
+
"storage-location-ok",
|
|
109162
|
+
"package-llm-silent"
|
|
108866
109163
|
]
|
|
108867
109164
|
},
|
|
108868
109165
|
{
|
|
@@ -109273,7 +109570,9 @@ var NC_TEMPLATE_HELD_BACK_SYSTEM_EVENT_KINDS = [
|
|
|
109273
109570
|
"device-attention-required",
|
|
109274
109571
|
"device-attention-resolved",
|
|
109275
109572
|
"rule-broken",
|
|
109276
|
-
"rule-repaired"
|
|
109573
|
+
"rule-repaired",
|
|
109574
|
+
"package-llm-silent",
|
|
109575
|
+
"package-llm-answered"
|
|
109277
109576
|
];
|
|
109278
109577
|
/**
|
|
109279
109578
|
* The catalog as `getTemplateCatalog` SERVES it: every descriptor, with the
|
|
@@ -109435,6 +109734,15 @@ var NC_SYSTEM_EVENT_CLASS_SPECS = [
|
|
|
109435
109734
|
snapshotLabel: "Cameras with constant motion now",
|
|
109436
109735
|
snapshotSection: null
|
|
109437
109736
|
},
|
|
109737
|
+
{
|
|
109738
|
+
id: "package-llm-confirm",
|
|
109739
|
+
family: "device-events",
|
|
109740
|
+
label: "Package confirm (not answering / answering again)",
|
|
109741
|
+
bad: ["package-llm-silent"],
|
|
109742
|
+
recovery: ["package-llm-answered"],
|
|
109743
|
+
snapshotLabel: "Cameras whose package confirm is not answering",
|
|
109744
|
+
snapshotSection: null
|
|
109745
|
+
},
|
|
109438
109746
|
{
|
|
109439
109747
|
id: "recording-health",
|
|
109440
109748
|
family: "device-events",
|
|
@@ -115178,6 +115486,7 @@ function armRemovalReconcile(opts) {
|
|
|
115178
115486
|
//#endregion
|
|
115179
115487
|
exports.ACCESSORY_LABEL = ACCESSORY_LABEL;
|
|
115180
115488
|
exports.ACCESS_ROLES = ACCESS_ROLES;
|
|
115489
|
+
exports.ACTIVE_CRITERIA = require_composition.ACTIVE_CRITERIA;
|
|
115181
115490
|
exports.ADMIN_SCOPE = ADMIN_SCOPE;
|
|
115182
115491
|
exports.AGENT_MDNS_QUERY_NAME = AGENT_MDNS_QUERY_NAME;
|
|
115183
115492
|
exports.AGENT_MDNS_SERVICE_TYPE = AGENT_MDNS_SERVICE_TYPE;
|
|
@@ -115216,6 +115525,7 @@ exports.AcceleratorComputeSchema = AcceleratorComputeSchema;
|
|
|
115216
115525
|
exports.AcceleratorKindSchema = AcceleratorKindSchema;
|
|
115217
115526
|
exports.AccessoriesStatusSchema = AccessoriesStatusSchema;
|
|
115218
115527
|
exports.AccessoryKind = AccessoryKind;
|
|
115528
|
+
exports.ActiveCriterionSchema = require_composition.ActiveCriterionSchema;
|
|
115219
115529
|
exports.AddBrokerInputSchema = AddBrokerInputSchema;
|
|
115220
115530
|
exports.AddRetrainFrameFromRecordingResultSchema = AddRetrainFrameFromRecordingResultSchema;
|
|
115221
115531
|
exports.AddonAutoUpdateSchema = AddonAutoUpdateSchema;
|
|
@@ -115869,6 +116179,7 @@ exports.FACE_RESCORE_INTERVAL_FIELD = FACE_RESCORE_INTERVAL_FIELD;
|
|
|
115869
116179
|
exports.FACE_RESCORE_INTERVAL_KEY = FACE_RESCORE_INTERVAL_KEY;
|
|
115870
116180
|
exports.FACE_RESCORE_INTERVAL_MIN_RUNNING = FACE_RESCORE_INTERVAL_MIN_RUNNING;
|
|
115871
116181
|
exports.FACE_RESCORE_SECTION_ID = FACE_RESCORE_SECTION_ID;
|
|
116182
|
+
exports.FAN_OUT_CONCURRENCY = FAN_OUT_CONCURRENCY;
|
|
115872
116183
|
exports.FEEDER_EXAMPLE_ADDON_ID = FEEDER_EXAMPLE_ADDON_ID;
|
|
115873
116184
|
exports.FEEDER_EXAMPLE_HA_DEVICE_ID = FEEDER_EXAMPLE_HA_DEVICE_ID;
|
|
115874
116185
|
exports.FFMPEG_PATH_ENV = require_composition.FFMPEG_PATH_ENV;
|
|
@@ -115900,6 +116211,8 @@ exports.GetStreamWithCodecInputSchema = GetStreamWithCodecInputSchema;
|
|
|
115900
116211
|
exports.GlobalMetricsSchema = GlobalMetricsSchema;
|
|
115901
116212
|
exports.GridLayoutPatchSchema = GridLayoutPatchSchema;
|
|
115902
116213
|
exports.GridLayoutViewSchema = GridLayoutViewSchema;
|
|
116214
|
+
exports.GroupCommandResultSchema = GroupCommandResultSchema;
|
|
116215
|
+
exports.GroupCommandsSchema = GroupCommandsSchema;
|
|
115903
116216
|
exports.GroupHelperSpecSchema = require_composition.GroupHelperSpecSchema;
|
|
115904
116217
|
exports.GroupStatusSchema = GroupStatusSchema;
|
|
115905
116218
|
exports.GroupTemplateIdSchema = require_composition.GroupTemplateIdSchema;
|
|
@@ -115987,6 +116300,7 @@ exports.LABEL_SUPPLY_MACRO = LABEL_SUPPLY_MACRO;
|
|
|
115987
116300
|
exports.LABEL_SUPPLY_STEP_IDS = LABEL_SUPPLY_STEP_IDS;
|
|
115988
116301
|
exports.LABEL_SUPPLY_VOCABULARIES = LABEL_SUPPLY_VOCABULARIES;
|
|
115989
116302
|
exports.LEGACY_READ_ONLY_CONFIG_KEY = LEGACY_READ_ONLY_CONFIG_KEY;
|
|
116303
|
+
exports.LIGHT_SHARED_CAPS = LIGHT_SHARED_CAPS;
|
|
115990
116304
|
exports.LINKED_DEVICES_SLOT = LINKED_DEVICES_SLOT;
|
|
115991
116305
|
exports.LINKED_LABEL_STEP_PREFIX = LINKED_LABEL_STEP_PREFIX;
|
|
115992
116306
|
exports.LLM_PROFILE_KIND_PATTERN = LLM_PROFILE_KIND_PATTERN;
|
|
@@ -117196,6 +117510,7 @@ exports.actionsForDevice = actionsForDevice;
|
|
|
117196
117510
|
exports.actionsForDeviceType = actionsForDeviceType;
|
|
117197
117511
|
exports.actionsForDevices = actionsForDevices;
|
|
117198
117512
|
exports.activateAlarmProfile = activateAlarmProfile;
|
|
117513
|
+
exports.activeForReducer = activeForReducer;
|
|
117199
117514
|
exports.addonCatalogHref = addonCatalogHref;
|
|
117200
117515
|
exports.addonPagesCapability = addonPagesCapability;
|
|
117201
117516
|
exports.addonPagesSourceCapability = addonPagesSourceCapability;
|
|
@@ -117543,6 +117858,7 @@ exports.faceGalleryCapability = faceGalleryCapability;
|
|
|
117543
117858
|
exports.failureContributionCapability = failureContributionCapability;
|
|
117544
117859
|
exports.failureRate = failureRate;
|
|
117545
117860
|
exports.fanControlCapability = fanControlCapability;
|
|
117861
|
+
exports.fanOutTargets = fanOutTargets;
|
|
117546
117862
|
exports.featureFieldEntries = require_composition.featureFieldEntries;
|
|
117547
117863
|
exports.featureOfRole = featureOfRole;
|
|
117548
117864
|
exports.featureProbeCapability = featureProbeCapability;
|
|
@@ -117586,6 +117902,7 @@ exports.gifFilterComplex = gifFilterComplex;
|
|
|
117586
117902
|
exports.gifFromMp4Args = gifFromMp4Args;
|
|
117587
117903
|
exports.globalSecretScope = require_sleep.globalSecretScope;
|
|
117588
117904
|
exports.grantRowsOf = grantRowsOf;
|
|
117905
|
+
exports.groupCommandsCapability = groupCommandsCapability;
|
|
117589
117906
|
exports.groupStatusCapability = groupStatusCapability;
|
|
117590
117907
|
exports.groupTemplate = groupTemplate;
|
|
117591
117908
|
exports.hasModelBoundOverrides = hasModelBoundOverrides;
|
|
@@ -117825,6 +118142,7 @@ exports.parseAppAuthCallback = parseAppAuthCallback;
|
|
|
117825
118142
|
exports.parseAppFlowRequest = parseAppFlowRequest;
|
|
117826
118143
|
exports.parseAppPageLang = parseAppPageLang;
|
|
117827
118144
|
exports.parseCameraStreamConfig = parseCameraStreamConfig;
|
|
118145
|
+
exports.parseColorInput = parseColorInput;
|
|
117828
118146
|
exports.parseCredentialScopes = parseCredentialScopes;
|
|
117829
118147
|
exports.parseDeviceEnrollmentLink = parseDeviceEnrollmentLink;
|
|
117830
118148
|
exports.parseExpression = require_composition.parseExpression;
|
|
@@ -117934,6 +118252,7 @@ exports.recordsCapability = recordsCapability;
|
|
|
117934
118252
|
exports.recordsErrorFromMessage = require_sleep.recordsErrorFromMessage;
|
|
117935
118253
|
exports.rectsToCells = rectsToCells;
|
|
117936
118254
|
exports.reducePoints = reducePoints;
|
|
118255
|
+
exports.reducerForActive = reducerForActive;
|
|
117937
118256
|
exports.registerKnownSecret = require_sleep.registerKnownSecret;
|
|
117938
118257
|
exports.remapCropDetections = remapCropDetections;
|
|
117939
118258
|
exports.renameAlarmProfile = renameAlarmProfile;
|
|
@@ -118010,6 +118329,7 @@ exports.ruleSection = ruleSection;
|
|
|
118010
118329
|
exports.ruleSectionOf = ruleSectionOf;
|
|
118011
118330
|
exports.ruleSeedForSection = ruleSeedForSection;
|
|
118012
118331
|
exports.ruleTriggerZoneIds = ruleTriggerZoneIds;
|
|
118332
|
+
exports.runFanOut = runFanOut;
|
|
118013
118333
|
exports.runInferenceStep = runInferenceStep;
|
|
118014
118334
|
exports.runningFromDishwasherOperation = runningFromDishwasherOperation;
|
|
118015
118335
|
exports.runningFromLawnMower = runningFromLawnMower;
|
|
@@ -118058,6 +118378,8 @@ exports.settingValuesEqual = settingValuesEqual;
|
|
|
118058
118378
|
exports.settingsBelow = settingsBelow;
|
|
118059
118379
|
exports.settingsStoreCapability = settingsStoreCapability;
|
|
118060
118380
|
exports.shareViewGrantOf = shareViewGrantOf;
|
|
118381
|
+
exports.sharedColorModes = sharedColorModes;
|
|
118382
|
+
exports.sharedLightCaps = sharedLightCaps;
|
|
118061
118383
|
exports.shortHostname = shortHostname;
|
|
118062
118384
|
exports.shortSecretRefHash = require_sleep.shortSecretRefHash;
|
|
118063
118385
|
exports.signalPercentFromBars = signalPercentFromBars;
|