iobroker.assistant 0.1.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.
Files changed (98) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +176 -0
  3. package/admin/assistant.svg +19 -0
  4. package/admin/custom/.vite/manifest.json +169 -0
  5. package/admin/custom/assets/Components-DcnuVFM6.js +1 -0
  6. package/admin/custom/assets/_virtual_mf-localSharedImportMap___mfe_internal__ConfigCustomAssistant__mf_owner__1-DogEjv3U.js +1 -0
  7. package/admin/custom/assets/_virtual_mf___mfe_internal__ConfigCustomAssistant__mf_owner__1__loadShare___mf_0_emotion_mf_1_react__loadShare__.js-Dw5TkU1t.js +1 -0
  8. package/admin/custom/assets/_virtual_mf___mfe_internal__ConfigCustomAssistant__mf_owner__1__loadShare___mf_0_emotion_mf_1_styled__loadShare__.js-BEFjTs9S.js +1 -0
  9. package/admin/custom/assets/_virtual_mf___mfe_internal__ConfigCustomAssistant__mf_owner__1__loadShare___mf_0_iobroker_mf_1_gui_mf_2_components__loadShare__.js-C4r3udVz.js +1243 -0
  10. package/admin/custom/assets/_virtual_mf___mfe_internal__ConfigCustomAssistant__mf_owner__1__loadShare___mf_0_iobroker_mf_1_json_mf_2_config__loadShare__.js-DlOBHPL0.js +1494 -0
  11. package/admin/custom/assets/hostInit-DKMI-sLp.js +1 -0
  12. package/admin/custom/assets/index-B8wW0kQx.js +1 -0
  13. package/admin/custom/assets/lib-DpE8sc4h.js +3 -0
  14. package/admin/custom/assets/mf-entry-bootstrap-0-e7fa582d.js +36 -0
  15. package/admin/custom/assets/rolldown-runtime-C0FnF6B9.js +1 -0
  16. package/admin/custom/assets/virtualExposes-DOTO22UK.js +1 -0
  17. package/admin/custom/assets/virtual_mf-REMOTE_ENTRY_ID___mfe_internal__ConfigCustomAssistant__customComponents_js-CQa59yVi.js +1 -0
  18. package/admin/custom/assets/virtual_mf-exposes-ssr___mfe_internal__ConfigCustomAssistant__customComponents_js-9g2Fj8tk.js +2 -0
  19. package/admin/custom/assets/virtual_mf-exposes___mfe_internal__ConfigCustomAssistant__customComponents_js-BTUQTbYo.js +2 -0
  20. package/admin/custom/assets/vite-preload-helper-B7qeedMF.js +1 -0
  21. package/admin/custom/customComponents.js +1 -0
  22. package/admin/custom/customComponents.ssr.js +1 -0
  23. package/admin/custom/i18n/de.json +58 -0
  24. package/admin/custom/i18n/en.json +58 -0
  25. package/admin/custom/i18n/es.json +34 -0
  26. package/admin/custom/i18n/fr.json +34 -0
  27. package/admin/custom/i18n/it.json +34 -0
  28. package/admin/custom/i18n/nl.json +34 -0
  29. package/admin/custom/i18n/pl.json +34 -0
  30. package/admin/custom/i18n/pt.json +34 -0
  31. package/admin/custom/i18n/ru.json +34 -0
  32. package/admin/custom/i18n/uk.json +34 -0
  33. package/admin/custom/i18n/zh-cn.json +34 -0
  34. package/admin/custom/index.html +32 -0
  35. package/admin/custom/mf-manifest.json +1 -0
  36. package/admin/custom/mf-stats.json +1 -0
  37. package/admin/i18n/de.json +130 -0
  38. package/admin/i18n/en.json +130 -0
  39. package/admin/i18n/es.json +106 -0
  40. package/admin/i18n/fr.json +106 -0
  41. package/admin/i18n/it.json +106 -0
  42. package/admin/i18n/nl.json +106 -0
  43. package/admin/i18n/pl.json +106 -0
  44. package/admin/i18n/pt.json +106 -0
  45. package/admin/i18n/ru.json +106 -0
  46. package/admin/i18n/uk.json +106 -0
  47. package/admin/i18n/zh-cn.json +106 -0
  48. package/admin/jsonConfig.json +743 -0
  49. package/admin/sounds/alarm.wav +0 -0
  50. package/admin/sounds/timer.wav +0 -0
  51. package/build/lib/alarms.js +281 -0
  52. package/build/lib/alarms.js.map +1 -0
  53. package/build/lib/context.js +52 -0
  54. package/build/lib/context.js.map +1 -0
  55. package/build/lib/credentials.js +121 -0
  56. package/build/lib/credentials.js.map +1 -0
  57. package/build/lib/llm.js +303 -0
  58. package/build/lib/llm.js.map +1 -0
  59. package/build/lib/localLlm.js +221 -0
  60. package/build/lib/localLlm.js.map +1 -0
  61. package/build/lib/memory.js +190 -0
  62. package/build/lib/memory.js.map +1 -0
  63. package/build/lib/nlu.js +929 -0
  64. package/build/lib/nlu.js.map +1 -0
  65. package/build/lib/timers.js +245 -0
  66. package/build/lib/timers.js.map +1 -0
  67. package/build/lib/tools.js +299 -0
  68. package/build/lib/tools.js.map +1 -0
  69. package/build/lib/voice/aws.js +102 -0
  70. package/build/lib/voice/aws.js.map +1 -0
  71. package/build/lib/voice/azure.js +144 -0
  72. package/build/lib/voice/azure.js.map +1 -0
  73. package/build/lib/voice/download.js +76 -0
  74. package/build/lib/voice/download.js.map +1 -0
  75. package/build/lib/voice/engines.js +89 -0
  76. package/build/lib/voice/engines.js.map +1 -0
  77. package/build/lib/voice/lang.js +33 -0
  78. package/build/lib/voice/lang.js.map +1 -0
  79. package/build/lib/voice/piper.js +191 -0
  80. package/build/lib/voice/piper.js.map +1 -0
  81. package/build/lib/voice/protocol.js +35 -0
  82. package/build/lib/voice/protocol.js.map +1 -0
  83. package/build/lib/voice/stt.js +116 -0
  84. package/build/lib/voice/stt.js.map +1 -0
  85. package/build/lib/voice/tts.js +36 -0
  86. package/build/lib/voice/tts.js.map +1 -0
  87. package/build/lib/voice/voiceServer.js +249 -0
  88. package/build/lib/voice/voiceServer.js.map +1 -0
  89. package/build/lib/voice/vosk.js +260 -0
  90. package/build/lib/voice/vosk.js.map +1 -0
  91. package/build/lib/voice/wyoming.js +320 -0
  92. package/build/lib/voice/wyoming.js.map +1 -0
  93. package/build/lib/weather.js +423 -0
  94. package/build/lib/weather.js.map +1 -0
  95. package/build/main.js +3152 -0
  96. package/build/main.js.map +1 -0
  97. package/io-package.json +528 -0
  98. package/package.json +68 -0
