@camstack/addon-model-studio 1.1.314 → 1.1.316
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/CHANGELOG.md +12 -0
- package/dist/{MotionZonesSettings-Bbq95ygz.mjs → MotionZonesSettings-CMwAQd-Y.mjs} +2 -2
- package/dist/{PrivacyMaskSettings-ZpD6VN7X.mjs → PrivacyMaskSettings-wx9DyDgK.mjs} +4 -4
- package/dist/{SceneMonitorEditor-BvsLHttM.mjs → SceneMonitorEditor-jDNxVNGw.mjs} +3 -3
- package/dist/_stub.js +6515 -6341
- package/dist/{_virtual_mf-localSharedImportMap___mfe_internal__addon_model_studio_page-BtG6KzLk.mjs → _virtual_mf-localSharedImportMap___mfe_internal__addon_model_studio_page-P5JTQUjR.mjs} +3 -3
- package/dist/_virtual_mf___mfe_internal__addon_model_studio_page__loadShare___mf_0_camstack_mf_1_types__loadShare__.js-Cxz43vtF.mjs +26 -0
- package/dist/addon-model-studio.css +1 -1
- package/dist/{hostInit-XUNzuCDs.mjs → hostInit-DXaNbFAa.mjs} +2 -2
- package/dist/model-studio.addon.js +199 -12
- package/dist/model-studio.addon.mjs +199 -12
- package/dist/{player-overlays-Dc4klu5U.mjs → player-overlays-B0MiJ5R6.mjs} +1 -1
- package/dist/remoteEntry.js +1 -1
- package/dist/{responsive-D28CBU7-.mjs → responsive-BHzVDMt-.mjs} +1 -1
- package/dist/{scene-monitor-copy-KG_LV8wy.mjs → scene-monitor-copy-CBNkkNvs.mjs} +1 -1
- package/dist/{square-BpIRNy9u.mjs → square-SIMvtgyo.mjs} +1 -1
- package/dist/{trash-2-BwbD1FGM.mjs → trash-2-CTpwDufe.mjs} +1 -1
- package/dist/{virtual_mf-REMOTE_ENTRY_ID___mfe_internal__addon_model_studio_page__remoteEntry_js-D2YHXWx9.mjs → virtual_mf-REMOTE_ENTRY_ID___mfe_internal__addon_model_studio_page__remoteEntry_js-D6DfHBUW.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-DxAMUMtD.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.438",
|
|
40
40
|
scope: "default",
|
|
41
41
|
shareConfig: {
|
|
42
42
|
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.346",
|
|
85
85
|
scope: "default",
|
|
86
86
|
shareConfig: {
|
|
87
87
|
singleton: !0,
|
|
@@ -5842,7 +5842,7 @@ var ZodIssueCode = {
|
|
|
5842
5842
|
var ZodFirstPartyTypeKind;
|
|
5843
5843
|
ZodFirstPartyTypeKind || (ZodFirstPartyTypeKind = {});
|
|
5844
5844
|
//#endregion
|
|
5845
|
-
//#region ../types/dist/sleep-
|
|
5845
|
+
//#region ../types/dist/sleep-BAvUCi_2.mjs
|
|
5846
5846
|
/**
|
|
5847
5847
|
* The audio chunk plane's byte format, and the ONE expansion from a coded
|
|
5848
5848
|
* window to float samples (D455).
|
|
@@ -9057,6 +9057,7 @@ var CAP_NAMES = Object.freeze([
|
|
|
9057
9057
|
"image-settings",
|
|
9058
9058
|
"integrations",
|
|
9059
9059
|
"intercom",
|
|
9060
|
+
"ir-transmitter",
|
|
9060
9061
|
"keychain",
|
|
9061
9062
|
"keychain-admin",
|
|
9062
9063
|
"lawn-mower-control",
|
|
@@ -10304,6 +10305,11 @@ Object.freeze({
|
|
|
10304
10305
|
"path": "batteryPower",
|
|
10305
10306
|
"valueType": "number"
|
|
10306
10307
|
},
|
|
10308
|
+
{
|
|
10309
|
+
"path": "powerSource",
|
|
10310
|
+
"valueType": "enum",
|
|
10311
|
+
"enumValues": ["mains", "battery"]
|
|
10312
|
+
},
|
|
10307
10313
|
{
|
|
10308
10314
|
"path": "desiccantLeftDays",
|
|
10309
10315
|
"valueType": "number"
|
|
@@ -10887,7 +10893,7 @@ object({
|
|
|
10887
10893
|
params: record(string(), union([string(), number()])).optional()
|
|
10888
10894
|
});
|
|
10889
10895
|
//#endregion
|
|
10890
|
-
//#region ../types/dist/err-msg-
|
|
10896
|
+
//#region ../types/dist/err-msg-BCdlR2Li.mjs
|
|
10891
10897
|
var DeviceType = /* @__PURE__ */ function(DeviceType) {
|
|
10892
10898
|
DeviceType["Camera"] = "camera";
|
|
10893
10899
|
DeviceType["Hub"] = "hub";
|
|
@@ -11233,10 +11239,13 @@ var DeviceRole = /* @__PURE__ */ function(DeviceRole) {
|
|
|
11233
11239
|
/** Fallback when the notifier service name doesn't match a known
|
|
11234
11240
|
* pattern. */
|
|
11235
11241
|
DeviceRole["GenericNotifier"] = "generic-notifier";
|
|
11242
|
+
/** Emits a pulse train (infrared or RF) on request — the `ir-transmitter`
|
|
11243
|
+
* cap. A `DeviceType.Generic` device. */
|
|
11244
|
+
DeviceRole["IrTransmitter"] = "ir-transmitter";
|
|
11236
11245
|
return DeviceRole;
|
|
11237
11246
|
}({});
|
|
11238
11247
|
//#endregion
|
|
11239
|
-
//#region ../types/dist/composition-
|
|
11248
|
+
//#region ../types/dist/composition-DpFv_J6D.mjs
|
|
11240
11249
|
/**
|
|
11241
11250
|
* The ffmpeg build every CamStack node downloads, per platform and arch.
|
|
11242
11251
|
*
|
|
@@ -19304,12 +19313,13 @@ var CHANGED = {
|
|
|
19304
19313
|
expr: "now"
|
|
19305
19314
|
};
|
|
19306
19315
|
function numeric(input) {
|
|
19316
|
+
const { alsoFrom, ...base } = input;
|
|
19307
19317
|
return {
|
|
19308
|
-
...
|
|
19318
|
+
...base,
|
|
19309
19319
|
family: "numeric",
|
|
19310
19320
|
deviceType: DeviceType.Sensor,
|
|
19311
19321
|
memberDeviceType: DeviceType.Sensor,
|
|
19312
|
-
memberDeviceTypes: [DeviceType.Sensor],
|
|
19322
|
+
memberDeviceTypes: [DeviceType.Sensor, ...alsoFrom?.deviceTypes ?? []],
|
|
19313
19323
|
activeWhen: void 0,
|
|
19314
19324
|
commandCaps: [],
|
|
19315
19325
|
baseUnit: baseUnitOf(input.quantity),
|
|
@@ -19317,9 +19327,10 @@ function numeric(input) {
|
|
|
19317
19327
|
accept: [{
|
|
19318
19328
|
cap: input.outputCap,
|
|
19319
19329
|
fieldPath: input.outputField
|
|
19320
|
-
}]
|
|
19330
|
+
}, ...alsoFrom === void 0 ? [] : [alsoFrom.accept]]
|
|
19321
19331
|
};
|
|
19322
19332
|
}
|
|
19333
|
+
var CLIMATE_DEVICES = [DeviceType.Thermostat, DeviceType.Climate];
|
|
19323
19334
|
function binary(input) {
|
|
19324
19335
|
return {
|
|
19325
19336
|
...input,
|
|
@@ -19345,7 +19356,14 @@ var GROUP_TEMPLATES = [
|
|
|
19345
19356
|
quantity: "temperature",
|
|
19346
19357
|
defaultAggregate: "mean",
|
|
19347
19358
|
empty: "null",
|
|
19348
|
-
companions: [NOW$2]
|
|
19359
|
+
companions: [NOW$2],
|
|
19360
|
+
alsoFrom: {
|
|
19361
|
+
deviceTypes: CLIMATE_DEVICES,
|
|
19362
|
+
accept: {
|
|
19363
|
+
cap: "climate-control",
|
|
19364
|
+
fieldPath: "currentTemp"
|
|
19365
|
+
}
|
|
19366
|
+
}
|
|
19349
19367
|
}),
|
|
19350
19368
|
numeric({
|
|
19351
19369
|
id: "humidity",
|
|
@@ -19356,7 +19374,14 @@ var GROUP_TEMPLATES = [
|
|
|
19356
19374
|
quantity: "humidity",
|
|
19357
19375
|
defaultAggregate: "mean",
|
|
19358
19376
|
empty: "null",
|
|
19359
|
-
companions: [NOW$2]
|
|
19377
|
+
companions: [NOW$2],
|
|
19378
|
+
alsoFrom: {
|
|
19379
|
+
deviceTypes: CLIMATE_DEVICES,
|
|
19380
|
+
accept: {
|
|
19381
|
+
cap: "climate-control",
|
|
19382
|
+
fieldPath: "currentHumidity"
|
|
19383
|
+
}
|
|
19384
|
+
}
|
|
19360
19385
|
}),
|
|
19361
19386
|
numeric({
|
|
19362
19387
|
id: "pressure",
|
|
@@ -43602,6 +43627,17 @@ var LlmProfileSchema = object({
|
|
|
43602
43627
|
* field in its editor only when its descriptor lists it in `profileFields`. */
|
|
43603
43628
|
topK: number().int().positive().optional(),
|
|
43604
43629
|
maxTokens: number().int().positive().optional(),
|
|
43630
|
+
/** How hard the model "thinks" before it answers. Omitted = the model's own
|
|
43631
|
+
* default. `off` matters for structured output: a thinking model can spend
|
|
43632
|
+
* the whole completion on reasoning and return an empty `content`. Carried
|
|
43633
|
+
* only by the wires that have it — a kind offers the field in its editor
|
|
43634
|
+
* only when its descriptor lists it in `profileFields`. */
|
|
43635
|
+
reasoningEffort: _enum([
|
|
43636
|
+
"off",
|
|
43637
|
+
"low",
|
|
43638
|
+
"medium",
|
|
43639
|
+
"high"
|
|
43640
|
+
]).optional(),
|
|
43605
43641
|
/** Prompt context window. Advisory for cloud kinds (they enforce their own). */
|
|
43606
43642
|
contextLength: number().int().positive().optional(),
|
|
43607
43643
|
/** Default system prompt. A caller's `system` REPLACES it (never appends —
|
|
@@ -43640,6 +43676,7 @@ var LlmProfileFieldSchema = _enum([
|
|
|
43640
43676
|
"topP",
|
|
43641
43677
|
"topK",
|
|
43642
43678
|
"maxTokens",
|
|
43679
|
+
"reasoningEffort",
|
|
43643
43680
|
"contextLength",
|
|
43644
43681
|
"systemPrompt",
|
|
43645
43682
|
"timeoutMs",
|
|
@@ -44896,6 +44933,43 @@ var NotificationActionSchema = object({
|
|
|
44896
44933
|
*/
|
|
44897
44934
|
mode: _enum(["navigate", "background"]).optional()
|
|
44898
44935
|
});
|
|
44936
|
+
/** A delivery parameter value: what a notifier declared it takes. */
|
|
44937
|
+
var DeliveryParamValueSchema = union([
|
|
44938
|
+
string(),
|
|
44939
|
+
number(),
|
|
44940
|
+
boolean()
|
|
44941
|
+
]);
|
|
44942
|
+
/**
|
|
44943
|
+
* One extra delivery parameter a notifier KIND declares (D938). A rule that
|
|
44944
|
+
* addresses a target of that kind may set it; a kind that declares nothing is
|
|
44945
|
+
* never handed one. The admin UI derives its control from this descriptor —
|
|
44946
|
+
* no editor knows a service by name.
|
|
44947
|
+
*
|
|
44948
|
+
* Optional fields are `.optional()`, never `.default()` (a Zod default does not
|
|
44949
|
+
* run on the addon cap path).
|
|
44950
|
+
*/
|
|
44951
|
+
var DeliveryParamSchema = object({
|
|
44952
|
+
key: string().min(1),
|
|
44953
|
+
label: string(),
|
|
44954
|
+
/** i18n key of the label, resolved by the declaring addon's namespace. */
|
|
44955
|
+
labelKey: string().optional(),
|
|
44956
|
+
type: _enum([
|
|
44957
|
+
"enum",
|
|
44958
|
+
"number",
|
|
44959
|
+
"boolean",
|
|
44960
|
+
"string"
|
|
44961
|
+
]),
|
|
44962
|
+
/** `enum` only: the closed set of accepted values. */
|
|
44963
|
+
options: array(object({
|
|
44964
|
+
value: string(),
|
|
44965
|
+
label: string()
|
|
44966
|
+
})).optional(),
|
|
44967
|
+
/** `number` only. */
|
|
44968
|
+
min: number().optional(),
|
|
44969
|
+
max: number().optional(),
|
|
44970
|
+
/** What the notifier does when the rule sets nothing; shown as the placeholder. */
|
|
44971
|
+
default: DeliveryParamValueSchema.optional()
|
|
44972
|
+
});
|
|
44899
44973
|
/**
|
|
44900
44974
|
* The canonical notification. `body` is the only hard field (Apprise model).
|
|
44901
44975
|
* `priority` is a 5-level ORDINAL (1=lowest … 3=normal(default) … 5=urgent),
|
|
@@ -44918,7 +44992,13 @@ var NotificationSchema = object({
|
|
|
44918
44992
|
tag: string().optional(),
|
|
44919
44993
|
deviceId: number().optional(),
|
|
44920
44994
|
eventId: string().optional(),
|
|
44921
|
-
metadata: record(string(), unknown()).optional()
|
|
44995
|
+
metadata: record(string(), unknown()).optional(),
|
|
44996
|
+
/**
|
|
44997
|
+
* Values for the parameters the target's kind DECLARES in
|
|
44998
|
+
* {@link TargetKindSchema} `deliveryParams`. Already validated against the
|
|
44999
|
+
* declaration by the sender; a notifier reads only the keys it declared.
|
|
45000
|
+
*/
|
|
45001
|
+
delivery: record(string(), DeliveryParamValueSchema).optional()
|
|
44922
45002
|
});
|
|
44923
45003
|
/** One declared native severity/priority level for a kind. */
|
|
44924
45004
|
var TargetKindLevelSchema = object({
|
|
@@ -45024,6 +45104,11 @@ var TargetKindSchema = object({
|
|
|
45024
45104
|
*/
|
|
45025
45105
|
destinationKeys: array(string()).optional(),
|
|
45026
45106
|
supportsDiscovery: boolean(),
|
|
45107
|
+
/**
|
|
45108
|
+
* Extra delivery parameters a rule may set for a target of this kind (D938).
|
|
45109
|
+
* Absent = none; the rule editor then offers nothing.
|
|
45110
|
+
*/
|
|
45111
|
+
deliveryParams: array(DeliveryParamSchema).optional(),
|
|
45027
45112
|
caps: TargetKindCapsSchema
|
|
45028
45113
|
});
|
|
45029
45114
|
/**
|
|
@@ -57194,7 +57279,9 @@ var ManifestShapeSchema = object({
|
|
|
57194
57279
|
icon: string().optional()
|
|
57195
57280
|
}).optional(),
|
|
57196
57281
|
protected: boolean().optional(),
|
|
57197
|
-
removable: boolean().optional()
|
|
57282
|
+
removable: boolean().optional(),
|
|
57283
|
+
/** Declared Integrations-page block (mirror of `AddonDeclaration.integrationSection`). */
|
|
57284
|
+
integrationSection: _enum(["system", "providers"]).optional()
|
|
57198
57285
|
});
|
|
57199
57286
|
var AddonProcessSchema = object({
|
|
57200
57287
|
pid: number().optional(),
|
|
@@ -57916,6 +58003,56 @@ DeviceType.Button, method(object({ deviceId: number().int().nonnegative() }), _v
|
|
|
57916
58003
|
auth: "protected"
|
|
57917
58004
|
});
|
|
57918
58005
|
/**
|
|
58006
|
+
* A pulse train in signed microseconds: mark (+) first, then space (-), strictly
|
|
58007
|
+
* alternating, no zeros, 2..1024 entries.
|
|
58008
|
+
*/
|
|
58009
|
+
var IrTimingsSchema = array(number().int()).min(2).max(1024).superRefine((timings, ctx) => {
|
|
58010
|
+
timings.forEach((value, index) => {
|
|
58011
|
+
const expectMark = index % 2 === 0;
|
|
58012
|
+
if (value === 0 || value > 0 !== expectMark) ctx.addIssue({
|
|
58013
|
+
code: "custom",
|
|
58014
|
+
message: `timing ${index} must be a non-zero ${expectMark ? "mark (positive)" : "space (negative)"}`,
|
|
58015
|
+
path: [index]
|
|
58016
|
+
});
|
|
58017
|
+
});
|
|
58018
|
+
});
|
|
58019
|
+
/** Per-command transmit options. Every key is optional; a transmitter applies what it can. */
|
|
58020
|
+
var TransmitSettingsSchema = object({
|
|
58021
|
+
carrierHz: number().int().positive().optional(),
|
|
58022
|
+
dutyCyclePercent: number().int().min(1).max(100).optional(),
|
|
58023
|
+
repeat: number().int().min(0).max(20).optional(),
|
|
58024
|
+
repeatDelayMs: number().int().min(0).optional()
|
|
58025
|
+
});
|
|
58026
|
+
/** The setting keys a transmitter may declare as settable (`getInfo.settable`). */
|
|
58027
|
+
var TransmitSettingKeySchema = _enum([
|
|
58028
|
+
"carrierHz",
|
|
58029
|
+
"dutyCyclePercent",
|
|
58030
|
+
"repeat",
|
|
58031
|
+
"repeatDelayMs"
|
|
58032
|
+
]);
|
|
58033
|
+
var IrMediumSchema = _enum(["ir", "rf"]);
|
|
58034
|
+
var IrSendResultSchema = object({
|
|
58035
|
+
ok: literal(true),
|
|
58036
|
+
/** Settings the transmitter could not apply; the train was still sent. */
|
|
58037
|
+
ignoredSettings: array(string())
|
|
58038
|
+
});
|
|
58039
|
+
var IrTransmitterInfoSchema = object({
|
|
58040
|
+
media: array(IrMediumSchema),
|
|
58041
|
+
settable: array(TransmitSettingKeySchema),
|
|
58042
|
+
maxTimings: number().int().positive()
|
|
58043
|
+
});
|
|
58044
|
+
DeviceType.Generic, method(object({
|
|
58045
|
+
deviceId: number().int().nonnegative(),
|
|
58046
|
+
timings: IrTimingsSchema,
|
|
58047
|
+
settings: TransmitSettingsSchema.optional()
|
|
58048
|
+
}), IrSendResultSchema, {
|
|
58049
|
+
kind: "mutation",
|
|
58050
|
+
auth: "protected"
|
|
58051
|
+
}), method(object({ deviceId: number().int().nonnegative() }), IrTransmitterInfoSchema, {
|
|
58052
|
+
kind: "query",
|
|
58053
|
+
auth: "protected"
|
|
58054
|
+
});
|
|
58055
|
+
/**
|
|
57919
58056
|
* `calendar-source` — collection cap exposing per-provider calendars and
|
|
57920
58057
|
* their events. Every addon that contributes calendars (Home Assistant,
|
|
57921
58058
|
* a future Google Calendar addon, …) registers a provider here. The hub
|
|
@@ -62018,9 +62155,14 @@ object({
|
|
|
62018
62155
|
* (`device_class: problem`, on = low). True when the tank reports empty,
|
|
62019
62156
|
* or, on a dual-hopper model, when EITHER hopper is empty. */
|
|
62020
62157
|
lowFood: boolean(),
|
|
62021
|
-
/** Battery charge 0..100 (%).
|
|
62022
|
-
*
|
|
62158
|
+
/** Battery charge 0..100 (%). On a feeder running on `mains` this is the
|
|
62159
|
+
* BACKUP battery's charge, not the power source. Null when the device has
|
|
62160
|
+
* no battery reading. */
|
|
62023
62161
|
batteryPower: number().min(0).max(100).nullable().meta(readingMeta("percentage")),
|
|
62162
|
+
/** What the feeder is powered from right now: `mains` (plugged in, the
|
|
62163
|
+
* battery is only a backup) or `battery`. Null when the device does not
|
|
62164
|
+
* report it. */
|
|
62165
|
+
powerSource: _enum(["mains", "battery"]).nullable(),
|
|
62024
62166
|
/**
|
|
62025
62167
|
* Desiccant life remaining, stored in seconds (duration base, D944).
|
|
62026
62168
|
* Providers convert from the days the feeder reports. Null when the
|
|
@@ -70394,6 +70536,20 @@ Object.freeze({
|
|
|
70394
70536
|
access: "create",
|
|
70395
70537
|
role: "viewer"
|
|
70396
70538
|
},
|
|
70539
|
+
"irTransmitter.getInfo": {
|
|
70540
|
+
capName: "ir-transmitter",
|
|
70541
|
+
capScope: "device",
|
|
70542
|
+
addonId: null,
|
|
70543
|
+
access: "view",
|
|
70544
|
+
role: "viewer"
|
|
70545
|
+
},
|
|
70546
|
+
"irTransmitter.send": {
|
|
70547
|
+
capName: "ir-transmitter",
|
|
70548
|
+
capScope: "device",
|
|
70549
|
+
addonId: null,
|
|
70550
|
+
access: "create",
|
|
70551
|
+
role: "viewer"
|
|
70552
|
+
},
|
|
70397
70553
|
"keychain.delete": {
|
|
70398
70554
|
capName: "keychain",
|
|
70399
70555
|
capScope: "system",
|
|
@@ -78017,6 +78173,11 @@ var ACTUATOR_CAP_VOCABULARY = {
|
|
|
78017
78173
|
icon: "circle-dot"
|
|
78018
78174
|
}]
|
|
78019
78175
|
},
|
|
78176
|
+
"ir-transmitter": {
|
|
78177
|
+
scope: "device",
|
|
78178
|
+
noun: t("IR / RF transmitter", "Trasmettitore IR / RF"),
|
|
78179
|
+
notOperatorFacing: { send: "a raw pulse train is not something an operator composes in an automation; the remote that owns the command table sends it" }
|
|
78180
|
+
},
|
|
78020
78181
|
control: {
|
|
78021
78182
|
scope: "device",
|
|
78022
78183
|
noun: t("Control", "Controllo"),
|
|
@@ -81736,6 +81897,16 @@ Object.freeze({
|
|
|
81736
81897
|
form: "single",
|
|
81737
81898
|
optional: false
|
|
81738
81899
|
}],
|
|
81900
|
+
"irTransmitter.getInfo": [{
|
|
81901
|
+
name: "deviceId",
|
|
81902
|
+
form: "single",
|
|
81903
|
+
optional: false
|
|
81904
|
+
}],
|
|
81905
|
+
"irTransmitter.send": [{
|
|
81906
|
+
name: "deviceId",
|
|
81907
|
+
form: "single",
|
|
81908
|
+
optional: false
|
|
81909
|
+
}],
|
|
81739
81910
|
"keychain.deleteDeviceScope": [{
|
|
81740
81911
|
name: "deviceId",
|
|
81741
81912
|
form: "single",
|
|
@@ -84769,6 +84940,22 @@ DEFAULT_NATIVE_LEASE_SETTINGS.admission;
|
|
|
84769
84940
|
String.raw`(?<=^|["'(\s>,\[{])`;
|
|
84770
84941
|
var MB = 1024 * 1024;
|
|
84771
84942
|
1024 * MB, 3072 * MB;
|
|
84943
|
+
discriminatedUnion("kind", [object({
|
|
84944
|
+
kind: literal("raw"),
|
|
84945
|
+
timings: array(number().int()),
|
|
84946
|
+
settings: TransmitSettingsSchema.optional()
|
|
84947
|
+
}), object({
|
|
84948
|
+
kind: literal("pronto"),
|
|
84949
|
+
code: string()
|
|
84950
|
+
})]);
|
|
84951
|
+
object({
|
|
84952
|
+
manufacturer: string().optional(),
|
|
84953
|
+
supportedModels: array(string()).optional(),
|
|
84954
|
+
supportedController: string().optional(),
|
|
84955
|
+
commandsEncoding: string(),
|
|
84956
|
+
delay: number().nonnegative().optional(),
|
|
84957
|
+
commands: record(string(), unknown())
|
|
84958
|
+
});
|
|
84772
84959
|
//#endregion
|
|
84773
84960
|
//#region src/convert-orchestrator.ts
|
|
84774
84961
|
function supports(hw, targets) {
|