@iobroker/mcp-server 1.2.3 → 1.4.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.
- package/README.md +73 -6
- package/build/inProcessClient.d.ts +15 -0
- package/build/inProcessClient.js +4 -10
- package/build/inProcessClient.js.map +1 -1
- package/build/index.d.ts +93 -14
- package/build/index.js +1151 -43
- package/build/index.js.map +1 -1
- package/build/types.d.ts +27 -2
- package/build/types.js +13 -0
- package/build/types.js.map +1 -1
- package/package.json +1 -1
package/README.md
CHANGED
|
@@ -109,16 +109,48 @@ permissions regardless of which user authenticated. Give the Default User an ioB
|
|
|
109
109
|
the ACLs the MCP client should have.
|
|
110
110
|
|
|
111
111
|
### Permissions
|
|
112
|
-
|
|
113
|
-
|
|
114
|
-
|
|
112
|
+
All options that change the system are **off** by default; turn on only what the MCP client really needs.
|
|
113
|
+
|
|
114
|
+
**States and objects**
|
|
115
|
+
- **Allow setting states**: Allow MCP clients to write state values and to acknowledge system notifications (the
|
|
116
|
+
`set_state`, `set_states` and `clear_notifications` tools). Default: **on**. Which states can be written is
|
|
117
|
+
decided by the ACLs of the Default User. `set_states` checks the write permission of all states first and writes
|
|
118
|
+
nothing if one of them is not writable.
|
|
115
119
|
- **Mark setting states as destructive** (`setStateDestructive`): Declare `set_state` and `set_states` with
|
|
116
120
|
`destructiveHint: true`, so MCP clients can warn before a state is written. Default: **on**. When off, both tools
|
|
117
121
|
are declared as non-destructive writes (`readOnlyHint` stays `false`); whether a client still asks for
|
|
118
122
|
confirmation then depends on the client.
|
|
119
|
-
- **Allow object/file changes
|
|
120
|
-
`delete_object`, `create_state`, `create_scene`, `
|
|
121
|
-
tools). Default: **off**.
|
|
123
|
+
- **Allow object/file changes** (`allowObjectChange`): Allow MCP clients to create/modify/delete objects, aliases
|
|
124
|
+
and files (the `set_object`, `delete_object`, `create_state`, `create_scene`, `create_alias`, `write_file`,
|
|
125
|
+
`delete_file`, `rename_file` and `mkdir` tools). Default: **off**.
|
|
126
|
+
|
|
127
|
+
**System**
|
|
128
|
+
- **Allow controlling instances** (`allowInstanceControl`): Start, stop and restart adapter instances and change
|
|
129
|
+
their log level (`start_instance`, `stop_instance`, `restart_instance`, `set_log_level`). Default: **off**.
|
|
130
|
+
- **Allow managing adapters** (`allowAdapterManagement`): Add and delete instances and upgrade adapters from the
|
|
131
|
+
repository (`add_instance`, `delete_instance`, `upgrade_adapter`). Default: **off**.
|
|
132
|
+
- **Allow changing scripts** (`allowScriptChange`): Create, change, start/stop and delete scripts of the
|
|
133
|
+
javascript adapter and run code once (`set_script`, `enable_script`, `delete_script`, `run_script`). Reading
|
|
134
|
+
scripts (`list_scripts`, `get_script`) is always possible. Scripts run with full access to ioBroker. Default:
|
|
135
|
+
**off**.
|
|
136
|
+
- **Allow messages to adapters** (`sendToAllowlist`): Adapters (`telegram`) or instances (`backitup.0`) the
|
|
137
|
+
`send_to` tool may send messages to, separated by commas; `*` allows all. Default: empty, then there is no
|
|
138
|
+
`send_to` tool.
|
|
139
|
+
|
|
140
|
+
**Safety**
|
|
141
|
+
- **Ask for confirmation before dangerous actions** (`confirmDangerous`): MCP clients that support
|
|
142
|
+
[elicitation](https://modelcontextprotocol.io/specification/2025-06-18/client/elicitation) ask the user before an
|
|
143
|
+
object or instance is deleted, an instance stopped, an adapter upgraded or installed, a script saved or run, or a
|
|
144
|
+
message sent. Clients without elicitation rely on the `destructiveHint` of the tools and their own confirmation.
|
|
145
|
+
Default: **on**.
|
|
146
|
+
|
|
147
|
+
**Developers**
|
|
148
|
+
- **Allow installing packages (developers only)** (`allowPackageInstall`): Offer the `install_package` tool, which
|
|
149
|
+
installs an adapter package on an ioBroker host - from npm, GitHub, a URL or a `.tgz` file - exactly like
|
|
150
|
+
*Install from custom URL / file* in ioBroker.admin (`iobroker url ...`). Default: **off**. This option is only
|
|
151
|
+
relevant for adapter developers, e.g. to let an AI agent build an adapter, pack it with `npm pack` and install the
|
|
152
|
+
`.tgz` on a test system. An installed package runs with full rights on the host, so never enable it on a
|
|
153
|
+
productive system or for clients you do not fully trust.
|
|
122
154
|
|
|
123
155
|
### SSL/TLS Configuration
|
|
124
156
|
- **Enable HTTPS**: Enable HTTPS/SSL for secure connections
|
|
@@ -157,17 +189,36 @@ Point your MCP client at:
|
|
|
157
189
|
| `get_logs` | Retrieve recent ioBroker log lines; optional filters by `level` (error/warn/info/debug), source `adapter` and start time (`from_ts`) |
|
|
158
190
|
| `write_log` | Write a message to the ioBroker log |
|
|
159
191
|
| `system_info` | Get system and js-controller information |
|
|
192
|
+
| `list_adapter_updates` | List installed adapters that have a newer version in the active repository |
|
|
193
|
+
| `list_notifications` | List the system notifications of the hosts (the bell in admin): disk space, crashed adapters, ... |
|
|
194
|
+
| `list_scripts` | List the scripts of the javascript adapter (without source) |
|
|
195
|
+
| `get_script` | Read a script including its source |
|
|
160
196
|
| `ping_host` | Diagnose connectivity to a network device: ICMP ping to `host` plus an optional TCP connect to `port` — useful to investigate adapter `ETIMEDOUT`/connection errors |
|
|
161
197
|
| `set_state` | Set the value of a state (value coerced to the state type) — requires *Allow setting states* |
|
|
162
198
|
| `set_states` | Set multiple states in one call (for scenes/group actions like "all lights off") — requires *Allow setting states* |
|
|
199
|
+
| `clear_notifications` | Acknowledge system notifications, optionally of one scope/category/instance — requires *Allow setting states* |
|
|
163
200
|
| `set_object` | Create/update an object (merges common/native) — requires *Allow object/file changes* |
|
|
164
201
|
| `delete_object` | Delete an object, optionally with all children — requires *Allow object/file changes* |
|
|
165
202
|
| `create_state` | Create a new state object with type/role/unit/min/max and optional initial value — requires *Allow object/file changes* |
|
|
166
203
|
| `create_scene` | Create or update a scene for the ioBroker `scenes` adapter (state/value pairs applied together) — requires *Allow object/file changes* |
|
|
204
|
+
| `create_alias` | Create an alias (`alias.0.*`) pointing to a state, optionally with a separate write state — requires *Allow object/file changes* |
|
|
167
205
|
| `write_file` | Write a file to an adapter file storage — requires *Allow object/file changes* |
|
|
168
206
|
| `delete_file` | Delete a file from an adapter file storage — requires *Allow object/file changes* |
|
|
169
207
|
| `rename_file` | Rename/move a file within the same adapter file storage — requires *Allow object/file changes* |
|
|
170
208
|
| `mkdir` | Create a directory in an adapter file storage — requires *Allow object/file changes* |
|
|
209
|
+
| `install_package` | Install an adapter package (npm, GitHub, URL, `.tgz` from the file storage or as base64) on a host and restart its enabled instances — requires *Allow installing packages*, developers only |
|
|
210
|
+
| `start_instance` | Start (enable) an instance — requires *Allow controlling instances* |
|
|
211
|
+
| `stop_instance` | Stop (disable) an instance — requires *Allow controlling instances* |
|
|
212
|
+
| `restart_instance` | Restart a running instance — requires *Allow controlling instances* |
|
|
213
|
+
| `set_log_level` | Change the log level of an instance, temporarily or persistently — requires *Allow controlling instances* |
|
|
214
|
+
| `add_instance` | Create an instance of an adapter from the repository (`iobroker add`) — requires *Allow managing adapters* |
|
|
215
|
+
| `delete_instance` | Delete an instance with its objects and states (`iobroker del`) — requires *Allow managing adapters* |
|
|
216
|
+
| `upgrade_adapter` | Upgrade an adapter to the repository or a given version (`iobroker upgrade`) — requires *Allow managing adapters* |
|
|
217
|
+
| `set_script` | Create a JavaScript/TypeScript script or change its source — requires *Allow changing scripts* |
|
|
218
|
+
| `enable_script` | Start or stop a script — requires *Allow changing scripts* |
|
|
219
|
+
| `delete_script` | Delete a script — requires *Allow changing scripts* |
|
|
220
|
+
| `run_script` | Run code once in the javascript adapter and return its log output (javascript ≥ 10.1.0) — requires *Allow changing scripts* |
|
|
221
|
+
| `send_to` | Send a message to an adapter instance (`sendTo`) and return the answer — only instances in *Allow messages to adapters* |
|
|
171
222
|
|
|
172
223
|
All object/state access runs with the permissions of the configured **Default User**. The write tools are only
|
|
173
224
|
registered when their respective permission option is enabled.
|
|
@@ -177,6 +228,14 @@ Every tool declares a JSON input schema and all four MCP behaviour hints (`readO
|
|
|
177
228
|
for confirmation before a writing tool runs. All reading tools are `readOnlyHint: true`; `ping_host` is the only
|
|
178
229
|
tool with `openWorldHint: true`, because it talks to hosts outside of ioBroker.
|
|
179
230
|
|
|
231
|
+
### Prompts
|
|
232
|
+
MCP clients offer these as ready-made commands (e.g. as slash commands):
|
|
233
|
+
|
|
234
|
+
- `diagnose_adapter` (`instance`) - find out why an instance does not work: status, log, notifications,
|
|
235
|
+
connectivity and available updates.
|
|
236
|
+
- `room_overview` (`room`) - summary of the devices of a room and anything unusual.
|
|
237
|
+
- `create_automation` (`description`) - turn a description into a script for the javascript adapter.
|
|
238
|
+
|
|
180
239
|
### Resources & live updates (SSE)
|
|
181
240
|
|
|
182
241
|
States and objects are also exposed as MCP **resources** using the canonical ioBroker URI scheme, so clients
|
|
@@ -226,6 +285,14 @@ client calls it and its result is verified:
|
|
|
226
285
|
Placeholder for the next version (at the beginning of the line):
|
|
227
286
|
### **WORK IN PROGRESS**
|
|
228
287
|
-->
|
|
288
|
+
### 1.4.0 (2026-10-23)
|
|
289
|
+
* (@GermanBluefox) Added tools to control instances, manage adapters, read/change/run scripts, read and acknowledge notifications, create aliases and send messages to adapters, each behind its own option (off by default)
|
|
290
|
+
* (@GermanBluefox) Added the prompts `diagnose_adapter`, `room_overview` and `create_automation`
|
|
291
|
+
* (@GermanBluefox) Dangerous actions ask the user for a confirmation if the client supports elicitation (option `confirmDangerous`)
|
|
292
|
+
|
|
293
|
+
### 1.3.0 (2026-10-23)
|
|
294
|
+
* (@GermanBluefox) Added the `install_package` tool (opt-in `allowPackageInstall`, only for developers): installs an adapter package from npm, GitHub, a URL or a `.tgz` file on a host
|
|
295
|
+
|
|
229
296
|
### 1.2.3 (2026-10-19)
|
|
230
297
|
* (@GermanBluefox) updated packages
|
|
231
298
|
|
|
@@ -57,6 +57,21 @@ export interface InProcessMcpOptions {
|
|
|
57
57
|
setStateDestructive?: boolean;
|
|
58
58
|
/** Allow the object/file-changing tools (`create_state`, `set_object`, ...) (default: false). */
|
|
59
59
|
allowObjectChange?: boolean;
|
|
60
|
+
/** Allow starting/stopping/restarting instances and changing their log level (default: false). */
|
|
61
|
+
allowInstanceControl?: boolean;
|
|
62
|
+
/** Allow adding/deleting instances and upgrading adapters from the repository (default: false). */
|
|
63
|
+
allowAdapterManagement?: boolean;
|
|
64
|
+
/**
|
|
65
|
+
* Allow the `install_package` tool, which installs adapter packages on a host (default: false).
|
|
66
|
+
* Only relevant for adapter developers.
|
|
67
|
+
*/
|
|
68
|
+
allowPackageInstall?: boolean;
|
|
69
|
+
/** Allow creating/changing/deleting/running scripts of the javascript adapter (default: false). */
|
|
70
|
+
allowScriptChange?: boolean;
|
|
71
|
+
/** Adapters or instances `send_to` may address, comma separated, `*` for all (default: none, no tool). */
|
|
72
|
+
sendToAllowlist?: string;
|
|
73
|
+
/** Ask the user before dangerous actions if the client supports elicitation (default: true). */
|
|
74
|
+
confirmDangerous?: boolean;
|
|
60
75
|
/** Name reported to the server by the embedded client. */
|
|
61
76
|
clientName?: string;
|
|
62
77
|
/** Version reported to the server by the embedded client. */
|
package/build/inProcessClient.js
CHANGED
|
@@ -23,20 +23,14 @@ const index_1 = __importDefault(require("./index"));
|
|
|
23
23
|
* @returns a facade to list/call tools and to tear the connection down again
|
|
24
24
|
*/
|
|
25
25
|
async function createInProcessMcp(options) {
|
|
26
|
-
const
|
|
27
|
-
|
|
28
|
-
defaultUser: options.defaultUser,
|
|
29
|
-
language: options.language,
|
|
30
|
-
allowSetState: options.allowSetState,
|
|
31
|
-
allowObjectChange: options.allowObjectChange,
|
|
32
|
-
setStateDestructive: options.setStateDestructive,
|
|
33
|
-
});
|
|
26
|
+
const { clientName, clientVersion, ...embedOptions } = options;
|
|
27
|
+
const mcp = index_1.default.createEmbedded(embedOptions);
|
|
34
28
|
const server = mcp.createInProcessServer();
|
|
35
29
|
const [clientTransport, serverTransport] = inMemory_js_1.InMemoryTransport.createLinkedPair();
|
|
36
30
|
await server.connect(serverTransport);
|
|
37
31
|
const client = new index_js_1.Client({
|
|
38
|
-
name:
|
|
39
|
-
version:
|
|
32
|
+
name: clientName || 'iobroker-inprocess-client',
|
|
33
|
+
version: clientVersion || '1.0.0',
|
|
40
34
|
}, { capabilities: {} });
|
|
41
35
|
await client.connect(clientTransport);
|
|
42
36
|
return {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"inProcessClient.js","sourceRoot":"","sources":["../src/inProcessClient.ts"],"names":[],"mappings":";;;;;
|
|
1
|
+
{"version":3,"file":"inProcessClient.js","sourceRoot":"","sources":["../src/inProcessClient.ts"],"names":[],"mappings":";;;;;AAsHA,gDAmDC;AAzKD;;;;;;;;GAQG;AACH,wEAAmE;AACnE,uEAA0E;AAC1E,oDAAgC;AAqGhC;;;;;GAKG;AACI,KAAK,UAAU,kBAAkB,CAAC,OAA4B;IACjE,MAAM,EAAE,UAAU,EAAE,aAAa,EAAE,GAAG,YAAY,EAAE,GAAG,OAAO,CAAC;IAC/D,MAAM,GAAG,GAAG,eAAS,CAAC,cAAc,CAAC,YAAY,CAAC,CAAC;IAEnD,MAAM,MAAM,GAAG,GAAG,CAAC,qBAAqB,EAAE,CAAC;IAC3C,MAAM,CAAC,eAAe,EAAE,eAAe,CAAC,GAAG,+BAAiB,CAAC,gBAAgB,EAAE,CAAC;IAChF,MAAM,MAAM,CAAC,OAAO,CAAC,eAAe,CAAC,CAAC;IAEtC,MAAM,MAAM,GAAG,IAAI,iBAAM,CACrB;QACI,IAAI,EAAE,UAAU,IAAI,2BAA2B;QAC/C,OAAO,EAAE,aAAa,IAAI,OAAO;KACpC,EACD,EAAE,YAAY,EAAE,EAAE,EAAE,CACvB,CAAC;IACF,MAAM,MAAM,CAAC,OAAO,CAAC,eAAe,CAAC,CAAC;IAEtC,OAAO;QACH,KAAK,CAAC,SAAS;YACX,MAAM,GAAG,GAAG,MAAM,MAAM,CAAC,SAAS,EAAE,CAAC;YACrC,OAAO,CAAC,GAAG,CAAC,KAAK,IAAI,EAAE,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;gBAClC,IAAI,EAAE,IAAI,CAAC,IAAI;gBACf,WAAW,EAAE,IAAI,CAAC,WAAW;gBAC7B,WAAW,EAAG,IAAI,CAAC,WAAuC,IAAI,EAAE,IAAI,EAAE,QAAQ,EAAE,UAAU,EAAE,EAAE,EAAE;gBAChG,KAAK,EAAE,IAAI,CAAC,KAAK;gBACjB,WAAW,EAAE,IAAI,CAAC,WAAW;aAChC,CAAC,CAAC,CAAC;QACR,CAAC;QACD,KAAK,CAAC,QAAQ,CAAC,IAAY,EAAE,IAA8B;YACvD,MAAM,GAAG,GAAG,MAAM,MAAM,CAAC,QAAQ,CAAC,EAAE,IAAI,EAAE,SAAS,EAAE,IAAI,IAAI,EAAE,EAAE,CAAC,CAAC;YACnE,MAAM,MAAM,GAAI,GAAG,CAAC,OAA0C,IAAI,EAAE,CAAC;YACrE,MAAM,IAAI,GAAG,MAAM;iBACd,MAAM,CAAC,KAAK,CAAC,EAAE,CAAC,KAAK,CAAC,IAAI,KAAK,MAAM,IAAI,OAAO,KAAK,CAAC,IAAI,KAAK,QAAQ,CAAC;iBACxE,GAAG,CAAC,KAAK,CAAC,EAAE,CAAC,KAAK,CAAC,IAAc,CAAC;iBAClC,IAAI,CAAC,IAAI,CAAC,CAAC;YAChB,OAAO,EAAE,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC,GAAG,CAAC,OAAO,EAAE,CAAC;QAC5C,CAAC;QACD,KAAK,CAAC,KAAK;YACP,IAAI,CAAC;gBACD,MAAM,MAAM,CAAC,KAAK,EAAE,CAAC;YACzB,CAAC;YAAC,MAAM,CAAC;gBACL,SAAS;YACb,CAAC;YACD,IAAI,CAAC;gBACD,MAAM,MAAM,CAAC,KAAK,EAAE,CAAC;YACzB,CAAC;YAAC,MAAM,CAAC;gBACL,SAAS;YACb,CAAC;YACD,GAAG,CAAC,MAAM,EAAE,CAAC;QACjB,CAAC;KACJ,CAAC;AACN,CAAC"}
|
package/build/index.d.ts
CHANGED
|
@@ -2,6 +2,7 @@ import type { Server as HttpServer } from 'node:http';
|
|
|
2
2
|
import type { Server as HttpsServer } from 'node:https';
|
|
3
3
|
import { type Express } from 'express';
|
|
4
4
|
import { McpServer as McpSdkServer } from '@modelcontextprotocol/sdk/server/mcp.js';
|
|
5
|
+
import { type McpPermissions } from './types';
|
|
5
6
|
import { createInProcessMcp } from './inProcessClient';
|
|
6
7
|
export default class McpServer {
|
|
7
8
|
private readonly adapter;
|
|
@@ -38,19 +39,15 @@ export default class McpServer {
|
|
|
38
39
|
private readonly oauthResource;
|
|
39
40
|
/** OAuth2 login/token server, created only when {@link authRequired} is true. */
|
|
40
41
|
private oauth2?;
|
|
42
|
+
/** Installations started by `install_package`, keyed by the `cmdExec` session id. */
|
|
43
|
+
private readonly cmdSessions;
|
|
41
44
|
constructor(server: HttpServer | HttpsServer | null, webSettings: {
|
|
42
45
|
secure?: boolean;
|
|
43
46
|
port?: number | string;
|
|
44
47
|
defaultUser?: string;
|
|
45
48
|
auth?: boolean;
|
|
46
49
|
language?: ioBroker.Languages;
|
|
47
|
-
|
|
48
|
-
allowSetState?: boolean;
|
|
49
|
-
/** Explicit override for the destructive hint of `set_state`/`set_states` (embedded mode). */
|
|
50
|
-
setStateDestructive?: boolean;
|
|
51
|
-
/** Explicit override for the object/file-changing tool permission (embedded mode). */
|
|
52
|
-
allowObjectChange?: boolean;
|
|
53
|
-
}, adapter: ioBroker.Adapter, instanceSettings: ioBroker.InstanceObject | null, app?: Express);
|
|
50
|
+
} & Partial<McpPermissions>, adapter: ioBroker.Adapter, instanceSettings: ioBroker.InstanceObject | null, app?: Express);
|
|
54
51
|
/**
|
|
55
52
|
* Build a fresh MCP SDK server with all ioBroker tools registered, ready to be connected to an
|
|
56
53
|
* arbitrary transport. Used for in-process embedding (e.g. by ioBroker.admin) over an
|
|
@@ -67,18 +64,12 @@ export default class McpServer {
|
|
|
67
64
|
* @param options.adapter The host adapter into which the MCP server is embedded. Used for receiving state/object changes and logs, and for performing actions with the host adapter's permissions.
|
|
68
65
|
* @param options.defaultUser Default user
|
|
69
66
|
* @param options.language Language
|
|
70
|
-
* @param options.allowSetState Allow the state-writing tools `set_state`/`set_states` (opt-out, default true)
|
|
71
|
-
* @param options.allowObjectChange Allow the object/file-changing tools (opt-in, default false)
|
|
72
|
-
* @param options.setStateDestructive Declare `set_state`/`set_states` as destructive (default true)
|
|
73
67
|
*/
|
|
74
68
|
static createEmbedded(options: {
|
|
75
69
|
adapter: ioBroker.Adapter;
|
|
76
70
|
defaultUser?: `system.user.${string}`;
|
|
77
71
|
language?: ioBroker.Languages;
|
|
78
|
-
|
|
79
|
-
allowObjectChange?: boolean;
|
|
80
|
-
setStateDestructive?: boolean;
|
|
81
|
-
}): McpServer;
|
|
72
|
+
} & Partial<McpPermissions>): McpServer;
|
|
82
73
|
private initRoutes;
|
|
83
74
|
/**
|
|
84
75
|
* Guard for the MCP endpoint when authentication is enabled (standalone mode). By the time this
|
|
@@ -170,6 +161,8 @@ export default class McpServer {
|
|
|
170
161
|
private notifySubscribers;
|
|
171
162
|
/** Receive an ioBroker log line: buffer it and push `resources/updated` to ioblog subscribers. */
|
|
172
163
|
private onLog;
|
|
164
|
+
/** Receive the progress of a `cmdExec` started by `install_package` (`cmdStdout`/`cmdStderr`/`cmdExit`). */
|
|
165
|
+
private onMessage;
|
|
173
166
|
/** Classify a resource URI into its subscription kind, address and ref-count key. */
|
|
174
167
|
private uriKind;
|
|
175
168
|
/** Add an adapter-level subscription, subscribing on the adapter only on the first reference. */
|
|
@@ -296,6 +289,92 @@ export default class McpServer {
|
|
|
296
289
|
private createState;
|
|
297
290
|
/** Create or update a scene object for the ioBroker "scenes" adapter. */
|
|
298
291
|
private createScene;
|
|
292
|
+
/**
|
|
293
|
+
* Install an adapter package on a host via `cmdExec` (`iobroker url ...`), the same way
|
|
294
|
+
* ioBroker.admin installs from a custom URL or a .tgz file, and wait for the result.
|
|
295
|
+
*/
|
|
296
|
+
private installPackage;
|
|
297
|
+
/** Normalize a host name (with or without `system.host.`) and check that the host exists. */
|
|
298
|
+
private resolveHost;
|
|
299
|
+
/**
|
|
300
|
+
* Run an ioBroker CLI command on a host via `cmdExec` and wait for its exit code. The host reports
|
|
301
|
+
* the output and the exit code as messages to this instance, see {@link onMessage}.
|
|
302
|
+
*
|
|
303
|
+
* @param host host name without `system.host.`
|
|
304
|
+
* @param command the CLI arguments, e.g. `upgrade hue@3.9.0`
|
|
305
|
+
* @param timeoutSeconds how long to wait; the command keeps running on the host after that
|
|
306
|
+
* @param files files sent along with the command (the command refers to them by name)
|
|
307
|
+
*/
|
|
308
|
+
private runHostCommand;
|
|
309
|
+
/** Request something from a host (`getNotifications`, ...) and wait for the answer. */
|
|
310
|
+
private hostRequest;
|
|
311
|
+
/** Like admin after an installation: touching the instance objects makes the controller restart them. */
|
|
312
|
+
private restartAdapterInstances;
|
|
313
|
+
/** Read an instance object by its short id (`hue.0`) or full id (`system.adapter.hue.0`). */
|
|
314
|
+
private getInstance;
|
|
315
|
+
/** Start (enable) or stop (disable) an instance. */
|
|
316
|
+
private setInstanceEnabled;
|
|
317
|
+
/** Restart a running instance. */
|
|
318
|
+
private restartInstance;
|
|
319
|
+
/**
|
|
320
|
+
* Change the log level of an instance: temporarily via its `logLevel` state (no restart, until the
|
|
321
|
+
* next start), or persistently in the instance object (restarts the instance).
|
|
322
|
+
*/
|
|
323
|
+
private setLogLevel;
|
|
324
|
+
/** Check an adapter name, as the CLI receives it as an argument. */
|
|
325
|
+
private static checkAdapterName;
|
|
326
|
+
/** Create an instance of an adapter (installs the adapter from the repository if necessary). */
|
|
327
|
+
private addInstance;
|
|
328
|
+
/** Delete an instance with its objects and states (on the host it runs on). */
|
|
329
|
+
private deleteInstance;
|
|
330
|
+
/** Upgrade an installed adapter to the repository version (or the given one). */
|
|
331
|
+
private upgradeAdapter;
|
|
332
|
+
/** List the installed adapters that have a newer version in the active repository. */
|
|
333
|
+
private listAdapterUpdates;
|
|
334
|
+
/**
|
|
335
|
+
* Read the JSON of the active repositories from `system.repositories` (or of all repositories if none
|
|
336
|
+
* is marked active). An adapter present in several repos is kept once (first/active repo wins). This
|
|
337
|
+
* matters when the user has custom repos active next to the default one.
|
|
338
|
+
*/
|
|
339
|
+
private getRepositoryJson;
|
|
340
|
+
/** Read the current notifications of one or all hosts, one entry per category and instance. */
|
|
341
|
+
private listNotifications;
|
|
342
|
+
/** Acknowledge (delete) notifications on a host, optionally only of one scope/category/instance. */
|
|
343
|
+
private clearNotifications;
|
|
344
|
+
/**
|
|
345
|
+
* Normalize a script id: `script.js.common.lights`, `common.lights` or `lights` (folder `common`).
|
|
346
|
+
* Every segment is reduced to the characters the javascript editor uses for ids.
|
|
347
|
+
*/
|
|
348
|
+
private static scriptId;
|
|
349
|
+
/** Summary of a script object, optionally with its source. */
|
|
350
|
+
private scriptInfo;
|
|
351
|
+
/** Read a script object, failing if it is missing or not a script. */
|
|
352
|
+
private getScriptObject;
|
|
353
|
+
/** List the scripts of the javascript adapter (without their source). */
|
|
354
|
+
private listScripts;
|
|
355
|
+
/**
|
|
356
|
+
* Create a script or change the source of an existing one. Blockly and Rules scripts keep their
|
|
357
|
+
* blocks in the source, so they are not changed. New scripts start disabled unless `enabled` is given.
|
|
358
|
+
*/
|
|
359
|
+
private setScript;
|
|
360
|
+
/** Enable (start) or disable (stop) a script. */
|
|
361
|
+
private enableScript;
|
|
362
|
+
/** Delete a script. */
|
|
363
|
+
private deleteScript;
|
|
364
|
+
/**
|
|
365
|
+
* Run code once in the javascript adapter (its `execute` message) and return what it logged. Nothing
|
|
366
|
+
* is stored; timers and subscriptions are cleaned up after `timeout`.
|
|
367
|
+
*/
|
|
368
|
+
private runScript;
|
|
369
|
+
/** Whether `send_to` may address this instance (by adapter name, instance or `*`). */
|
|
370
|
+
private isSendToAllowed;
|
|
371
|
+
/** Send a message to an adapter instance (`sendTo`) and return its answer. */
|
|
372
|
+
private sendToInstance;
|
|
373
|
+
/**
|
|
374
|
+
* Create an alias (`alias.0.*`) that points to another state. Type, role, unit and limits are copied
|
|
375
|
+
* from the target unless given.
|
|
376
|
+
*/
|
|
377
|
+
private createAlias;
|
|
299
378
|
/** Resolve the member ids of a room/function enum matched by id or (localized) name. */
|
|
300
379
|
private getEnumMembers;
|
|
301
380
|
/** Normalize an ioBroker name (string or {en, de, ...}) to a plain string. */
|