@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
package/dist/upstreams.js
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 { HaClient } from './haClient/index.js';
|
|
14
16
|
import { LocalAIClient } from './localAI/index.js';
|
|
15
17
|
import { OmadaClient } from './omadaClient/index.js';
|
|
16
18
|
import { checkConfiguredSite } from './omadaClient/site.js';
|
|
19
|
+
import { RuijieClient, RuijieError } from './ruijieClient/index.js';
|
|
17
20
|
import { logger } from './utils/logger.js';
|
|
18
21
|
export const DEFAULT_BACKOFF = { initialMs: 5_000, maxMs: 60_000 };
|
|
19
22
|
/**
|
|
@@ -54,7 +57,7 @@ export function retryInBackground(name, attempt, backoff = DEFAULT_BACKOFF) {
|
|
|
54
57
|
},
|
|
55
58
|
};
|
|
56
59
|
}
|
|
57
|
-
const defaultFactories = {
|
|
60
|
+
export const defaultFactories = {
|
|
58
61
|
ha: (config) => new HaClient({
|
|
59
62
|
baseUrl: config.baseUrl,
|
|
60
63
|
token: config.token,
|
|
@@ -69,6 +72,13 @@ const defaultFactories = {
|
|
|
69
72
|
siteId: config.siteId,
|
|
70
73
|
strictSsl: config.omadaStrictSsl,
|
|
71
74
|
requestTimeout: config.requestTimeout,
|
|
75
|
+
serverAddresses: config.serverAddresses,
|
|
76
|
+
}),
|
|
77
|
+
ruijie: (config) => new RuijieClient({
|
|
78
|
+
baseUrl: config.ruijieBaseUrl,
|
|
79
|
+
password: config.ruijiePassword,
|
|
80
|
+
strictSsl: config.ruijieStrictSsl,
|
|
81
|
+
timeout: config.ruijieTimeout,
|
|
72
82
|
}),
|
|
73
83
|
ai: (config) => new LocalAIClient(config),
|
|
74
84
|
};
|
|
@@ -157,6 +167,49 @@ export async function connectUpstreams(config, factories = defaultFactories, bac
|
|
|
157
167
|
else {
|
|
158
168
|
logger.info('Omada plugin disabled');
|
|
159
169
|
}
|
|
170
|
+
// Ruijie / Reyee router
|
|
171
|
+
if (config.ruijiePluginEnabled) {
|
|
172
|
+
if (config.ruijieBaseUrl && config.ruijiePassword) {
|
|
173
|
+
let ruijieClient;
|
|
174
|
+
try {
|
|
175
|
+
ruijieClient = factories.ruijie(config);
|
|
176
|
+
const client = ruijieClient;
|
|
177
|
+
// A refused login is final (the client has switched itself off and logged why); only an
|
|
178
|
+
// unreachable router is tried again.
|
|
179
|
+
const check = async () => {
|
|
180
|
+
try {
|
|
181
|
+
const router = await client.check();
|
|
182
|
+
logger.info('Connected to Ruijie router', router);
|
|
183
|
+
}
|
|
184
|
+
catch (error) {
|
|
185
|
+
if (error instanceof RuijieError && (error.kind === 'refused' || error.kind === 'disabled'))
|
|
186
|
+
return;
|
|
187
|
+
throw error;
|
|
188
|
+
}
|
|
189
|
+
};
|
|
190
|
+
try {
|
|
191
|
+
await check();
|
|
192
|
+
}
|
|
193
|
+
catch (error) {
|
|
194
|
+
logger.warn('Ruijie router not reachable; its net_ tools stay registered and work once it answers. Retrying in the background', {
|
|
195
|
+
error: errorMessage(error),
|
|
196
|
+
});
|
|
197
|
+
probes.push(retryInBackground('Ruijie router', check, backoff));
|
|
198
|
+
}
|
|
199
|
+
}
|
|
200
|
+
catch (error) {
|
|
201
|
+
logger.warn('Ruijie client could not be created - Ruijie tools will be disabled', { error: errorMessage(error) });
|
|
202
|
+
ruijieClient = undefined;
|
|
203
|
+
}
|
|
204
|
+
upstreams.ruijieClient = ruijieClient;
|
|
205
|
+
}
|
|
206
|
+
else {
|
|
207
|
+
logger.warn('Ruijie plugin enabled but required config not set (RUIJIE_BASE_URL, RUIJIE_PASSWORD)');
|
|
208
|
+
}
|
|
209
|
+
}
|
|
210
|
+
else {
|
|
211
|
+
logger.info('Ruijie plugin disabled');
|
|
212
|
+
}
|
|
160
213
|
// Local AI
|
|
161
214
|
if (config.aiPluginEnabled) {
|
|
162
215
|
if (config.aiProvider === 'none') {
|
package/dist/upstreams.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"upstreams.js","sourceRoot":"","sources":["../src/upstreams.ts"],"names":[],"mappings":"AAAA
|
|
1
|
+
{"version":3,"file":"upstreams.js","sourceRoot":"","sources":["../src/upstreams.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;GAaG;AAGH,OAAO,EAAE,QAAQ,EAAE,MAAM,qBAAqB,CAAC;AAC/C,OAAO,EAAE,aAAa,EAAE,MAAM,oBAAoB,CAAC;AACnD,OAAO,EAAE,WAAW,EAAE,MAAM,wBAAwB,CAAC;AACrD,OAAO,EAAE,mBAAmB,EAAE,MAAM,uBAAuB,CAAC;AAC5D,OAAO,EAAE,YAAY,EAAE,WAAW,EAAE,MAAM,yBAAyB,CAAC;AACpE,OAAO,EAAE,MAAM,EAAE,MAAM,mBAAmB,CAAC;AAS3C,MAAM,CAAC,MAAM,eAAe,GAAmB,EAAE,SAAS,EAAE,KAAK,EAAE,KAAK,EAAE,MAAM,EAAE,CAAC;AAEnF;;;;GAIG;AACH,MAAM,UAAU,iBAAiB,CAC/B,IAAY,EACZ,OAA4B,EAC5B,UAA0B,eAAe;IAEzC,IAAI,KAAK,GAAG,OAAO,CAAC,SAAS,CAAC;IAC9B,IAAI,KAAgD,CAAC;IACrD,IAAI,OAAO,GAAG,KAAK,CAAC;IAEpB,MAAM,QAAQ,GAAG,GAAG,EAAE;QACpB,KAAK,GAAG,UAAU,CAAC,GAAG,EAAE,CAAC,KAAK,GAAG,EAAE,EAAE,KAAK,CAAC,CAAC;QAC5C,KAAK,CAAC,KAAK,EAAE,EAAE,CAAC;IAClB,CAAC,CAAC;IACF,MAAM,GAAG,GAAG,KAAK,IAAI,EAAE;QACrB,IAAI,OAAO;YAAE,OAAO;QACpB,IAAI,CAAC;YACH,MAAM,OAAO,EAAE,CAAC;QAClB,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,IAAI,OAAO;gBAAE,OAAO;YACpB,MAAM,CAAC,KAAK,CAAC,GAAG,IAAI,qCAAqC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,KAAK,GAAG,CAAC,EAAE,OAAO,CAAC,KAAK,CAAC,GAAG,IAAI,CAAC,GAAG,EAAE;gBACjH,KAAK,EAAE,YAAY,CAAC,KAAK,CAAC;aAC3B,CAAC,CAAC;YACH,KAAK,GAAG,IAAI,CAAC,GAAG,CAAC,KAAK,GAAG,CAAC,EAAE,OAAO,CAAC,KAAK,CAAC,CAAC;YAC3C,QAAQ,EAAE,CAAC;QACb,CAAC;IACH,CAAC,CAAC;IAEF,QAAQ,EAAE,CAAC;IACX,OAAO;QACL,IAAI;YACF,OAAO,GAAG,IAAI,CAAC;YACf,IAAI,KAAK;gBAAE,YAAY,CAAC,KAAK,CAAC,CAAC;QACjC,CAAC;KACF,CAAC;AACJ,CAAC;AAmBD,MAAM,CAAC,MAAM,gBAAgB,GAAsB;IACjD,EAAE,EAAE,CAAC,MAAM,EAAE,EAAE,CACb,IAAI,QAAQ,CAAC;QACX,OAAO,EAAE,MAAM,CAAC,OAAQ;QACxB,KAAK,EAAE,MAAM,CAAC,KAAM;QACpB,OAAO,EAAE,MAAM,CAAC,OAAO;QACvB,SAAS,EAAE,MAAM,CAAC,SAAS;KAC5B,CAAC;IACJ,KAAK,EAAE,CAAC,MAAM,EAAE,EAAE,CAChB,IAAI,WAAW,CAAC;QACd,OAAO,EAAE,MAAM,CAAC,YAAa;QAC7B,QAAQ,EAAE,MAAM,CAAC,aAAc;QAC/B,YAAY,EAAE,MAAM,CAAC,iBAAkB;QACvC,QAAQ,EAAE,MAAM,CAAC,QAAS;QAC1B,MAAM,EAAE,MAAM,CAAC,MAAM;QACrB,SAAS,EAAE,MAAM,CAAC,cAAc;QAChC,cAAc,EAAE,MAAM,CAAC,cAAc;QACrC,eAAe,EAAE,MAAM,CAAC,eAAe;KACxC,CAAC;IACJ,MAAM,EAAE,CAAC,MAAM,EAAE,EAAE,CACjB,IAAI,YAAY,CAAC;QACf,OAAO,EAAE,MAAM,CAAC,aAAc;QAC9B,QAAQ,EAAE,MAAM,CAAC,cAAe;QAChC,SAAS,EAAE,MAAM,CAAC,eAAe;QACjC,OAAO,EAAE,MAAM,CAAC,aAAa;KAC9B,CAAC;IACJ,EAAE,EAAE,CAAC,MAAM,EAAE,EAAE,CAAC,IAAI,aAAa,CAAC,MAAM,CAAC;CAC1C,CAAC;AAEF,wGAAwG;AACxG,MAAM,CAAC,MAAM,2BAA2B,GACtC,gHAAgH,CAAC;AAEnH,MAAM,CAAC,KAAK,UAAU,gBAAgB,CACpC,MAAyB,EACzB,YAA+B,gBAAgB,EAC/C,UAA0B,eAAe;IAEzC,MAAM,MAAM,GAA4B,EAAE,CAAC;IAC3C,MAAM,SAAS,GAAc;QAC3B,IAAI,EAAE,GAAG,EAAE,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC;KAC5C,CAAC;IAEF,iBAAiB;IACjB,IAAI,MAAM,CAAC,eAAe,EAAE,CAAC;QAC3B,IAAI,MAAM,CAAC,OAAO,IAAI,MAAM,CAAC,KAAK,EAAE,CAAC;YACnC,MAAM,QAAQ,GAAG,SAAS,CAAC,EAAE,CAAC,MAAM,CAAC,CAAC;YACtC,SAAS,CAAC,QAAQ,GAAG,QAAQ,CAAC;YAC9B,MAAM,KAAK,GAAG,KAAK,IAAI,EAAE;gBACvB,MAAM,QAAQ,GAAG,MAAM,QAAQ,CAAC,QAAQ,EAAE,CAAC;gBAC3C,MAAM,CAAC,IAAI,CAAC,6BAA6B,EAAE,EAAE,OAAO,EAAE,QAAQ,CAAC,OAAO,EAAE,CAAC,CAAC;YAC5E,CAAC,CAAC;YACF,IAAI,CAAC;gBACH,MAAM,KAAK,EAAE,CAAC;YAChB,CAAC;YAAC,OAAO,KAAK,EAAE,CAAC;gBACf,MAAM,CAAC,IAAI,CAAC,kFAAkF,EAAE;oBAC9F,KAAK,EAAE,YAAY,CAAC,KAAK,CAAC;iBAC3B,CAAC,CAAC;gBACH,MAAM,CAAC,IAAI,CAAC,iBAAiB,CAAC,gBAAgB,EAAE,KAAK,EAAE,OAAO,CAAC,CAAC,CAAC;YACnE,CAAC;QACH,CAAC;aAAM,CAAC;YACN,MAAM,CAAC,IAAI,CAAC,kDAAkD,CAAC,CAAC;QAClE,CAAC;IACH,CAAC;SAAM,CAAC;QACN,MAAM,CAAC,IAAI,CAAC,gCAAgC,CAAC,CAAC;IAChD,CAAC;IAED,QAAQ;IACR,IAAI,MAAM,CAAC,kBAAkB,EAAE,CAAC;QAC9B,IAAI,MAAM,CAAC,YAAY,IAAI,MAAM,CAAC,aAAa,IAAI,MAAM,CAAC,iBAAiB,IAAI,MAAM,CAAC,QAAQ,EAAE,CAAC;YAC/F,IAAI,WAAoC,CAAC;YACzC,IAAI,CAAC;gBACH,WAAW,GAAG,SAAS,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC;gBACtC,MAAM,MAAM,GAAG,WAAW,CAAC;gBAC3B,6EAA6E;gBAC7E,4EAA4E;gBAC5E,MAAM,SAAS,GAAG,KAAK,IAA4B,EAAE;oBACnD,MAAM,KAAK,GAAG,MAAM,MAAM,CAAC,SAAS,EAAE,CAAC;oBACvC,MAAM,SAAS,GAAG,mBAAmB,CAAC,MAAM,CAAC,MAAM,EAAE,KAAK,CAAC,CAAC;oBAC5D,IAAI,CAAC,SAAS;wBAAE,MAAM,CAAC,IAAI,CAAC,+BAA+B,EAAE,EAAE,SAAS,EAAE,KAAK,CAAC,MAAM,EAAE,CAAC,CAAC;oBAC1F,OAAO,SAAS,CAAC;gBACnB,CAAC,CAAC;gBACF,IAAI,CAAC;oBACH,MAAM,SAAS,GAAG,MAAM,SAAS,EAAE,CAAC;oBACpC,IAAI,SAAS,EAAE,CAAC;wBACd,qFAAqF;wBACrF,MAAM,CAAC,KAAK,CAAC,kDAAkD,SAAS,EAAE,CAAC,CAAC;wBAC5E,WAAW,GAAG,SAAS,CAAC;oBAC1B,CAAC;gBACH,CAAC;gBAAC,OAAO,KAAK,EAAE,CAAC;oBACf,MAAM,CAAC,IAAI,CAAC,kHAAkH,EAAE;wBAC9H,KAAK,EAAE,YAAY,CAAC,KAAK,CAAC;qBAC3B,CAAC,CAAC;oBACH,MAAM,CAAC,IAAI,CACT,iBAAiB,CACf,kBAAkB,EAClB,KAAK,IAAI,EAAE;wBACT,MAAM,SAAS,GAAG,MAAM,SAAS,EAAE,CAAC;wBACpC,IAAI,SAAS,EAAE,CAAC;4BACd,4EAA4E;4BAC5E,MAAM,CAAC,KAAK,CAAC,kDAAkD,SAAS,EAAE,CAAC,CAAC;4BAC5E,MAAM,CAAC,OAAO,CAAC,2BAA2B,CAAC,CAAC;wBAC9C,CAAC;oBACH,CAAC,EACD,OAAO,CACR,CACF,CAAC;gBACJ,CAAC;YACH,CAAC;YAAC,OAAO,KAAK,EAAE,CAAC;gBACf,6FAA6F;gBAC7F,MAAM,CAAC,IAAI,CAAC,kEAAkE,EAAE,EAAE,KAAK,EAAE,YAAY,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC;gBAChH,WAAW,GAAG,SAAS,CAAC;YAC1B,CAAC;YACD,SAAS,CAAC,WAAW,GAAG,WAAW,CAAC;QACtC,CAAC;aAAM,CAAC;YACN,MAAM,CAAC,IAAI,CAAC,0HAA0H,CAAC,CAAC;QAC1I,CAAC;IACH,CAAC;SAAM,CAAC;QACN,MAAM,CAAC,IAAI,CAAC,uBAAuB,CAAC,CAAC;IACvC,CAAC;IAED,wBAAwB;IACxB,IAAI,MAAM,CAAC,mBAAmB,EAAE,CAAC;QAC/B,IAAI,MAAM,CAAC,aAAa,IAAI,MAAM,CAAC,cAAc,EAAE,CAAC;YAClD,IAAI,YAAsC,CAAC;YAC3C,IAAI,CAAC;gBACH,YAAY,GAAG,SAAS,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;gBACxC,MAAM,MAAM,GAAG,YAAY,CAAC;gBAC5B,wFAAwF;gBACxF,qCAAqC;gBACrC,MAAM,KAAK,GAAG,KAAK,IAAI,EAAE;oBACvB,IAAI,CAAC;wBACH,MAAM,MAAM,GAAG,MAAM,MAAM,CAAC,KAAK,EAAE,CAAC;wBACpC,MAAM,CAAC,IAAI,CAAC,4BAA4B,EAAE,MAAM,CAAC,CAAC;oBACpD,CAAC;oBAAC,OAAO,KAAK,EAAE,CAAC;wBACf,IAAI,KAAK,YAAY,WAAW,IAAI,CAAC,KAAK,CAAC,IAAI,KAAK,SAAS,IAAI,KAAK,CAAC,IAAI,KAAK,UAAU,CAAC;4BAAE,OAAO;wBACpG,MAAM,KAAK,CAAC;oBACd,CAAC;gBACH,CAAC,CAAC;gBACF,IAAI,CAAC;oBACH,MAAM,KAAK,EAAE,CAAC;gBAChB,CAAC;gBAAC,OAAO,KAAK,EAAE,CAAC;oBACf,MAAM,CAAC,IAAI,CAAC,kHAAkH,EAAE;wBAC9H,KAAK,EAAE,YAAY,CAAC,KAAK,CAAC;qBAC3B,CAAC,CAAC;oBACH,MAAM,CAAC,IAAI,CAAC,iBAAiB,CAAC,eAAe,EAAE,KAAK,EAAE,OAAO,CAAC,CAAC,CAAC;gBAClE,CAAC;YACH,CAAC;YAAC,OAAO,KAAK,EAAE,CAAC;gBACf,MAAM,CAAC,IAAI,CAAC,oEAAoE,EAAE,EAAE,KAAK,EAAE,YAAY,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC;gBAClH,YAAY,GAAG,SAAS,CAAC;YAC3B,CAAC;YACD,SAAS,CAAC,YAAY,GAAG,YAAY,CAAC;QACxC,CAAC;aAAM,CAAC;YACN,MAAM,CAAC,IAAI,CAAC,sFAAsF,CAAC,CAAC;QACtG,CAAC;IACH,CAAC;SAAM,CAAC;QACN,MAAM,CAAC,IAAI,CAAC,wBAAwB,CAAC,CAAC;IACxC,CAAC;IAED,WAAW;IACX,IAAI,MAAM,CAAC,eAAe,EAAE,CAAC;QAC3B,IAAI,MAAM,CAAC,UAAU,KAAK,MAAM,EAAE,CAAC;YACjC,MAAM,CAAC,IAAI,CAAC,wCAAwC,CAAC,CAAC;QACxD,CAAC;aAAM,CAAC;YACN,MAAM,QAAQ,GAAG,SAAS,CAAC,EAAE,CAAC,MAAM,CAAC,CAAC;YACtC,SAAS,CAAC,QAAQ,GAAG,QAAQ,CAAC;YAC9B,MAAM,KAAK,GAAG,KAAK,IAAI,EAAE;gBACvB,IAAI,CAAC,CAAC,MAAM,QAAQ,CAAC,WAAW,EAAE,CAAC;oBAAE,MAAM,IAAI,KAAK,CAAC,qBAAqB,CAAC,CAAC;gBAC5E,MAAM,CAAC,IAAI,CAAC,0BAA0B,EAAE,EAAE,QAAQ,EAAE,QAAQ,CAAC,eAAe,EAAE,EAAE,GAAG,EAAE,MAAM,CAAC,KAAK,EAAE,KAAK,EAAE,MAAM,CAAC,OAAO,EAAE,CAAC,CAAC;YAC9H,CAAC,CAAC;YACF,IAAI,CAAC;gBACH,MAAM,KAAK,EAAE,CAAC;YAChB,CAAC;YAAC,OAAO,KAAK,EAAE,CAAC;gBACf,MAAM,CAAC,IAAI,CAAC,+GAA+G,EAAE;oBAC3H,QAAQ,EAAE,MAAM,CAAC,UAAU;oBAC3B,GAAG,EAAE,MAAM,CAAC,KAAK;oBACjB,KAAK,EAAE,YAAY,CAAC,KAAK,CAAC;iBAC3B,CAAC,CAAC;gBACH,MAAM,CAAC,IAAI,CAAC,iBAAiB,CAAC,aAAa,EAAE,KAAK,EAAE,OAAO,CAAC,CAAC,CAAC;YAChE,CAAC;QACH,CAAC;IACH,CAAC;SAAM,CAAC;QACN,MAAM,CAAC,IAAI,CAAC,oBAAoB,CAAC,CAAC;IACpC,CAAC;IAED,OAAO,SAAS,CAAC;AACnB,CAAC;AAED,SAAS,YAAY,CAAC,KAAc;IAClC,OAAO,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;AAChE,CAAC"}
|
package/dist/utils/redact.js
CHANGED
|
@@ -31,7 +31,7 @@ const SECRET_NAME = /(^key$|password|passwd|pwd$|secret|token$|passphrase|presha
|
|
|
31
31
|
const ACCOUNT_NAME = /^(user_?name|username|account)$/i;
|
|
32
32
|
const ACCOUNT_SECTION = /(pppoe|l2tp|pptp|lte|manuallyconfig|apn|dialup|vpn)/i;
|
|
33
33
|
/** Credentials inside URLs, e.g. /api/camera_proxy/camera.door?token=abc123 */
|
|
34
|
-
const URL_SECRET = /([?&](?:access_token|token|key|password|secret)=)[^&#\s"]+/gi;
|
|
34
|
+
const URL_SECRET = /([?&](?:access_token|token|key|password|secret|auth|sid)=)[^&#\s"]+/gi;
|
|
35
35
|
export function isSecretName(name) {
|
|
36
36
|
return SECRET_NAME.test(name);
|
|
37
37
|
}
|
package/dist/utils/redact.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"redact.js","sourceRoot":"","sources":["../../src/utils/redact.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;GAkBG;AAEH,MAAM,CAAC,MAAM,QAAQ,GAAG,YAAY,CAAC;AAErC;;;GAGG;AACH,MAAM,WAAW,GACf,yLAAyL,CAAC;AAE5L;;;;GAIG;AACH,MAAM,YAAY,GAAG,kCAAkC,CAAC;AACxD,MAAM,eAAe,GAAG,sDAAsD,CAAC;AAE/E,+EAA+E;AAC/E,MAAM,UAAU,GAAG,
|
|
1
|
+
{"version":3,"file":"redact.js","sourceRoot":"","sources":["../../src/utils/redact.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;GAkBG;AAEH,MAAM,CAAC,MAAM,QAAQ,GAAG,YAAY,CAAC;AAErC;;;GAGG;AACH,MAAM,WAAW,GACf,yLAAyL,CAAC;AAE5L;;;;GAIG;AACH,MAAM,YAAY,GAAG,kCAAkC,CAAC;AACxD,MAAM,eAAe,GAAG,sDAAsD,CAAC;AAE/E,+EAA+E;AAC/E,MAAM,UAAU,GAAG,uEAAuE,CAAC;AAE3F,MAAM,UAAU,YAAY,CAAC,IAAY;IACvC,OAAO,WAAW,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AAChC,CAAC;AAED,4HAA4H;AAC5H,MAAM,UAAU,gBAAgB,CAAC,IAAY;IAC3C,OAAO,eAAe,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AACpC,CAAC;AAED;;;GAGG;AACH,MAAM,UAAU,aAAa,CAAI,KAAQ,EAAE,UAAwC,EAAE;IACnF,OAAO,MAAM,CAAC,KAAK,EAAE,IAAI,OAAO,EAAE,EAAE,OAAO,CAAC,cAAc,KAAK,IAAI,CAAM,CAAC;AAC5E,CAAC;AAED,2EAA2E;AAC3E,SAAS,MAAM,CAAC,KAAc,EAAE,IAAqB,EAAE,gBAAyB;IAC9E,IAAI,OAAO,KAAK,KAAK,QAAQ,EAAE,CAAC;QAC9B,OAAO,KAAK,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,UAAU,EAAE,KAAK,QAAQ,EAAE,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC;IAClF,CAAC;IACD,IAAI,OAAO,KAAK,KAAK,QAAQ,IAAI,KAAK,KAAK,IAAI,EAAE,CAAC;QAChD,OAAO,KAAK,CAAC;IACf,CAAC;IACD,IAAI,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,EAAE,CAAC;QACpB,OAAO,YAAY,CAAC;IACtB,CAAC;IACD,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;IAChB,IAAI,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE,CAAC;QACzB,OAAO,KAAK,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,MAAM,CAAC,IAAI,EAAE,IAAI,EAAE,gBAAgB,CAAC,CAAC,CAAC;IACnE,CAAC;IACD,MAAM,GAAG,GAA4B,EAAE,CAAC;IACxC,KAAK,MAAM,CAAC,GAAG,EAAE,KAAK,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,KAAgC,CAAC,EAAE,CAAC;QAC5E,MAAM,MAAM,GAAG,YAAY,CAAC,GAAG,CAAC,IAAI,CAAC,gBAAgB,IAAI,YAAY,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC;QACjF,GAAG,CAAC,GAAG,CAAC,GAAG,OAAO,KAAK,KAAK,QAAQ,IAAI,KAAK,KAAK,EAAE,IAAI,MAAM,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,EAAE,IAAI,EAAE,gBAAgB,IAAI,eAAe,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC;IACjJ,CAAC;IACD,OAAO,GAAG,CAAC;AACb,CAAC"}
|
package/dist/version.d.ts
CHANGED
package/dist/version.js
CHANGED
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@coffeerunhobby/mcp-ha-connect",
|
|
3
|
-
"version": "2.
|
|
3
|
+
"version": "2.5.0",
|
|
4
4
|
"description": "Smart home MCP server for Home Assistant plus Local AI integration",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"main": "dist/index.js",
|
|
@@ -44,14 +44,15 @@
|
|
|
44
44
|
"url": "https://github.com/coffeerunhobby/mcp-ha-connect/issues"
|
|
45
45
|
},
|
|
46
46
|
"dependencies": {
|
|
47
|
-
"
|
|
47
|
+
"@modelcontextprotocol/node": "^2.1.1",
|
|
48
|
+
"@modelcontextprotocol/server": "^2.3.1",
|
|
49
|
+
"undici": "^6.29.1",
|
|
48
50
|
"ws": "^8.21.0",
|
|
49
|
-
"zod": "^4.6.
|
|
50
|
-
"@modelcontextprotocol/server": "^2.2.0",
|
|
51
|
-
"@modelcontextprotocol/node": "^2.1.0"
|
|
51
|
+
"zod": "^4.6.7"
|
|
52
52
|
},
|
|
53
53
|
"devDependencies": {
|
|
54
54
|
"@amiceli/vitest-cucumber": "^6.2.0",
|
|
55
|
+
"@modelcontextprotocol/client": "^2.3.1",
|
|
55
56
|
"@types/node": "^22.10.5",
|
|
56
57
|
"@types/ws": "^8.18.1",
|
|
57
58
|
"@typescript-eslint/eslint-plugin": "^8.19.1",
|
|
@@ -62,8 +63,7 @@
|
|
|
62
63
|
"tsx": "^4.19.2",
|
|
63
64
|
"typescript": "^5.9.3",
|
|
64
65
|
"typescript-eslint": "^8.52.0",
|
|
65
|
-
"vitest": "^4.1.11"
|
|
66
|
-
"@modelcontextprotocol/client": "^2.2.0"
|
|
66
|
+
"vitest": "^4.1.11"
|
|
67
67
|
},
|
|
68
68
|
"engines": {
|
|
69
69
|
"node": ">=20.0.0"
|