iobroker.javascript 9.0.17 → 9.1.0

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 (159) hide show
  1. package/LICENSE +1 -1
  2. package/README.md +17 -10
  3. package/admin/assets/OpenAiDialog-Dx-XNET0.js +13 -0
  4. package/admin/assets/{Save-DXaUpIPM.js → Save-Cld9qv9i.js} +1 -1
  5. package/admin/assets/ScriptEditor-BVaX7Hcs.js +2 -0
  6. package/admin/assets/ScriptEditorVanillaMonaco-yq11eIYC.js +1 -0
  7. package/admin/assets/createSvgIcon-DPvF8xqu.js +8 -0
  8. package/admin/assets/hostInit-LzITLWDa.js +1 -0
  9. package/admin/assets/index-BkyLyaYT.js +8 -0
  10. package/admin/assets/index-CLJ6-h9Q.js +1 -0
  11. package/admin/assets/index-COZhHfBn.js +1230 -0
  12. package/admin/assets/index-CVZSzCXy.js +1 -0
  13. package/admin/assets/index-Cu-TydZj.js +5 -0
  14. package/admin/assets/index-D8iYqogF.js +16 -0
  15. package/admin/assets/index-DlDUIfpA.js +193 -0
  16. package/admin/assets/index-Dnbw7_L3.js +986 -0
  17. package/admin/assets/index-Dsh1HfIY.js +1 -0
  18. package/admin/assets/index-gIA8x-8f.js +1 -0
  19. package/admin/assets/inheritsLoose-B0Ba5G9z.js +29 -0
  20. package/admin/assets/iobroker_javascript__loadShare___mf_0_iobroker_mf_1_adapter_mf_2_react_mf_2_v5__loadShare__.mjs-DkBjPSMw.js +1 -0
  21. package/admin/assets/iobroker_javascript__loadShare___mf_0_mui_mf_1_material__loadShare__.mjs-QWG5Arqe.js +1 -0
  22. package/admin/assets/iobroker_javascript__loadShare__prop_mf_2_types__loadShare__.mjs-BCtSFofY.js +1 -0
  23. package/admin/assets/iobroker_javascript__loadShare__react__loadShare__.mjs-CTZOFJS2.js +1 -0
  24. package/admin/assets/iobroker_javascript__loadShare__react__loadShare__.mjs_commonjs-proxy-CE9lvhW8.js +1 -0
  25. package/admin/assets/iobroker_javascript__loadShare__react_mf_2_dom__loadShare__.mjs-DeVAS-oa.js +1 -0
  26. package/admin/assets/iobroker_javascript__loadShare__react_mf_2_dom__loadShare__.mjs_commonjs-proxy-RQRRZMX5.js +1 -0
  27. package/admin/assets/localSharedImportMap-AxgBkrOR.js +1 -0
  28. package/admin/assets/useTheme-hy6f3gra.js +1 -0
  29. package/admin/assets/virtualExposes-BPsCufin.js +1 -0
  30. package/admin/assets/virtual_mf-REMOTE_ENTRY_ID_iobroker_javascript__remoteEntry_js-C9suQF96.js +8 -0
  31. package/admin/custom/assets/Components-FfVbavBM.js +1 -0
  32. package/admin/custom/assets/ConfigCustomJavascriptSet__loadShare___mf_0_iobroker_mf_1_adapter_mf_2_react_mf_2_v5__loadShare__.mjs-B7D2xOvV.js +1 -0
  33. package/admin/custom/assets/ConfigCustomJavascriptSet__loadShare___mf_0_iobroker_mf_1_json_mf_2_config__loadShare__.mjs-ClsgYnEX.js +1 -0
  34. package/admin/custom/assets/ConfigCustomJavascriptSet__loadShare___mf_0_mui_mf_1_icons_mf_2_material__loadShare__.mjs-B551AMx-.js +1 -0
  35. package/admin/custom/assets/ConfigCustomJavascriptSet__loadShare___mf_0_mui_mf_1_material__loadShare__.mjs-KsT5vKjV.js +1 -0
  36. package/admin/custom/assets/ConfigCustomJavascriptSet__loadShare___mf_0_mui_mf_1_x_mf_2_date_mf_2_pickers__loadShare__.mjs-DgHZUNxn.js +1 -0
  37. package/admin/custom/assets/ConfigCustomJavascriptSet__loadShare__leaflet__loadShare__.mjs-BYONkEgA.js +1 -0
  38. package/admin/custom/assets/ConfigCustomJavascriptSet__loadShare__react__loadShare__.mjs-0SjJESw9.js +1 -0
  39. package/admin/custom/assets/ConfigCustomJavascriptSet__loadShare__react__loadShare__.mjs_commonjs-proxy-CInLgMWW.js +1 -0
  40. package/admin/custom/assets/ConfigCustomJavascriptSet__loadShare__react_mf_2_dom__loadShare__.mjs-CL--xmjC.js +1 -0
  41. package/admin/custom/assets/ConfigCustomJavascriptSet__loadShare__react_mf_2_dom__loadShare__.mjs_commonjs-proxy-CorOEig8.js +1 -0
  42. package/admin/custom/assets/DefaultPropsProvider-CGb21NGY.js +1 -0
  43. package/admin/custom/assets/TextField-DNzklBSl.js +139 -0
  44. package/admin/custom/assets/ThemeProvider-B4G3jidj.js +29 -0
  45. package/admin/custom/assets/blue-CagzI6CQ.js +1 -0
  46. package/admin/custom/assets/createSvgIcon-ZdrQ8zSU.js +1 -0
  47. package/admin/custom/assets/createTheme-Wd4QxQE0.js +8 -0
  48. package/admin/custom/assets/defaultTheme-F2iJF2G2.js +1 -0
  49. package/admin/custom/assets/hostInit-iUL-wyj1.js +1 -0
  50. package/admin/custom/assets/index-AZB1OHDH.js +1 -0
  51. package/admin/custom/assets/index-Be7j5wvd.js +1523 -0
  52. package/admin/custom/assets/index-BptSiKBK.js +55 -0
  53. package/admin/custom/assets/index-Bvwv5H7k.js +1 -0
  54. package/admin/custom/assets/index-C0RmLaAj.js +1 -0
  55. package/admin/custom/assets/index-CYc31Gwg.js +960 -0
  56. package/admin/custom/assets/index-CmJ8HzSc.js +1 -0
  57. package/admin/custom/assets/index-D0iTiVVG.js +8 -0
  58. package/admin/custom/assets/index-DNdWk-cT.js +1 -0
  59. package/admin/custom/assets/index-Dp7A3XHd.js +7 -0
  60. package/admin/custom/assets/index-YBvFYuP6.js +31 -0
  61. package/admin/custom/assets/index-huvZQhZw.js +1 -0
  62. package/admin/custom/assets/index-iRHaQfi-.js +1 -0
  63. package/admin/custom/assets/isSameWeek-DDsSIa_t.js +1 -0
  64. package/admin/custom/assets/jsx-runtime-DfVU3AZG.js +1 -0
  65. package/admin/custom/assets/leaflet-src-k2rCV-Ix.js +1 -0
  66. package/admin/custom/assets/localSharedImportMap-BRxFonIn.js +1 -0
  67. package/admin/custom/assets/useTheme-BfhDdtAr.js +1 -0
  68. package/admin/custom/assets/useTheme-DWZ6jNyq.js +1 -0
  69. package/admin/custom/assets/virtualExposes-DyedJotb.js +2 -0
  70. package/admin/custom/assets/virtual_mf-REMOTE_ENTRY_ID_ConfigCustomJavascriptSet__customComponents_js-BtJxKB87.js +8 -0
  71. package/admin/custom/customComponents.js +1 -2
  72. package/admin/i18n/de.json +10 -1
  73. package/admin/i18n/en.json +10 -1
  74. package/admin/i18n/es.json +10 -1
  75. package/admin/i18n/fr.json +10 -1
  76. package/admin/i18n/it.json +10 -1
  77. package/admin/i18n/nl.json +10 -1
  78. package/admin/i18n/pl.json +10 -1
  79. package/admin/i18n/pt.json +10 -1
  80. package/admin/i18n/ru.json +10 -1
  81. package/admin/i18n/uk.json +10 -1
  82. package/admin/i18n/zh-cn.json +10 -1
  83. package/admin/jsonConfig.json +195 -130
  84. package/admin/mf-manifest.json +1 -1
  85. package/admin/remoteEntry.js +1 -2
  86. package/admin/tab.html +13 -8
  87. package/build/lib/javascript.d.ts +4 -2
  88. package/build/lib/mirror.js +21 -18
  89. package/build/lib/mirror.js.map +1 -1
  90. package/build/lib/nodeModulesManagement.js +3 -2
  91. package/build/lib/nodeModulesManagement.js.map +1 -1
  92. package/build/lib/protectFs.js +27 -12
  93. package/build/lib/protectFs.js.map +1 -1
  94. package/build/lib/sandbox.js +3 -3
  95. package/build/lib/sandbox.js.map +1 -1
  96. package/build/lib/tools.js +7 -2
  97. package/build/lib/tools.js.map +1 -1
  98. package/build/main.js +237 -20
  99. package/build/main.js.map +1 -1
  100. package/build/types.d.ts +6 -1
  101. package/docs/de/README.md +75 -0
  102. package/docs/en/README.md +75 -0
  103. package/io-package.json +32 -28
  104. package/package.json +14 -14
  105. package/admin/assets/OpenAiDialog-BX-z5kNr.js +0 -36
  106. package/admin/assets/ScriptEditor-DhkUQSDz.js +0 -2
  107. package/admin/assets/ScriptEditorVanillaMonaco-CJS71hoK.js +0 -1
  108. package/admin/assets/_commonjsHelpers-Cpj98o6Y.js +0 -1
  109. package/admin/assets/createSvgIcon-DlIk-fDn.js +0 -30
  110. package/admin/assets/hostInit-OBG53iVO.js +0 -2
  111. package/admin/assets/index-BWM5lJbO.js +0 -193
  112. package/admin/assets/index-Br_QjNUk.js +0 -942
  113. package/admin/assets/index-C3P3FHiC.js +0 -16
  114. package/admin/assets/index-Cjl4b70e.js +0 -5
  115. package/admin/assets/index-DBgNhNiJ.js +0 -1294
  116. package/admin/assets/index-DQiceR5U.js +0 -1
  117. package/admin/assets/index-DZ3lKVw8.js +0 -1
  118. package/admin/assets/index-Do-nCdWy.js +0 -9
  119. package/admin/assets/index-DwcZPzOL.js +0 -24
  120. package/admin/assets/index-VCnuVxRc.js +0 -1
  121. package/admin/assets/inheritsLoose-DNrhibGS.js +0 -36
  122. package/admin/assets/iobroker_javascript__loadShare__react__loadShare__-i8pXne9X.js +0 -1
  123. package/admin/assets/iobroker_javascript__mf_v__runtimeInit__mf_v__-DZdFIfoQ.js +0 -5
  124. package/admin/assets/useTheme-DakN8Abq.js +0 -1
  125. package/admin/assets/virtualExposes-BIHI7g3E.js +0 -1
  126. package/admin/custom/assets/Components-DjQ_LxKw.js +0 -1
  127. package/admin/custom/assets/ConfigCustomJavascriptSet__loadShare___mf_0_iobroker_mf_1_adapter_mf_2_react_mf_2_v5__loadShare__-DaN0pfsw.js +0 -1
  128. package/admin/custom/assets/ConfigCustomJavascriptSet__loadShare___mf_0_mui_mf_1_material__loadShare__-BqzgglHd.js +0 -1
  129. package/admin/custom/assets/ConfigCustomJavascriptSet__loadShare__react__loadShare__-BNbscXK6.js +0 -1
  130. package/admin/custom/assets/ConfigCustomJavascriptSet__loadShare__react_mf_2_dom__loadShare__-N2_tx_mJ.js +0 -1
  131. package/admin/custom/assets/ConfigCustomJavascriptSet__mf_v__runtimeInit__mf_v__-jdUmHa_i.js +0 -5
  132. package/admin/custom/assets/DefaultPropsProvider-B8ZCC-c2.js +0 -1
  133. package/admin/custom/assets/DefaultPropsProvider-DfdXSIBu.js +0 -1
  134. package/admin/custom/assets/FilledInput-CSjr0QT8.js +0 -2
  135. package/admin/custom/assets/Tabs-CiTQkBjL.js +0 -138
  136. package/admin/custom/assets/ThemeProvider-C50pIiW4.js +0 -29
  137. package/admin/custom/assets/_commonjsHelpers-CE1G-McA.js +0 -1
  138. package/admin/custom/assets/createSvgIcon-C7qUEvjp.js +0 -1
  139. package/admin/custom/assets/createTheme-Bm92JF8u.js +0 -8
  140. package/admin/custom/assets/defaultTheme-BlO0eCf6.js +0 -1
  141. package/admin/custom/assets/hostInit-BJ6gSofk.js +0 -2
  142. package/admin/custom/assets/index-4wMOc304.js +0 -1
  143. package/admin/custom/assets/index-5CTGLw4h.js +0 -55
  144. package/admin/custom/assets/index-BkjEWGjf.js +0 -1
  145. package/admin/custom/assets/index-Bym4WjyH.js +0 -908
  146. package/admin/custom/assets/index-COcxCdeX.js +0 -8
  147. package/admin/custom/assets/index-CnpybLRW.js +0 -1
  148. package/admin/custom/assets/index-Db8nkuMR.js +0 -7
  149. package/admin/custom/assets/index-DcK0RDrH.js +0 -1
  150. package/admin/custom/assets/index-Df6OaCxx.js +0 -1
  151. package/admin/custom/assets/index-Dx7rDE4p.js +0 -1
  152. package/admin/custom/assets/index-t-NMdeH5.js +0 -31
  153. package/admin/custom/assets/index-u8R8UVCf.js +0 -1393
  154. package/admin/custom/assets/jsx-runtime-C1csJtRx.js +0 -1
  155. package/admin/custom/assets/leaflet-src-DpWQqQWv.js +0 -1
  156. package/admin/custom/assets/useEnhancedEffect-aUb-5tTL.js +0 -1
  157. package/admin/custom/assets/useTheme-Cgjfsi-1.js +0 -1
  158. package/admin/custom/assets/useTheme-DFGylj2o.js +0 -1
  159. package/admin/custom/assets/virtualExposes-C_DtjFte.js +0 -2
