@coffeerunhobby/mcp-ha-connect 2.4.7 → 2.5.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/.env.example +25 -0
- package/README.md +42 -10
- package/dist/config.d.ts +7 -0
- package/dist/config.js +22 -0
- package/dist/config.js.map +1 -1
- package/dist/index.js +3 -2
- package/dist/index.js.map +1 -1
- package/dist/net/adapters/omada.d.ts +46 -7
- package/dist/net/adapters/omada.js +432 -44
- package/dist/net/adapters/omada.js.map +1 -1
- package/dist/net/adapters/omadaPorts.d.ts +62 -0
- package/dist/net/adapters/omadaPorts.js +212 -0
- package/dist/net/adapters/omadaPorts.js.map +1 -0
- package/dist/net/adapters/omadaRules.d.ts +1 -1
- package/dist/net/adapters/omadaRules.js +2 -2
- package/dist/net/adapters/omadaRules.js.map +1 -1
- package/dist/net/adapters/ruijie.d.ts +59 -0
- package/dist/net/adapters/ruijie.js +363 -0
- package/dist/net/adapters/ruijie.js.map +1 -0
- package/dist/net/model.d.ts +37 -12
- package/dist/net/model.js.map +1 -1
- package/dist/omadaClient/accessControl.js +1 -1
- package/dist/omadaClient/accessControl.js.map +1 -1
- package/dist/omadaClient/index.d.ts +4 -0
- package/dist/omadaClient/index.js +3 -0
- package/dist/omadaClient/index.js.map +1 -1
- package/dist/omadaClient/networkConfig.d.ts +21 -0
- package/dist/omadaClient/networkConfig.js +41 -0
- package/dist/omadaClient/networkConfig.js.map +1 -1
- package/dist/ruijieClient/crypto.d.ts +20 -0
- package/dist/ruijieClient/crypto.js +57 -0
- package/dist/ruijieClient/crypto.js.map +1 -0
- package/dist/ruijieClient/index.d.ts +62 -0
- package/dist/ruijieClient/index.js +197 -0
- package/dist/ruijieClient/index.js.map +1 -0
- package/dist/server/common.d.ts +2 -0
- package/dist/server/common.js +2 -1
- package/dist/server/common.js.map +1 -1
- package/dist/server/http.d.ts +2 -0
- package/dist/server/http.js +2 -2
- package/dist/server/http.js.map +1 -1
- package/dist/server/stdio.d.ts +2 -0
- package/dist/server/stdio.js.map +1 -1
- package/dist/server/stream.d.ts +2 -0
- package/dist/server/stream.js +2 -1
- package/dist/server/stream.js.map +1 -1
- package/dist/tools/index.d.ts +3 -0
- package/dist/tools/index.js +9 -3
- package/dist/tools/index.js.map +1 -1
- package/dist/tools/net/index.d.ts +43 -2
- package/dist/tools/net/index.js +197 -12
- package/dist/tools/net/index.js.map +1 -1
- package/dist/tools/omada/listClients.js +1 -1
- package/dist/tools/omada/listClients.js.map +1 -1
- package/dist/upstreams.d.ts +8 -2
- package/dist/upstreams.js +56 -3
- package/dist/upstreams.js.map +1 -1
- package/dist/utils/redact.js +1 -1
- package/dist/utils/redact.js.map +1 -1
- package/dist/version.d.ts +1 -1
- package/dist/version.js +1 -1
- package/package.json +7 -7
|
@@ -5,7 +5,9 @@
|
|
|
5
5
|
* applied, refused if the controller changed meanwhile or if online devices would be
|
|
6
6
|
* cut off without allowLockout.
|
|
7
7
|
*
|
|
8
|
-
* 2.4.5: networks and Wi-Fi. 2.4.7: rules (and listing groups).
|
|
8
|
+
* 2.4.5: networks and Wi-Fi. 2.4.7: rules (and listing groups). 2.4.8: clients with their
|
|
9
|
+
* network, switch ports and port profiles, the mDNS repeater. 2.5.0: several controllers
|
|
10
|
+
* (Omada and Ruijie): every tool takes an optional `controller` (the vendor), default Omada.
|
|
9
11
|
*/
|
|
10
12
|
import type { McpServer } from '@modelcontextprotocol/server';
|
|
11
13
|
import { z } from 'zod';
|
|
@@ -29,6 +31,7 @@ export declare const createNetworkSchema: z.ZodObject<{
|
|
|
29
31
|
ipv6: z.ZodOptional<z.ZodBoolean>;
|
|
30
32
|
isolated: z.ZodOptional<z.ZodBoolean>;
|
|
31
33
|
dryRun: z.ZodOptional<z.ZodBoolean>;
|
|
34
|
+
basis: z.ZodOptional<z.ZodString>;
|
|
32
35
|
}, z.core.$strip>;
|
|
33
36
|
export declare const updateNetworkSchema: z.ZodObject<{
|
|
34
37
|
network: z.ZodString;
|
|
@@ -45,12 +48,14 @@ export declare const updateNetworkSchema: z.ZodObject<{
|
|
|
45
48
|
ipv6: z.ZodOptional<z.ZodBoolean>;
|
|
46
49
|
isolated: z.ZodOptional<z.ZodBoolean>;
|
|
47
50
|
dryRun: z.ZodOptional<z.ZodBoolean>;
|
|
51
|
+
basis: z.ZodOptional<z.ZodString>;
|
|
48
52
|
allowLockout: z.ZodOptional<z.ZodBoolean>;
|
|
49
53
|
}, z.core.$strip>;
|
|
50
54
|
export declare const deleteNetworkSchema: z.ZodObject<{
|
|
51
55
|
network: z.ZodString;
|
|
52
56
|
dryRun: z.ZodOptional<z.ZodBoolean>;
|
|
53
57
|
allowLockout: z.ZodOptional<z.ZodBoolean>;
|
|
58
|
+
basis: z.ZodOptional<z.ZodString>;
|
|
54
59
|
}, z.core.$strip>;
|
|
55
60
|
export declare const createWifiSchema: z.ZodObject<{
|
|
56
61
|
name: z.ZodString;
|
|
@@ -82,6 +87,7 @@ export declare const createWifiSchema: z.ZodObject<{
|
|
|
82
87
|
group: z.ZodString;
|
|
83
88
|
}, z.core.$strip>>;
|
|
84
89
|
dryRun: z.ZodOptional<z.ZodBoolean>;
|
|
90
|
+
basis: z.ZodOptional<z.ZodString>;
|
|
85
91
|
}, z.core.$strip>;
|
|
86
92
|
export declare const updateWifiSchema: z.ZodObject<{
|
|
87
93
|
wifi: z.ZodString;
|
|
@@ -115,12 +121,14 @@ export declare const updateWifiSchema: z.ZodObject<{
|
|
|
115
121
|
}, z.core.$strip>>>;
|
|
116
122
|
newTemporaryPassword: z.ZodOptional<z.ZodBoolean>;
|
|
117
123
|
dryRun: z.ZodOptional<z.ZodBoolean>;
|
|
124
|
+
basis: z.ZodOptional<z.ZodString>;
|
|
118
125
|
allowLockout: z.ZodOptional<z.ZodBoolean>;
|
|
119
126
|
}, z.core.$strip>;
|
|
120
127
|
export declare const deleteWifiSchema: z.ZodObject<{
|
|
121
128
|
wifi: z.ZodString;
|
|
122
129
|
dryRun: z.ZodOptional<z.ZodBoolean>;
|
|
123
130
|
allowLockout: z.ZodOptional<z.ZodBoolean>;
|
|
131
|
+
basis: z.ZodOptional<z.ZodString>;
|
|
124
132
|
}, z.core.$strip>;
|
|
125
133
|
export declare const createRuleSchema: z.ZodObject<{
|
|
126
134
|
name: z.ZodString;
|
|
@@ -169,6 +177,7 @@ export declare const createRuleSchema: z.ZodObject<{
|
|
|
169
177
|
enabled: z.ZodOptional<z.ZodBoolean>;
|
|
170
178
|
position: z.ZodOptional<z.ZodNumber>;
|
|
171
179
|
dryRun: z.ZodOptional<z.ZodBoolean>;
|
|
180
|
+
basis: z.ZodOptional<z.ZodString>;
|
|
172
181
|
}, z.core.$strip>;
|
|
173
182
|
export declare const updateRuleSchema: z.ZodObject<{
|
|
174
183
|
rule: z.ZodString;
|
|
@@ -218,15 +227,18 @@ export declare const updateRuleSchema: z.ZodObject<{
|
|
|
218
227
|
enabled: z.ZodOptional<z.ZodBoolean>;
|
|
219
228
|
position: z.ZodOptional<z.ZodNumber>;
|
|
220
229
|
dryRun: z.ZodOptional<z.ZodBoolean>;
|
|
230
|
+
basis: z.ZodOptional<z.ZodString>;
|
|
221
231
|
}, z.core.$strip>;
|
|
222
232
|
export declare const deleteRuleSchema: z.ZodObject<{
|
|
223
233
|
rule: z.ZodString;
|
|
224
234
|
dryRun: z.ZodOptional<z.ZodBoolean>;
|
|
235
|
+
basis: z.ZodOptional<z.ZodString>;
|
|
225
236
|
}, z.core.$strip>;
|
|
226
237
|
export declare const moveRuleSchema: z.ZodObject<{
|
|
227
238
|
rule: z.ZodString;
|
|
228
239
|
position: z.ZodNumber;
|
|
229
240
|
dryRun: z.ZodOptional<z.ZodBoolean>;
|
|
241
|
+
basis: z.ZodOptional<z.ZodString>;
|
|
230
242
|
}, z.core.$strip>;
|
|
231
243
|
export declare const listGroupsSchema: z.ZodObject<{
|
|
232
244
|
kind: z.ZodOptional<z.ZodEnum<{
|
|
@@ -234,4 +246,33 @@ export declare const listGroupsSchema: z.ZodObject<{
|
|
|
234
246
|
address: "address";
|
|
235
247
|
}>>;
|
|
236
248
|
}, z.core.$strip>;
|
|
237
|
-
export declare
|
|
249
|
+
export declare const listClientsSchema: z.ZodObject<{
|
|
250
|
+
network: z.ZodOptional<z.ZodString>;
|
|
251
|
+
}, z.core.$strip>;
|
|
252
|
+
export declare const listPortsSchema: z.ZodObject<{
|
|
253
|
+
switch: z.ZodOptional<z.ZodString>;
|
|
254
|
+
}, z.core.$strip>;
|
|
255
|
+
export declare const assignPortSchema: z.ZodObject<{
|
|
256
|
+
switch: z.ZodString;
|
|
257
|
+
port: z.ZodNumber;
|
|
258
|
+
network: z.ZodString;
|
|
259
|
+
tagged: z.ZodDefault<z.ZodUnion<readonly [z.ZodEnum<{
|
|
260
|
+
none: "none";
|
|
261
|
+
all: "all";
|
|
262
|
+
}>, z.ZodArray<z.ZodString>]>>;
|
|
263
|
+
dryRun: z.ZodOptional<z.ZodBoolean>;
|
|
264
|
+
basis: z.ZodOptional<z.ZodString>;
|
|
265
|
+
allowLockout: z.ZodOptional<z.ZodBoolean>;
|
|
266
|
+
}, z.core.$strip>;
|
|
267
|
+
export declare const setMdnsSchema: z.ZodObject<{
|
|
268
|
+
enabled: z.ZodBoolean;
|
|
269
|
+
networks: z.ZodOptional<z.ZodArray<z.ZodString>>;
|
|
270
|
+
dryRun: z.ZodOptional<z.ZodBoolean>;
|
|
271
|
+
basis: z.ZodOptional<z.ZodString>;
|
|
272
|
+
}, z.core.$strip>;
|
|
273
|
+
/**
|
|
274
|
+
* Registers the net_* tools for one or more controllers (one per vendor). Each tool takes an
|
|
275
|
+
* optional `controller` (the vendor name, checked by its schema); without it, Omada answers
|
|
276
|
+
* when configured, else the first controller.
|
|
277
|
+
*/
|
|
278
|
+
export declare function registerNetTools(target: McpServer, controllers: NetworkController | NetworkController[]): number;
|
package/dist/tools/net/index.js
CHANGED
|
@@ -5,13 +5,22 @@
|
|
|
5
5
|
* applied, refused if the controller changed meanwhile or if online devices would be
|
|
6
6
|
* cut off without allowLockout.
|
|
7
7
|
*
|
|
8
|
-
* 2.4.5: networks and Wi-Fi. 2.4.7: rules (and listing groups).
|
|
8
|
+
* 2.4.5: networks and Wi-Fi. 2.4.7: rules (and listing groups). 2.4.8: clients with their
|
|
9
|
+
* network, switch ports and port profiles, the mDNS repeater. 2.5.0: several controllers
|
|
10
|
+
* (Omada and Ruijie): every tool takes an optional `controller` (the vendor), default Omada.
|
|
9
11
|
*/
|
|
12
|
+
import { AsyncLocalStorage } from 'node:async_hooks';
|
|
10
13
|
import { z } from 'zod';
|
|
14
|
+
import { NetError } from '../../net/model.js';
|
|
11
15
|
import { Permission, toToolResult, wrapToolHandler } from '../common.js';
|
|
12
16
|
const ref = (what) => z.string().min(1).describe(`${what} name or id`);
|
|
13
17
|
const dryRun = z.boolean().optional().describe('Only show what would change (steps, effects, devices cut off); write nothing');
|
|
14
|
-
const allowLockout = z.boolean().optional().describe('Apply even if online devices would be disconnected');
|
|
18
|
+
const allowLockout = z.boolean().optional().describe('Apply even if online devices would be disconnected (needs the basis from the dry run)');
|
|
19
|
+
const basis = z
|
|
20
|
+
.string()
|
|
21
|
+
.min(1)
|
|
22
|
+
.optional()
|
|
23
|
+
.describe('The basis a dry run returned: applying is refused if the controller, or the devices the change cuts off, changed since. Required with allowLockout');
|
|
15
24
|
const band = z.enum(['2.4', '5', '6']);
|
|
16
25
|
const dhcp = z.object({
|
|
17
26
|
enabled: z.boolean(),
|
|
@@ -30,6 +39,7 @@ export const createNetworkSchema = z.object({
|
|
|
30
39
|
ipv6: z.boolean().optional().describe('Default off'),
|
|
31
40
|
isolated: z.boolean().optional().describe("Devices can't start connections to other networks"),
|
|
32
41
|
dryRun,
|
|
42
|
+
basis,
|
|
33
43
|
});
|
|
34
44
|
export const updateNetworkSchema = z.object({
|
|
35
45
|
network: ref('Network'),
|
|
@@ -40,9 +50,10 @@ export const updateNetworkSchema = z.object({
|
|
|
40
50
|
ipv6: z.boolean().optional(),
|
|
41
51
|
isolated: z.boolean().optional(),
|
|
42
52
|
dryRun,
|
|
53
|
+
basis,
|
|
43
54
|
allowLockout,
|
|
44
55
|
});
|
|
45
|
-
export const deleteNetworkSchema = z.object({ network: ref('Network'), dryRun, allowLockout });
|
|
56
|
+
export const deleteNetworkSchema = z.object({ network: ref('Network'), dryRun, allowLockout, basis });
|
|
46
57
|
export const createWifiSchema = z.object({
|
|
47
58
|
name: z.string().min(1).max(32),
|
|
48
59
|
network: ref('Network the Wi-Fi puts its devices on'),
|
|
@@ -54,6 +65,7 @@ export const createWifiSchema = z.object({
|
|
|
54
65
|
fastRoaming: z.boolean().optional().describe('802.11r, default off'),
|
|
55
66
|
macFilter: macFilter.optional().describe('Only (allow) or never (deny) the devices in a MAC group'),
|
|
56
67
|
dryRun,
|
|
68
|
+
basis,
|
|
57
69
|
});
|
|
58
70
|
export const updateWifiSchema = z.object({
|
|
59
71
|
wifi: ref('Wi-Fi network'),
|
|
@@ -68,9 +80,10 @@ export const updateWifiSchema = z.object({
|
|
|
68
80
|
macFilter: macFilter.nullable().optional().describe('null switches the MAC filter off'),
|
|
69
81
|
newTemporaryPassword: z.boolean().optional().describe('Replace the password with a random one nobody knows (set the real one in the controller web UI)'),
|
|
70
82
|
dryRun,
|
|
83
|
+
basis,
|
|
71
84
|
allowLockout,
|
|
72
85
|
});
|
|
73
|
-
export const deleteWifiSchema = z.object({ wifi: ref('Wi-Fi network'), dryRun, allowLockout });
|
|
86
|
+
export const deleteWifiSchema = z.object({ wifi: ref('Wi-Fi network'), dryRun, allowLockout, basis });
|
|
74
87
|
const selector = z.union([
|
|
75
88
|
z.object({ network: ref('Network') }).strict(),
|
|
76
89
|
z.object({ group: ref('IP group') }).strict(),
|
|
@@ -94,6 +107,7 @@ export const createRuleSchema = z.object({
|
|
|
94
107
|
enabled: z.boolean().optional().describe('Default true'),
|
|
95
108
|
position: position.optional().describe('Default: last'),
|
|
96
109
|
dryRun,
|
|
110
|
+
basis,
|
|
97
111
|
});
|
|
98
112
|
export const updateRuleSchema = z.object({
|
|
99
113
|
rule: ref('Rule'),
|
|
@@ -105,17 +119,49 @@ export const updateRuleSchema = z.object({
|
|
|
105
119
|
enabled: z.boolean().optional(),
|
|
106
120
|
position: position.optional(),
|
|
107
121
|
dryRun,
|
|
122
|
+
basis,
|
|
108
123
|
});
|
|
109
|
-
export const deleteRuleSchema = z.object({ rule: ref('Rule'), dryRun });
|
|
110
|
-
export const moveRuleSchema = z.object({ rule: ref('Rule'), position, dryRun });
|
|
124
|
+
export const deleteRuleSchema = z.object({ rule: ref('Rule'), dryRun, basis });
|
|
125
|
+
export const moveRuleSchema = z.object({ rule: ref('Rule'), position, dryRun, basis });
|
|
111
126
|
export const listGroupsSchema = z.object({ kind: z.enum(['address', 'mac']).optional() });
|
|
127
|
+
export const listClientsSchema = z.object({ network: ref('Only devices on this network').optional() });
|
|
128
|
+
const switchRef = z.string().min(1).describe('Switch name or MAC');
|
|
129
|
+
export const listPortsSchema = z.object({ switch: switchRef.optional().describe('Only this switch (name or MAC); default all') });
|
|
130
|
+
export const assignPortSchema = z.object({
|
|
131
|
+
switch: switchRef,
|
|
132
|
+
port: z.number().int().min(1).describe('Port number'),
|
|
133
|
+
network: ref('Untagged network: what a plain device on the port is on'),
|
|
134
|
+
tagged: z
|
|
135
|
+
.union([z.enum(['all', 'none']), z.array(ref('Network')).min(1)])
|
|
136
|
+
.default('none')
|
|
137
|
+
.describe('Networks the port also carries tagged (for an access point, a switch or a VLAN-aware device): "all", "none" (default) or a list'),
|
|
138
|
+
dryRun,
|
|
139
|
+
basis,
|
|
140
|
+
allowLockout,
|
|
141
|
+
});
|
|
142
|
+
export const setMdnsSchema = z.object({
|
|
143
|
+
enabled: z.boolean(),
|
|
144
|
+
networks: z.array(ref('Network')).min(1).optional().describe('Networks to repeat between (at least two when enabled); default: the current ones'),
|
|
145
|
+
dryRun,
|
|
146
|
+
basis,
|
|
147
|
+
});
|
|
112
148
|
const NO_PASSWORD = ' Passwords are never taken or shown: a new or reset Wi-Fi network gets a random temporary password, and the owner sets the real one in the controller web UI.';
|
|
113
149
|
const CONFIRM = ' Confirm with the user before applying (use dryRun first).';
|
|
114
|
-
/**
|
|
150
|
+
/**
|
|
151
|
+
* Plan, then apply unless dryRun. Dry run and apply are separate calls (the server keeps no
|
|
152
|
+
* state between them), so the dry run hands out its basis and the apply checks it: devices are
|
|
153
|
+
* cut off (allowLockout) only when they are the ones the dry run showed.
|
|
154
|
+
*/
|
|
115
155
|
async function run(controller, change, options) {
|
|
156
|
+
if (options.allowLockout && !options.dryRun && !options.basis) {
|
|
157
|
+
throw new NetError('INVALID', 'allowLockout needs the basis from a dry run of this change, so that only the devices it showed are cut off. Run it with dryRun first.');
|
|
158
|
+
}
|
|
116
159
|
const plan = await controller.plan(change);
|
|
117
160
|
if (options.dryRun)
|
|
118
161
|
return { dryRun: true, ...summary(plan) };
|
|
162
|
+
if (options.basis !== undefined && options.basis !== plan.basis) {
|
|
163
|
+
throw new NetError('CONFLICT', 'This is not the change the dry run was for, or the controller or the devices it cuts off changed since; nothing was written. Run the dry run of this change again.');
|
|
164
|
+
}
|
|
119
165
|
const result = await controller.apply(plan, { allowLockout: options.allowLockout });
|
|
120
166
|
return {
|
|
121
167
|
applied: true,
|
|
@@ -132,10 +178,65 @@ function summary(plan) {
|
|
|
132
178
|
steps: plan.steps,
|
|
133
179
|
effects: plan.effects,
|
|
134
180
|
wouldLockOut: plan.wouldLockOut.map((c) => ({ mac: c.mac, name: c.name })),
|
|
135
|
-
|
|
181
|
+
basis: plan.basis,
|
|
182
|
+
...(plan.wouldLockOut.length ? { note: 'Applying needs allowLockout and this basis: these online devices would be disconnected.' } : {}),
|
|
136
183
|
};
|
|
137
184
|
}
|
|
138
|
-
|
|
185
|
+
/**
|
|
186
|
+
* A controller that hands every call to the one chosen for the current tool call. The choice
|
|
187
|
+
* lives in an AsyncLocalStorage, so parallel calls in one request each keep their own.
|
|
188
|
+
*/
|
|
189
|
+
function routedController(current) {
|
|
190
|
+
return {
|
|
191
|
+
get vendor() {
|
|
192
|
+
return current().vendor;
|
|
193
|
+
},
|
|
194
|
+
get id() {
|
|
195
|
+
return current().id;
|
|
196
|
+
},
|
|
197
|
+
capabilities: () => current().capabilities(),
|
|
198
|
+
protectedResources: () => current().protectedResources(),
|
|
199
|
+
listNetworks: () => current().listNetworks(),
|
|
200
|
+
listWifi: () => current().listWifi(),
|
|
201
|
+
listPortProfiles: () => current().listPortProfiles(),
|
|
202
|
+
listPorts: (device) => current().listPorts(device),
|
|
203
|
+
listRules: () => current().listRules(),
|
|
204
|
+
listGroups: (kind) => current().listGroups(kind),
|
|
205
|
+
listReservations: () => current().listReservations(),
|
|
206
|
+
listClients: () => current().listClients(),
|
|
207
|
+
getMdnsRepeater: () => current().getMdnsRepeater(),
|
|
208
|
+
plan: (change) => current().plan(change),
|
|
209
|
+
apply: (plan, options) => current().apply(plan, options),
|
|
210
|
+
};
|
|
211
|
+
}
|
|
212
|
+
/**
|
|
213
|
+
* Registers the net_* tools for one or more controllers (one per vendor). Each tool takes an
|
|
214
|
+
* optional `controller` (the vendor name, checked by its schema); without it, Omada answers
|
|
215
|
+
* when configured, else the first controller.
|
|
216
|
+
*/
|
|
217
|
+
export function registerNetTools(target, controllers) {
|
|
218
|
+
// One controller per vendor: a second one of the same vendor is never chosen.
|
|
219
|
+
const configured = Array.isArray(controllers) ? controllers : [controllers];
|
|
220
|
+
if (!configured.length)
|
|
221
|
+
return 0;
|
|
222
|
+
const fallback = configured.find((c) => c.vendor === 'omada') ?? configured[0];
|
|
223
|
+
const vendors = [...new Set(configured.map((c) => c.vendor))];
|
|
224
|
+
const chosen = new AsyncLocalStorage();
|
|
225
|
+
const controller = routedController(() => chosen.getStore() ?? fallback);
|
|
226
|
+
// A value the schema let through without a controller behind it refuses every call (never Omada by accident).
|
|
227
|
+
const pick = (wanted) => wanted === undefined
|
|
228
|
+
? fallback
|
|
229
|
+
: (configured.find((c) => c.vendor === wanted) ??
|
|
230
|
+
routedController(() => {
|
|
231
|
+
throw new NetError('NOT_FOUND', `No network controller '${String(wanted)}' is configured; configured: ${vendors.join(', ')}`);
|
|
232
|
+
}));
|
|
233
|
+
const choice = z
|
|
234
|
+
.enum(vendors)
|
|
235
|
+
.optional()
|
|
236
|
+
.describe(`Which network controller answers: ${vendors.join(' or ')} (default ${fallback.vendor})`);
|
|
237
|
+
const server = {
|
|
238
|
+
registerTool: (name, config, handler) => target.registerTool(name, { ...config, inputSchema: config.inputSchema.extend({ controller: choice }) }, ((args, extra) => chosen.run(pick(args?.controller), () => handler(args, extra)))),
|
|
239
|
+
};
|
|
139
240
|
server.registerTool('net_capabilities', { description: 'What the network controller can do: per feature native, emulated (built from several objects) or unsupported.', inputSchema: z.object({}) }, wrapToolHandler('net_capabilities', async () => toToolResult({ controller: controller.id, ...(await controller.capabilities()) }), Permission.QUERY));
|
|
140
241
|
server.registerTool('net_listNetworks', { description: 'List networks (VLANs): VLAN, gateway, DHCP, IPv6, and whether it is protected (carries the controller).', inputSchema: z.object({}) }, wrapToolHandler('net_listNetworks', async () => toToolResult(await controller.listNetworks()), Permission.QUERY));
|
|
141
242
|
server.registerTool('net_listWifi', { description: 'List Wi-Fi networks: the network they put devices on, bands, security, isolation, MAC filter. Passwords are never shown.', inputSchema: z.object({}) }, wrapToolHandler('net_listWifi', async () => toToolResult(await controller.listWifi()), Permission.QUERY));
|
|
@@ -157,7 +258,7 @@ export function registerNetTools(server, controller) {
|
|
|
157
258
|
},
|
|
158
259
|
}, a)), Permission.CONFIGURE));
|
|
159
260
|
server.registerTool('net_updateNetwork', {
|
|
160
|
-
description: "Change a network: name, VLAN, gateway, DHCP, IPv6 off. Never changes the VLAN or gateway of the
|
|
261
|
+
description: "Change a network: name, VLAN, gateway, DHCP, IPv6 off. Never changes the VLAN or gateway of the networks the controller and this server are on; changes that cut devices off need allowLockout." +
|
|
161
262
|
CONFIRM,
|
|
162
263
|
inputSchema: updateNetworkSchema,
|
|
163
264
|
}, wrapToolHandler('net_updateNetwork', async (a) => toToolResult(await run(controller, {
|
|
@@ -176,7 +277,7 @@ export function registerNetTools(server, controller) {
|
|
|
176
277
|
},
|
|
177
278
|
}, a)), Permission.CONFIGURE));
|
|
178
279
|
server.registerTool('net_deleteNetwork', {
|
|
179
|
-
description: 'Delete a network. Refused while a Wi-Fi network, port profile, DHCP reservation or rule uses it, and for the
|
|
280
|
+
description: 'Delete a network. Refused while a Wi-Fi network, port profile, switch port (untagged), DHCP reservation or rule uses it, and for the networks the controller and this server are on.' + CONFIRM,
|
|
180
281
|
inputSchema: deleteNetworkSchema,
|
|
181
282
|
}, wrapToolHandler('net_deleteNetwork', async (a) => toToolResult(await run(controller, { op: 'delete', kind: 'network', ref: { name: a.network } }, a)), Permission.CONFIGURE));
|
|
182
283
|
server.registerTool('net_createWifi', {
|
|
@@ -226,7 +327,8 @@ export function registerNetTools(server, controller) {
|
|
|
226
327
|
}, a)), Permission.CONFIGURE));
|
|
227
328
|
server.registerTool('net_deleteWifi', { description: 'Delete a Wi-Fi network; its connected devices are disconnected (needs allowLockout then).' + CONFIRM, inputSchema: deleteWifiSchema }, wrapToolHandler('net_deleteWifi', async (a) => toToolResult(await run(controller, { op: 'delete', kind: 'wifi', ref: { name: a.wifi } }, a)), Permission.CONFIGURE));
|
|
228
329
|
registerRuleTools(server, controller);
|
|
229
|
-
|
|
330
|
+
registerPortTools(server, controller);
|
|
331
|
+
return 21;
|
|
230
332
|
}
|
|
231
333
|
const RULES = ' Rules are stateful: a block rule stops new connections, while replies to connections started from the other side still pass (so "block IoT → Home" lets Home still reach IoT).';
|
|
232
334
|
function registerRuleTools(server, controller) {
|
|
@@ -272,6 +374,89 @@ function registerRuleTools(server, controller) {
|
|
|
272
374
|
server.registerTool('net_deleteRule', { description: 'Delete a rule (and the address group it owns).' + CONFIRM, inputSchema: deleteRuleSchema }, wrapToolHandler('net_deleteRule', async (a) => toToolResult(await run(controller, { op: 'delete', kind: 'rule', ref: { name: a.rule } }, a)), Permission.CONFIGURE));
|
|
273
375
|
server.registerTool('net_moveRule', { description: 'Move a rule to another position (1 = checked first; the first matching rule decides).' + CONFIRM, inputSchema: moveRuleSchema }, wrapToolHandler('net_moveRule', async (a) => toToolResult(await run(controller, { op: 'move', kind: 'rule', ref: { name: a.rule }, position: a.position }, a)), Permission.CONFIGURE));
|
|
274
376
|
}
|
|
377
|
+
function registerPortTools(server, controller) {
|
|
378
|
+
server.registerTool('net_listClients', {
|
|
379
|
+
description: 'List the online devices with the network (and VLAN) each is on, its Wi-Fi network or switch port. Answers "what is on VLAN 2?".',
|
|
380
|
+
inputSchema: listClientsSchema,
|
|
381
|
+
}, wrapToolHandler('net_listClients', async (a) => {
|
|
382
|
+
const networks = await controller.listNetworks();
|
|
383
|
+
const only = a.network === undefined ? undefined : findNetwork(networks, a.network);
|
|
384
|
+
const clients = (await controller.listClients()).filter((c) => !only || (c.network && 'id' in c.network && c.network.id === only.id));
|
|
385
|
+
return toToolResult(clients.map((c) => {
|
|
386
|
+
const network = c.network && 'id' in c.network ? networks.find((n) => n.id === c.network.id) : undefined;
|
|
387
|
+
return {
|
|
388
|
+
mac: c.mac,
|
|
389
|
+
...(c.name ? { name: c.name } : {}),
|
|
390
|
+
...(c.ip ? { ip: c.ip } : {}),
|
|
391
|
+
network: network ? network.name : 'unknown',
|
|
392
|
+
...(network ? { vlan: network.vlan } : {}),
|
|
393
|
+
...(c.wifi ? { wifi: 'name' in c.wifi ? c.wifi.name : c.wifi.id } : {}),
|
|
394
|
+
...(c.port ? { port: c.port } : {}),
|
|
395
|
+
online: c.online,
|
|
396
|
+
};
|
|
397
|
+
}));
|
|
398
|
+
}, Permission.QUERY));
|
|
399
|
+
server.registerTool('net_listPortProfiles', {
|
|
400
|
+
description: 'List switch port profiles and, when a profile sets them, the networks a port following it carries (without networks: ports keep their own, see net_listPorts). Profiles are created in the controller web UI.',
|
|
401
|
+
inputSchema: z.object({}),
|
|
402
|
+
}, wrapToolHandler('net_listPortProfiles', async () => {
|
|
403
|
+
const networks = await controller.listNetworks();
|
|
404
|
+
return toToolResult((await controller.listPortProfiles()).map((p) => ({ ...p, ...(p.networks ? { networks: namedNetworks(p.networks, networks) } : {}) })));
|
|
405
|
+
}, Permission.QUERY));
|
|
406
|
+
server.registerTool('net_listPorts', {
|
|
407
|
+
description: 'List switch ports: the networks each carries (untagged and tagged), its profile, the online devices on it, whether it is an uplink, and why it is protected when it is (uplinks and the ports the controller and this server are on are never changed).',
|
|
408
|
+
inputSchema: listPortsSchema,
|
|
409
|
+
}, wrapToolHandler('net_listPorts', async (a) => {
|
|
410
|
+
const profiles = await controller.listPortProfiles();
|
|
411
|
+
const networks = await controller.listNetworks();
|
|
412
|
+
const ports = await controller.listPorts(a.switch === undefined ? undefined : toSwitch(a.switch));
|
|
413
|
+
return toToolResult(ports.map((p) => ({
|
|
414
|
+
...p,
|
|
415
|
+
...(p.profile ? { profile: named(p.profile, profiles) } : {}),
|
|
416
|
+
...(p.networks ? { networks: namedNetworks(p.networks, networks) } : {}),
|
|
417
|
+
seen: p.seen.map((c) => ({ mac: c.mac, ...(c.name ? { name: c.name } : {}), ...(c.ip ? { ip: c.ip } : {}) })),
|
|
418
|
+
})));
|
|
419
|
+
}, Permission.QUERY));
|
|
420
|
+
server.registerTool('net_assignPort', {
|
|
421
|
+
description: 'Set the networks a switch port carries: its untagged network (e.g. a wired IoT device\'s port on "IoT") and optionally tagged ones; its other settings keep following its profile. Never for uplinks, the ports the controller and this server are on, link aggregation ports and ports with their own settings (net_listPorts says why a port is protected); devices that would lose their network need allowLockout.' +
|
|
422
|
+
CONFIRM,
|
|
423
|
+
inputSchema: assignPortSchema,
|
|
424
|
+
}, wrapToolHandler('net_assignPort', async (a) => toToolResult(await run(controller, { op: 'assign', kind: 'port', port: { device: toSwitch(a.switch), port: a.port }, networks: { native: { name: a.network }, tagged: Array.isArray(a.tagged) ? a.tagged.map((name) => ({ name })) : (a.tagged ?? 'none') } }, a)), Permission.CONFIGURE));
|
|
425
|
+
server.registerTool('net_getMdnsRepeater', { description: 'Whether mDNS (Bonjour) discovery is repeated between networks, and between which.', inputSchema: z.object({}) }, wrapToolHandler('net_getMdnsRepeater', async () => {
|
|
426
|
+
const networks = await controller.listNetworks();
|
|
427
|
+
const repeater = await controller.getMdnsRepeater();
|
|
428
|
+
return toToolResult({ ...repeater, networks: repeater.networks.map((r) => named(r, networks)) });
|
|
429
|
+
}, Permission.QUERY));
|
|
430
|
+
server.registerTool('net_setMdnsRepeater', {
|
|
431
|
+
description: 'Switch the mDNS repeater on or off, or change the networks it repeats between (e.g. Home and IoT, so Home Assistant and phones discover IoT devices). Discovery only: traffic still follows the rules.' +
|
|
432
|
+
CONFIRM,
|
|
433
|
+
inputSchema: setMdnsSchema,
|
|
434
|
+
}, wrapToolHandler('net_setMdnsRepeater', async (a) => toToolResult(await run(controller, { op: 'set', kind: 'mdnsRepeater', enabled: a.enabled, ...(a.networks ? { networks: a.networks.map((name) => ({ name })) } : {}) }, a)), Permission.CONFIGURE));
|
|
435
|
+
}
|
|
436
|
+
/** A network by id or name (case-insensitive). */
|
|
437
|
+
function findNetwork(networks, wanted) {
|
|
438
|
+
const found = networks.find((n) => n.id === wanted) ?? networks.find((n) => n.name.toLowerCase() === wanted.trim().toLowerCase());
|
|
439
|
+
if (!found)
|
|
440
|
+
throw new NetError('NOT_FOUND', `Network '${wanted}' not found. Available: ${networks.map((n) => n.name).join(', ') || '(none)'}`);
|
|
441
|
+
return found;
|
|
442
|
+
}
|
|
443
|
+
/** A reference with the name added, for reading. */
|
|
444
|
+
function named(r, items) {
|
|
445
|
+
const item = 'id' in r ? items.find((i) => i.id === r.id) : undefined;
|
|
446
|
+
return item ? { id: item.id, name: item.name } : r;
|
|
447
|
+
}
|
|
448
|
+
/** A port's or profile's networks with their names. */
|
|
449
|
+
function namedNetworks(carried, networks) {
|
|
450
|
+
return {
|
|
451
|
+
...(carried.native ? { native: named(carried.native, networks) } : {}),
|
|
452
|
+
...(carried.untagged ? { untagged: carried.untagged.map((r) => named(r, networks)) } : {}),
|
|
453
|
+
tagged: Array.isArray(carried.tagged) ? carried.tagged.map((r) => named(r, networks)) : carried.tagged,
|
|
454
|
+
};
|
|
455
|
+
}
|
|
456
|
+
/** A MAC (12 hex digits, with or without separators) picks the switch by MAC, anything else by name. */
|
|
457
|
+
function toSwitch(value) {
|
|
458
|
+
return /^([0-9a-f]{2}[:-]){5}[0-9a-f]{2}$|^[0-9a-f]{12}$/i.test(value.trim()) ? { mac: value.trim() } : { name: value };
|
|
459
|
+
}
|
|
275
460
|
function toSelectors(list) {
|
|
276
461
|
return list.map((s) => {
|
|
277
462
|
if ('network' in s)
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/tools/net/index.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/tools/net/index.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import { siteInputSchema, toToolResult, wrapToolHandler, Permission } from '../common.js';
|
|
2
2
|
export function registerListClientsTool(server, client) {
|
|
3
3
|
server.registerTool('omada_listClients', {
|
|
4
|
-
description: 'List all connected clients (devices/users) in a site',
|
|
4
|
+
description: 'List all connected clients (devices/users) in a site. Wireless clients report vid 0; net_listClients gives each client\'s network and VLAN.',
|
|
5
5
|
inputSchema: siteInputSchema,
|
|
6
6
|
}, wrapToolHandler('omada_listClients', async ({ siteId }) => toToolResult(await client.listClients(siteId)), Permission.QUERY));
|
|
7
7
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"listClients.js","sourceRoot":"","sources":["../../../src/tools/omada/listClients.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,eAAe,EAAE,YAAY,EAAE,eAAe,EAAE,UAAU,EAAE,MAAM,cAAc,CAAC;AAE1F,MAAM,UAAU,uBAAuB,CAAC,MAAiB,EAAE,MAAmB;IAC1E,MAAM,CAAC,YAAY,CACf,mBAAmB,EACnB;QACI,WAAW,EAAE,
|
|
1
|
+
{"version":3,"file":"listClients.js","sourceRoot":"","sources":["../../../src/tools/omada/listClients.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,eAAe,EAAE,YAAY,EAAE,eAAe,EAAE,UAAU,EAAE,MAAM,cAAc,CAAC;AAE1F,MAAM,UAAU,uBAAuB,CAAC,MAAiB,EAAE,MAAmB;IAC1E,MAAM,CAAC,YAAY,CACf,mBAAmB,EACnB;QACI,WAAW,EAAE,6IAA6I;QAC1J,WAAW,EAAE,eAAe;KAC/B,EACD,eAAe,CAAC,mBAAmB,EAAE,KAAK,EAAE,EAAE,MAAM,EAAE,EAAE,EAAE,CAAC,YAAY,CAAC,MAAM,MAAM,CAAC,WAAW,CAAC,MAAM,CAAC,CAAC,EAAE,UAAU,CAAC,KAAK,CAAC,CAC/H,CAAC;AACN,CAAC"}
|
package/dist/upstreams.d.ts
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
/**
|
|
2
|
-
* Connects to the upstreams (Home Assistant, Omada, the local AI) at startup.
|
|
2
|
+
* Connects to the upstreams (Home Assistant, Omada, a Ruijie router, the local AI) at startup.
|
|
3
3
|
*
|
|
4
4
|
* An upstream that doesn't answer at startup is not fatal: its client is kept, its
|
|
5
5
|
* tools stay registered (calls fail cleanly until it answers) and a background probe
|
|
@@ -8,12 +8,15 @@
|
|
|
8
8
|
* during the 2026-10-17 NAS network outage) instead of serving /health and Omada.
|
|
9
9
|
*
|
|
10
10
|
* What stays fatal or disabling is configuration that can never work: a missing
|
|
11
|
-
* HA_URL/HA_TOKEN or Omada setting, or an OMADA_SITE_ID the controller doesn't have.
|
|
11
|
+
* HA_URL/HA_TOKEN or Omada setting, or an OMADA_SITE_ID the controller doesn't have. A Ruijie
|
|
12
|
+
* router that refuses the login is never asked again (wrong passwords lock its login): its
|
|
13
|
+
* tools refuse until the setting is fixed and the server restarted.
|
|
12
14
|
*/
|
|
13
15
|
import type { EnvironmentConfig } from './config.js';
|
|
14
16
|
import { HaClient } from './haClient/index.js';
|
|
15
17
|
import { LocalAIClient } from './localAI/index.js';
|
|
16
18
|
import { OmadaClient } from './omadaClient/index.js';
|
|
19
|
+
import { RuijieClient } from './ruijieClient/index.js';
|
|
17
20
|
export interface BackoffOptions {
|
|
18
21
|
/** Pause before the first retry. */
|
|
19
22
|
initialMs: number;
|
|
@@ -32,6 +35,7 @@ export declare function retryInBackground(name: string, attempt: () => Promise<v
|
|
|
32
35
|
export interface Upstreams {
|
|
33
36
|
haClient?: HaClient;
|
|
34
37
|
omadaClient?: OmadaClient;
|
|
38
|
+
ruijieClient?: RuijieClient;
|
|
35
39
|
aiClient?: LocalAIClient;
|
|
36
40
|
/** Stops the background probes (tests; the process otherwise just exits). */
|
|
37
41
|
stop(): void;
|
|
@@ -40,8 +44,10 @@ export interface Upstreams {
|
|
|
40
44
|
export interface UpstreamFactories {
|
|
41
45
|
ha(config: EnvironmentConfig): HaClient;
|
|
42
46
|
omada(config: EnvironmentConfig): OmadaClient;
|
|
47
|
+
ruijie(config: EnvironmentConfig): RuijieClient;
|
|
43
48
|
ai(config: EnvironmentConfig): LocalAIClient;
|
|
44
49
|
}
|
|
50
|
+
export declare const defaultFactories: UpstreamFactories;
|
|
45
51
|
/** What an Omada call says once a background check found OMADA_SITE_ID missing (details in the log). */
|
|
46
52
|
export declare const OMADA_SITE_DISABLED_MESSAGE = "Omada tools are disabled: OMADA_SITE_ID is not a site on the controller. The server log lists the valid sites.";
|
|
47
53
|
export declare function connectUpstreams(config: EnvironmentConfig, factories?: UpstreamFactories, backoff?: BackoffOptions): Promise<Upstreams>;
|