@@ -0,0 +1,528 @@
1
+ {
2
+ "common": {
3
+ "name": "assistant",
4
+ "version": "0.1.2",
5
+ "title": "Assistant",
6
+ "news": {
7
+ "0.1.2": {
8
+ "en": "Initial commit",
9
+ "de": "Erster Commit",
10
+ "ru": "Первоначальный коммит",
11
+ "pt": "Confirmação inicial",
12
+ "nl": "Eerste commit",
13
+ "fr": "Engagement initial",
14
+ "it": "Inizial impegnato",
15
+ "es": "Compromiso inicial",
16
+ "pl": "Początkowe zatwierdzenie",
17
+ "uk": "Початковий коміт",
18
+ "zh-cn": "初始提交"
19
+ }
20
+ },
21
+ "titleLang": {
22
+ "en": "Voice Assistant",
23
+ "de": "Sprach-Assistent",
24
+ "ru": "Голосовой ассистент",
25
+ "pt": "Assistente de voz",
26
+ "nl": "Spraakassistent",
27
+ "fr": "Assistant vocal",
28
+ "it": "Assistente vocale",
29
+ "es": "Asistente de voz",
30
+ "pl": "Asystent głosowy",
31
+ "uk": "Голосовий помічник",
32
+ "zh-cn": "语音助手"
33
+ },
34
+ "desc": {
35
+ "en": "LLM assistant that answers questions and controls any ioBroker state via tool-calling",
36
+ "de": "LLM-Assistent, der Fragen beantwortet und beliebige ioBroker-States per Tool-Calling steuert",
37
+ "ru": "Ассистент LLM, который отвечает на вопросы и управляет любым состоянием ioBroker с помощью вызова инструментов",
38
+ "pt": "Assistente LLM que responde a perguntas e controla qualquer estado do ioBroker via chamada de ferramenta",
39
+ "nl": "LLM-assistent die vragen beantwoordt en elke ioBroker-status via tool-aanroepen beheert",
40
+ "fr": "Assistant LLM qui répond aux questions et contrôle n'importe quel état ioBroker via des appels d'outils",
41
+ "it": "Assistente LLM che risponde alle domande e controlla qualsiasi stato di ioBroker tramite chiamate agli strumenti",
42
+ "es": "Asistente LLM que responde preguntas y controla cualquier estado de ioBroker mediante llamadas a herramientas",
43
+ "pl": "Asystent LLM, który odpowiada na pytania i kontroluje dowolny stan ioBroker za pomocą wywołań narzędzi",
44
+ "uk": "Асистент LLM, який відповідає на запитання та керує будь-яким станом ioBroker за допомогою викликів інструментів",
45
+ "zh-cn": "LLM助手,通过工具调用回答问题并控制任何ioBroker状态"
46
+ },
47
+ "authors": [
48
+ "ioBroker"
49
+ ],
50
+ "keywords": [
51
+ "assistant",
52
+ "llm",
53
+ "voice",
54
+ "openai",
55
+ "anthropic"
56
+ ],
57
+ "platform": "Javascript/Node.js",
58
+ "main": "build/main.js",
59
+ "icon": "assistant.svg",
60
+ "enabled": true,
61
+ "extIcon": "https://raw.githubusercontent.com/ioBroker/ioBroker.assistant/main/admin/assistant.svg",
62
+ "readme": "https://github.com/ioBroker/ioBroker.assistant/blob/main/README.md",
63
+ "loglevel": "info",
64
+ "mode": "daemon",
65
+ "type": "general",
66
+ "compact": true,
67
+ "tier": 3,
68
+ "nogit": true,
69
+ "licenseInformation": {
70
+ "license": "MIT",
71
+ "type": "free"
72
+ },
73
+ "connectionType": "cloud",
74
+ "dataSource": "push",
75
+ "adminUI": {
76
+ "config": "json"
77
+ },
78
+ "dependencies": [
79
+ {
80
+ "js-controller": ">=6.0.11"
81
+ }
82
+ ],
83
+ "globalDependencies": [
84
+ {
85
+ "admin": ">=8.0.0"
86
+ }
87
+ ],
88
+ "osDependencies": {
89
+ "linux": [
90
+ "unzip",
91
+ "tar"
92
+ ]
93
+ },
94
+ "messagebox": true
95
+ },
96
+ "native": {
97
+ "provider": "openai",
98
+ "credentialType": "manual",
99
+ "apiKey": "",
100
+ "credentialIdApiKey": "",
101
+ "model": "gpt-4o-mini",
102
+ "baseUrl": "",
103
+ "maxTokens": 1024,
104
+ "allowWriteStates": true,
105
+ "allowObjectChange": false,
106
+ "readObjects": "devices",
107
+ "allowReadLogs": false,
108
+ "allowWriteLogs": false,
109
+ "allowHistory": true,
110
+ "allowFiles": false,
111
+ "allowSystemInfo": true,
112
+ "deviceAcl": {},
113
+ "systemPrompt": "Du bist ein Sprach-Assistent für ioBroker. Deine Antworten werden vorgelesen: schreibe reinen Fließtext, KEIN Markdown, keine Sternchen, keine Aufzählungen, keine Emojis, und fasse dich kurz. Beantworte Fragen über Geräte, Räume und Sensoren ausschließlich mit den verfügbaren Tools. Rufe immer zuerst ein Tool auf, bevor du etwas über ioBroker sagst, und behaupte nie, dass etwas nicht existiert, ohne es per Tool geprüft zu haben. Erfinde keine Werte.",
114
+ "useLocalNlu": true,
115
+ "nluAliases": [],
116
+ "useConversationContext": true,
117
+ "useLongTermMemory": true,
118
+ "weatherInstance": "",
119
+ "timerAnnounce": true,
120
+ "alarmAnnounce": true,
121
+ "timerSound": "sounds/timer.wav",
122
+ "alarmSound": "sounds/alarm.wav",
123
+ "ringSeconds": 60,
124
+ "useLocalLlm": false,
125
+ "localLlmModelUrl": "",
126
+ "voiceEnabled": false,
127
+ "udpServerEnabled": false,
128
+ "port": 7775,
129
+ "bind": "0.0.0.0",
130
+ "wyomingEnabled": false,
131
+ "wyomingPort": 10700,
132
+ "voiceLanguage": "",
133
+ "voiceApiKey": "",
134
+ "ttsVoice": "alloy",
135
+ "sttModel": "",
136
+ "ttsModel": "",
137
+ "sttProvider": "openai",
138
+ "ttsProvider": "openai",
139
+ "azureSpeechKey": "",
140
+ "azureSpeechRegion": "",
141
+ "azureVoice": "",
142
+ "awsAccessKeyId": "",
143
+ "awsSecretAccessKey": "",
144
+ "awsRegion": "",
145
+ "awsVoice": "",
146
+ "voskModel": "",
147
+ "piperVoice": "",
148
+ "voiceCredentialType": "manual",
149
+ "voiceCredentialId": "",
150
+ "azureCredentialId": "",
151
+ "awsCredentialId": ""
152
+ },
153
+ "encryptedNative": [
154
+ "apiKey",
155
+ "voiceApiKey",
156
+ "azureSpeechKey",
157
+ "awsSecretAccessKey"
158
+ ],
159
+ "protectedNative": [
160
+ "apiKey",
161
+ "voiceApiKey",
162
+ "azureSpeechKey",
163
+ "awsSecretAccessKey"
164
+ ],
165
+ "objects": [],
166
+ "instanceObjects": [
167
+ {
168
+ "_id": "info",
169
+ "type": "channel",
170
+ "common": {
171
+ "name": "Information"
172
+ },
173
+ "native": {}
174
+ },
175
+ {
176
+ "_id": "info.connection",
177
+ "type": "state",
178
+ "common": {
179
+ "name": "Provider configured/reachable",
180
+ "type": "boolean",
181
+ "role": "indicator.connected",
182
+ "read": true,
183
+ "write": false,
184
+ "def": false
185
+ },
186
+ "native": {}
187
+ },
188
+ {
189
+ "_id": "text",
190
+ "type": "channel",
191
+ "common": {
192
+ "name": "Text interface"
193
+ },
194
+ "native": {}
195
+ },
196
+ {
197
+ "_id": "text.request",
198
+ "type": "state",
199
+ "common": {
200
+ "name": "Ask the assistant (write your question here)",
201
+ "type": "string",
202
+ "role": "text",
203
+ "read": true,
204
+ "write": true,
205
+ "def": ""
206
+ },
207
+ "native": {}
208
+ },
209
+ {
210
+ "_id": "text.response",
211
+ "type": "state",
212
+ "common": {
213
+ "name": "Assistant answer",
214
+ "type": "string",
215
+ "role": "text",
216
+ "read": true,
217
+ "write": false,
218
+ "def": ""
219
+ },
220
+ "native": {}
221
+ },
222
+ {
223
+ "_id": "text.querySource",
224
+ "type": "state",
225
+ "common": {
226
+ "name": "Source of the current request/response ('' = state, 'chat' = message, else satellite name)",
227
+ "type": "string",
228
+ "role": "text",
229
+ "read": true,
230
+ "write": false,
231
+ "def": ""
232
+ },
233
+ "native": {}
234
+ },
235
+ {
236
+ "_id": "timers",
237
+ "type": "channel",
238
+ "common": {
239
+ "name": "Countdown timers"
240
+ },
241
+ "native": {}
242
+ },
243
+ {
244
+ "_id": "timers.count",
245
+ "type": "state",
246
+ "common": {
247
+ "name": "Number of active timers",
248
+ "type": "number",
249
+ "role": "value",
250
+ "read": true,
251
+ "write": false,
252
+ "def": 0
253
+ },
254
+ "native": {}
255
+ },
256
+ {
257
+ "_id": "timers.list",
258
+ "type": "state",
259
+ "common": {
260
+ "name": "Active timers (JSON)",
261
+ "type": "string",
262
+ "role": "json",
263
+ "read": true,
264
+ "write": false,
265
+ "def": "[]"
266
+ },
267
+ "native": {}
268
+ },
269
+ {
270
+ "_id": "timers.nextExpiry",
271
+ "type": "state",
272
+ "common": {
273
+ "name": "When the next timer fires (0 = none)",
274
+ "type": "number",
275
+ "role": "value.time",
276
+ "read": true,
277
+ "write": false,
278
+ "def": 0
279
+ },
280
+ "native": {}
281
+ },
282
+ {
283
+ "_id": "timers.nextLabel",
284
+ "type": "state",
285
+ "common": {
286
+ "name": "Label of the next timer",
287
+ "type": "string",
288
+ "role": "text",
289
+ "read": true,
290
+ "write": false,
291
+ "def": ""
292
+ },
293
+ "native": {}
294
+ },
295
+ {
296
+ "_id": "timers.lastFired",
297
+ "type": "state",
298
+ "common": {
299
+ "name": "Label of the last expired timer",
300
+ "type": "string",
301
+ "role": "text",
302
+ "read": true,
303
+ "write": false,
304
+ "def": ""
305
+ },
306
+ "native": {}
307
+ },
308
+ {
309
+ "_id": "timers.cancelAll",
310
+ "type": "state",
311
+ "common": {
312
+ "name": "Cancel all timers (write true)",
313
+ "type": "boolean",
314
+ "role": "button",
315
+ "read": false,
316
+ "write": true,
317
+ "def": false
318
+ },
319
+ "native": {}
320
+ },
321
+ {
322
+ "_id": "alarms",
323
+ "type": "channel",
324
+ "common": {
325
+ "name": "Alarms (fixed clock time)"
326
+ },
327
+ "native": {}
328
+ },
329
+ {
330
+ "_id": "alarms.count",
331
+ "type": "state",
332
+ "common": {
333
+ "name": "Number of configured alarms",
334
+ "type": "number",
335
+ "role": "value",
336
+ "read": true,
337
+ "write": false,
338
+ "def": 0
339
+ },
340
+ "native": {}
341
+ },
342
+ {
343
+ "_id": "alarms.list",
344
+ "type": "state",
345
+ "common": {
346
+ "name": "Alarms (JSON)",
347
+ "type": "string",
348
+ "role": "json",
349
+ "read": true,
350
+ "write": false,
351
+ "def": "[]"
352
+ },
353
+ "native": {}
354
+ },
355
+ {
356
+ "_id": "alarms.nextAlarm",
357
+ "type": "state",
358
+ "common": {
359
+ "name": "When the next alarm fires (0 = none)",
360
+ "type": "number",
361
+ "role": "value.time",
362
+ "read": true,
363
+ "write": false,
364
+ "def": 0
365
+ },
366
+ "native": {}
367
+ },
368
+ {
369
+ "_id": "alarms.nextLabel",
370
+ "type": "state",
371
+ "common": {
372
+ "name": "Label/time of the next alarm",
373
+ "type": "string",
374
+ "role": "text",
375
+ "read": true,
376
+ "write": false,
377
+ "def": ""
378
+ },
379
+ "native": {}
380
+ },
381
+ {
382
+ "_id": "alarms.lastFired",
383
+ "type": "state",
384
+ "common": {
385
+ "name": "Label/time of the last fired alarm",
386
+ "type": "string",
387
+ "role": "text",
388
+ "read": true,
389
+ "write": false,
390
+ "def": ""
391
+ },
392
+ "native": {}
393
+ },
394
+ {
395
+ "_id": "alarms.cancelAll",
396
+ "type": "state",
397
+ "common": {
398
+ "name": "Delete all alarms (write true)",
399
+ "type": "boolean",
400
+ "role": "button",
401
+ "read": false,
402
+ "write": true,
403
+ "def": false
404
+ },
405
+ "native": {}
406
+ },
407
+ {
408
+ "_id": "memory",
409
+ "type": "channel",
410
+ "common": {
411
+ "name": "Long-term memory (remembered facts)"
412
+ },
413
+ "native": {}
414
+ },
415
+ {
416
+ "_id": "memory.count",
417
+ "type": "state",
418
+ "common": {
419
+ "name": "Number of remembered facts",
420
+ "type": "number",
421
+ "role": "value",
422
+ "read": true,
423
+ "write": false,
424
+ "def": 0
425
+ },
426
+ "native": {}
427
+ },
428
+ {
429
+ "_id": "memory.list",
430
+ "type": "state",
431
+ "common": {
432
+ "name": "Remembered facts (JSON)",
433
+ "type": "string",
434
+ "role": "json",
435
+ "read": true,
436
+ "write": false,
437
+ "def": "[]"
438
+ },
439
+ "native": {}
440
+ },
441
+ {
442
+ "_id": "memory.add",
443
+ "type": "state",
444
+ "common": {
445
+ "name": "Remember a fact (write the text)",
446
+ "type": "string",
447
+ "role": "text",
448
+ "read": false,
449
+ "write": true,
450
+ "def": ""
451
+ },
452
+ "native": {}
453
+ },
454
+ {
455
+ "_id": "memory.forget",
456
+ "type": "state",
457
+ "common": {
458
+ "name": "Forget a fact (write its id or key)",
459
+ "type": "string",
460
+ "role": "text",
461
+ "read": false,
462
+ "write": true,
463
+ "def": ""
464
+ },
465
+ "native": {}
466
+ },
467
+ {
468
+ "_id": "memory.clearAll",
469
+ "type": "state",
470
+ "common": {
471
+ "name": "Forget all facts (write true)",
472
+ "type": "boolean",
473
+ "role": "button",
474
+ "read": false,
475
+ "write": true,
476
+ "def": false
477
+ },
478
+ "native": {}
479
+ },
480
+ {
481
+ "_id": "ringing",
482
+ "type": "state",
483
+ "common": {
484
+ "name": "A timer/alarm is currently ringing",
485
+ "type": "boolean",
486
+ "role": "indicator",
487
+ "read": true,
488
+ "write": false,
489
+ "def": false
490
+ },
491
+ "native": {}
492
+ },
493
+ {
494
+ "_id": "stopRinging",
495
+ "type": "state",
496
+ "common": {
497
+ "name": "Silence the ringing timer/alarm (write true)",
498
+ "type": "boolean",
499
+ "role": "button",
500
+ "read": false,
501
+ "write": true,
502
+ "def": false
503
+ },
504
+ "native": {}
505
+ },
506
+ {
507
+ "_id": "tts",
508
+ "type": "channel",
509
+ "common": {
510
+ "name": "Text-to-speech / announcements"
511
+ },
512
+ "native": {}
513
+ },
514
+ {
515
+ "_id": "tts.text",
516
+ "type": "state",
517
+ "common": {
518
+ "name": "Speak on all satellites (plain text, or a URL/path to an mp3/wav)",
519
+ "type": "string",
520
+ "role": "text",
521
+ "read": true,
522
+ "write": true,
523
+ "def": ""
524
+ },
525
+ "native": {}
526
+ }
527
+ ]
528
+ }
package/package.json ADDED
@@ -0,0 +1,68 @@
1
+ {
2
+ "name": "iobroker.assistant",
3
+ "version": "0.1.2",
4
+ "description": "LLM assistant for ioBroker — ask about and control any state via an LLM with tool-calling",
5
+ "author": "ioBroker",
6
+ "license": "MIT",
7
+ "keywords": [
8
+ "ioBroker",
9
+ "assistant",
10
+ "llm",
11
+ "voice",
12
+ "openai",
13
+ "anthropic"
14
+ ],
15
+ "main": "build/main.js",
16
+ "engines": {
17
+ "node": ">=22"
18
+ },
19
+ "dependencies": {
20
+ "@anthropic-ai/sdk": "^0.115.0",
21
+ "@aws-sdk/client-polly": "^3.1101.0",
22
+ "@aws-sdk/client-transcribe-streaming": "^3.1101.0",
23
+ "@iobroker/adapter-core": "^3.4.3",
24
+ "@iobroker/mcp-server": "^0.1.6",
25
+ "microsoft-cognitiveservices-speech-sdk": "^1.51.0",
26
+ "openai": "^7.3.0"
27
+ },
28
+ "devDependencies": {
29
+ "@alcalzone/release-script": "^5.2.1",
30
+ "@alcalzone/release-script-plugin-iobroker": "^5.2.0",
31
+ "@alcalzone/release-script-plugin-license": "^5.2.2",
32
+ "@iobroker/build-tools": "^3.0.1",
33
+ "@iobroker/eslint-config": "^2.3.4",
34
+ "@iobroker/testing": "^5.3.0",
35
+ "@types/node": "^22.20.1",
36
+ "typescript": "^6.0.3"
37
+ },
38
+ "scripts": {
39
+ "test:integration": "tsc -p tsconfig.build.json && node --test \"test/integration/*.test.js\"",
40
+ "test:package": "mocha test/testPackageFiles.ts --exit",
41
+ "test": "npm run test:integration",
42
+ "build": "npm run build:backend && npm run build:gui",
43
+ "build:backend": "tsc -p tsconfig.build.json",
44
+ "build:gui": "cd src-admin && npm install && npm run build",
45
+ "lint": "eslint -c eslint.config.mjs",
46
+ "npm": "npm i && cd src-admin && npm i",
47
+ "prepublishOnly": "npm run build",
48
+ "release-patch": "release-script patch --yes",
49
+ "release-minor": "release-script minor --yes",
50
+ "release-major": "release-script major --yes",
51
+ "release": "release-script",
52
+ "update-packages": "npx -y npm-check-updates --upgrade && cd src-admin && npx -y npm-check-updates --upgrade"
53
+ },
54
+ "bugs": {
55
+ "url": "https://github.com/ioBroker/ioBroker.assistant/issues"
56
+ },
57
+ "repository": {
58
+ "type": "git",
59
+ "url": "https://github.com/ioBroker/ioBroker.assistant.git"
60
+ },
61
+ "homepage": "https://github.com/ioBroker/ioBroker.assistant",
62
+ "files": [
63
+ "admin/",
64
+ "build/",
65
+ "io-package.json",
66
+ "LICENSE"
67
+ ]
68
+ }