package/build/types.d.ts CHANGED
@@ -33,6 +33,10 @@ export interface JavaScriptAdapterConfig {
33
33
  maxSetStatePerMinute: number;
34
34
  maxTriggersPerScript: number;
35
35
  gptKey: string;
36
+ gptBaseUrl: string;
37
+ claudeKey: string;
38
+ geminiKey: string;
39
+ deepseekKey: string;
36
40
  password?: string;
37
41
  }
38
42
 
@@ -59,7 +63,7 @@ export type JavascriptTimer = {
59
63
  ack?: boolean;
60
64
  };
61
65
 
62
- export type ScriptType = 'TypeScript/ts' | 'Blockly' | 'Rules' | 'JavaScript/js';
66
+ export type ScriptType = 'TypeScript/ts' | 'Blockly' | 'Rules' | 'Javascript/js';
63
67
 
64
68
  export type TimeRule = {
65
69
  time: string | { hour: number; minute: number };
@@ -740,4 +744,5 @@ export interface JavascriptContext {
740
744
  logError: (scriptName: string, msg: string, e: Error, offs?: number) => void;
741
745
  logWithLineInfo: (message: string) => void;
742
746
  schedules?: string[];
747
+ allowSelfSignedCerts: boolean;
743
748
  }
package/docs/de/README.md CHANGED
@@ -6,3 +6,78 @@
6
6
 
7
7
  - [Blockly](blockly.md)
8
8
  - [Benutzung](usage.md)
9
+
10
+ ## KI-Codegenerator - Unterstützung eigener API-Endpunkte
11
+
12
+ Der integrierte KI-Codegenerator unterstützt nicht nur die OpenAI-API, sondern auch jeden OpenAI-kompatiblen API-Endpunkt. So können alternative Anbieter genutzt werden, z.B.:
13
+
14
+ - **Google Gemini** (kostenlos verfügbar, empfohlen)
15
+ - **DeepSeek** (sehr günstig)
16
+ - **OpenRouter** (Multi-Provider-Gateway)
17
+ - **Ollama** (lokale LLMs)
18
+ - **LM Studio** (lokale LLMs)
19
+ - **Anthropic** (über OpenAI-kompatiblen Proxy)
20
+ - Jeder andere Anbieter mit einem OpenAI-kompatiblen `/v1/chat/completions`-Endpunkt
21
+
22
+ ### Empfohlene Anbieter
23
+
24
+ #### Google Gemini (kostenlos, empfohlen)
25
+
26
+ Google bietet ein großzügiges kostenloses Kontingent mit einem OpenAI-kompatiblen Endpunkt — ideal für die ioBroker-Skript-Generierung:
27
+
28
+ | Modell | Anfragen/Min | Anfragen/Tag | Qualität |
29
+ |--------|-------------|-------------|----------|
30
+ | Gemini 2.5 Flash | 10 | 500 | Sehr gut für Code |
31
+ | Gemini 2.5 Pro | 5 | 25 | Ausgezeichnet |
32
+ | Gemini 2.0 Flash | 15 | 1500 | Gut |
33
+
34
+ Einrichtung:
35
+ 1. Kostenlosen API-Key holen: https://aistudio.google.com/apikey
36
+ 2. **Base-URL** auf `https://generativelanguage.googleapis.com/v1beta/openai` setzen
37
+ 3. Ein Gemini-Modell wählen (z.B. `gemini-2.5-flash`)
38
+
39
+ #### DeepSeek (sehr günstig)
40
+
41
+ DeepSeek bietet hervorragende Code-Generierung zu sehr niedrigen Kosten (~0,001€ pro Anfrage):
42
+ - API-Key holen: https://platform.deepseek.com/
43
+ - **Base-URL** auf `https://api.deepseek.com/v1` setzen
44
+ - Empfohlenes Modell: `deepseek-chat`
45
+
46
+ #### Lokale Modelle (Ollama / LM Studio)
47
+
48
+ Lokale Modelle laufen auf eigener Hardware ohne Internet. Für gute ioBroker-Code-Generierung werden jedoch Modelle mit mindestens 14B+ Parametern empfohlen. Kleine Modelle (7B) erzeugen häufig falsche API-Aufrufe.
49
+
50
+ - **Ollama**: **Base-URL** auf `http://localhost:11434/v1` setzen, beliebigen Text als API-Key verwenden
51
+ - **LM Studio**: **Base-URL** auf `http://localhost:1234/v1` setzen
52
+
53
+ **Hinweis:** Die kostenlose Version der OpenAI-API (ChatGPT) bietet keinen API-Zugang mehr für Code-Generierung. Google Gemini (kostenlos) oder DeepSeek (sehr günstig) sind empfohlene Alternativen.
54
+
55
+ ### Konfiguration
56
+
57
+ In den Adapter-Einstellungen unter "Haupteinstellungen" befinden sich folgende Felder für die KI-Konfiguration:
58
+
59
+ | Einstellung | Beschreibung |
60
+ |-------------|-------------|
61
+ | **ChatGPT API-Schlüssel** | Der API-Schlüssel. Erforderlich für alle Anbieter. Für Ollama kann ein beliebiger nicht-leerer Wert verwendet werden (z.B. `ollama`). |
62
+ | **Eigene API Base-URL** | Die Base-URL des API-Anbieters. Leer lassen für OpenAI. Beispiele: `https://generativelanguage.googleapis.com/v1beta/openai` (Google Gemini), `http://localhost:11434/v1` (Ollama). |
63
+
64
+ ### API-Verbindung testen
65
+
66
+ Mit dem Button **"API-Verbindung testen"** in den Adapter-Einstellungen kann die Konfiguration überprüft werden. Der Test:
67
+ - Verbindet sich mit dem konfigurierten API-Endpunkt
68
+ - Validiert den API-Schlüssel
69
+ - Gibt die Anzahl der verfügbaren Modelle zurück
70
+
71
+ ### Dynamisches Laden der Modelle
72
+
73
+ Beim Öffnen des KI-Codegenerator-Dialogs im Skript-Editor werden die verfügbaren Modelle automatisch vom konfigurierten API-Endpunkt abgerufen. Das Modell-Dropdown wird dynamisch befüllt — es gibt keine fest hinterlegte Modellliste.
74
+
75
+ ### Fehlerbehandlung
76
+
77
+ Wenn der API-Endpunkt nicht erreichbar ist oder einen Fehler zurückgibt, werden benutzerfreundliche Meldungen angezeigt:
78
+ - Verbindungsfehler (Endpunkt nicht erreichbar)
79
+ - Ungültiger API-Schlüssel (401)
80
+ - Zugriff verweigert (403)
81
+ - Modell nicht gefunden (404)
82
+
83
+ Bei fehlgeschlagenem Modellabruf wird ein **Erneut versuchen**-Button angezeigt, sodass ein erneuter Versuch ohne Schließen des Dialogs möglich ist.
package/docs/en/README.md CHANGED
@@ -7,3 +7,78 @@
7
7
  - [Blockly](blockly.md)
8
8
  - [JavaScript reference](javascript.md)
9
9
  - [Upgrade guide](upgrade-guide.md)
10
+
11
+ ## AI Code Generator - Custom API Support
12
+
13
+ The built-in AI code generator supports not only the OpenAI API but also any OpenAI-compatible API endpoint. This allows you to use alternative providers such as:
14
+
15
+ - **Google Gemini** (free tier available, recommended)
16
+ - **DeepSeek** (very affordable)
17
+ - **OpenRouter** (multi-provider gateway)
18
+ - **Ollama** (local LLMs)
19
+ - **LM Studio** (local LLMs)
20
+ - **Anthropic** (via OpenAI-compatible proxy)
21
+ - Any other provider with an OpenAI-compatible `/v1/chat/completions` endpoint
22
+
23
+ ### Recommended Providers
24
+
25
+ #### Google Gemini (free, recommended)
26
+
27
+ Google offers a generous free tier with an OpenAI-compatible endpoint — ideal for ioBroker script generation:
28
+
29
+ | Model | Requests/min | Requests/day | Quality |
30
+ |-------|-------------|-------------|---------|
31
+ | Gemini 2.5 Flash | 10 | 500 | Very good for code |
32
+ | Gemini 2.5 Pro | 5 | 25 | Excellent |
33
+ | Gemini 2.0 Flash | 15 | 1500 | Good |
34
+
35
+ Setup:
36
+ 1. Get a free API key at https://aistudio.google.com/apikey
37
+ 2. Set **Base URL** to `https://generativelanguage.googleapis.com/v1beta/openai`
38
+ 3. Select a Gemini model (e.g. `gemini-2.5-flash`)
39
+
40
+ #### DeepSeek (very affordable)
41
+
42
+ DeepSeek offers excellent code generation at very low cost (~$0.001 per request):
43
+ - Get an API key at https://platform.deepseek.com/
44
+ - Set **Base URL** to `https://api.deepseek.com/v1`
45
+ - Recommended model: `deepseek-chat`
46
+
47
+ #### Local models (Ollama / LM Studio)
48
+
49
+ Local models run on your own hardware without internet. However, for good ioBroker code generation, models with at least 14B+ parameters are recommended. Small models (7B) often generate incorrect API calls.
50
+
51
+ - **Ollama**: Set **Base URL** to `http://localhost:11434/v1`, use any string as API key
52
+ - **LM Studio**: Set **Base URL** to `http://localhost:1234/v1`
53
+
54
+ **Note:** The free tier of the OpenAI API (ChatGPT) no longer provides API access for code generation. Consider using Google Gemini (free) or DeepSeek (very affordable) as alternatives.
55
+
56
+ ### Configuration
57
+
58
+ In the adapter settings under "Main settings", you will find the following fields for AI configuration:
59
+
60
+ | Setting | Description |
61
+ |---------|-------------|
62
+ | **ChatGPT API key** | Your API key. Required for all providers. For Ollama you can use any non-empty string (e.g. `ollama`). |
63
+ | **Custom API Base URL** | The base URL of your API provider. Leave empty for OpenAI. Examples: `https://generativelanguage.googleapis.com/v1beta/openai` (Google Gemini), `http://localhost:11434/v1` (Ollama). |
64
+
65
+ ### Test API Connection
66
+
67
+ Use the **"Test API connection"** button in the adapter settings to verify your configuration. The test will:
68
+ - Connect to the configured API endpoint
69
+ - Validate the API key
70
+ - Return the number of available models
71
+
72
+ ### Dynamic Model Loading
73
+
74
+ When opening the AI code generator dialog in the script editor, the available models are automatically fetched from the configured API endpoint. The model dropdown is populated dynamically — no hardcoded model list is used.
75
+
76
+ ### Error Handling
77
+
78
+ If the API endpoint is unreachable or returns an error, user-friendly messages are displayed:
79
+ - Connection failures (endpoint not reachable)
80
+ - Invalid API key (401)
81
+ - Access denied (403)
82
+ - Model not found (404)
83
+
84
+ A **Retry** button is shown when model loading fails, allowing you to retry without closing the dialog.
package/io-package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "common": {
3
3
  "name": "javascript",
4
- "version": "9.0.17",
4
+ "version": "9.1.0",
5
5
  "blockedVersions": [
6
6
  "8.0.0",
7
7
  "8.0.1"
@@ -40,6 +40,32 @@
40
40
  "Matthias Kleine <info@haus-automatisierung.com>"
41
41
  ],
42
42
  "news": {
43
+ "9.1.0": {
44
+ "en": "Added support for custom OpenAI-compatible API endpoints (e.g. Ollama, LM Studio, Google Gemini, DeepSeek, OpenRouter)\nAdded configurable base URL in adapter settings\nModels are now fetched dynamically from the configured API endpoint\nAdded the \"Test API connection\" button in adapter settings\nAdded error handling with user-friendly messages for unreachable providers\nAdded retry functionality for failed model loading\nAll API calls (models + chat) are proxied server-side to avoid CORS issues with local providers\nStrip LLM thinking artifacts from responses (for local models like Ollama)",
45
+ "de": "Unterstützung für benutzerdefinierte OpenAI-kompatible API-Endpunkte (z.B. Ollama, LM Studio, Google Gemini, DeepSeek, OpenRouter)\nKonfigurierbare Basis-URL in Adaptereinstellungen hinzugefügt\nModelle werden nun dynamisch vom konfigurierten API-Endpunkt abgeholt\nHinzufügen der Schaltfläche \"Test API-Verbindung\" in Adaptereinstellungen\nHinzugefügt Fehlerbehandlung mit benutzerfreundlichen Nachrichten für unerreichbare Anbieter\nZusätzliche Retry-Funktionalität für gescheiterte Modellbeladung\nAlle API-Anrufe (Modelle + Chat) sind serverseitig proxied, um CORS Probleme mit lokalen Anbietern zu vermeiden\nStrip LLM denkende Artefakte aus Antworten (für lokale Modelle wie Ollama)",
46
+ "ru": "Добавлена поддержка пользовательских OpenAI-совместимых конечных точек API (например, Ollama, LM Studio, Google Gemini, DeepSeek, OpenRouter)\nДобавлен настраиваемый базовый URL в настройках адаптера\nМодели теперь динамически извлекаются из конфигурированной конечной точки API\nДобавлена кнопка «Test API connection» в настройках адаптера\nДобавлена обработка ошибок с помощью удобных сообщений для недостижимых поставщиков\nДобавлена функция retry для неудавшейся загрузки модели\nВсе вызовы API (модели + чат) проходят на стороне сервера, чтобы избежать проблем с CORS с местными провайдерами\nСтриптиз LLM мыслящие артефакты из ответов (для местных моделей, таких как Ollama)",
47
+ "pt": "Adicionado suporte para endpoints personalizados compatíveis com OpenAI API (por exemplo, Ollama, LM Studio, Google Gemini, DeepSeek, OpenRouter)\nAdicionado URL base configurável nas configurações do adaptador\nOs modelos agora são obtidos dinamicamente do endpoint da API configurado\nAdicionado o botão \"Teste conexão API\" nas configurações do adaptador\nTratamento de erros adicionado com mensagens amigáveis para provedores inalcançáveis\nAdicionada funcionalidade de repetição para carregamento do modelo falhou\nTodas as chamadas de API (modelos + chat) são proxied servidor-lado para evitar problemas CORS com fornecedores locais\nRetire artefatos de pensamento LLM de respostas (para modelos locais como Ollama)",
48
+ "nl": "Extra ondersteuning voor aangepaste OpenAI-compatibele API-eindpunten (bijv. Ollama, LM Studio, Google Gemini, DeepSeek, OpenRouter)\nConfigureerbare basis-URL in adapterinstellingen toegevoegd\nModellen worden nu dynamisch opgehaald uit het geconfigureerde API-eindpunt\nToegevoegd de \"Test API connection\" knop in adapter instellingen\nToegevoegd foutafhandeling met gebruiksvriendelijke berichten voor onbereikbare providers\nName\nAlle API-gesprekken (modellen + chat) zijn aangeprezen server-kant om CORS problemen met lokale aanbieders te voorkomen\nStrip LLM denken artefacten uit reacties (voor lokale modellen zoals Ollama)",
49
+ "fr": "Ajout de la prise en charge des paramètres d'API compatibles OpenAI personnalisés (par exemple Ollama, LM Studio, Google Gemini, DeepSeek, OpenRouter)\nAjout de l'URL de base configurable dans les paramètres de l'adaptateur\nLes modèles sont maintenant récupérés dynamiquement à partir du paramètre API configuré\nAjout du bouton \"Tester la connexion API\" dans les paramètres de l'adaptateur\nAjout du traitement des erreurs avec des messages conviviaux pour les fournisseurs inaccessibles\nAjout de la fonctionnalité de réessayer pour le chargement du modèle échoué\nTous les appels API (modèles + chat) sont proxiés côté serveur pour éviter les problèmes CORS avec les fournisseurs locaux\nStrip LLM artefacts de réflexion des réponses (pour les modèles locaux comme Ollama)",
50
+ "it": "Aggiunto il supporto per i endpoint API personalizzati compatibili con OpenAI (ad esempio Ollama, LM Studio, Google Gemini, DeepSeek, OpenRouter)\nAggiunto URL di base configurabile nelle impostazioni dell'adattatore\nI modelli sono ora recuperati dinamicamente dal endpoint API configurato\nAggiunto il pulsante \"Test API Connection\" nelle impostazioni dell'adattatore\nGestione degli errori aggiunti con messaggi intuitivi per fornitori irraggiungibili\nAggiunta funzionalità retry per il caricamento del modello fallito\nTutte le chiamate API (modelli + chat) sono proxied server-side per evitare problemi CORS con i fornitori locali\nStrip LLM pensa artefatti da risposte (per modelli locali come Ollama)",
51
+ "es": "Añadido soporte para terminales API compatibles con OpenAI (por ejemplo Ollama, LM Studio, Google Gemini, DeepSeek, OpenRouter)\nURL de base configurable en la configuración del adaptador\nLos modelos ahora se recogen dinámicamente desde el punto final de API configurado\nSe agregó el botón \"Test API connection\" en la configuración del adaptador\nManejo de error añadido con mensajes fáciles de usar para proveedores no accesibles\nFunción de retry adicional para la carga del modelo fallido\nTodas las llamadas de API (models + chat) son proxied servidor-side para evitar problemas de CORS con proveedores locales\nStrip LLM piensa artefactos de respuestas (para modelos locales como Ollama)",
52
+ "pl": "Dodano obsługę własnych punktów końcowych kompatybilnych z OpenAI (np. Ollama, LM Studio, Google Gemini, DeepSeek, OpenRouter)\nDodano konfigurowalny podstawowy adres URL w ustawieniach adaptera\nModele są teraz odbierane dynamicznie z skonfigurowanego punktu końcowego API\nDodano przycisk \"Test API connection\" w ustawieniach adaptera\nDodano obsługę błędów z komunikatami przyjaznymi dla użytkownika dla nieosiągalnych dostawców\nDodano funkcję ponownego testowania dla nieudanego obciążenia modelu\nWszystkie połączenia API (modele + czat) są proxied server- side, aby uniknąć problemów CORS z lokalnymi dostawcami\nStrip LLM myśli artefakty z odpowiedzi (dla lokalnych modeli takich jak Ollama)",
53
+ "uk": "Додано підтримку користувацького OpenAI-сумісного API endpoints (наприклад, Ollama, LM Studio, Google Gemini, DeepSeek, OpenRouter)\nДодано налаштування URL-адреси бази в налаштуваннях адаптера\nМоделі тепер динамічно від налаштованої точки API\nДодано кнопку \"Test API підключення\" в налаштуваннях адаптера\nДодана обробка помилок з зручними повідомленнями для ненадійних постачальників\nДодано функцію трейдингу для завантаження моделі\nУсі виклики API (модельи + чат) проксіовані сервери, щоб уникнути проблем з локальними постачальниками\nСмуга LLM мислення артефакти відповідей (для місцевих моделей, таких як Ollama)",
54
+ "zh-cn": "添加自定义的 OpenAI 兼容 API 端点支持( 如 Ollama, LM Studio, Google 双子座, DeepSeek, OpenRouter)\n在适配器设置中添加可配置的基础 URL\n现在从配置的 API 端点动态获取模型\n在适配器设置中添加“ 测试 API 连接” 按钮\n为无法访问的提供者处理方便用户的信件时添加错误处理\n为失败的模型加载添加了重试功能\n所有 API 呼叫( 模式 + 聊天) 均为代理服务器侧面, 以避免 CORS 与本地供应商发生问题\n从回应中脱去LLM思考文物(为奥拉马等本地模型)"
55
+ },
56
+ "9.0.18": {
57
+ "en": "Corrected error message with `lastSync`\nCorrected JavaScript filter",
58
+ "de": "Korrigierte Fehlermeldung mit `last Synthetisch `\nJavaScript-Filter korrigiert",
59
+ "ru": "Исправленное сообщение об ошибке с \"последним\" синхронизация пункт\nИсправленный фильтр JavaScript",
60
+ "pt": "Mensagem de erro corrigida com ` last Sincronizar `\nFiltro JavaScript corrigido",
61
+ "nl": "Gecorrigeerde foutmelding met de laatste Synchroniseren Wat\nGecorrigeerd JavaScript filter",
62
+ "fr": "Message d'erreur corrigé avec `dernier Synchronisation \"\nFiltre JavaScript corrigé",
63
+ "it": "Messaggio di errore corretto con `ultimo Traduzione: #\nFiltro JavaScript corretto",
64
+ "es": "Mensaje de error corregido con `último Sync `\nFiltro de JavaScript corregido",
65
+ "pl": "Poprawiony komunikat błędu z 'last Sync'\nPoprawiony filtr JavaScript",
66
+ "uk": "Виправлено повідомлення про помилку з `last Синхронізація й\nВиправлений JavaScript-фільтр",
67
+ "zh-cn": "更正错误消息为“ last 同步 `\n已更正的 JavaScript 过滤器"
68
+ },
43
69
  "9.0.17": {
44
70
  "en": "Added possibility to encrypt scripts with password (only for vendors)",
45
71
  "de": "Zusätzliche Möglichkeit, Skripte mit Passwort zu verschlüsseln (nur für Hersteller)",
@@ -104,32 +130,6 @@
104
130
  "pl": "Dodano możliwość szyfrowania skryptów hasłem (tylko dla sprzedawców)",
105
131
  "uk": "Додана можливість шифрування сценаріїв з паролем (тільки для постачальників)",
106
132
  "zh-cn": "添加使用密码加密脚本的可能性( 只针对供应商)"
107
- },
108
- "9.0.11": {
109
- "en": "Corrected the rule editor if the condition is empty\nCorrected types for TypeScript",
110
- "de": "Korrektur des Regeleditors, wenn die Bedingung leer ist\nKorrigierte Typen für TypeScript",
111
- "ru": "Исправлен редактор правил, если условие пусто\nИсправленные типы для TypeScript",
112
- "pt": "Corrigido o editor de regras se a condição estiver vazia\nTipos corrigidos para TypeScript",
113
- "nl": "De regelbewerker corrigeren als de voorwaarde leeg is\nGecorrigeerde types voor TypeScript",
114
- "fr": "Correction de l'éditeur de règles si la condition est vide\nTypes corrigés pour TypeScript",
115
- "it": "Corretto l'editor di regola se la condizione è vuota\nTipi corretti per TypeScript",
116
- "es": "Corregido el editor de reglas si la condición está vacía\nTipos corregidos para TipoScript",
117
- "pl": "Poprawiono edytor zasad, jeśli warunek jest pusty\nPoprawione typy dla TypeScript",
118
- "uk": "Виправлено редактор правила, якщо стан порожній\nВиправлені типи для TypeScript",
119
- "zh-cn": "如果条件为空, 更正规则编辑器\n类型脚本的校正类型"
120
- },
121
- "9.0.7": {
122
- "en": "Fixing some blocks in blockly: time, function",
123
- "de": "Einige Blocks blockieren: Zeit, Funktion",
124
- "ru": "Блокировка блоков: время, функция",
125
- "pt": "Corrigindo alguns blocos em bloco: tempo, função",
126
- "nl": "Het repareren van enkele blokken in blokjes: tijd, functie",
127
- "fr": "Correction de quelques blocs en bloc : temps, fonction",
128
- "it": "Fissare alcuni blocchi in blocco: tempo, funzione",
129
- "es": "Arreglar algunos bloques en bloque: tiempo, función",
130
- "pl": "Ustawianie niektórych bloków w blokowanych: czas, funkcja",
131
- "uk": "Виправлення деяких блоків в блокноті: час, функція",
132
- "zh-cn": "以块状修复一些块: 时间, 功能"
133
133
  }
134
134
  },
135
135
  "platform": "Javascript/Node.js",
@@ -504,7 +504,11 @@
504
504
  "createAstroStates": true,
505
505
  "maxSetStatePerMinute": 1000,
506
506
  "maxTriggersPerScript": 100,
507
- "gptKey": ""
507
+ "gptKey": "",
508
+ "gptBaseUrl": "",
509
+ "claudeKey": "",
510
+ "geminiKey": "",
511
+ "deepseekKey": ""
508
512
  },
509
513
  "objects": [
510
514
  {
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "iobroker.javascript",
3
- "version": "9.0.17",
3
+ "version": "9.1.0",
4
4
  "description": "Rules Engine for ioBroker",
5
5
  "author": "bluefox <dogafox@gmail.com>",
6
6
  "contributors": [
@@ -42,33 +42,33 @@
42
42
  },
43
43
  "dependencies": {
44
44
  "@iobroker/adapter-core": "^3.3.2",
45
- "@iobroker/types": "^7.0.7",
46
- "@types/node": "^24.9.2",
47
- "axios": "^1.13.2",
45
+ "@iobroker/types": "^7.1.0",
46
+ "@types/node": "^25.5.0",
47
+ "axios": "^1.13.6",
48
48
  "jsonata": "^2.1.0",
49
49
  "jszip": "^3.10.1",
50
50
  "node-inspect": "^2.0.0",
51
51
  "node-schedule": "2.1.1",
52
- "prettier": "^3.6.2",
53
- "promisify-child-process": "^4.1.2",
54
- "semver": "^7.7.3",
52
+ "prettier": "^3.8.1",
53
+ "promisify-child-process": "^5.0.1",
54
+ "semver": "^7.7.4",
55
55
  "suncalc2": "^1.8.1",
56
- "typescript": "~5.8.3",
56
+ "typescript": "~5.9.3",
57
57
  "virtual-tsc": "^0.6.2",
58
58
  "wake_on_lan": "^1.0.0"
59
59
  },
60
60
  "devDependencies": {
61
- "@alcalzone/release-script": "^5.0.0",
62
- "@alcalzone/release-script-plugin-iobroker": "^4.0.0",
63
- "@alcalzone/release-script-plugin-license": "^4.0.0",
61
+ "@alcalzone/release-script": "^5.1.1",
62
+ "@alcalzone/release-script-plugin-iobroker": "^5.1.2",
63
+ "@alcalzone/release-script-plugin-license": "^5.1.1",
64
64
  "@iobroker/adapter-dev": "^1.5.0",
65
- "@iobroker/build-tools": "^2.0.15",
65
+ "@iobroker/build-tools": "^3.0.1",
66
66
  "@iobroker/eslint-config": "^2.2.0",
67
- "@iobroker/plugin-sentry": "^3.0.0",
67
+ "@iobroker/plugin-sentry": "^3.0.4",
68
68
  "@iobroker/testing": "^5.2.2",
69
69
  "@iobroker/vis-2-widgets-react-dev": "^4.0.4",
70
70
  "@types/node-schedule": "^2.1.8",
71
- "@types/nodemailer": "^7.0.4",
71
+ "@types/nodemailer": "^7.0.11",
72
72
  "@types/request": "^2.48.13",
73
73
  "@types/suncalc": "^1.9.2",
74
74
  "alcalzone-shared": "^5.0.0",