@coffeerunhobby/mcp-ha-connect 0.7.0 → 0.9.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 +15 -39
- package/Dockerfile +4 -4
- package/README.md +22 -107
- package/dist/autonomic/index.d.ts +6 -0
- package/dist/autonomic/index.js +7 -0
- package/dist/autonomic/index.js.map +1 -0
- package/dist/autonomic/priority.d.ts +60 -0
- package/dist/autonomic/priority.js +97 -0
- package/dist/autonomic/priority.js.map +1 -0
- package/dist/config.d.ts +2 -1
- package/dist/config.js +21 -6
- package/dist/config.js.map +1 -1
- package/dist/haClient/config.d.ts +1 -0
- package/dist/haClient/config.js +11 -1
- package/dist/haClient/config.js.map +1 -1
- package/dist/haClient/history.d.ts +1 -0
- package/dist/haClient/history.js +7 -4
- package/dist/haClient/history.js.map +1 -1
- package/dist/haClient/index.d.ts +1 -0
- package/dist/haClient/index.js.map +1 -1
- package/dist/index.d.ts +1 -1
- package/dist/index.js +1 -2
- package/dist/index.js.map +1 -1
- package/dist/organism/index.d.ts +5 -0
- package/dist/organism/index.js +6 -0
- package/dist/organism/index.js.map +1 -0
- package/dist/organism/priority.d.ts +60 -0
- package/dist/organism/priority.js +97 -0
- package/dist/organism/priority.js.map +1 -0
- package/dist/server/auth.d.ts +20 -0
- package/dist/server/auth.js +74 -0
- package/dist/server/auth.js.map +1 -0
- package/dist/server/common.js +2 -1
- package/dist/server/common.js.map +1 -1
- package/dist/server/http.d.ts +1 -1
- package/dist/server/http.js +133 -55
- package/dist/server/http.js.map +1 -1
- package/dist/server/sse.js +1 -1
- package/dist/server/sse.js.map +1 -1
- package/dist/server/stream.js +6 -0
- package/dist/server/stream.js.map +1 -1
- package/dist/tools/common.d.ts +4 -0
- package/dist/tools/common.js +4 -2
- package/dist/tools/common.js.map +1 -1
- package/dist/tools/systemTools.js +4 -4
- package/dist/tools/systemTools.js.map +1 -1
- package/dist/types/config.d.ts +1 -1
- package/dist/types/config.js +1 -0
- package/dist/types/config.js.map +1 -1
- package/dist/utils/config-validations.d.ts +9 -1
- package/dist/utils/config-validations.js +29 -20
- package/dist/utils/config-validations.js.map +1 -1
- package/dist/utils/sanitize.d.ts +25 -0
- package/dist/utils/sanitize.js +92 -0
- package/dist/utils/sanitize.js.map +1 -0
- package/dist/version.d.ts +5 -0
- package/dist/version.js +6 -0
- package/dist/version.js.map +1 -0
- package/docs/CHANGELOG.md +30 -7
- package/docs/Quick_Start.md +215 -0
- package/docs/SSE_API.md +1 -1
- package/openapi.json +1 -1
- package/package.json +1 -1
- package/src/autonomic/index.ts +16 -0
- package/src/autonomic/priority.ts +109 -0
- package/src/config.ts +31 -7
- package/src/haClient/config.ts +13 -2
- package/src/haClient/history.ts +9 -4
- package/src/haClient/index.ts +1 -0
- package/src/index.ts +1 -2
- package/src/server/auth.ts +103 -0
- package/src/server/common.ts +2 -1
- package/src/server/http.ts +151 -61
- package/src/server/stream.ts +7 -0
- package/src/tools/common.ts +4 -2
- package/src/tools/systemTools.ts +4 -4
- package/src/types/config.ts +4 -1
- package/src/utils/config-validations.ts +29 -22
- package/src/version.ts +5 -0
- package/tests/autonomic/priority.test.ts +171 -0
- package/tests/bdd/configuration.spec.ts +0 -5
- package/tests/config.test.ts +6 -32
- package/tests/features/configuration.feature +0 -1
- package/tests/haClient/config.test.ts +33 -12
- package/tests/haClient/history.test.ts +58 -0
- package/tests/haClient/index.test.ts +1 -1
- package/tests/index.test.ts +5 -9
- package/tests/localAI/index.test.ts +1 -1
- package/tests/server/auth.test.ts +206 -0
- package/tests/server/common.test.ts +1 -1
- package/tests/server/http.test.ts +122 -35
- package/tests/server/stdio.test.ts +1 -1
- package/tests/server/stream.test.ts +1 -2
- package/tests/tools/registry.test.ts +1 -1
- package/tests/utils/config-validations.test.ts +69 -6
- package/src/server/sse.ts +0 -120
- package/tests/server/sse.test.ts +0 -240
package/dist/haClient/history.js
CHANGED
|
@@ -35,8 +35,9 @@ export class HistoryOperations {
|
|
|
35
35
|
* Returns recent events/state changes, optionally filtered by entity
|
|
36
36
|
*/
|
|
37
37
|
async getSystemLog(options = {}) {
|
|
38
|
-
const hours = options.hours || 24;
|
|
39
|
-
|
|
38
|
+
const hours = Math.min(options.hours || 24, 168); // Cap at 1 week
|
|
39
|
+
const limit = options.limit || 100;
|
|
40
|
+
logger.debug('Fetching system log', { hours, entity_id: options.entity_id, limit });
|
|
40
41
|
const endTime = new Date();
|
|
41
42
|
const startTime = new Date(endTime.getTime() - hours * 60 * 60 * 1000);
|
|
42
43
|
const path = `/logbook/${startTime.toISOString()}`;
|
|
@@ -47,8 +48,10 @@ export class HistoryOperations {
|
|
|
47
48
|
params.entity = options.entity_id;
|
|
48
49
|
}
|
|
49
50
|
const entries = await this.request.get(path, params);
|
|
50
|
-
|
|
51
|
-
|
|
51
|
+
// Apply limit - return most recent entries first
|
|
52
|
+
const limited = entries.slice(-limit);
|
|
53
|
+
logger.info('Fetched system log', { count: entries.length, returned: limited.length, hours, limit });
|
|
54
|
+
return limited;
|
|
52
55
|
}
|
|
53
56
|
}
|
|
54
57
|
//# sourceMappingURL=history.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"history.js","sourceRoot":"","sources":["../../src/haClient/history.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAGH,OAAO,EAAE,MAAM,EAAE,MAAM,oBAAoB,CAAC;AAG5C;;GAEG;AACH,MAAM,OAAO,iBAAiB;IACC;IAA7B,YAA6B,OAAuB;QAAvB,YAAO,GAAP,OAAO,CAAgB;IAAG,CAAC;IAExD;;OAEG;IACH,KAAK,CAAC,UAAU,CAAC,QAAgB,EAAE,QAAgB,EAAE;QACnD,MAAM,CAAC,KAAK,CAAC,kBAAkB,EAAE,EAAE,QAAQ,EAAE,KAAK,EAAE,CAAC,CAAC;QAEtD,MAAM,OAAO,GAAG,IAAI,IAAI,EAAE,CAAC;QAC3B,MAAM,SAAS,GAAG,IAAI,IAAI,CAAC,OAAO,CAAC,OAAO,EAAE,GAAG,KAAK,GAAG,EAAE,GAAG,EAAE,GAAG,IAAI,CAAC,CAAC;QAEvE,MAAM,IAAI,GAAG,mBAAmB,SAAS,CAAC,WAAW,EAAE,EAAE,CAAC;QAC1D,MAAM,OAAO,GAAG,MAAM,IAAI,CAAC,OAAO,CAAC,GAAG,CAAa,IAAI,EAAE;YACvD,gBAAgB,EAAE,QAAQ;YAC1B,QAAQ,EAAE,OAAO,CAAC,WAAW,EAAE;SAChC,CAAC,CAAC;QAEH,MAAM,CAAC,IAAI,CAAC,iBAAiB,EAAE;YAC7B,QAAQ;YACR,KAAK;YACL,OAAO,EAAE,OAAO,CAAC,CAAC,CAAC,EAAE,MAAM,IAAI,CAAC;SACjC,CAAC,CAAC;QAEH,OAAO,OAAO,CAAC;IACjB,CAAC;IAED;;;OAGG;IACH,KAAK,CAAC,YAAY,CAAC,
|
|
1
|
+
{"version":3,"file":"history.js","sourceRoot":"","sources":["../../src/haClient/history.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAGH,OAAO,EAAE,MAAM,EAAE,MAAM,oBAAoB,CAAC;AAG5C;;GAEG;AACH,MAAM,OAAO,iBAAiB;IACC;IAA7B,YAA6B,OAAuB;QAAvB,YAAO,GAAP,OAAO,CAAgB;IAAG,CAAC;IAExD;;OAEG;IACH,KAAK,CAAC,UAAU,CAAC,QAAgB,EAAE,QAAgB,EAAE;QACnD,MAAM,CAAC,KAAK,CAAC,kBAAkB,EAAE,EAAE,QAAQ,EAAE,KAAK,EAAE,CAAC,CAAC;QAEtD,MAAM,OAAO,GAAG,IAAI,IAAI,EAAE,CAAC;QAC3B,MAAM,SAAS,GAAG,IAAI,IAAI,CAAC,OAAO,CAAC,OAAO,EAAE,GAAG,KAAK,GAAG,EAAE,GAAG,EAAE,GAAG,IAAI,CAAC,CAAC;QAEvE,MAAM,IAAI,GAAG,mBAAmB,SAAS,CAAC,WAAW,EAAE,EAAE,CAAC;QAC1D,MAAM,OAAO,GAAG,MAAM,IAAI,CAAC,OAAO,CAAC,GAAG,CAAa,IAAI,EAAE;YACvD,gBAAgB,EAAE,QAAQ;YAC1B,QAAQ,EAAE,OAAO,CAAC,WAAW,EAAE;SAChC,CAAC,CAAC;QAEH,MAAM,CAAC,IAAI,CAAC,iBAAiB,EAAE;YAC7B,QAAQ;YACR,KAAK;YACL,OAAO,EAAE,OAAO,CAAC,CAAC,CAAC,EAAE,MAAM,IAAI,CAAC;SACjC,CAAC,CAAC;QAEH,OAAO,OAAO,CAAC;IACjB,CAAC;IAED;;;OAGG;IACH,KAAK,CAAC,YAAY,CAAC,UAIf,EAAE;QACJ,MAAM,KAAK,GAAG,IAAI,CAAC,GAAG,CAAC,OAAO,CAAC,KAAK,IAAI,EAAE,EAAE,GAAG,CAAC,CAAC,CAAC,gBAAgB;QAClE,MAAM,KAAK,GAAG,OAAO,CAAC,KAAK,IAAI,GAAG,CAAC;QACnC,MAAM,CAAC,KAAK,CAAC,qBAAqB,EAAE,EAAE,KAAK,EAAE,SAAS,EAAE,OAAO,CAAC,SAAS,EAAE,KAAK,EAAE,CAAC,CAAC;QAEpF,MAAM,OAAO,GAAG,IAAI,IAAI,EAAE,CAAC;QAC3B,MAAM,SAAS,GAAG,IAAI,IAAI,CAAC,OAAO,CAAC,OAAO,EAAE,GAAG,KAAK,GAAG,EAAE,GAAG,EAAE,GAAG,IAAI,CAAC,CAAC;QAEvE,MAAM,IAAI,GAAG,YAAY,SAAS,CAAC,WAAW,EAAE,EAAE,CAAC;QACnD,MAAM,MAAM,GAA2B;YACrC,QAAQ,EAAE,OAAO,CAAC,WAAW,EAAE;SAChC,CAAC;QAEF,IAAI,OAAO,CAAC,SAAS,EAAE,CAAC;YACtB,MAAM,CAAC,MAAM,GAAG,OAAO,CAAC,SAAS,CAAC;QACpC,CAAC;QAED,MAAM,OAAO,GAAG,MAAM,IAAI,CAAC,OAAO,CAAC,GAAG,CAAiB,IAAI,EAAE,MAAM,CAAC,CAAC;QAErE,iDAAiD;QACjD,MAAM,OAAO,GAAG,OAAO,CAAC,KAAK,CAAC,CAAC,KAAK,CAAC,CAAC;QAEtC,MAAM,CAAC,IAAI,CAAC,oBAAoB,EAAE,EAAE,KAAK,EAAE,OAAO,CAAC,MAAM,EAAE,QAAQ,EAAE,OAAO,CAAC,MAAM,EAAE,KAAK,EAAE,KAAK,EAAE,CAAC,CAAC;QACrG,OAAO,OAAO,CAAC;IACjB,CAAC;CACF"}
|
package/dist/haClient/index.d.ts
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/haClient/index.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAgBH,OAAO,EAAE,MAAM,EAAE,MAAM,oBAAoB,CAAC;AAE5C,OAAO,EAAE,oBAAoB,EAAE,MAAM,kBAAkB,CAAC;AACxD,OAAO,EAAE,gBAAgB,EAAE,MAAM,aAAa,CAAC;AAC/C,OAAO,EAAE,gBAAgB,EAAE,MAAM,cAAc,CAAC;AAChD,OAAO,EAAE,gBAAgB,EAAE,MAAM,eAAe,CAAC;AACjD,OAAO,EAAE,iBAAiB,EAAE,MAAM,cAAc,CAAC;AACjD,OAAO,EAAE,cAAc,EAAE,MAAM,cAAc,CAAC;AAC9C,OAAO,EAAE,iBAAiB,EAAE,MAAM,eAAe,CAAC;AAClD,OAAO,EAAE,eAAe,EAAE,MAAM,aAAa,CAAC;AAC9C,OAAO,EAAE,gBAAgB,EAAE,MAAM,cAAc,CAAC;AAChD,OAAO,EAAE,kBAAkB,EAAE,MAAM,gBAAgB,CAAC;AAEpD;;;GAGG;AACH,MAAM,OAAO,QAAQ;IACF,OAAO,CAAiB;IACxB,QAAQ,CAAkB;IAC1B,UAAU,CAAoB;IAC9B,SAAS,CAAmB;IAC5B,aAAa,CAAuB;IACpC,UAAU,CAAoB;IAC9B,SAAS,CAAmB;IAC5B,SAAS,CAAmB;IAC5B,WAAW,CAAqB;IACjC,OAAO,CAAmB;IAE1C,YAAY,MAAyB;QACnC,MAAM,CAAC,KAAK,CAAC,uBAAuB,CAAC,CAAC;QAEtC,6BAA6B;QAC7B,IAAI,CAAC,OAAO,GAAG,IAAI,cAAc,CAAC;YAChC,OAAO,EAAE,MAAM,CAAC,OAAO;YACvB,KAAK,EAAE,MAAM,CAAC,KAAK;YACnB,OAAO,EAAE,MAAM,CAAC,OAAO;YACvB,SAAS,EAAE,MAAM,CAAC,SAAS;SAC5B,CAAC,CAAC;QAEH,iDAAiD;QACjD,IAAI,CAAC,QAAQ,GAAG,IAAI,eAAe,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;QAClD,IAAI,CAAC,UAAU,GAAG,IAAI,iBAAiB,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;QACtD,IAAI,CAAC,SAAS,GAAG,IAAI,gBAAgB,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;QACrD,IAAI,CAAC,aAAa,GAAG,IAAI,oBAAoB,CAAC,IAAI,CAAC,QAAQ,EAAE,IAAI,CAAC,UAAU,EAAE,IAAI,CAAC,OAAO,CAAC,CAAC;QAC5F,IAAI,CAAC,UAAU,GAAG,IAAI,iBAAiB,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;QACtD,IAAI,CAAC,SAAS,GAAG,IAAI,gBAAgB,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;QACtD,IAAI,CAAC,SAAS,GAAG,IAAI,gBAAgB,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;QACpD,IAAI,CAAC,WAAW,GAAG,IAAI,kBAAkB,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;QACxD,IAAI,CAAC,OAAO,GAAG,IAAI,gBAAgB,CAAC,IAAI,CAAC,UAAU,EAAE,IAAI,CAAC,QAAQ,CAAC,CAAC;QAEpE,MAAM,CAAC,IAAI,CAAC,sBAAsB,CAAC,CAAC;IACtC,CAAC;IAED,+BAA+B;IAE/B;;OAEG;IACH,KAAK,CAAC,SAAS;QACb,OAAO,IAAI,CAAC,QAAQ,CAAC,SAAS,EAAE,CAAC;IACnC,CAAC;IAED;;OAEG;IACH,KAAK,CAAC,QAAQ,CAAC,QAAgB;QAC7B,OAAO,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAC;IAC1C,CAAC;IAED;;OAEG;IACH,KAAK,CAAC,aAAa;QACjB,OAAO,IAAI,CAAC,QAAQ,CAAC,aAAa,EAAE,CAAC;IACvC,CAAC;IAED,iCAAiC;IAEjC;;OAEG;IACH,KAAK,CAAC,WAAW,CAAC,IAAqB;QACrC,OAAO,IAAI,CAAC,UAAU,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC;IAC3C,CAAC;IAED;;OAEG;IACH,KAAK,CAAC,aAAa;QACjB,OAAO,IAAI,CAAC,UAAU,CAAC,aAAa,EAAE,CAAC;IACzC,CAAC;IAED,gCAAgC;IAEhC;;OAEG;IACH,KAAK,CAAC,mBAAmB,CAAC,MAAc;QACtC,OAAO,IAAI,CAAC,SAAS,CAAC,mBAAmB,CAAC,MAAM,CAAC,CAAC;IACpD,CAAC;IAED;;OAEG;IACH,KAAK,CAAC,cAAc,CAAC,KAAa;QAChC,OAAO,IAAI,CAAC,SAAS,CAAC,cAAc,CAAC,KAAK,CAAC,CAAC;IAC9C,CAAC;IAED;;OAEG;IACH,KAAK,CAAC,gBAAgB,CAAC,MAAc;QACnC,OAAO,IAAI,CAAC,SAAS,CAAC,gBAAgB,CAAC,MAAM,CAAC,CAAC;IACjD,CAAC;IAED;;OAEG;IACH,KAAK,CAAC,YAAY,CAAC,UAKf,EAAE;QACJ,OAAO,IAAI,CAAC,SAAS,CAAC,YAAY,CAAC,OAAO,CAAC,CAAC;IAC9C,CAAC;IAED,oCAAoC;IAEpC;;OAEG;IACH,KAAK,CAAC,cAAc;QAClB,OAAO,IAAI,CAAC,aAAa,CAAC,cAAc,EAAE,CAAC;IAC7C,CAAC;IAED;;OAEG;IACH,KAAK,CAAC,aAAa,CAAC,QAAgB;QAClC,OAAO,IAAI,CAAC,aAAa,CAAC,aAAa,CAAC,QAAQ,CAAC,CAAC;IACpD,CAAC;IAED;;OAEG;IACH,KAAK,CAAC,iBAAiB,CAAC,QAAgB,EAAE,SAAmC;QAC3E,OAAO,IAAI,CAAC,aAAa,CAAC,iBAAiB,CAAC,QAAQ,EAAE,SAAS,CAAC,CAAC;IACnE,CAAC;IAED;;OAEG;IACH,KAAK,CAAC,gBAAgB,CAAC,QAAgB;QACrC,OAAO,IAAI,CAAC,aAAa,CAAC,gBAAgB,CAAC,QAAQ,CAAC,CAAC;IACvD,CAAC;IAED;;OAEG;IACH,KAAK,CAAC,iBAAiB,CAAC,QAAgB;QACtC,OAAO,IAAI,CAAC,aAAa,CAAC,iBAAiB,CAAC,QAAQ,CAAC,CAAC;IACxD,CAAC;IAED;;OAEG;IACH,KAAK,CAAC,gBAAgB,CAAC,QAAgB;QACrC,OAAO,IAAI,CAAC,aAAa,CAAC,gBAAgB,CAAC,QAAQ,CAAC,CAAC;IACvD,CAAC;IAED;;OAEG;IACH,KAAK,CAAC,iBAAiB;QACrB,OAAO,IAAI,CAAC,aAAa,CAAC,iBAAiB,EAAE,CAAC;IAChD,CAAC;IAED;;OAEG;IACH,KAAK,CAAC,gBAAgB,CAAC,MAAwB;QAC7C,OAAO,IAAI,CAAC,aAAa,CAAC,gBAAgB,CAAC,MAAM,CAAC,CAAC;IACrD,CAAC;IAED;;OAEG;IACH,KAAK,CAAC,gBAAgB,CAAC,YAAoB,EAAE,MAAiC;QAC5E,OAAO,IAAI,CAAC,aAAa,CAAC,gBAAgB,CAAC,YAAY,EAAE,MAAM,CAAC,CAAC;IACnE,CAAC;IAED;;OAEG;IACH,KAAK,CAAC,gBAAgB,CAAC,YAAoB;QACzC,OAAO,IAAI,CAAC,aAAa,CAAC,gBAAgB,CAAC,YAAY,CAAC,CAAC;IAC3D,CAAC;IAED;;OAEG;IACH,KAAK,CAAC,kBAAkB,CAAC,QAAgB;QACvC,OAAO,IAAI,CAAC,aAAa,CAAC,kBAAkB,CAAC,QAAQ,CAAC,CAAC;IACzD,CAAC;IAED,iCAAiC;IAEjC;;OAEG;IACH,KAAK,CAAC,UAAU,CAAC,QAAgB,EAAE,QAAgB,EAAE;QACnD,OAAO,IAAI,CAAC,UAAU,CAAC,UAAU,CAAC,QAAQ,EAAE,KAAK,CAAC,CAAC;IACrD,CAAC;IAED;;OAEG;IACH,KAAK,CAAC,YAAY,CAAC,
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/haClient/index.ts"],"names":[],"mappings":"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"}
|
package/dist/index.d.ts
CHANGED
package/dist/index.js
CHANGED
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
/**
|
|
3
3
|
* Home Assistant MCP Server
|
|
4
4
|
* Entry point for the Model Context Protocol server
|
|
5
|
-
* Supports
|
|
5
|
+
* Supports transport modes: stdio, HTTP (Streamable HTTP)
|
|
6
6
|
*/
|
|
7
7
|
import { loadConfig } from './config.js';
|
|
8
8
|
import { HaClient } from './haClient/index.js';
|
|
@@ -24,7 +24,6 @@ async function main() {
|
|
|
24
24
|
strictSsl: config.strictSsl,
|
|
25
25
|
timeout: config.timeout,
|
|
26
26
|
useHttp: config.useHttp,
|
|
27
|
-
httpTransport: config.useHttp ? config.httpTransport : undefined,
|
|
28
27
|
aiProvider: config.aiProvider,
|
|
29
28
|
aiUrl: config.aiUrl,
|
|
30
29
|
aiModel: config.aiModel,
|
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";AACA;;;;GAIG;AAEH,OAAO,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AACzC,OAAO,EAAE,QAAQ,EAAE,MAAM,qBAAqB,CAAC;AAC/C,OAAO,EAAE,aAAa,EAAE,MAAM,oBAAoB,CAAC;AACnD,OAAO,EAAE,eAAe,EAAE,MAAM,kBAAkB,CAAC;AACnD,OAAO,EAAE,gBAAgB,EAAE,MAAM,mBAAmB,CAAC;AACrD,OAAO,EAAE,UAAU,EAAE,MAAM,EAAE,MAAM,mBAAmB,CAAC;AAEvD,KAAK,UAAU,IAAI;IACjB,IAAI,CAAC;QACH,kCAAkC;QAClC,MAAM,MAAM,GAAG,UAAU,EAAE,CAAC;QAE5B,sGAAsG;QACtG,MAAM,SAAS,GAAG,CAAC,MAAM,CAAC,OAAO,CAAC;QAElC,qEAAqE;QACrE,UAAU,CAAC,MAAM,CAAC,QAAQ,EAAE,MAAM,CAAC,SAAS,EAAE,SAAS,CAAC,CAAC;QAEzD,MAAM,CAAC,IAAI,CAAC,qCAAqC,EAAE;YACjD,OAAO,EAAE,MAAM,CAAC,OAAO;YACvB,QAAQ,EAAE,CAAC,CAAC,MAAM,CAAC,KAAK;YACxB,SAAS,EAAE,MAAM,CAAC,SAAS;YAC3B,OAAO,EAAE,MAAM,CAAC,OAAO;YACvB,OAAO,EAAE,MAAM,CAAC,OAAO;YACvB,
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,5 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Organism Module
|
|
3
|
+
* Implements the "living home" architecture with tiered response system
|
|
4
|
+
*/
|
|
5
|
+
export { Priority, PriorityMask, matchesPriority, getPriorityName, getPriorityTier, bypassesQuietHours, requiresImmediateAction, requiresApproval, } from './priority.js';
|
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Organism Module
|
|
3
|
+
* Implements the "living home" architecture with tiered response system
|
|
4
|
+
*/
|
|
5
|
+
export { Priority, PriorityMask, matchesPriority, getPriorityName, getPriorityTier, bypassesQuietHours, requiresImmediateAction, requiresApproval, } from './priority.js';
|
|
6
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/organism/index.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,EACL,QAAQ,EACR,YAAY,EACZ,eAAe,EACf,eAAe,EACf,eAAe,EACf,kBAAkB,EAClB,uBAAuB,EACvB,gBAAgB,GACjB,MAAM,eAAe,CAAC"}
|
|
@@ -0,0 +1,60 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Organism Priority System
|
|
3
|
+
* Uses powers of 2 for bitwise operations - can combine with OR, check with AND
|
|
4
|
+
*
|
|
5
|
+
* Based on MOQT priority model adapted for home automation tiers:
|
|
6
|
+
* - REFLEX (Tier 0): Immediate autonomous response, no AI delay
|
|
7
|
+
* - SUPERVISED (Tier 1): Quick decision with timeout + default action
|
|
8
|
+
* - INFORMATIONAL (Tier 2): Passive awareness, respects quiet hours
|
|
9
|
+
* - LOG: Debug/metrics, lowest priority
|
|
10
|
+
*/
|
|
11
|
+
/**
|
|
12
|
+
* Priority levels as powers of 2 for bitwise operations
|
|
13
|
+
*/
|
|
14
|
+
export declare enum Priority {
|
|
15
|
+
/** Tier 0: Immediate reflex - smoke, gas, intrusion. No confirmation needed. */
|
|
16
|
+
REFLEX = 1,
|
|
17
|
+
/** Tier 1: Supervised action - requires approval within timeout window */
|
|
18
|
+
SUPERVISED = 32,
|
|
19
|
+
/** Tier 2: Informational alert - passive, respects quiet hours */
|
|
20
|
+
INFORMATIONAL = 64,
|
|
21
|
+
/** Logging/metrics - lowest priority */
|
|
22
|
+
LOG = 128
|
|
23
|
+
}
|
|
24
|
+
/**
|
|
25
|
+
* Priority masks for filtering
|
|
26
|
+
*/
|
|
27
|
+
export declare const PriorityMask: {
|
|
28
|
+
/** All critical priorities (REFLEX only) */
|
|
29
|
+
readonly CRITICAL: Priority.REFLEX;
|
|
30
|
+
/** Action priorities (REFLEX + SUPERVISED) */
|
|
31
|
+
readonly ACTIONABLE: number;
|
|
32
|
+
/** User-facing priorities (everything except LOG) */
|
|
33
|
+
readonly USER_FACING: number;
|
|
34
|
+
/** All priorities */
|
|
35
|
+
readonly ALL: number;
|
|
36
|
+
};
|
|
37
|
+
/**
|
|
38
|
+
* Check if a priority matches a mask
|
|
39
|
+
*/
|
|
40
|
+
export declare function matchesPriority(priority: Priority, mask: number): boolean;
|
|
41
|
+
/**
|
|
42
|
+
* Get human-readable priority name
|
|
43
|
+
*/
|
|
44
|
+
export declare function getPriorityName(priority: Priority): string;
|
|
45
|
+
/**
|
|
46
|
+
* Get tier number from priority
|
|
47
|
+
*/
|
|
48
|
+
export declare function getPriorityTier(priority: Priority): 0 | 1 | 2 | 3;
|
|
49
|
+
/**
|
|
50
|
+
* Check if priority should bypass quiet hours
|
|
51
|
+
*/
|
|
52
|
+
export declare function bypassesQuietHours(priority: Priority): boolean;
|
|
53
|
+
/**
|
|
54
|
+
* Check if priority requires immediate action (no AI delay)
|
|
55
|
+
*/
|
|
56
|
+
export declare function requiresImmediateAction(priority: Priority): boolean;
|
|
57
|
+
/**
|
|
58
|
+
* Check if priority requires user approval
|
|
59
|
+
*/
|
|
60
|
+
export declare function requiresApproval(priority: Priority): boolean;
|
|
@@ -0,0 +1,97 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Organism Priority System
|
|
3
|
+
* Uses powers of 2 for bitwise operations - can combine with OR, check with AND
|
|
4
|
+
*
|
|
5
|
+
* Based on MOQT priority model adapted for home automation tiers:
|
|
6
|
+
* - REFLEX (Tier 0): Immediate autonomous response, no AI delay
|
|
7
|
+
* - SUPERVISED (Tier 1): Quick decision with timeout + default action
|
|
8
|
+
* - INFORMATIONAL (Tier 2): Passive awareness, respects quiet hours
|
|
9
|
+
* - LOG: Debug/metrics, lowest priority
|
|
10
|
+
*/
|
|
11
|
+
/**
|
|
12
|
+
* Priority levels as powers of 2 for bitwise operations
|
|
13
|
+
*/
|
|
14
|
+
export var Priority;
|
|
15
|
+
(function (Priority) {
|
|
16
|
+
/** Tier 0: Immediate reflex - smoke, gas, intrusion. No confirmation needed. */
|
|
17
|
+
Priority[Priority["REFLEX"] = 1] = "REFLEX";
|
|
18
|
+
/** Tier 1: Supervised action - requires approval within timeout window */
|
|
19
|
+
Priority[Priority["SUPERVISED"] = 32] = "SUPERVISED";
|
|
20
|
+
/** Tier 2: Informational alert - passive, respects quiet hours */
|
|
21
|
+
Priority[Priority["INFORMATIONAL"] = 64] = "INFORMATIONAL";
|
|
22
|
+
/** Logging/metrics - lowest priority */
|
|
23
|
+
Priority[Priority["LOG"] = 128] = "LOG";
|
|
24
|
+
})(Priority || (Priority = {}));
|
|
25
|
+
/**
|
|
26
|
+
* Priority masks for filtering
|
|
27
|
+
*/
|
|
28
|
+
export const PriorityMask = {
|
|
29
|
+
/** All critical priorities (REFLEX only) */
|
|
30
|
+
CRITICAL: Priority.REFLEX,
|
|
31
|
+
/** Action priorities (REFLEX + SUPERVISED) */
|
|
32
|
+
ACTIONABLE: Priority.REFLEX | Priority.SUPERVISED,
|
|
33
|
+
/** User-facing priorities (everything except LOG) */
|
|
34
|
+
USER_FACING: Priority.REFLEX | Priority.SUPERVISED | Priority.INFORMATIONAL,
|
|
35
|
+
/** All priorities */
|
|
36
|
+
ALL: Priority.REFLEX | Priority.SUPERVISED | Priority.INFORMATIONAL | Priority.LOG,
|
|
37
|
+
};
|
|
38
|
+
/**
|
|
39
|
+
* Check if a priority matches a mask
|
|
40
|
+
*/
|
|
41
|
+
export function matchesPriority(priority, mask) {
|
|
42
|
+
return (priority & mask) !== 0;
|
|
43
|
+
}
|
|
44
|
+
/**
|
|
45
|
+
* Get human-readable priority name
|
|
46
|
+
*/
|
|
47
|
+
export function getPriorityName(priority) {
|
|
48
|
+
switch (priority) {
|
|
49
|
+
case Priority.REFLEX:
|
|
50
|
+
return 'reflex';
|
|
51
|
+
case Priority.SUPERVISED:
|
|
52
|
+
return 'supervised';
|
|
53
|
+
case Priority.INFORMATIONAL:
|
|
54
|
+
return 'informational';
|
|
55
|
+
case Priority.LOG:
|
|
56
|
+
return 'log';
|
|
57
|
+
default:
|
|
58
|
+
return 'unknown';
|
|
59
|
+
}
|
|
60
|
+
}
|
|
61
|
+
/**
|
|
62
|
+
* Get tier number from priority
|
|
63
|
+
*/
|
|
64
|
+
export function getPriorityTier(priority) {
|
|
65
|
+
switch (priority) {
|
|
66
|
+
case Priority.REFLEX:
|
|
67
|
+
return 0;
|
|
68
|
+
case Priority.SUPERVISED:
|
|
69
|
+
return 1;
|
|
70
|
+
case Priority.INFORMATIONAL:
|
|
71
|
+
return 2;
|
|
72
|
+
case Priority.LOG:
|
|
73
|
+
return 3;
|
|
74
|
+
default:
|
|
75
|
+
return 3;
|
|
76
|
+
}
|
|
77
|
+
}
|
|
78
|
+
/**
|
|
79
|
+
* Check if priority should bypass quiet hours
|
|
80
|
+
*/
|
|
81
|
+
export function bypassesQuietHours(priority) {
|
|
82
|
+
// Only REFLEX bypasses quiet hours
|
|
83
|
+
return priority === Priority.REFLEX;
|
|
84
|
+
}
|
|
85
|
+
/**
|
|
86
|
+
* Check if priority requires immediate action (no AI delay)
|
|
87
|
+
*/
|
|
88
|
+
export function requiresImmediateAction(priority) {
|
|
89
|
+
return priority === Priority.REFLEX;
|
|
90
|
+
}
|
|
91
|
+
/**
|
|
92
|
+
* Check if priority requires user approval
|
|
93
|
+
*/
|
|
94
|
+
export function requiresApproval(priority) {
|
|
95
|
+
return priority === Priority.SUPERVISED;
|
|
96
|
+
}
|
|
97
|
+
//# sourceMappingURL=priority.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"priority.js","sourceRoot":"","sources":["../../src/organism/priority.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAEH;;GAEG;AACH,MAAM,CAAN,IAAY,QAYX;AAZD,WAAY,QAAQ;IAClB,gFAAgF;IAChF,2CAAU,CAAA;IAEV,0EAA0E;IAC1E,oDAAe,CAAA;IAEf,kEAAkE;IAClE,0DAAkB,CAAA;IAElB,wCAAwC;IACxC,uCAAS,CAAA;AACX,CAAC,EAZW,QAAQ,KAAR,QAAQ,QAYnB;AAED;;GAEG;AACH,MAAM,CAAC,MAAM,YAAY,GAAG;IAC1B,4CAA4C;IAC5C,QAAQ,EAAE,QAAQ,CAAC,MAAM;IAEzB,8CAA8C;IAC9C,UAAU,EAAE,QAAQ,CAAC,MAAM,GAAG,QAAQ,CAAC,UAAU;IAEjD,qDAAqD;IACrD,WAAW,EAAE,QAAQ,CAAC,MAAM,GAAG,QAAQ,CAAC,UAAU,GAAG,QAAQ,CAAC,aAAa;IAE3E,qBAAqB;IACrB,GAAG,EAAE,QAAQ,CAAC,MAAM,GAAG,QAAQ,CAAC,UAAU,GAAG,QAAQ,CAAC,aAAa,GAAG,QAAQ,CAAC,GAAG;CAC1E,CAAC;AAEX;;GAEG;AACH,MAAM,UAAU,eAAe,CAAC,QAAkB,EAAE,IAAY;IAC9D,OAAO,CAAC,QAAQ,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC;AACjC,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,eAAe,CAAC,QAAkB;IAChD,QAAQ,QAAQ,EAAE,CAAC;QACjB,KAAK,QAAQ,CAAC,MAAM;YAClB,OAAO,QAAQ,CAAC;QAClB,KAAK,QAAQ,CAAC,UAAU;YACtB,OAAO,YAAY,CAAC;QACtB,KAAK,QAAQ,CAAC,aAAa;YACzB,OAAO,eAAe,CAAC;QACzB,KAAK,QAAQ,CAAC,GAAG;YACf,OAAO,KAAK,CAAC;QACf;YACE,OAAO,SAAS,CAAC;IACrB,CAAC;AACH,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,eAAe,CAAC,QAAkB;IAChD,QAAQ,QAAQ,EAAE,CAAC;QACjB,KAAK,QAAQ,CAAC,MAAM;YAClB,OAAO,CAAC,CAAC;QACX,KAAK,QAAQ,CAAC,UAAU;YACtB,OAAO,CAAC,CAAC;QACX,KAAK,QAAQ,CAAC,aAAa;YACzB,OAAO,CAAC,CAAC;QACX,KAAK,QAAQ,CAAC,GAAG;YACf,OAAO,CAAC,CAAC;QACX;YACE,OAAO,CAAC,CAAC;IACb,CAAC;AACH,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,kBAAkB,CAAC,QAAkB;IACnD,mCAAmC;IACnC,OAAO,QAAQ,KAAK,QAAQ,CAAC,MAAM,CAAC;AACtC,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,uBAAuB,CAAC,QAAkB;IACxD,OAAO,QAAQ,KAAK,QAAQ,CAAC,MAAM,CAAC;AACtC,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,gBAAgB,CAAC,QAAkB;IACjD,OAAO,QAAQ,KAAK,QAAQ,CAAC,UAAU,CAAC;AAC1C,CAAC"}
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Authentication middleware for HTTP server
|
|
3
|
+
* Supports bearer token authentication with multi-token support
|
|
4
|
+
*/
|
|
5
|
+
import type { IncomingMessage, ServerResponse } from 'node:http';
|
|
6
|
+
export type AuthMethod = 'none' | 'bearer';
|
|
7
|
+
export interface AuthConfig {
|
|
8
|
+
method: AuthMethod;
|
|
9
|
+
tokens?: Set<string>;
|
|
10
|
+
skipPaths?: string[];
|
|
11
|
+
}
|
|
12
|
+
export interface AuthResult {
|
|
13
|
+
authenticated: boolean;
|
|
14
|
+
error?: string;
|
|
15
|
+
}
|
|
16
|
+
/**
|
|
17
|
+
* Authentication middleware
|
|
18
|
+
* Returns true if request should proceed, false if blocked
|
|
19
|
+
*/
|
|
20
|
+
export declare function createAuthMiddleware(config: AuthConfig): (req: IncomingMessage, res: ServerResponse) => boolean;
|
|
@@ -0,0 +1,74 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Authentication middleware for HTTP server
|
|
3
|
+
* Supports bearer token authentication with multi-token support
|
|
4
|
+
*/
|
|
5
|
+
import { logger } from '../utils/logger.js';
|
|
6
|
+
/**
|
|
7
|
+
* Validate bearer token from Authorization header
|
|
8
|
+
*/
|
|
9
|
+
function validateBearerToken(req, validTokens) {
|
|
10
|
+
const authHeader = req.headers.authorization;
|
|
11
|
+
if (!authHeader) {
|
|
12
|
+
return { authenticated: false, error: 'Missing Authorization header' };
|
|
13
|
+
}
|
|
14
|
+
if (!authHeader.startsWith('Bearer ')) {
|
|
15
|
+
return { authenticated: false, error: 'Invalid Authorization header format. Expected: Bearer <token>' };
|
|
16
|
+
}
|
|
17
|
+
const token = authHeader.slice(7);
|
|
18
|
+
if (!validTokens.has(token)) {
|
|
19
|
+
return { authenticated: false, error: 'Invalid token' };
|
|
20
|
+
}
|
|
21
|
+
return { authenticated: true };
|
|
22
|
+
}
|
|
23
|
+
/**
|
|
24
|
+
* Authentication middleware
|
|
25
|
+
* Returns true if request should proceed, false if blocked
|
|
26
|
+
*/
|
|
27
|
+
export function createAuthMiddleware(config) {
|
|
28
|
+
const { method, tokens, skipPaths = [] } = config;
|
|
29
|
+
return (req, res) => {
|
|
30
|
+
// No auth required
|
|
31
|
+
if (method === 'none') {
|
|
32
|
+
return true;
|
|
33
|
+
}
|
|
34
|
+
// Check if path should skip auth
|
|
35
|
+
const url = req.url ?? '/';
|
|
36
|
+
const urlPath = url.split('?')[0];
|
|
37
|
+
if (skipPaths.some((path) => urlPath === path || urlPath.startsWith(path + '/'))) {
|
|
38
|
+
return true;
|
|
39
|
+
}
|
|
40
|
+
// Bearer auth
|
|
41
|
+
if (method === 'bearer') {
|
|
42
|
+
if (!tokens?.size) {
|
|
43
|
+
logger.error('Bearer auth enabled but no token configured');
|
|
44
|
+
res.statusCode = 500;
|
|
45
|
+
res.setHeader('Content-Type', 'application/json');
|
|
46
|
+
res.end(JSON.stringify({ error: 'Server misconfiguration: auth token not set' }));
|
|
47
|
+
return false;
|
|
48
|
+
}
|
|
49
|
+
const result = validateBearerToken(req, tokens);
|
|
50
|
+
if (!result.authenticated) {
|
|
51
|
+
logger.warn('Authentication failed', {
|
|
52
|
+
method: req.method,
|
|
53
|
+
url: urlPath,
|
|
54
|
+
error: result.error,
|
|
55
|
+
ip: req.socket.remoteAddress,
|
|
56
|
+
});
|
|
57
|
+
res.statusCode = 401;
|
|
58
|
+
res.setHeader('Content-Type', 'application/json');
|
|
59
|
+
res.setHeader('WWW-Authenticate', result.error === 'Invalid token' ? 'Bearer error="invalid_token"' : 'Bearer');
|
|
60
|
+
res.end(JSON.stringify({ error: 'Unauthorized', message: result.error }));
|
|
61
|
+
return false;
|
|
62
|
+
}
|
|
63
|
+
logger.debug('Authentication successful', { method: req.method, url: urlPath });
|
|
64
|
+
return true;
|
|
65
|
+
}
|
|
66
|
+
// Unknown auth method
|
|
67
|
+
logger.error('Unknown auth method', { method });
|
|
68
|
+
res.statusCode = 500;
|
|
69
|
+
res.setHeader('Content-Type', 'application/json');
|
|
70
|
+
res.end(JSON.stringify({ error: 'Server misconfiguration: unknown auth method' }));
|
|
71
|
+
return false;
|
|
72
|
+
};
|
|
73
|
+
}
|
|
74
|
+
//# sourceMappingURL=auth.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"auth.js","sourceRoot":"","sources":["../../src/server/auth.ts"],"names":[],"mappings":"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"}
|
package/dist/server/common.js
CHANGED
|
@@ -6,11 +6,12 @@ import { McpServer } from '@modelcontextprotocol/sdk/server/mcp.js';
|
|
|
6
6
|
import { registerAllTools } from '../tools/index.js';
|
|
7
7
|
import { registerAllResources } from '../resources/index.js';
|
|
8
8
|
import { logger } from '../utils/logger.js';
|
|
9
|
+
import { VERSION } from '../version.js';
|
|
9
10
|
export function createServer(client, aiClient) {
|
|
10
11
|
logger.debug('Creating MCP server instance');
|
|
11
12
|
const server = new McpServer({
|
|
12
13
|
name: 'mcp-ha-connect',
|
|
13
|
-
version:
|
|
14
|
+
version: VERSION,
|
|
14
15
|
});
|
|
15
16
|
// Register all Home Assistant tools
|
|
16
17
|
registerAllTools(server, client, aiClient);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"common.js","sourceRoot":"","sources":["../../src/server/common.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;AAGpE,OAAO,EAAE,gBAAgB,EAAE,MAAM,mBAAmB,CAAC;AACrD,OAAO,EAAE,oBAAoB,EAAE,MAAM,uBAAuB,CAAC;AAC7D,OAAO,EAAE,MAAM,EAAE,MAAM,oBAAoB,CAAC;
|
|
1
|
+
{"version":3,"file":"common.js","sourceRoot":"","sources":["../../src/server/common.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;AAGpE,OAAO,EAAE,gBAAgB,EAAE,MAAM,mBAAmB,CAAC;AACrD,OAAO,EAAE,oBAAoB,EAAE,MAAM,uBAAuB,CAAC;AAC7D,OAAO,EAAE,MAAM,EAAE,MAAM,oBAAoB,CAAC;AAC5C,OAAO,EAAE,OAAO,EAAE,MAAM,eAAe,CAAC;AAExC,MAAM,UAAU,YAAY,CAAC,MAAgB,EAAE,QAAwB;IACrE,MAAM,CAAC,KAAK,CAAC,8BAA8B,CAAC,CAAC;IAE7C,MAAM,MAAM,GAAG,IAAI,SAAS,CAAC;QAC3B,IAAI,EAAE,gBAAgB;QACtB,OAAO,EAAE,OAAO;KACjB,CAAC,CAAC;IAEH,oCAAoC;IACpC,gBAAgB,CAAC,MAAM,EAAE,MAAM,EAAE,QAAQ,CAAC,CAAC;IAE3C,wCAAwC;IACxC,oBAAoB,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAErC,MAAM,CAAC,KAAK,CAAC,6BAA6B,CAAC,CAAC;IAE5C,OAAO,MAAM,CAAC;AAChB,CAAC"}
|
package/dist/server/http.d.ts
CHANGED