iobroker.assistant 1.0.1 → 1.0.2
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/README.md +4 -0
- package/admin/custom/.vite/manifest.json +18 -18
- package/admin/custom/assets/Components-7BDDNrGP.js +1 -0
- package/admin/custom/assets/_virtual_mf-localSharedImportMap___mfe_internal__ConfigCustomAssistant__mf_owner__1-DcAGnE2z.js +1 -0
- package/admin/custom/assets/{_virtual_mf___mfe_internal__ConfigCustomAssistant__mf_owner__198531368674860__loadShare___mf_0_iobroker_mf_1_gui_mf_2_components__loadShare__.js-rncPQw0c.js → _virtual_mf___mfe_internal__ConfigCustomAssistant__mf_owner__198531368674860__loadShare___mf_0_iobroker_mf_1_gui_mf_2_components__loadShare__.js-CMv8bcyA.js} +1 -1
- package/admin/custom/assets/{_virtual_mf___mfe_internal__ConfigCustomAssistant__mf_owner__198531368674860__loadShare__shared-CY-9JaDr.js → _virtual_mf___mfe_internal__ConfigCustomAssistant__mf_owner__198531368674860__loadShare__shared-3mzaJWDF.js} +1 -1
- package/admin/custom/assets/{_virtual_mf___mfe_internal__ConfigCustomAssistant__mf_owner__198531368674860__prebuild___mf_0_iobroker_mf_1_json_mf_2_config__prebuild__-O-DuGvHy.js → _virtual_mf___mfe_internal__ConfigCustomAssistant__mf_owner__198531368674860__prebuild___mf_0_iobroker_mf_1_json_mf_2_config__prebuild__-DS8oaQQt.js} +3 -3
- package/admin/custom/assets/{hostInit-YwaHm9Ht.js → hostInit-MshDicd1.js} +1 -1
- package/admin/custom/assets/{lib-mwVfdt2u.js → lib-DjwHKtRi.js} +1 -1
- package/admin/custom/assets/{mf-entry-bootstrap-0-0e37a5a4.js → mf-entry-bootstrap-0-7c1ddf47.js} +2 -2
- package/admin/custom/assets/{pendingShares-Bs_RxVcM.js → pendingShares-CaJDCKLB.js} +1 -1
- package/admin/custom/customComponents.js +2 -2
- package/admin/custom/i18n/es.json +1 -1
- package/admin/custom/i18n/fr.json +1 -1
- package/admin/custom/i18n/it.json +1 -1
- package/admin/custom/i18n/nl.json +1 -1
- package/admin/custom/i18n/pl.json +1 -1
- package/admin/custom/i18n/pt.json +1 -1
- package/admin/custom/i18n/ru.json +1 -1
- package/admin/custom/i18n/uk.json +1 -1
- package/admin/custom/i18n/zh-cn.json +1 -1
- package/admin/custom/index.html +2 -2
- package/admin/custom/mf-manifest.json +1 -1
- package/admin/custom/mf-stats.json +1 -1
- package/admin/i18n/de.json +3 -2
- package/admin/i18n/en.json +3 -2
- package/admin/i18n/es.json +42 -2
- package/admin/i18n/fr.json +42 -2
- package/admin/i18n/it.json +42 -2
- package/admin/i18n/nl.json +42 -2
- package/admin/i18n/pl.json +42 -2
- package/admin/i18n/pt.json +42 -2
- package/admin/i18n/ru.json +42 -2
- package/admin/i18n/uk.json +42 -2
- package/admin/i18n/zh-cn.json +42 -2
- package/admin/jsonConfig.json +371 -83
- package/build/main.js +25 -0
- package/build/main.js.map +1 -1
- package/io-package.json +26 -26
- package/package.json +5 -5
- package/admin/custom/assets/Components-B9RaGibX.js +0 -1
- package/admin/custom/assets/_virtual_mf-localSharedImportMap___mfe_internal__ConfigCustomAssistant__mf_owner__1-CyY-cfOD.js +0 -1
package/admin/jsonConfig.json
CHANGED
|
@@ -9,7 +9,12 @@
|
|
|
9
9
|
"_header": {
|
|
10
10
|
"type": "header",
|
|
11
11
|
"size": 2,
|
|
12
|
-
"text": "LLM assistant"
|
|
12
|
+
"text": "LLM assistant",
|
|
13
|
+
"xs": 12,
|
|
14
|
+
"sm": 12,
|
|
15
|
+
"md": 12,
|
|
16
|
+
"lg": 12,
|
|
17
|
+
"xl": 12
|
|
13
18
|
},
|
|
14
19
|
"provider": {
|
|
15
20
|
"newLine": true,
|
|
@@ -24,8 +29,11 @@
|
|
|
24
29
|
{ "label": "None (local only)", "value": "none" }
|
|
25
30
|
],
|
|
26
31
|
"default": "openai",
|
|
32
|
+
"xs": 12,
|
|
27
33
|
"sm": 12,
|
|
28
|
-
"md": 4
|
|
34
|
+
"md": 4,
|
|
35
|
+
"lg": 4,
|
|
36
|
+
"xl": 4
|
|
29
37
|
},
|
|
30
38
|
"credentialType": {
|
|
31
39
|
"newLine": true,
|
|
@@ -37,23 +45,32 @@
|
|
|
37
45
|
{ "label": "Central credential store", "value": "manager" }
|
|
38
46
|
],
|
|
39
47
|
"default": "manual",
|
|
48
|
+
"xs": 12,
|
|
40
49
|
"sm": 12,
|
|
41
|
-
"md": 4
|
|
50
|
+
"md": 4,
|
|
51
|
+
"lg": 4,
|
|
52
|
+
"xl": 4
|
|
42
53
|
},
|
|
43
54
|
"apiKey": {
|
|
44
55
|
"type": "password",
|
|
45
56
|
"label": "API key",
|
|
46
57
|
"hidden": "data.provider === 'none' || data.credentialType === 'manager'",
|
|
58
|
+
"xs": 12,
|
|
47
59
|
"sm": 12,
|
|
48
|
-
"md": 4
|
|
60
|
+
"md": 4,
|
|
61
|
+
"lg": 4,
|
|
62
|
+
"xl": 4
|
|
49
63
|
},
|
|
50
64
|
"credentialIdApiKey": {
|
|
51
65
|
"type": "credential",
|
|
52
66
|
"credentialType": "ai",
|
|
53
67
|
"label": "API-key credential",
|
|
54
68
|
"hidden": "data.provider === 'none' || data.credentialType !== 'manager'",
|
|
69
|
+
"xs": 12,
|
|
55
70
|
"sm": 12,
|
|
56
|
-
"md": 4
|
|
71
|
+
"md": 4,
|
|
72
|
+
"lg": 4,
|
|
73
|
+
"xl": 4
|
|
57
74
|
},
|
|
58
75
|
"model": {
|
|
59
76
|
"newLine": true,
|
|
@@ -66,16 +83,22 @@
|
|
|
66
83
|
"help": "Loaded from the provider (instance must run); you can also type a model id.",
|
|
67
84
|
"hidden": "data.provider === 'none'",
|
|
68
85
|
"default": "gpt-4o-mini",
|
|
86
|
+
"xs": 12,
|
|
69
87
|
"sm": 12,
|
|
70
|
-
"md": 4
|
|
88
|
+
"md": 4,
|
|
89
|
+
"lg": 4,
|
|
90
|
+
"xl": 4
|
|
71
91
|
},
|
|
72
92
|
"baseUrl": {
|
|
73
93
|
"type": "text",
|
|
74
94
|
"label": "Base URL (optional)",
|
|
75
95
|
"help": "Override the endpoint, e.g. https://api.groq.com/openai/v1 for Groq. Leave empty for the provider default.",
|
|
76
96
|
"hidden": "data.provider !== 'custom'",
|
|
97
|
+
"xs": 12,
|
|
77
98
|
"sm": 12,
|
|
78
|
-
"md": 8
|
|
99
|
+
"md": 8,
|
|
100
|
+
"lg": 8,
|
|
101
|
+
"xl": 8
|
|
79
102
|
},
|
|
80
103
|
"_testConnection": {
|
|
81
104
|
"newLine": true,
|
|
@@ -86,15 +109,22 @@
|
|
|
86
109
|
"variant": "outlined",
|
|
87
110
|
"hidden": "data.provider === 'none'",
|
|
88
111
|
"disabled": "data.provider !== 'custom' && (data.credentialType === 'manager' ? !data.credentialIdApiKey : !data.apiKey)",
|
|
112
|
+
"xs": 12,
|
|
89
113
|
"sm": 12,
|
|
90
|
-
"md": 4
|
|
114
|
+
"md": 4,
|
|
115
|
+
"lg": 4,
|
|
116
|
+
"xl": 4
|
|
91
117
|
},
|
|
92
118
|
"_noneInfo": {
|
|
93
119
|
"newLine": true,
|
|
94
120
|
"type": "staticText",
|
|
95
121
|
"text": "Without an LLM provider only the local tiers answer: the rule-based commands, routines, timers and alarms, and the local model if enabled. Anything else gets a short \"I can't do that\" reply.",
|
|
96
122
|
"hidden": "data.provider !== 'none'",
|
|
97
|
-
"
|
|
123
|
+
"xs": 12,
|
|
124
|
+
"sm": 12,
|
|
125
|
+
"md": 12,
|
|
126
|
+
"lg": 12,
|
|
127
|
+
"xl": 12
|
|
98
128
|
},
|
|
99
129
|
"maxTokens": {
|
|
100
130
|
"newLine": true,
|
|
@@ -104,16 +134,22 @@
|
|
|
104
134
|
"default": 1024,
|
|
105
135
|
"min": 64,
|
|
106
136
|
"max": 8192,
|
|
137
|
+
"xs": 12,
|
|
107
138
|
"sm": 6,
|
|
108
|
-
"md": 2
|
|
139
|
+
"md": 2,
|
|
140
|
+
"lg": 2,
|
|
141
|
+
"xl": 2
|
|
109
142
|
},
|
|
110
143
|
"useLocalNlu": {
|
|
111
144
|
"type": "checkbox",
|
|
112
145
|
"label": "Answer simple commands locally (fast, offline)",
|
|
113
146
|
"help": "Try the built-in rule-based intent matching for turn on/off, dimming and status before calling the LLM.",
|
|
114
147
|
"default": true,
|
|
148
|
+
"xs": 12,
|
|
115
149
|
"sm": 6,
|
|
116
|
-
"md": 4
|
|
150
|
+
"md": 4,
|
|
151
|
+
"lg": 4,
|
|
152
|
+
"xl": 4
|
|
117
153
|
},
|
|
118
154
|
"confirmWithTone": {
|
|
119
155
|
"type": "checkbox",
|
|
@@ -121,16 +157,22 @@
|
|
|
121
157
|
"help": "A successful switch command is confirmed by a short tone on the satellite instead of a spoken sentence - instant, where speaking costs a text-to-speech call. Questions, errors and the text channels are unaffected.",
|
|
122
158
|
"default": false,
|
|
123
159
|
"hidden": "!data.useLocalNlu",
|
|
160
|
+
"xs": 12,
|
|
124
161
|
"sm": 6,
|
|
125
|
-
"md": 4
|
|
162
|
+
"md": 4,
|
|
163
|
+
"lg": 4,
|
|
164
|
+
"xl": 4
|
|
126
165
|
},
|
|
127
166
|
"nluAliases": {
|
|
128
167
|
"type": "table",
|
|
129
168
|
"label": "Synonym dictionary",
|
|
130
169
|
"help": "Rewrite spoken or typed variants to your device/room names before local matching, e.g. \"TV\" to \"Fernseher\". Leave the language empty to apply to all languages. Also used for the text channels.",
|
|
131
170
|
"hidden": "!data.useLocalNlu",
|
|
171
|
+
"xs": 12,
|
|
132
172
|
"sm": 12,
|
|
133
173
|
"md": 12,
|
|
174
|
+
"lg": 12,
|
|
175
|
+
"xl": 12,
|
|
134
176
|
"items": [
|
|
135
177
|
{ "type": "text", "attr": "from", "title": "Said or typed", "width": "40%" },
|
|
136
178
|
{ "type": "text", "attr": "to", "title": "Canonical term", "width": "40%" },
|
|
@@ -142,8 +184,11 @@
|
|
|
142
184
|
"type": "table",
|
|
143
185
|
"label": "Routines",
|
|
144
186
|
"help": "A phrase that runs a list of actions: \"Gute Nacht\" switches off five things and answers once. Phrases: several separated by commas (matched anywhere in the sentence, upper/lower case and umlauts do not matter). Actions as JSON, same shape as a trigger: [{\"setState\":{\"id\":\"hm-rpc.0.ABC.1.STATE\",\"value\":false}},{\"say\":\"Schlaf gut\",\"room\":\"Schlafzimmer\"}]. Reply: what the assistant answers (leave empty to stay silent). Matched before the offline rule engine and before the LLM, so a routine is never reinterpreted.",
|
|
187
|
+
"xs": 12,
|
|
145
188
|
"sm": 12,
|
|
146
189
|
"md": 12,
|
|
190
|
+
"lg": 12,
|
|
191
|
+
"xl": 12,
|
|
147
192
|
"items": [
|
|
148
193
|
{ "type": "text", "attr": "name", "title": "Name", "width": "15%" },
|
|
149
194
|
{ "type": "text", "attr": "phrases", "title": "Phrases (comma separated)", "width": "30%" },
|
|
@@ -156,16 +201,22 @@
|
|
|
156
201
|
"label": "Remember the conversation (follow-up questions)",
|
|
157
202
|
"help": "Keep the last few turns per source (chat, telegram, satellite) for a few minutes so follow-ups like 'and the kitchen too' work. In-memory only.",
|
|
158
203
|
"default": true,
|
|
204
|
+
"xs": 12,
|
|
159
205
|
"sm": 6,
|
|
160
|
-
"md": 4
|
|
206
|
+
"md": 4,
|
|
207
|
+
"lg": 4,
|
|
208
|
+
"xl": 4
|
|
161
209
|
},
|
|
162
210
|
"useLongTermMemory": {
|
|
163
211
|
"type": "checkbox",
|
|
164
212
|
"label": "Long-term memory (remember facts across sessions)",
|
|
165
213
|
"help": "Lets the assistant durably remember facts you tell it (names, preferences, where things are) and use them in later conversations. Stored in the memory.* states; the LLM gets remember/forget tools.",
|
|
166
214
|
"default": true,
|
|
215
|
+
"xs": 12,
|
|
167
216
|
"sm": 6,
|
|
168
|
-
"md": 4
|
|
217
|
+
"md": 4,
|
|
218
|
+
"lg": 4,
|
|
219
|
+
"xl": 4
|
|
169
220
|
},
|
|
170
221
|
"weatherInstance": {
|
|
171
222
|
"newLine": true,
|
|
@@ -173,16 +224,22 @@
|
|
|
173
224
|
"command": "getWeatherInstances",
|
|
174
225
|
"label": "Weather source",
|
|
175
226
|
"help": "Pick an installed weather adapter to answer weather questions from (Open-Meteo, Weather Underground, OpenWeatherMap are fully understood; others are read best-effort). Start that adapter once so its data/locations appear here.",
|
|
227
|
+
"xs": 12,
|
|
176
228
|
"sm": 12,
|
|
177
|
-
"md": 6
|
|
229
|
+
"md": 6,
|
|
230
|
+
"lg": 6,
|
|
231
|
+
"xl": 6
|
|
178
232
|
},
|
|
179
233
|
"presence": {
|
|
180
234
|
"newLine": true,
|
|
181
235
|
"type": "table",
|
|
182
236
|
"label": "Presence",
|
|
183
237
|
"help": "Which states tell the assistant who is at home - one row per person. Any state works: the residents adapter, a phone ping like ping.0.phone-denis.alive, a router client state or your own flag. Kind: empty or person, guest, pet (a pet never makes the house occupied). Home value: leave empty for the usual forms (true, 1, \"home\", \"anwesend\"), or enter the exact value that means at home. Used to tell the LLM who is around, to hold back announcements to an empty house (notify with onlyWhenHome) and as a trigger source via presence.anyoneHome.",
|
|
238
|
+
"xs": 12,
|
|
184
239
|
"sm": 12,
|
|
185
240
|
"md": 12,
|
|
241
|
+
"lg": 12,
|
|
242
|
+
"xl": 12,
|
|
186
243
|
"items": [
|
|
187
244
|
{ "type": "text", "attr": "id", "title": "State id", "width": "45%" },
|
|
188
245
|
{ "type": "text", "attr": "name", "title": "Name", "width": "25%" },
|
|
@@ -196,16 +253,22 @@
|
|
|
196
253
|
"label": "Announce when a timer expires",
|
|
197
254
|
"help": "Speak an announcement on the satellite a countdown timer was set from (or on all satellites) when it runs out. Timers are always mirrored into the timers.* states for scripts and visualization.",
|
|
198
255
|
"default": true,
|
|
256
|
+
"xs": 12,
|
|
199
257
|
"sm": 6,
|
|
200
|
-
"md": 4
|
|
258
|
+
"md": 4,
|
|
259
|
+
"lg": 4,
|
|
260
|
+
"xl": 4
|
|
201
261
|
},
|
|
202
262
|
"alarmAnnounce": {
|
|
203
263
|
"type": "checkbox",
|
|
204
264
|
"label": "Announce when an alarm goes off",
|
|
205
265
|
"help": "Speak an announcement when an alarm at a fixed clock time fires. Alarms are always mirrored into the alarms.* states for scripts and visualization.",
|
|
206
266
|
"default": true,
|
|
267
|
+
"xs": 12,
|
|
207
268
|
"sm": 6,
|
|
208
|
-
"md": 4
|
|
269
|
+
"md": 4,
|
|
270
|
+
"lg": 4,
|
|
271
|
+
"xl": 4
|
|
209
272
|
},
|
|
210
273
|
"notifyRephrase": {
|
|
211
274
|
"newLine": true,
|
|
@@ -213,15 +276,21 @@
|
|
|
213
276
|
"label": "Reword system notifications",
|
|
214
277
|
"help": "Spoken system notifications (notify.text / the ioBroker notification manager) are reworded by the LLM into one natural sentence first - their raw texts are written for a log viewer. Costs one small LLM call per notification; the original text is spoken if it fails. Urgent ones (notify.alert) are announced even when Do-Not-Disturb is on.",
|
|
215
278
|
"default": true,
|
|
279
|
+
"xs": 12,
|
|
216
280
|
"sm": 6,
|
|
217
|
-
"md": 4
|
|
281
|
+
"md": 4,
|
|
282
|
+
"lg": 4,
|
|
283
|
+
"xl": 4
|
|
218
284
|
},
|
|
219
285
|
"_soundsHint": {
|
|
220
286
|
"newLine": true,
|
|
221
287
|
"type": "staticText",
|
|
222
288
|
"text": "Two default sounds (timer.wav, alarm.wav) are preinstalled — pick one below or upload your own mp3/wav. The selected sound plays before the spoken announcement. Needs ffmpeg on the host and at least one satellite.",
|
|
289
|
+
"xs": 12,
|
|
223
290
|
"sm": 12,
|
|
224
|
-
"md": 12
|
|
291
|
+
"md": 12,
|
|
292
|
+
"lg": 12,
|
|
293
|
+
"xl": 12
|
|
225
294
|
},
|
|
226
295
|
"ringSeconds": {
|
|
227
296
|
"newLine": true,
|
|
@@ -231,8 +300,11 @@
|
|
|
231
300
|
"default": 60,
|
|
232
301
|
"min": 0,
|
|
233
302
|
"max": 600,
|
|
303
|
+
"xs": 12,
|
|
234
304
|
"sm": 6,
|
|
235
|
-
"md": 3
|
|
305
|
+
"md": 3,
|
|
306
|
+
"lg": 3,
|
|
307
|
+
"xl": 3
|
|
236
308
|
},
|
|
237
309
|
"timerSound": {
|
|
238
310
|
"newLine": true,
|
|
@@ -245,8 +317,11 @@
|
|
|
245
317
|
"refresh": true,
|
|
246
318
|
"maxSize": 5242880,
|
|
247
319
|
"label": "Timer sound (mp3/wav, optional)",
|
|
320
|
+
"xs": 12,
|
|
248
321
|
"sm": 12,
|
|
249
|
-
"md": 5
|
|
322
|
+
"md": 5,
|
|
323
|
+
"lg": 5,
|
|
324
|
+
"xl": 5
|
|
250
325
|
},
|
|
251
326
|
"_playTimerSound": {
|
|
252
327
|
"type": "sendTo",
|
|
@@ -255,8 +330,11 @@
|
|
|
255
330
|
"variant": "outlined",
|
|
256
331
|
"jsonData": "{\"name\":\"${data.timerSound}\"}",
|
|
257
332
|
"disabled": "!data.timerSound",
|
|
333
|
+
"xs": 12,
|
|
258
334
|
"sm": 6,
|
|
259
|
-
"md": 2
|
|
335
|
+
"md": 2,
|
|
336
|
+
"lg": 2,
|
|
337
|
+
"xl": 2
|
|
260
338
|
},
|
|
261
339
|
"alarmSound": {
|
|
262
340
|
"newLine": true,
|
|
@@ -269,8 +347,11 @@
|
|
|
269
347
|
"refresh": true,
|
|
270
348
|
"maxSize": 5242880,
|
|
271
349
|
"label": "Alarm sound (mp3/wav, optional)",
|
|
350
|
+
"xs": 12,
|
|
272
351
|
"sm": 12,
|
|
273
|
-
"md": 5
|
|
352
|
+
"md": 5,
|
|
353
|
+
"lg": 5,
|
|
354
|
+
"xl": 5
|
|
274
355
|
},
|
|
275
356
|
"_playAlarmSound": {
|
|
276
357
|
"type": "sendTo",
|
|
@@ -279,8 +360,11 @@
|
|
|
279
360
|
"variant": "outlined",
|
|
280
361
|
"jsonData": "{\"name\":\"${data.alarmSound}\"}",
|
|
281
362
|
"disabled": "!data.alarmSound",
|
|
363
|
+
"xs": 12,
|
|
282
364
|
"sm": 6,
|
|
283
|
-
"md": 2
|
|
365
|
+
"md": 2,
|
|
366
|
+
"lg": 2,
|
|
367
|
+
"xl": 2
|
|
284
368
|
},
|
|
285
369
|
"useLocalLlm": {
|
|
286
370
|
"newLine": true,
|
|
@@ -288,16 +372,22 @@
|
|
|
288
372
|
"label": "Use a local LLM before the cloud (installed on demand)",
|
|
289
373
|
"help": "Runs a small local model (node-llama-cpp) for general questions; escalates to the cloud LLM when it needs live device data. Install it with the button below.",
|
|
290
374
|
"default": false,
|
|
375
|
+
"xs": 12,
|
|
291
376
|
"sm": 12,
|
|
292
|
-
"md": 6
|
|
377
|
+
"md": 6,
|
|
378
|
+
"lg": 6,
|
|
379
|
+
"xl": 6
|
|
293
380
|
},
|
|
294
381
|
"localLlmModelUrl": {
|
|
295
382
|
"type": "text",
|
|
296
383
|
"label": "Local model URL (GGUF, optional)",
|
|
297
384
|
"help": "Direct URL of a GGUF model. Leave empty for the default (Qwen2.5-1.5B-Instruct). Small models recommended on Raspberry Pi / arm64.",
|
|
298
385
|
"hidden": "!data.useLocalLlm",
|
|
386
|
+
"xs": 12,
|
|
299
387
|
"sm": 12,
|
|
300
|
-
"md": 6
|
|
388
|
+
"md": 6,
|
|
389
|
+
"lg": 6,
|
|
390
|
+
"xl": 6
|
|
301
391
|
},
|
|
302
392
|
"_installLocalLlm": {
|
|
303
393
|
"newLine": true,
|
|
@@ -309,8 +399,11 @@
|
|
|
309
399
|
"showProcess": true,
|
|
310
400
|
"timeout": 600000,
|
|
311
401
|
"help": "Downloads the engine and model (several hundred MB). Progress is shown below.",
|
|
402
|
+
"xs": 12,
|
|
312
403
|
"sm": 12,
|
|
313
|
-
"md": 4
|
|
404
|
+
"md": 4,
|
|
405
|
+
"lg": 4,
|
|
406
|
+
"xl": 4
|
|
314
407
|
},
|
|
315
408
|
"_localLlmProgress": {
|
|
316
409
|
"newLine": true,
|
|
@@ -321,14 +414,22 @@
|
|
|
321
414
|
"bundlerType": "module",
|
|
322
415
|
"guiApi": 2,
|
|
323
416
|
"hidden": "!data.useLocalLlm",
|
|
417
|
+
"xs": 12,
|
|
324
418
|
"sm": 12,
|
|
325
|
-
"md": 8
|
|
419
|
+
"md": 8,
|
|
420
|
+
"lg": 8,
|
|
421
|
+
"xl": 8
|
|
326
422
|
},
|
|
327
423
|
"_accessHeader": {
|
|
328
424
|
"newLine": true,
|
|
329
425
|
"type": "header",
|
|
330
426
|
"size": 2,
|
|
331
|
-
"text": "Access / permissions"
|
|
427
|
+
"text": "Access / permissions",
|
|
428
|
+
"xs": 12,
|
|
429
|
+
"sm": 12,
|
|
430
|
+
"md": 12,
|
|
431
|
+
"lg": 12,
|
|
432
|
+
"xl": 12
|
|
332
433
|
},
|
|
333
434
|
"readObjects": {
|
|
334
435
|
"newLine": true,
|
|
@@ -339,16 +440,22 @@
|
|
|
339
440
|
{ "label": "Any object (get_object/search_objects)", "value": "all" }
|
|
340
441
|
],
|
|
341
442
|
"default": "devices",
|
|
443
|
+
"xs": 12,
|
|
342
444
|
"sm": 12,
|
|
343
|
-
"md": 4
|
|
445
|
+
"md": 4,
|
|
446
|
+
"lg": 4,
|
|
447
|
+
"xl": 4
|
|
344
448
|
},
|
|
345
449
|
"allowWriteStates": {
|
|
346
450
|
"newLine": true,
|
|
347
451
|
"type": "checkbox",
|
|
348
452
|
"label": "Allow writing states (control devices)",
|
|
349
453
|
"default": true,
|
|
454
|
+
"xs": 12,
|
|
350
455
|
"sm": 6,
|
|
351
|
-
"md": 3
|
|
456
|
+
"md": 3,
|
|
457
|
+
"lg": 3,
|
|
458
|
+
"xl": 3
|
|
352
459
|
},
|
|
353
460
|
"verifyWrites": {
|
|
354
461
|
"type": "checkbox",
|
|
@@ -356,61 +463,85 @@
|
|
|
356
463
|
"help": "After a switch command, wait up to 2 seconds for the device to acknowledge the new value (ack:true) and report \"did not respond\" if it never does. Leave this off for devices that never acknowledge (MQTT, scripts, 0_userdata) - every command would look failed.",
|
|
357
464
|
"default": false,
|
|
358
465
|
"hidden": "!data.allowWriteStates",
|
|
466
|
+
"xs": 12,
|
|
359
467
|
"sm": 6,
|
|
360
|
-
"md": 4
|
|
468
|
+
"md": 4,
|
|
469
|
+
"lg": 4,
|
|
470
|
+
"xl": 4
|
|
361
471
|
},
|
|
362
472
|
"allowHistory": {
|
|
363
473
|
"type": "checkbox",
|
|
364
474
|
"label": "Allow reading history",
|
|
365
475
|
"default": true,
|
|
476
|
+
"xs": 12,
|
|
366
477
|
"sm": 6,
|
|
367
|
-
"md": 3
|
|
478
|
+
"md": 3,
|
|
479
|
+
"lg": 3,
|
|
480
|
+
"xl": 3
|
|
368
481
|
},
|
|
369
482
|
"allowReadLogs": {
|
|
370
483
|
"newLine": true,
|
|
371
484
|
"type": "checkbox",
|
|
372
485
|
"label": "Allow reading logs",
|
|
373
486
|
"default": false,
|
|
487
|
+
"xs": 12,
|
|
374
488
|
"sm": 6,
|
|
375
|
-
"md": 3
|
|
489
|
+
"md": 3,
|
|
490
|
+
"lg": 3,
|
|
491
|
+
"xl": 3
|
|
376
492
|
},
|
|
377
493
|
"allowWriteLogs": {
|
|
378
494
|
"type": "checkbox",
|
|
379
495
|
"label": "Allow writing to the log",
|
|
380
496
|
"default": false,
|
|
497
|
+
"xs": 12,
|
|
381
498
|
"sm": 6,
|
|
382
|
-
"md": 3
|
|
499
|
+
"md": 3,
|
|
500
|
+
"lg": 3,
|
|
501
|
+
"xl": 3
|
|
383
502
|
},
|
|
384
503
|
"allowFiles": {
|
|
385
504
|
"newLine": true,
|
|
386
505
|
"type": "checkbox",
|
|
387
506
|
"label": "Allow reading files",
|
|
388
507
|
"default": false,
|
|
508
|
+
"xs": 12,
|
|
389
509
|
"sm": 6,
|
|
390
|
-
"md": 3
|
|
510
|
+
"md": 3,
|
|
511
|
+
"lg": 3,
|
|
512
|
+
"xl": 3
|
|
391
513
|
},
|
|
392
514
|
"allowSystemInfo": {
|
|
393
515
|
"type": "checkbox",
|
|
394
516
|
"label": "Allow system info (hosts, instances, adapters)",
|
|
395
517
|
"default": true,
|
|
518
|
+
"xs": 12,
|
|
396
519
|
"sm": 6,
|
|
397
|
-
"md": 3
|
|
520
|
+
"md": 3,
|
|
521
|
+
"lg": 3,
|
|
522
|
+
"xl": 3
|
|
398
523
|
},
|
|
399
524
|
"allowObjectChange": {
|
|
400
525
|
"newLine": true,
|
|
401
526
|
"type": "checkbox",
|
|
402
527
|
"label": "Allow changing objects and files (dangerous)",
|
|
403
528
|
"default": false,
|
|
529
|
+
"xs": 12,
|
|
404
530
|
"sm": 12,
|
|
405
|
-
"md": 6
|
|
531
|
+
"md": 6,
|
|
532
|
+
"lg": 6,
|
|
533
|
+
"xl": 6
|
|
406
534
|
},
|
|
407
535
|
"systemPrompt": {
|
|
408
536
|
"newLine": true,
|
|
409
537
|
"type": "text",
|
|
410
538
|
"label": "System prompt",
|
|
411
539
|
"minRows": 4,
|
|
540
|
+
"xs": 12,
|
|
412
541
|
"sm": 12,
|
|
413
|
-
"md": 12
|
|
542
|
+
"md": 12,
|
|
543
|
+
"lg": 12,
|
|
544
|
+
"xl": 12
|
|
414
545
|
}
|
|
415
546
|
}
|
|
416
547
|
},
|
|
@@ -425,7 +556,11 @@
|
|
|
425
556
|
"name": "ConfigCustomAssistant/Components/DeviceAclComponent",
|
|
426
557
|
"guiApi": 2,
|
|
427
558
|
"bundlerType": "module",
|
|
428
|
-
"
|
|
559
|
+
"xs": 12,
|
|
560
|
+
"sm": 12,
|
|
561
|
+
"md": 12,
|
|
562
|
+
"lg": 12,
|
|
563
|
+
"xl": 12
|
|
429
564
|
}
|
|
430
565
|
}
|
|
431
566
|
},
|
|
@@ -436,19 +571,31 @@
|
|
|
436
571
|
"_triggersHeader": {
|
|
437
572
|
"type": "header",
|
|
438
573
|
"text": "Proactive triggers",
|
|
439
|
-
"size": 2
|
|
574
|
+
"size": 2,
|
|
575
|
+
"xs": 12,
|
|
576
|
+
"sm": 12,
|
|
577
|
+
"md": 12,
|
|
578
|
+
"lg": 12,
|
|
579
|
+
"xl": 12
|
|
440
580
|
},
|
|
441
581
|
"_triggersHint": {
|
|
442
582
|
"type": "staticText",
|
|
443
583
|
"text": "A trigger watches states or the clock and then speaks, writes a state, or asks you a question and acts on your answer. Switch single triggers off at runtime with triggers.items.<id>.enabled, test one with its fire button, and all of them with triggers.enabled.",
|
|
444
|
-
"
|
|
584
|
+
"xs": 12,
|
|
585
|
+
"sm": 12,
|
|
586
|
+
"md": 12,
|
|
587
|
+
"lg": 12,
|
|
588
|
+
"xl": 12
|
|
445
589
|
},
|
|
446
590
|
"triggers": {
|
|
447
591
|
"type": "table",
|
|
448
592
|
"label": "Triggers",
|
|
449
593
|
"help": "Condition as JSON: {\"state\":\"javascript.0.window\",\"value\":true} or {\"time\":\"23:00\",\"days\":[1,2,3,4,5]}; add \"also\"/\"unless\" for extra or blocking conditions, or use a list for alternatives. Say = announcement, Ask = question (needs response rules, JSON: [{\"match\":\"agreement\",\"say\":\"Okay\",\"setState\":{\"id\":\"...\",\"value\":false}}]). Extra actions as JSON: [{\"setState\":{\"id\":\"...\",\"value\":false}}]. Delay waits before acting (90s/30m/5h), cooldown is the minimum gap between two firings in seconds (default 3600).",
|
|
594
|
+
"xs": 12,
|
|
450
595
|
"sm": 12,
|
|
451
596
|
"md": 12,
|
|
597
|
+
"lg": 12,
|
|
598
|
+
"xl": 12,
|
|
452
599
|
"items": [
|
|
453
600
|
{ "type": "text", "attr": "id", "title": "Id", "width": "8%" },
|
|
454
601
|
{ "type": "text", "attr": "name", "title": "Name", "width": "12%" },
|
|
@@ -467,8 +614,11 @@
|
|
|
467
614
|
"label": "Let the LLM reword trigger texts",
|
|
468
615
|
"help": "Before a trigger speaks, the model rewords its text so repeated announcements do not sound canned. Costs one small LLM call per announcement; the original text is used if it fails.",
|
|
469
616
|
"default": false,
|
|
617
|
+
"xs": 12,
|
|
470
618
|
"sm": 12,
|
|
471
|
-
"md": 6
|
|
619
|
+
"md": 6,
|
|
620
|
+
"lg": 6,
|
|
621
|
+
"xl": 6
|
|
472
622
|
}
|
|
473
623
|
}
|
|
474
624
|
},
|
|
@@ -479,7 +629,12 @@
|
|
|
479
629
|
"_voiceHeader": {
|
|
480
630
|
"type": "header",
|
|
481
631
|
"size": 2,
|
|
482
|
-
"text": "Voice satellites"
|
|
632
|
+
"text": "Voice satellites",
|
|
633
|
+
"xs": 12,
|
|
634
|
+
"sm": 12,
|
|
635
|
+
"md": 12,
|
|
636
|
+
"lg": 12,
|
|
637
|
+
"xl": 12
|
|
483
638
|
},
|
|
484
639
|
"voiceEnabled": {
|
|
485
640
|
"newLine": true,
|
|
@@ -487,8 +642,11 @@
|
|
|
487
642
|
"label": "Enable voice (STT/TTS for satellites)",
|
|
488
643
|
"help": "Enables speech recognition/synthesis. ioBroker-native satellites reach it over the message bus — no port needed. Turn on the UDP server below only for ESP / Hannah satellites.",
|
|
489
644
|
"default": false,
|
|
645
|
+
"xs": 12,
|
|
490
646
|
"sm": 12,
|
|
491
|
-
"md": 6
|
|
647
|
+
"md": 6,
|
|
648
|
+
"lg": 6,
|
|
649
|
+
"xl": 6
|
|
492
650
|
},
|
|
493
651
|
"udpServerEnabled": {
|
|
494
652
|
"newLine": true,
|
|
@@ -497,8 +655,11 @@
|
|
|
497
655
|
"help": "Opens a UDP port for streaming microphone satellites (Hannah-compatible / ESP). Not needed for ioBroker-native satellites.",
|
|
498
656
|
"default": false,
|
|
499
657
|
"hidden": "!data.voiceEnabled",
|
|
658
|
+
"xs": 12,
|
|
500
659
|
"sm": 12,
|
|
501
|
-
"md": 6
|
|
660
|
+
"md": 6,
|
|
661
|
+
"lg": 6,
|
|
662
|
+
"xl": 6
|
|
502
663
|
},
|
|
503
664
|
"bind": {
|
|
504
665
|
"newLine": true,
|
|
@@ -508,8 +669,11 @@
|
|
|
508
669
|
"default": "0.0.0.0",
|
|
509
670
|
"listenOnAllPorts": true,
|
|
510
671
|
"hidden": "!data.voiceEnabled || !data.udpServerEnabled",
|
|
672
|
+
"xs": 12,
|
|
511
673
|
"sm": 6,
|
|
512
|
-
"md": 3
|
|
674
|
+
"md": 3,
|
|
675
|
+
"lg": 3,
|
|
676
|
+
"xl": 3
|
|
513
677
|
},
|
|
514
678
|
"port": {
|
|
515
679
|
"type": "number",
|
|
@@ -518,8 +682,11 @@
|
|
|
518
682
|
"min": 1,
|
|
519
683
|
"max": 65535,
|
|
520
684
|
"hidden": "!data.voiceEnabled || !data.udpServerEnabled",
|
|
685
|
+
"xs": 12,
|
|
521
686
|
"sm": 6,
|
|
522
|
-
"md": 3
|
|
687
|
+
"md": 3,
|
|
688
|
+
"lg": 3,
|
|
689
|
+
"xl": 3
|
|
523
690
|
},
|
|
524
691
|
"wyomingEnabled": {
|
|
525
692
|
"newLine": true,
|
|
@@ -528,8 +695,11 @@
|
|
|
528
695
|
"help": "Home Assistant Voice PE / wyoming-satellite / ESPHome voice devices can stream to this adapter over the Wyoming protocol.",
|
|
529
696
|
"default": false,
|
|
530
697
|
"hidden": "!data.voiceEnabled",
|
|
698
|
+
"xs": 12,
|
|
531
699
|
"sm": 8,
|
|
532
|
-
"md": 5
|
|
700
|
+
"md": 5,
|
|
701
|
+
"lg": 5,
|
|
702
|
+
"xl": 5
|
|
533
703
|
},
|
|
534
704
|
"wyomingPort": {
|
|
535
705
|
"type": "number",
|
|
@@ -538,8 +708,11 @@
|
|
|
538
708
|
"min": 1,
|
|
539
709
|
"max": 65535,
|
|
540
710
|
"hidden": "!data.voiceEnabled || !data.wyomingEnabled",
|
|
711
|
+
"xs": 12,
|
|
541
712
|
"sm": 4,
|
|
542
|
-
"md": 3
|
|
713
|
+
"md": 3,
|
|
714
|
+
"lg": 3,
|
|
715
|
+
"xl": 3
|
|
543
716
|
},
|
|
544
717
|
"esphomeEnabled": {
|
|
545
718
|
"newLine": true,
|
|
@@ -548,8 +721,11 @@
|
|
|
548
721
|
"help": "ThirdReality Voice & Music Assistant, Home Assistant Voice PE, linux-voice-assistant. These devices listen on TCP 6053 and the adapter dials them, so no port is opened for the audio itself — only the media server below, which they fetch the spoken reply from.",
|
|
549
722
|
"default": false,
|
|
550
723
|
"hidden": "!data.voiceEnabled",
|
|
724
|
+
"xs": 12,
|
|
551
725
|
"sm": 12,
|
|
552
|
-
"md": 6
|
|
726
|
+
"md": 6,
|
|
727
|
+
"lg": 6,
|
|
728
|
+
"xl": 6
|
|
553
729
|
},
|
|
554
730
|
"esphomeDevices": {
|
|
555
731
|
"newLine": true,
|
|
@@ -557,8 +733,11 @@
|
|
|
557
733
|
"label": "ESPHome satellites",
|
|
558
734
|
"help": "One row per device. Port empty = 6053. The room is what the assistant treats the satellite as being in. Leave the password empty unless the device really has an API password set — table values are stored unencrypted.",
|
|
559
735
|
"hidden": "!data.voiceEnabled || !data.esphomeEnabled",
|
|
736
|
+
"xs": 12,
|
|
560
737
|
"sm": 12,
|
|
561
738
|
"md": 12,
|
|
739
|
+
"lg": 12,
|
|
740
|
+
"xl": 12,
|
|
562
741
|
"items": [
|
|
563
742
|
{ "type": "text", "attr": "ip", "title": "Address (IP or host name)", "width": "30%" },
|
|
564
743
|
{
|
|
@@ -583,8 +762,11 @@
|
|
|
583
762
|
"min": 1,
|
|
584
763
|
"max": 65535,
|
|
585
764
|
"hidden": "!data.voiceEnabled || !data.esphomeEnabled",
|
|
765
|
+
"xs": 12,
|
|
586
766
|
"sm": 6,
|
|
587
|
-
"md": 3
|
|
767
|
+
"md": 3,
|
|
768
|
+
"lg": 3,
|
|
769
|
+
"xl": 3
|
|
588
770
|
},
|
|
589
771
|
"esphomeMediaHost": {
|
|
590
772
|
"type": "text",
|
|
@@ -592,8 +774,11 @@
|
|
|
592
774
|
"help": "Host the satellites should fetch the audio from. Empty = use the address of each device connection automatically; set it only if the devices reach this machine under a different address (NAT, Docker, VLAN).",
|
|
593
775
|
"default": "",
|
|
594
776
|
"hidden": "!data.voiceEnabled || !data.esphomeEnabled",
|
|
777
|
+
"xs": 12,
|
|
595
778
|
"sm": 6,
|
|
596
|
-
"md": 4
|
|
779
|
+
"md": 4,
|
|
780
|
+
"lg": 4,
|
|
781
|
+
"xl": 4
|
|
597
782
|
},
|
|
598
783
|
"esphomeSilenceMs": {
|
|
599
784
|
"type": "number",
|
|
@@ -603,8 +788,11 @@
|
|
|
603
788
|
"min": 200,
|
|
604
789
|
"max": 5000,
|
|
605
790
|
"hidden": "!data.voiceEnabled || !data.esphomeEnabled",
|
|
791
|
+
"xs": 12,
|
|
606
792
|
"sm": 6,
|
|
607
|
-
"md": 3
|
|
793
|
+
"md": 3,
|
|
794
|
+
"lg": 3,
|
|
795
|
+
"xl": 3
|
|
608
796
|
},
|
|
609
797
|
"voiceLanguage": {
|
|
610
798
|
"newLine": true,
|
|
@@ -627,8 +815,11 @@
|
|
|
627
815
|
],
|
|
628
816
|
"default": "",
|
|
629
817
|
"hidden": "!data.voiceEnabled",
|
|
818
|
+
"xs": 12,
|
|
630
819
|
"sm": 6,
|
|
631
|
-
"md": 3
|
|
820
|
+
"md": 3,
|
|
821
|
+
"lg": 3,
|
|
822
|
+
"xl": 3
|
|
632
823
|
},
|
|
633
824
|
"announceTargets": {
|
|
634
825
|
"newLine": true,
|
|
@@ -636,8 +827,11 @@
|
|
|
636
827
|
"label": "Announcement targets (groups and people)",
|
|
637
828
|
"help": "Give a set of satellites a name, so an announcement, a question or a trigger can address it: a group of rooms (\"Upstairs\") or the speakers that belong to one person (\"Denis\", so \"tell Denis dinner is ready\" reaches them). Members: satellite ids, room names or device names, separated by commas. Kind: empty or group, or person. A real satellite or room of the same name always wins, so a group can never make a speaker unreachable.",
|
|
638
829
|
"hidden": "!data.voiceEnabled",
|
|
830
|
+
"xs": 12,
|
|
639
831
|
"sm": 12,
|
|
640
832
|
"md": 12,
|
|
833
|
+
"lg": 12,
|
|
834
|
+
"xl": 12,
|
|
641
835
|
"items": [
|
|
642
836
|
{ "type": "text", "attr": "name", "title": "Name", "width": "25%" },
|
|
643
837
|
{
|
|
@@ -661,8 +855,11 @@
|
|
|
661
855
|
],
|
|
662
856
|
"default": "openai",
|
|
663
857
|
"hidden": "!data.voiceEnabled",
|
|
858
|
+
"xs": 12,
|
|
664
859
|
"sm": 6,
|
|
665
|
-
"md": 3
|
|
860
|
+
"md": 3,
|
|
861
|
+
"lg": 3,
|
|
862
|
+
"xl": 3
|
|
666
863
|
},
|
|
667
864
|
"ttsProvider": {
|
|
668
865
|
"type": "select",
|
|
@@ -675,8 +872,11 @@
|
|
|
675
872
|
],
|
|
676
873
|
"default": "openai",
|
|
677
874
|
"hidden": "!data.voiceEnabled",
|
|
875
|
+
"xs": 12,
|
|
678
876
|
"sm": 6,
|
|
679
|
-
"md": 3
|
|
877
|
+
"md": 3,
|
|
878
|
+
"lg": 3,
|
|
879
|
+
"xl": 3
|
|
680
880
|
},
|
|
681
881
|
"sttFallback": {
|
|
682
882
|
"newLine": true,
|
|
@@ -692,8 +892,11 @@
|
|
|
692
892
|
],
|
|
693
893
|
"default": "",
|
|
694
894
|
"hidden": "!data.voiceEnabled",
|
|
895
|
+
"xs": 12,
|
|
695
896
|
"sm": 6,
|
|
696
|
-
"md": 3
|
|
897
|
+
"md": 3,
|
|
898
|
+
"lg": 3,
|
|
899
|
+
"xl": 3
|
|
697
900
|
},
|
|
698
901
|
"ttsFallback": {
|
|
699
902
|
"type": "select",
|
|
@@ -708,8 +911,11 @@
|
|
|
708
911
|
],
|
|
709
912
|
"default": "",
|
|
710
913
|
"hidden": "!data.voiceEnabled",
|
|
914
|
+
"xs": 12,
|
|
711
915
|
"sm": 6,
|
|
712
|
-
"md": 3
|
|
916
|
+
"md": 3,
|
|
917
|
+
"lg": 3,
|
|
918
|
+
"xl": 3
|
|
713
919
|
},
|
|
714
920
|
"voiceCredentialType": {
|
|
715
921
|
"newLine": true,
|
|
@@ -721,15 +927,23 @@
|
|
|
721
927
|
],
|
|
722
928
|
"default": "manual",
|
|
723
929
|
"hidden": "!data.voiceEnabled || (data.sttProvider === 'vosk' && data.ttsProvider === 'piper')",
|
|
930
|
+
"xs": 12,
|
|
724
931
|
"sm": 12,
|
|
725
|
-
"md": 4
|
|
932
|
+
"md": 4,
|
|
933
|
+
"lg": 4,
|
|
934
|
+
"xl": 4
|
|
726
935
|
},
|
|
727
936
|
"_openaiSpeechHeader": {
|
|
728
937
|
"newLine": true,
|
|
729
938
|
"type": "header",
|
|
730
939
|
"size": 3,
|
|
731
940
|
"text": "OpenAI speech",
|
|
732
|
-
"hidden": "!data.voiceEnabled || (data.sttProvider !== 'openai' && data.ttsProvider !== 'openai')"
|
|
941
|
+
"hidden": "!data.voiceEnabled || (data.sttProvider !== 'openai' && data.ttsProvider !== 'openai')",
|
|
942
|
+
"xs": 12,
|
|
943
|
+
"sm": 12,
|
|
944
|
+
"md": 12,
|
|
945
|
+
"lg": 12,
|
|
946
|
+
"xl": 12
|
|
733
947
|
},
|
|
734
948
|
"voiceApiKey": {
|
|
735
949
|
"newLine": true,
|
|
@@ -737,8 +951,11 @@
|
|
|
737
951
|
"label": "OpenAI key for speech (optional)",
|
|
738
952
|
"help": "Leave empty to reuse the main API key when the LLM provider is OpenAI; required otherwise.",
|
|
739
953
|
"hidden": "!data.voiceEnabled || (data.sttProvider !== 'openai' && data.ttsProvider !== 'openai') || data.voiceCredentialType === 'manager'",
|
|
954
|
+
"xs": 12,
|
|
740
955
|
"sm": 12,
|
|
741
|
-
"md": 8
|
|
956
|
+
"md": 8,
|
|
957
|
+
"lg": 8,
|
|
958
|
+
"xl": 8
|
|
742
959
|
},
|
|
743
960
|
"voiceCredentialId": {
|
|
744
961
|
"newLine": true,
|
|
@@ -746,8 +963,11 @@
|
|
|
746
963
|
"credentialType": "ai",
|
|
747
964
|
"label": "OpenAI credential",
|
|
748
965
|
"hidden": "!data.voiceEnabled || (data.sttProvider !== 'openai' && data.ttsProvider !== 'openai') || data.voiceCredentialType !== 'manager'",
|
|
966
|
+
"xs": 12,
|
|
749
967
|
"sm": 12,
|
|
750
|
-
"md": 6
|
|
968
|
+
"md": 6,
|
|
969
|
+
"lg": 6,
|
|
970
|
+
"xl": 6
|
|
751
971
|
},
|
|
752
972
|
"ttsVoice": {
|
|
753
973
|
"newLine": true,
|
|
@@ -760,8 +980,11 @@
|
|
|
760
980
|
"help": "Loaded from the provider (instance must run); you can also type a voice id.",
|
|
761
981
|
"default": "alloy",
|
|
762
982
|
"hidden": "!data.voiceEnabled || data.ttsProvider !== 'openai'",
|
|
983
|
+
"xs": 12,
|
|
763
984
|
"sm": 6,
|
|
764
|
-
"md": 4
|
|
985
|
+
"md": 4,
|
|
986
|
+
"lg": 4,
|
|
987
|
+
"xl": 4
|
|
765
988
|
},
|
|
766
989
|
"sttModel": {
|
|
767
990
|
"newLine": true,
|
|
@@ -769,39 +992,56 @@
|
|
|
769
992
|
"label": "OpenAI STT model (optional)",
|
|
770
993
|
"help": "Empty = whisper-1. Also: gpt-4o-transcribe, gpt-4o-mini-transcribe.",
|
|
771
994
|
"hidden": "!data.voiceEnabled || data.sttProvider !== 'openai'",
|
|
995
|
+
"xs": 12,
|
|
772
996
|
"sm": 6,
|
|
773
|
-
"md": 4
|
|
997
|
+
"md": 4,
|
|
998
|
+
"lg": 4,
|
|
999
|
+
"xl": 4
|
|
774
1000
|
},
|
|
775
1001
|
"ttsModel": {
|
|
776
1002
|
"type": "text",
|
|
777
1003
|
"label": "OpenAI TTS model (optional)",
|
|
778
1004
|
"help": "Empty = tts-1. Also: tts-1-hd, gpt-4o-mini-tts.",
|
|
779
1005
|
"hidden": "!data.voiceEnabled || data.ttsProvider !== 'openai'",
|
|
1006
|
+
"xs": 12,
|
|
780
1007
|
"sm": 6,
|
|
781
|
-
"md": 4
|
|
1008
|
+
"md": 4,
|
|
1009
|
+
"lg": 4,
|
|
1010
|
+
"xl": 4
|
|
782
1011
|
},
|
|
783
1012
|
"_azureSpeechHeader": {
|
|
784
1013
|
"newLine": true,
|
|
785
1014
|
"type": "header",
|
|
786
1015
|
"size": 3,
|
|
787
1016
|
"text": "Azure Speech",
|
|
788
|
-
"hidden": "!data.voiceEnabled || (data.sttProvider !== 'azure' && data.ttsProvider !== 'azure')"
|
|
1017
|
+
"hidden": "!data.voiceEnabled || (data.sttProvider !== 'azure' && data.ttsProvider !== 'azure')",
|
|
1018
|
+
"xs": 12,
|
|
1019
|
+
"sm": 12,
|
|
1020
|
+
"md": 12,
|
|
1021
|
+
"lg": 12,
|
|
1022
|
+
"xl": 12
|
|
789
1023
|
},
|
|
790
1024
|
"azureSpeechKey": {
|
|
791
1025
|
"newLine": true,
|
|
792
1026
|
"type": "password",
|
|
793
1027
|
"label": "Azure subscription key",
|
|
794
1028
|
"hidden": "!data.voiceEnabled || (data.sttProvider !== 'azure' && data.ttsProvider !== 'azure') || data.voiceCredentialType === 'manager'",
|
|
1029
|
+
"xs": 12,
|
|
795
1030
|
"sm": 12,
|
|
796
|
-
"md": 5
|
|
1031
|
+
"md": 5,
|
|
1032
|
+
"lg": 5,
|
|
1033
|
+
"xl": 5
|
|
797
1034
|
},
|
|
798
1035
|
"azureSpeechRegion": {
|
|
799
1036
|
"type": "text",
|
|
800
1037
|
"label": "Azure region",
|
|
801
1038
|
"help": "e.g. westeurope",
|
|
802
1039
|
"hidden": "!data.voiceEnabled || (data.sttProvider !== 'azure' && data.ttsProvider !== 'azure') || data.voiceCredentialType === 'manager'",
|
|
1040
|
+
"xs": 12,
|
|
803
1041
|
"sm": 6,
|
|
804
|
-
"md": 3
|
|
1042
|
+
"md": 3,
|
|
1043
|
+
"lg": 3,
|
|
1044
|
+
"xl": 3
|
|
805
1045
|
},
|
|
806
1046
|
"azureCredentialId": {
|
|
807
1047
|
"newLine": true,
|
|
@@ -809,8 +1049,11 @@
|
|
|
809
1049
|
"credentialType": "azure",
|
|
810
1050
|
"label": "Azure credential",
|
|
811
1051
|
"hidden": "!data.voiceEnabled || (data.sttProvider !== 'azure' && data.ttsProvider !== 'azure') || data.voiceCredentialType !== 'manager'",
|
|
1052
|
+
"xs": 12,
|
|
812
1053
|
"sm": 12,
|
|
813
|
-
"md": 6
|
|
1054
|
+
"md": 6,
|
|
1055
|
+
"lg": 6,
|
|
1056
|
+
"xl": 6
|
|
814
1057
|
},
|
|
815
1058
|
"azureVoice": {
|
|
816
1059
|
"newLine": true,
|
|
@@ -829,38 +1072,55 @@
|
|
|
829
1072
|
"label": "Azure voice (optional)",
|
|
830
1073
|
"help": "Loaded from Azure (instance must run); empty = pick by language. e.g. de-DE-KatjaNeural.",
|
|
831
1074
|
"hidden": "!data.voiceEnabled || data.ttsProvider !== 'azure'",
|
|
1075
|
+
"xs": 12,
|
|
832
1076
|
"sm": 6,
|
|
833
|
-
"md": 5
|
|
1077
|
+
"md": 5,
|
|
1078
|
+
"lg": 5,
|
|
1079
|
+
"xl": 5
|
|
834
1080
|
},
|
|
835
1081
|
"_awsSpeechHeader": {
|
|
836
1082
|
"newLine": true,
|
|
837
1083
|
"type": "header",
|
|
838
1084
|
"size": 3,
|
|
839
1085
|
"text": "AWS speech",
|
|
840
|
-
"hidden": "!data.voiceEnabled || (data.sttProvider !== 'aws' && data.ttsProvider !== 'aws')"
|
|
1086
|
+
"hidden": "!data.voiceEnabled || (data.sttProvider !== 'aws' && data.ttsProvider !== 'aws')",
|
|
1087
|
+
"xs": 12,
|
|
1088
|
+
"sm": 12,
|
|
1089
|
+
"md": 12,
|
|
1090
|
+
"lg": 12,
|
|
1091
|
+
"xl": 12
|
|
841
1092
|
},
|
|
842
1093
|
"awsAccessKeyId": {
|
|
843
1094
|
"newLine": true,
|
|
844
1095
|
"type": "text",
|
|
845
1096
|
"label": "AWS access key id",
|
|
846
1097
|
"hidden": "!data.voiceEnabled || (data.sttProvider !== 'aws' && data.ttsProvider !== 'aws') || data.voiceCredentialType === 'manager'",
|
|
1098
|
+
"xs": 12,
|
|
847
1099
|
"sm": 12,
|
|
848
|
-
"md": 4
|
|
1100
|
+
"md": 4,
|
|
1101
|
+
"lg": 4,
|
|
1102
|
+
"xl": 4
|
|
849
1103
|
},
|
|
850
1104
|
"awsSecretAccessKey": {
|
|
851
1105
|
"type": "password",
|
|
852
1106
|
"label": "AWS secret access key",
|
|
853
1107
|
"hidden": "!data.voiceEnabled || (data.sttProvider !== 'aws' && data.ttsProvider !== 'aws') || data.voiceCredentialType === 'manager'",
|
|
1108
|
+
"xs": 12,
|
|
854
1109
|
"sm": 12,
|
|
855
|
-
"md": 4
|
|
1110
|
+
"md": 4,
|
|
1111
|
+
"lg": 4,
|
|
1112
|
+
"xl": 4
|
|
856
1113
|
},
|
|
857
1114
|
"awsRegion": {
|
|
858
1115
|
"type": "text",
|
|
859
1116
|
"label": "AWS region",
|
|
860
1117
|
"help": "e.g. eu-central-1",
|
|
861
1118
|
"hidden": "!data.voiceEnabled || (data.sttProvider !== 'aws' && data.ttsProvider !== 'aws') || data.voiceCredentialType === 'manager'",
|
|
1119
|
+
"xs": 12,
|
|
862
1120
|
"sm": 6,
|
|
863
|
-
"md": 3
|
|
1121
|
+
"md": 3,
|
|
1122
|
+
"lg": 3,
|
|
1123
|
+
"xl": 3
|
|
864
1124
|
},
|
|
865
1125
|
"awsCredentialId": {
|
|
866
1126
|
"newLine": true,
|
|
@@ -868,8 +1128,11 @@
|
|
|
868
1128
|
"credentialType": "aws",
|
|
869
1129
|
"label": "AWS credential",
|
|
870
1130
|
"hidden": "!data.voiceEnabled || (data.sttProvider !== 'aws' && data.ttsProvider !== 'aws') || data.voiceCredentialType !== 'manager'",
|
|
1131
|
+
"xs": 12,
|
|
871
1132
|
"sm": 12,
|
|
872
|
-
"md": 6
|
|
1133
|
+
"md": 6,
|
|
1134
|
+
"lg": 6,
|
|
1135
|
+
"xl": 6
|
|
873
1136
|
},
|
|
874
1137
|
"awsVoice": {
|
|
875
1138
|
"newLine": true,
|
|
@@ -889,23 +1152,34 @@
|
|
|
889
1152
|
"label": "AWS Polly voice (optional)",
|
|
890
1153
|
"help": "Loaded from Polly (instance must run); empty = default per language. e.g. Vicki, Tatyana.",
|
|
891
1154
|
"hidden": "!data.voiceEnabled || data.ttsProvider !== 'aws'",
|
|
1155
|
+
"xs": 12,
|
|
892
1156
|
"sm": 6,
|
|
893
|
-
"md": 5
|
|
1157
|
+
"md": 5,
|
|
1158
|
+
"lg": 5,
|
|
1159
|
+
"xl": 5
|
|
894
1160
|
},
|
|
895
1161
|
"_localSpeechHeader": {
|
|
896
1162
|
"newLine": true,
|
|
897
1163
|
"type": "header",
|
|
898
1164
|
"size": 3,
|
|
899
1165
|
"text": "Local speech (no cloud)",
|
|
900
|
-
"hidden": "!data.voiceEnabled || (data.sttProvider !== 'vosk' && data.ttsProvider !== 'piper')"
|
|
1166
|
+
"hidden": "!data.voiceEnabled || (data.sttProvider !== 'vosk' && data.ttsProvider !== 'piper')",
|
|
1167
|
+
"xs": 12,
|
|
1168
|
+
"sm": 12,
|
|
1169
|
+
"md": 12,
|
|
1170
|
+
"lg": 12,
|
|
1171
|
+
"xl": 12
|
|
901
1172
|
},
|
|
902
1173
|
"_localSpeechHint": {
|
|
903
1174
|
"newLine": true,
|
|
904
1175
|
"type": "staticText",
|
|
905
1176
|
"text": "Vosk (STT) and Piper (TTS) run on this host. Models and the Piper binary are downloaded automatically on first use (needs internet, plus 'unzip'/'tar'). No API key required.",
|
|
906
1177
|
"hidden": "!data.voiceEnabled || (data.sttProvider !== 'vosk' && data.ttsProvider !== 'piper')",
|
|
1178
|
+
"xs": 12,
|
|
907
1179
|
"sm": 12,
|
|
908
|
-
"md": 12
|
|
1180
|
+
"md": 12,
|
|
1181
|
+
"lg": 12,
|
|
1182
|
+
"xl": 12
|
|
909
1183
|
},
|
|
910
1184
|
"voskModel": {
|
|
911
1185
|
"newLine": true,
|
|
@@ -917,8 +1191,11 @@
|
|
|
917
1191
|
"label": "Vosk model (optional)",
|
|
918
1192
|
"help": "Model name from alphacephei.com/vosk/models, e.g. vosk-model-small-de-0.15. Empty = small default per language.",
|
|
919
1193
|
"hidden": "!data.voiceEnabled || data.sttProvider !== 'vosk'",
|
|
1194
|
+
"xs": 12,
|
|
920
1195
|
"sm": 12,
|
|
921
|
-
"md": 6
|
|
1196
|
+
"md": 6,
|
|
1197
|
+
"lg": 6,
|
|
1198
|
+
"xl": 6
|
|
922
1199
|
},
|
|
923
1200
|
"piperVoice": {
|
|
924
1201
|
"newLine": true,
|
|
@@ -930,8 +1207,11 @@
|
|
|
930
1207
|
"label": "Piper voice (optional)",
|
|
931
1208
|
"help": "e.g. de_DE-thorsten-medium, ru_RU-irina-medium. Empty = default per language.",
|
|
932
1209
|
"hidden": "!data.voiceEnabled || data.ttsProvider !== 'piper'",
|
|
1210
|
+
"xs": 12,
|
|
933
1211
|
"sm": 6,
|
|
934
|
-
"md": 5
|
|
1212
|
+
"md": 5,
|
|
1213
|
+
"lg": 5,
|
|
1214
|
+
"xl": 5
|
|
935
1215
|
}
|
|
936
1216
|
}
|
|
937
1217
|
},
|
|
@@ -946,7 +1226,11 @@
|
|
|
946
1226
|
"name": "ConfigCustomAssistant/Components/ChatComponent",
|
|
947
1227
|
"guiApi": 2,
|
|
948
1228
|
"bundlerType": "module",
|
|
949
|
-
"
|
|
1229
|
+
"xs": 12,
|
|
1230
|
+
"sm": 12,
|
|
1231
|
+
"md": 12,
|
|
1232
|
+
"lg": 12,
|
|
1233
|
+
"xl": 12
|
|
950
1234
|
}
|
|
951
1235
|
}
|
|
952
1236
|
},
|
|
@@ -961,7 +1245,11 @@
|
|
|
961
1245
|
"name": "ConfigCustomAssistant/Components/SatellitesComponent",
|
|
962
1246
|
"guiApi": 2,
|
|
963
1247
|
"bundlerType": "module",
|
|
964
|
-
"
|
|
1248
|
+
"xs": 12,
|
|
1249
|
+
"sm": 12,
|
|
1250
|
+
"md": 12,
|
|
1251
|
+
"lg": 12,
|
|
1252
|
+
"xl": 12
|
|
965
1253
|
}
|
|
966
1254
|
}
|
|
967
1255
|
}
|