@coffeerunhobby/mcp-ha-connect 0.9.0 → 1.0.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/Dockerfile +6 -8
- package/README.md +145 -24
- package/dist/config.d.ts +15 -3
- package/dist/config.js +53 -30
- package/dist/config.js.map +1 -1
- package/dist/env.d.ts +5 -0
- package/dist/env.js +13 -0
- package/dist/env.js.map +1 -0
- package/dist/haClient/index.d.ts +7 -2
- package/dist/haClient/index.js.map +1 -1
- package/dist/index.js +76 -32
- package/dist/index.js.map +1 -1
- package/dist/omadaClient/auth.d.ts +43 -0
- package/dist/omadaClient/auth.js +148 -0
- package/dist/omadaClient/auth.js.map +1 -0
- package/dist/omadaClient/client.d.ts +82 -0
- package/dist/omadaClient/client.js +173 -0
- package/dist/omadaClient/client.js.map +1 -0
- package/dist/omadaClient/device.d.ts +32 -0
- package/dist/omadaClient/device.js +80 -0
- package/dist/omadaClient/device.js.map +1 -0
- package/dist/omadaClient/http.d.ts +88 -0
- package/dist/omadaClient/http.js +176 -0
- package/dist/omadaClient/http.js.map +1 -0
- package/dist/omadaClient/index.d.ts +57 -0
- package/dist/omadaClient/index.js +136 -0
- package/dist/omadaClient/index.js.map +1 -0
- package/dist/omadaClient/network.d.ts +63 -0
- package/dist/omadaClient/network.js +114 -0
- package/dist/omadaClient/network.js.map +1 -0
- package/dist/omadaClient/request.d.ts +69 -0
- package/dist/omadaClient/request.js +266 -0
- package/dist/omadaClient/request.js.map +1 -0
- package/dist/omadaClient/security.d.ts +19 -0
- package/dist/omadaClient/security.js +44 -0
- package/dist/omadaClient/security.js.map +1 -0
- package/dist/omadaClient/site.d.ts +20 -0
- package/dist/omadaClient/site.js +33 -0
- package/dist/omadaClient/site.js.map +1 -0
- package/dist/permissions/index.d.ts +49 -0
- package/dist/permissions/index.js +77 -0
- package/dist/permissions/index.js.map +1 -0
- package/dist/plugins/homeassistant.d.ts +44 -0
- package/dist/plugins/homeassistant.js +101 -0
- package/dist/plugins/homeassistant.js.map +1 -0
- package/dist/plugins/index.d.ts +22 -0
- package/dist/plugins/index.js +91 -0
- package/dist/plugins/index.js.map +1 -0
- package/dist/plugins/localai.d.ts +48 -0
- package/dist/plugins/localai.js +111 -0
- package/dist/plugins/localai.js.map +1 -0
- package/dist/plugins/omada.d.ts +45 -0
- package/dist/plugins/omada.js +367 -0
- package/dist/plugins/omada.js.map +1 -0
- package/dist/plugins/registry.d.ts +93 -0
- package/dist/plugins/registry.js +196 -0
- package/dist/plugins/registry.js.map +1 -0
- package/dist/plugins/types.d.ts +101 -0
- package/dist/plugins/types.js +6 -0
- package/dist/plugins/types.js.map +1 -0
- package/dist/security/audit.d.ts +70 -0
- package/dist/security/audit.js +66 -0
- package/dist/security/audit.js.map +1 -0
- package/dist/security/guardrails.d.ts +66 -0
- package/dist/security/guardrails.js +263 -0
- package/dist/security/guardrails.js.map +1 -0
- package/dist/security/guardrails.test.d.ts +4 -0
- package/dist/security/guardrails.test.js +119 -0
- package/dist/security/guardrails.test.js.map +1 -0
- package/dist/security/index.d.ts +8 -0
- package/dist/security/index.js +17 -0
- package/dist/security/index.js.map +1 -0
- package/dist/security/ip-blocklist.d.ts +66 -0
- package/dist/security/ip-blocklist.js +283 -0
- package/dist/security/ip-blocklist.js.map +1 -0
- package/dist/security/ip-blocklist.test.d.ts +4 -0
- package/dist/security/ip-blocklist.test.js +173 -0
- package/dist/security/ip-blocklist.test.js.map +1 -0
- package/dist/security/policy.d.ts +287 -0
- package/dist/security/policy.js +316 -0
- package/dist/security/policy.js.map +1 -0
- package/dist/security/policy.test.d.ts +4 -0
- package/dist/security/policy.test.js +360 -0
- package/dist/security/policy.test.js.map +1 -0
- package/dist/server/auth.d.ts +12 -3
- package/dist/server/auth.js +46 -29
- package/dist/server/auth.js.map +1 -1
- package/dist/server/authConfig.d.ts +100 -0
- package/dist/server/authConfig.js +206 -0
- package/dist/server/authConfig.js.map +1 -0
- package/dist/server/common.d.ts +7 -1
- package/dist/server/common.js +13 -5
- package/dist/server/common.js.map +1 -1
- package/dist/server/http.d.ts +8 -1
- package/dist/server/http.js +14 -10
- package/dist/server/http.js.map +1 -1
- package/dist/server/jwt.d.ts +35 -0
- package/dist/server/jwt.js +123 -0
- package/dist/server/jwt.js.map +1 -0
- package/dist/server/stdio.d.ts +7 -1
- package/dist/server/stdio.js +2 -2
- package/dist/server/stdio.js.map +1 -1
- package/dist/server/stream.d.ts +9 -2
- package/dist/server/stream.js +6 -4
- package/dist/server/stream.js.map +1 -1
- package/dist/tools/ai/analyzeSensors.d.ts +6 -0
- package/dist/tools/ai/analyzeSensors.js +23 -0
- package/dist/tools/ai/analyzeSensors.js.map +1 -0
- package/dist/tools/ai/index.d.ts +6 -0
- package/dist/tools/ai/index.js +14 -0
- package/dist/tools/ai/index.js.map +1 -0
- package/dist/tools/allMetadata.d.ts +47 -0
- package/dist/tools/allMetadata.js +373 -0
- package/dist/tools/allMetadata.js.map +1 -0
- package/dist/tools/analyzeSensors.js +2 -2
- package/dist/tools/analyzeSensors.js.map +1 -1
- package/dist/tools/automationControls.js +5 -5
- package/dist/tools/automationControls.js.map +1 -1
- package/dist/tools/calendar.js +3 -3
- package/dist/tools/calendar.js.map +1 -1
- package/dist/tools/callService.js +2 -2
- package/dist/tools/callService.js.map +1 -1
- package/dist/tools/common.d.ts +72 -6
- package/dist/tools/common.js +50 -2
- package/dist/tools/common.js.map +1 -1
- package/dist/tools/controlClimate.js +2 -2
- package/dist/tools/controlClimate.js.map +1 -1
- package/dist/tools/controlCover.js +2 -2
- package/dist/tools/controlCover.js.map +1 -1
- package/dist/tools/controlFan.js +2 -2
- package/dist/tools/controlFan.js.map +1 -1
- package/dist/tools/controlLight.js +2 -2
- package/dist/tools/controlLight.js.map +1 -1
- package/dist/tools/controlMediaPlayer.js +2 -2
- package/dist/tools/controlMediaPlayer.js.map +1 -1
- package/dist/tools/createAutomation.js +2 -2
- package/dist/tools/createAutomation.js.map +1 -1
- package/dist/tools/deleteAutomation.js +2 -2
- package/dist/tools/deleteAutomation.js.map +1 -1
- package/dist/tools/entityAction.js +2 -2
- package/dist/tools/entityAction.js.map +1 -1
- package/dist/tools/getAllSensors.js +2 -2
- package/dist/tools/getAllSensors.js.map +1 -1
- package/dist/tools/getAutomationTrace.js +2 -2
- package/dist/tools/getAutomationTrace.js.map +1 -1
- package/dist/tools/getDomainSummary.js +2 -2
- package/dist/tools/getDomainSummary.js.map +1 -1
- package/dist/tools/getEntitiesByDomain.js +2 -2
- package/dist/tools/getEntitiesByDomain.js.map +1 -1
- package/dist/tools/getHistory.js +2 -2
- package/dist/tools/getHistory.js.map +1 -1
- package/dist/tools/getState.js +2 -2
- package/dist/tools/getState.js.map +1 -1
- package/dist/tools/getStates.js +2 -2
- package/dist/tools/getStates.js.map +1 -1
- package/dist/tools/getVersion.js +2 -2
- package/dist/tools/getVersion.js.map +1 -1
- package/dist/tools/homeassistant/automationControls.d.ts +9 -0
- package/dist/tools/homeassistant/automationControls.js +41 -0
- package/dist/tools/homeassistant/automationControls.js.map +1 -0
- package/dist/tools/homeassistant/calendar.d.ts +7 -0
- package/dist/tools/homeassistant/calendar.js +82 -0
- package/dist/tools/homeassistant/calendar.js.map +1 -0
- package/dist/tools/homeassistant/callService.d.ts +6 -0
- package/dist/tools/homeassistant/callService.js +17 -0
- package/dist/tools/homeassistant/callService.js.map +1 -0
- package/dist/tools/homeassistant/controlClimate.d.ts +6 -0
- package/dist/tools/homeassistant/controlClimate.js +50 -0
- package/dist/tools/homeassistant/controlClimate.js.map +1 -0
- package/dist/tools/homeassistant/controlCover.d.ts +6 -0
- package/dist/tools/homeassistant/controlCover.js +33 -0
- package/dist/tools/homeassistant/controlCover.js.map +1 -0
- package/dist/tools/homeassistant/controlFan.d.ts +6 -0
- package/dist/tools/homeassistant/controlFan.js +34 -0
- package/dist/tools/homeassistant/controlFan.js.map +1 -0
- package/dist/tools/homeassistant/controlLight.d.ts +6 -0
- package/dist/tools/homeassistant/controlLight.js +28 -0
- package/dist/tools/homeassistant/controlLight.js.map +1 -0
- package/dist/tools/homeassistant/controlMediaPlayer.d.ts +6 -0
- package/dist/tools/homeassistant/controlMediaPlayer.js +35 -0
- package/dist/tools/homeassistant/controlMediaPlayer.js.map +1 -0
- package/dist/tools/homeassistant/createAutomation.d.ts +6 -0
- package/dist/tools/homeassistant/createAutomation.js +24 -0
- package/dist/tools/homeassistant/createAutomation.js.map +1 -0
- package/dist/tools/homeassistant/deleteAutomation.d.ts +6 -0
- package/dist/tools/homeassistant/deleteAutomation.js +14 -0
- package/dist/tools/homeassistant/deleteAutomation.js.map +1 -0
- package/dist/tools/homeassistant/entityAction.d.ts +6 -0
- package/dist/tools/homeassistant/entityAction.js +22 -0
- package/dist/tools/homeassistant/entityAction.js.map +1 -0
- package/dist/tools/homeassistant/getAllSensors.d.ts +6 -0
- package/dist/tools/homeassistant/getAllSensors.js +14 -0
- package/dist/tools/homeassistant/getAllSensors.js.map +1 -0
- package/dist/tools/homeassistant/getAutomationTrace.d.ts +6 -0
- package/dist/tools/homeassistant/getAutomationTrace.js +14 -0
- package/dist/tools/homeassistant/getAutomationTrace.js.map +1 -0
- package/dist/tools/homeassistant/getDomainSummary.d.ts +6 -0
- package/dist/tools/homeassistant/getDomainSummary.js +14 -0
- package/dist/tools/homeassistant/getDomainSummary.js.map +1 -0
- package/dist/tools/homeassistant/getEntitiesByDomain.d.ts +6 -0
- package/dist/tools/homeassistant/getEntitiesByDomain.js +14 -0
- package/dist/tools/homeassistant/getEntitiesByDomain.js.map +1 -0
- package/dist/tools/homeassistant/getHistory.d.ts +6 -0
- package/dist/tools/homeassistant/getHistory.js +14 -0
- package/dist/tools/homeassistant/getHistory.js.map +1 -0
- package/dist/tools/homeassistant/getState.d.ts +6 -0
- package/dist/tools/homeassistant/getState.js +17 -0
- package/dist/tools/homeassistant/getState.js.map +1 -0
- package/dist/tools/homeassistant/getStates.d.ts +6 -0
- package/dist/tools/homeassistant/getStates.js +14 -0
- package/dist/tools/homeassistant/getStates.js.map +1 -0
- package/dist/tools/homeassistant/getVersion.d.ts +6 -0
- package/dist/tools/homeassistant/getVersion.js +14 -0
- package/dist/tools/homeassistant/getVersion.js.map +1 -0
- package/dist/tools/homeassistant/index.d.ts +6 -0
- package/dist/tools/homeassistant/index.js +94 -0
- package/dist/tools/homeassistant/index.js.map +1 -0
- package/dist/tools/homeassistant/listAutomations.d.ts +6 -0
- package/dist/tools/homeassistant/listAutomations.js +17 -0
- package/dist/tools/homeassistant/listAutomations.js.map +1 -0
- package/dist/tools/homeassistant/listEntities.d.ts +6 -0
- package/dist/tools/homeassistant/listEntities.js +14 -0
- package/dist/tools/homeassistant/listEntities.js.map +1 -0
- package/dist/tools/homeassistant/listPersons.d.ts +6 -0
- package/dist/tools/homeassistant/listPersons.js +36 -0
- package/dist/tools/homeassistant/listPersons.js.map +1 -0
- package/dist/tools/homeassistant/sceneAndScript.d.ts +7 -0
- package/dist/tools/homeassistant/sceneAndScript.js +32 -0
- package/dist/tools/homeassistant/sceneAndScript.js.map +1 -0
- package/dist/tools/homeassistant/searchEntities.d.ts +6 -0
- package/dist/tools/homeassistant/searchEntities.js +16 -0
- package/dist/tools/homeassistant/searchEntities.js.map +1 -0
- package/dist/tools/homeassistant/sendNotification.d.ts +8 -0
- package/dist/tools/homeassistant/sendNotification.js +160 -0
- package/dist/tools/homeassistant/sendNotification.js.map +1 -0
- package/dist/tools/homeassistant/systemTools.d.ts +8 -0
- package/dist/tools/homeassistant/systemTools.js +32 -0
- package/dist/tools/homeassistant/systemTools.js.map +1 -0
- package/dist/tools/homeassistant/triggerAutomation.d.ts +6 -0
- package/dist/tools/homeassistant/triggerAutomation.js +14 -0
- package/dist/tools/homeassistant/triggerAutomation.js.map +1 -0
- package/dist/tools/index.d.ts +16 -3
- package/dist/tools/index.js +35 -93
- package/dist/tools/index.js.map +1 -1
- package/dist/tools/lazyLoader.d.ts +50 -0
- package/dist/tools/lazyLoader.js +140 -0
- package/dist/tools/lazyLoader.js.map +1 -0
- package/dist/tools/listAutomations.js +2 -2
- package/dist/tools/listAutomations.js.map +1 -1
- package/dist/tools/listEntities.js +2 -2
- package/dist/tools/listEntities.js.map +1 -1
- package/dist/tools/listPersons.js +2 -2
- package/dist/tools/listPersons.js.map +1 -1
- package/dist/tools/localai/analyzeSensors.d.ts +6 -0
- package/dist/tools/localai/analyzeSensors.js +23 -0
- package/dist/tools/localai/analyzeSensors.js.map +1 -0
- package/dist/tools/localai/index.d.ts +5 -0
- package/dist/tools/localai/index.js +6 -0
- package/dist/tools/localai/index.js.map +1 -0
- package/dist/tools/metaTools.d.ts +74 -0
- package/dist/tools/metaTools.js +347 -0
- package/dist/tools/metaTools.js.map +1 -0
- package/dist/tools/omada/disableClientRateLimit.d.ts +3 -0
- package/dist/tools/omada/disableClientRateLimit.js +13 -0
- package/dist/tools/omada/disableClientRateLimit.js.map +1 -0
- package/dist/tools/omada/getClient.d.ts +3 -0
- package/dist/tools/omada/getClient.js +8 -0
- package/dist/tools/omada/getClient.js.map +1 -0
- package/dist/tools/omada/getDevice.d.ts +3 -0
- package/dist/tools/omada/getDevice.js +8 -0
- package/dist/tools/omada/getDevice.js.map +1 -0
- package/dist/tools/omada/getFirewallSetting.d.ts +3 -0
- package/dist/tools/omada/getFirewallSetting.js +8 -0
- package/dist/tools/omada/getFirewallSetting.js.map +1 -0
- package/dist/tools/omada/getInternetInfo.d.ts +3 -0
- package/dist/tools/omada/getInternetInfo.js +8 -0
- package/dist/tools/omada/getInternetInfo.js.map +1 -0
- package/dist/tools/omada/getLanNetworkList.d.ts +3 -0
- package/dist/tools/omada/getLanNetworkList.js +8 -0
- package/dist/tools/omada/getLanNetworkList.js.map +1 -0
- package/dist/tools/omada/getLanProfileList.d.ts +3 -0
- package/dist/tools/omada/getLanProfileList.js +8 -0
- package/dist/tools/omada/getLanProfileList.js.map +1 -0
- package/dist/tools/omada/getPortForwardingStatus.d.ts +3 -0
- package/dist/tools/omada/getPortForwardingStatus.js +15 -0
- package/dist/tools/omada/getPortForwardingStatus.js.map +1 -0
- package/dist/tools/omada/getRateLimitProfiles.d.ts +3 -0
- package/dist/tools/omada/getRateLimitProfiles.js +8 -0
- package/dist/tools/omada/getRateLimitProfiles.js.map +1 -0
- package/dist/tools/omada/getSsidDetail.d.ts +3 -0
- package/dist/tools/omada/getSsidDetail.js +14 -0
- package/dist/tools/omada/getSsidDetail.js.map +1 -0
- package/dist/tools/omada/getSsidList.d.ts +3 -0
- package/dist/tools/omada/getSsidList.js +13 -0
- package/dist/tools/omada/getSsidList.js.map +1 -0
- package/dist/tools/omada/getSwitchStackDetail.d.ts +3 -0
- package/dist/tools/omada/getSwitchStackDetail.js +8 -0
- package/dist/tools/omada/getSwitchStackDetail.js.map +1 -0
- package/dist/tools/omada/getThreatList.d.ts +3 -0
- package/dist/tools/omada/getThreatList.js +33 -0
- package/dist/tools/omada/getThreatList.js.map +1 -0
- package/dist/tools/omada/getWlanGroupList.d.ts +3 -0
- package/dist/tools/omada/getWlanGroupList.js +8 -0
- package/dist/tools/omada/getWlanGroupList.js.map +1 -0
- package/dist/tools/omada/index.d.ts +6 -0
- package/dist/tools/omada/index.js +71 -0
- package/dist/tools/omada/index.js.map +1 -0
- package/dist/tools/omada/listClients.d.ts +3 -0
- package/dist/tools/omada/listClients.js +8 -0
- package/dist/tools/omada/listClients.js.map +1 -0
- package/dist/tools/omada/listClientsActivity.d.ts +3 -0
- package/dist/tools/omada/listClientsActivity.js +14 -0
- package/dist/tools/omada/listClientsActivity.js.map +1 -0
- package/dist/tools/omada/listClientsPastConnections.d.ts +3 -0
- package/dist/tools/omada/listClientsPastConnections.js +31 -0
- package/dist/tools/omada/listClientsPastConnections.js.map +1 -0
- package/dist/tools/omada/listDevices.d.ts +3 -0
- package/dist/tools/omada/listDevices.js +8 -0
- package/dist/tools/omada/listDevices.js.map +1 -0
- package/dist/tools/omada/listDevicesStats.d.ts +3 -0
- package/dist/tools/omada/listDevicesStats.js +28 -0
- package/dist/tools/omada/listDevicesStats.js.map +1 -0
- package/dist/tools/omada/listMostActiveClients.d.ts +3 -0
- package/dist/tools/omada/listMostActiveClients.js +8 -0
- package/dist/tools/omada/listMostActiveClients.js.map +1 -0
- package/dist/tools/omada/listSites.d.ts +3 -0
- package/dist/tools/omada/listSites.js +10 -0
- package/dist/tools/omada/listSites.js.map +1 -0
- package/dist/tools/omada/metadata.d.ts +18 -0
- package/dist/tools/omada/metadata.js +336 -0
- package/dist/tools/omada/metadata.js.map +1 -0
- package/dist/tools/omada/searchDevices.d.ts +3 -0
- package/dist/tools/omada/searchDevices.js +12 -0
- package/dist/tools/omada/searchDevices.js.map +1 -0
- package/dist/tools/omada/setClientRateLimit.d.ts +3 -0
- package/dist/tools/omada/setClientRateLimit.js +15 -0
- package/dist/tools/omada/setClientRateLimit.js.map +1 -0
- package/dist/tools/omada/setClientRateLimitProfile.d.ts +3 -0
- package/dist/tools/omada/setClientRateLimitProfile.js +14 -0
- package/dist/tools/omada/setClientRateLimitProfile.js.map +1 -0
- package/dist/tools/registry.d.ts +105 -0
- package/dist/tools/registry.js +79 -0
- package/dist/tools/registry.js.map +1 -0
- package/dist/tools/sceneAndScript.js +3 -3
- package/dist/tools/sceneAndScript.js.map +1 -1
- package/dist/tools/searchEntities.js +2 -2
- package/dist/tools/searchEntities.js.map +1 -1
- package/dist/tools/sendNotification.js +3 -3
- package/dist/tools/sendNotification.js.map +1 -1
- package/dist/tools/systemTools.js +4 -4
- package/dist/tools/systemTools.js.map +1 -1
- package/dist/tools/triggerAutomation.js +2 -2
- package/dist/tools/triggerAutomation.js.map +1 -1
- package/dist/tools/types.d.ts +9 -0
- package/dist/tools/types.js +5 -0
- package/dist/tools/types.js.map +1 -0
- package/dist/tools/utils/pagination-schema.d.ts +23 -0
- package/dist/tools/utils/pagination-schema.js +19 -0
- package/dist/tools/utils/pagination-schema.js.map +1 -0
- package/dist/types/ai/index.d.ts +4 -0
- package/dist/types/ai/index.js +5 -0
- package/dist/types/ai/index.js.map +1 -0
- package/dist/types/ai/types.d.ts +60 -0
- package/dist/types/ai/types.js +6 -0
- package/dist/types/ai/types.js.map +1 -0
- package/dist/types/homeassistant/automations.d.ts +38 -0
- package/dist/types/homeassistant/automations.js +5 -0
- package/dist/types/homeassistant/automations.js.map +1 -0
- package/dist/types/homeassistant/calendars.d.ts +24 -0
- package/dist/types/homeassistant/calendars.js +5 -0
- package/dist/types/homeassistant/calendars.js.map +1 -0
- package/dist/types/homeassistant/config.d.ts +10 -0
- package/dist/types/homeassistant/config.js +6 -0
- package/dist/types/homeassistant/config.js.map +1 -0
- package/dist/types/homeassistant/entities.d.ts +13 -0
- package/dist/types/homeassistant/entities.js +5 -0
- package/dist/types/homeassistant/entities.js.map +1 -0
- package/dist/types/homeassistant/errors.d.ts +15 -0
- package/dist/types/homeassistant/errors.js +32 -0
- package/dist/types/homeassistant/errors.js.map +1 -0
- package/dist/types/homeassistant/haConfig.d.ts +7 -0
- package/dist/types/homeassistant/haConfig.js +2 -0
- package/dist/types/homeassistant/haConfig.js.map +1 -0
- package/dist/types/homeassistant/history.d.ts +12 -0
- package/dist/types/homeassistant/history.js +5 -0
- package/dist/types/homeassistant/history.js.map +1 -0
- package/dist/types/homeassistant/index.d.ts +14 -0
- package/dist/types/homeassistant/index.js +6 -0
- package/dist/types/homeassistant/index.js.map +1 -0
- package/dist/types/homeassistant/request.d.ts +6 -0
- package/dist/types/homeassistant/request.js +2 -0
- package/dist/types/homeassistant/request.js.map +1 -0
- package/dist/types/homeassistant/serviceCall.d.ts +17 -0
- package/dist/types/homeassistant/serviceCall.js +2 -0
- package/dist/types/homeassistant/serviceCall.js.map +1 -0
- package/dist/types/homeassistant/states.d.ts +19 -0
- package/dist/types/homeassistant/states.js +5 -0
- package/dist/types/homeassistant/states.js.map +1 -0
- package/dist/types/homeassistant/updates.d.ts +24 -0
- package/dist/types/homeassistant/updates.js +5 -0
- package/dist/types/homeassistant/updates.js.map +1 -0
- package/dist/types/index.d.ts +6 -11
- package/dist/types/index.js +9 -2
- package/dist/types/index.js.map +1 -1
- package/dist/types/localai/index.d.ts +5 -0
- package/dist/types/localai/index.js +6 -0
- package/dist/types/localai/index.js.map +1 -0
- package/dist/types/localai/types.d.ts +60 -0
- package/dist/types/localai/types.js +6 -0
- package/dist/types/localai/types.js.map +1 -0
- package/dist/types/omada/activeClientInfo.d.ts +17 -0
- package/dist/types/omada/activeClientInfo.js +2 -0
- package/dist/types/omada/activeClientInfo.js.map +1 -0
- package/dist/types/omada/clientActivity.d.ts +31 -0
- package/dist/types/omada/clientActivity.js +2 -0
- package/dist/types/omada/clientActivity.js.map +1 -0
- package/dist/types/omada/clientPastConnection.d.ts +59 -0
- package/dist/types/omada/clientPastConnection.js +2 -0
- package/dist/types/omada/clientPastConnection.js.map +1 -0
- package/dist/types/omada/index.d.ts +13 -0
- package/dist/types/omada/index.js +2 -0
- package/dist/types/omada/index.js.map +1 -0
- package/dist/types/omada/omadaApiResponse.d.ts +5 -0
- package/dist/types/omada/omadaApiResponse.js +2 -0
- package/dist/types/omada/omadaApiResponse.js.map +1 -0
- package/dist/types/omada/omadaClientInfo.d.ts +11 -0
- package/dist/types/omada/omadaClientInfo.js +2 -0
- package/dist/types/omada/omadaClientInfo.js.map +1 -0
- package/dist/types/omada/omadaDeviceInfo.d.ts +11 -0
- package/dist/types/omada/omadaDeviceInfo.js +2 -0
- package/dist/types/omada/omadaDeviceInfo.js.map +1 -0
- package/dist/types/omada/omadaDeviceStats.d.ts +29 -0
- package/dist/types/omada/omadaDeviceStats.js +2 -0
- package/dist/types/omada/omadaDeviceStats.js.map +1 -0
- package/dist/types/omada/omadaSiteSummary.d.ts +5 -0
- package/dist/types/omada/omadaSiteSummary.js +2 -0
- package/dist/types/omada/omadaSiteSummary.js.map +1 -0
- package/dist/types/omada/oswStackDetail.d.ts +11 -0
- package/dist/types/omada/oswStackDetail.js +2 -0
- package/dist/types/omada/oswStackDetail.js.map +1 -0
- package/dist/types/omada/paginatedResult.d.ts +6 -0
- package/dist/types/omada/paginatedResult.js +2 -0
- package/dist/types/omada/paginatedResult.js.map +1 -0
- package/dist/types/omada/rateLimitProfile.d.ts +56 -0
- package/dist/types/omada/rateLimitProfile.js +2 -0
- package/dist/types/omada/rateLimitProfile.js.map +1 -0
- package/dist/types/omada/threatInfo.d.ts +37 -0
- package/dist/types/omada/threatInfo.js +2 -0
- package/dist/types/omada/threatInfo.js.map +1 -0
- package/dist/types/omada/tokenResult.d.ts +6 -0
- package/dist/types/omada/tokenResult.js +2 -0
- package/dist/types/omada/tokenResult.js.map +1 -0
- package/dist/types/permissions.d.ts +92 -0
- package/dist/types/permissions.js +136 -0
- package/dist/types/permissions.js.map +1 -0
- package/dist/utils/jwt.d.ts +18 -0
- package/dist/utils/jwt.js +47 -0
- package/dist/utils/jwt.js.map +1 -0
- package/dist/utils/logger.d.ts +4 -5
- package/dist/utils/logger.js +70 -59
- package/dist/utils/logger.js.map +1 -1
- package/dist/version.d.ts +1 -1
- package/dist/version.js +1 -1
- package/dist/wrapper.js +1 -1
- package/dist/wrapper.js.map +1 -1
- package/docs/CHANGELOG.md +37 -6
- package/docs/COVERAGE.md +219 -0
- package/docs/{Quick_Start.md → QUICK_START.md} +32 -7
- package/package.json +6 -6
- package/scripts/generate-jwt.ts +122 -0
- package/src/config.ts +78 -38
- package/src/haClient/index.ts +8 -2
- package/src/index.ts +74 -33
- package/src/omadaClient/auth.ts +176 -0
- package/src/omadaClient/client.ts +225 -0
- package/src/omadaClient/device.ts +91 -0
- package/src/omadaClient/index.ts +206 -0
- package/src/omadaClient/network.ts +129 -0
- package/src/omadaClient/request.ts +332 -0
- package/src/omadaClient/security.ts +51 -0
- package/src/omadaClient/site.ts +37 -0
- package/src/permissions/index.ts +101 -0
- package/src/server/auth.ts +59 -31
- package/src/server/common.ts +20 -5
- package/src/server/http.ts +23 -8
- package/src/server/stdio.ts +9 -2
- package/src/server/stream.ts +15 -7
- package/src/tools/{analyzeSensors.ts → ai/analyzeSensors.ts} +3 -3
- package/src/tools/ai/index.ts +20 -0
- package/src/tools/common.ts +61 -2
- package/src/tools/{automationControls.ts → homeassistant/automationControls.ts} +6 -6
- package/src/tools/{calendar.ts → homeassistant/calendar.ts} +4 -4
- package/src/tools/{callService.ts → homeassistant/callService.ts} +4 -4
- package/src/tools/{controlClimate.ts → homeassistant/controlClimate.ts} +3 -3
- package/src/tools/{controlCover.ts → homeassistant/controlCover.ts} +3 -3
- package/src/tools/{controlFan.ts → homeassistant/controlFan.ts} +3 -3
- package/src/tools/{controlLight.ts → homeassistant/controlLight.ts} +3 -3
- package/src/tools/{controlMediaPlayer.ts → homeassistant/controlMediaPlayer.ts} +3 -3
- package/src/tools/{createAutomation.ts → homeassistant/createAutomation.ts} +4 -4
- package/src/tools/{deleteAutomation.ts → homeassistant/deleteAutomation.ts} +3 -3
- package/src/tools/{entityAction.ts → homeassistant/entityAction.ts} +3 -3
- package/src/tools/{getAllSensors.ts → homeassistant/getAllSensors.ts} +3 -3
- package/src/tools/{getAutomationTrace.ts → homeassistant/getAutomationTrace.ts} +3 -3
- package/src/tools/{getDomainSummary.ts → homeassistant/getDomainSummary.ts} +3 -3
- package/src/tools/{getEntitiesByDomain.ts → homeassistant/getEntitiesByDomain.ts} +3 -3
- package/src/tools/{getHistory.ts → homeassistant/getHistory.ts} +3 -3
- package/src/tools/{getState.ts → homeassistant/getState.ts} +3 -3
- package/src/tools/{getStates.ts → homeassistant/getStates.ts} +3 -3
- package/src/tools/{getVersion.ts → homeassistant/getVersion.ts} +3 -3
- package/src/tools/homeassistant/index.ts +121 -0
- package/src/tools/{listAutomations.ts → homeassistant/listAutomations.ts} +3 -3
- package/src/tools/{listEntities.ts → homeassistant/listEntities.ts} +3 -3
- package/src/tools/{listPersons.ts → homeassistant/listPersons.ts} +3 -3
- package/src/tools/{sceneAndScript.ts → homeassistant/sceneAndScript.ts} +4 -4
- package/src/tools/{searchEntities.ts → homeassistant/searchEntities.ts} +3 -3
- package/src/tools/{sendNotification.ts → homeassistant/sendNotification.ts} +4 -4
- package/src/tools/{systemTools.ts → homeassistant/systemTools.ts} +5 -5
- package/src/tools/{triggerAutomation.ts → homeassistant/triggerAutomation.ts} +3 -3
- package/src/tools/index.ts +47 -116
- package/src/tools/omada/disableClientRateLimit.ts +23 -0
- package/src/tools/omada/getClient.ts +15 -0
- package/src/tools/omada/getDevice.ts +15 -0
- package/src/tools/omada/getFirewallSetting.ts +15 -0
- package/src/tools/omada/getInternetInfo.ts +15 -0
- package/src/tools/omada/getLanNetworkList.ts +15 -0
- package/src/tools/omada/getLanProfileList.ts +15 -0
- package/src/tools/omada/getPortForwardingStatus.ts +26 -0
- package/src/tools/omada/getRateLimitProfiles.ts +15 -0
- package/src/tools/omada/getSsidDetail.ts +22 -0
- package/src/tools/omada/getSsidList.ts +21 -0
- package/src/tools/omada/getSwitchStackDetail.ts +15 -0
- package/src/tools/omada/getThreatList.ts +42 -0
- package/src/tools/omada/getWlanGroupList.ts +15 -0
- package/src/tools/omada/index.ts +82 -0
- package/src/tools/omada/listClients.ts +15 -0
- package/src/tools/omada/listClientsActivity.ts +25 -0
- package/src/tools/omada/listClientsPastConnections.ts +44 -0
- package/src/tools/omada/listDevices.ts +15 -0
- package/src/tools/omada/listDevicesStats.ts +41 -0
- package/src/tools/omada/listMostActiveClients.ts +15 -0
- package/src/tools/omada/listSites.ts +18 -0
- package/src/tools/omada/searchDevices.ts +20 -0
- package/src/tools/omada/setClientRateLimit.ts +26 -0
- package/src/tools/omada/setClientRateLimitProfile.ts +25 -0
- package/src/tools/types.ts +11 -0
- package/src/tools/utils/pagination-schema.ts +27 -0
- package/src/types/ai/index.ts +11 -0
- package/src/types/ai/types.ts +67 -0
- package/src/types/homeassistant/index.ts +45 -0
- package/src/types/index.ts +9 -38
- package/src/types/omada/activeClientInfo.ts +17 -0
- package/src/types/omada/clientActivity.ts +32 -0
- package/src/types/omada/clientPastConnection.ts +82 -0
- package/src/types/omada/index.ts +13 -0
- package/src/types/omada/omadaApiResponse.ts +5 -0
- package/src/types/omada/omadaClientInfo.ts +11 -0
- package/src/types/omada/omadaDeviceInfo.ts +11 -0
- package/src/types/omada/omadaDeviceStats.ts +31 -0
- package/src/types/omada/omadaSiteSummary.ts +5 -0
- package/src/types/omada/oswStackDetail.ts +11 -0
- package/src/types/omada/paginatedResult.ts +6 -0
- package/src/types/omada/rateLimitProfile.ts +58 -0
- package/src/types/omada/threatInfo.ts +38 -0
- package/src/types/omada/tokenResult.ts +6 -0
- package/src/utils/jwt.ts +69 -0
- package/src/utils/logger.ts +72 -66
- package/src/version.ts +1 -1
- package/src/wrapper.ts +1 -1
- package/tests/bdd/configuration.spec.ts +10 -8
- package/tests/config.test.ts +8 -4
- package/tests/features/configuration.feature +4 -4
- package/tests/haClient/index.test.ts +3 -13
- package/tests/permissions/index.test.ts +173 -0
- package/tests/resources/index.test.ts +288 -0
- package/tests/server/auth.test.ts +64 -46
- package/tests/server/common.test.ts +49 -29
- package/tests/server/stdio.test.ts +27 -28
- package/tests/tools/ai/analyzeSensors.test.ts +235 -0
- package/tests/tools/common.test.ts +124 -0
- package/tests/tools/homeassistant/handlers.test.ts +815 -0
- package/tests/tools/omada/handlers.test.ts +854 -0
- package/tests/tools/registry.test.ts +32 -26
- package/tests/utils/jwt.test.ts +115 -0
- package/docs/LOCAL_CLIENT.md +0 -572
- package/docs/SSE_API.md +0 -341
- package/src/autonomic/index.ts +0 -16
- package/src/autonomic/priority.ts +0 -109
- package/tests/autonomic/priority.test.ts +0 -171
- /package/src/types/{automations.ts → homeassistant/automations.ts} +0 -0
- /package/src/types/{calendars.ts → homeassistant/calendars.ts} +0 -0
- /package/src/types/{config.ts → homeassistant/config.ts} +0 -0
- /package/src/types/{entities.ts → homeassistant/entities.ts} +0 -0
- /package/src/types/{errors.ts → homeassistant/errors.ts} +0 -0
- /package/src/types/{haConfig.ts → homeassistant/haConfig.ts} +0 -0
- /package/src/types/{history.ts → homeassistant/history.ts} +0 -0
- /package/src/types/{request.ts → homeassistant/request.ts} +0 -0
- /package/src/types/{serviceCall.ts → homeassistant/serviceCall.ts} +0 -0
- /package/src/types/{states.ts → homeassistant/states.ts} +0 -0
- /package/src/types/{updates.ts → homeassistant/updates.ts} +0 -0
package/Dockerfile
CHANGED
|
@@ -1,21 +1,21 @@
|
|
|
1
1
|
# syntax=docker/dockerfile:1.7
|
|
2
2
|
|
|
3
|
-
FROM node:25-
|
|
3
|
+
FROM node:25-alpine AS deps
|
|
4
4
|
WORKDIR /app
|
|
5
5
|
COPY package*.json ./
|
|
6
6
|
RUN npm install
|
|
7
7
|
|
|
8
|
-
FROM node:25-
|
|
8
|
+
FROM node:25-alpine AS build
|
|
9
9
|
WORKDIR /app
|
|
10
10
|
COPY --from=deps /app/node_modules ./node_modules
|
|
11
11
|
COPY . .
|
|
12
12
|
RUN npm run build
|
|
13
13
|
|
|
14
|
-
FROM node:25-
|
|
14
|
+
FROM node:25-alpine AS runtime
|
|
15
15
|
|
|
16
16
|
# OCI metadata labels
|
|
17
|
-
LABEL org.opencontainers.image.title="
|
|
18
|
-
LABEL org.opencontainers.image.description="
|
|
17
|
+
LABEL org.opencontainers.image.title="MCP-HA-Connect"
|
|
18
|
+
LABEL org.opencontainers.image.description="MCP server for Home Assistant + TP-Link Omada + Local AI integration"
|
|
19
19
|
LABEL org.opencontainers.image.authors="Coffee Run Hobby"
|
|
20
20
|
LABEL org.opencontainers.image.url="https://github.com/coffeerunhobby/mcp-ha-connect"
|
|
21
21
|
LABEL org.opencontainers.image.source="https://github.com/coffeerunhobby/mcp-ha-connect"
|
|
@@ -24,9 +24,7 @@ LABEL org.opencontainers.image.licenses="MIT"
|
|
|
24
24
|
|
|
25
25
|
WORKDIR /app
|
|
26
26
|
ENV NODE_ENV=production
|
|
27
|
-
RUN
|
|
28
|
-
&& apt-get install -y --no-install-recommends curl \
|
|
29
|
-
&& rm -rf /var/lib/apt/lists/*
|
|
27
|
+
RUN apk add --no-cache curl
|
|
30
28
|
COPY package*.json ./
|
|
31
29
|
RUN npm install --omit=dev
|
|
32
30
|
COPY --from=build /app/dist ./dist
|
package/README.md
CHANGED
|
@@ -5,17 +5,6 @@ A production-ready Model Context Protocol (MCP) server for Home Assistant integr
|
|
|
5
5
|
[](https://www.npmjs.com/package/@coffeerunhobby/mcp-ha-connect)
|
|
6
6
|
[](https://github.com/coffeerunhobby/mcp-ha-connect/pkgs/container/mcp-ha-connect)
|
|
7
7
|
|
|
8
|
-
## Autonomous Safety Monitoring System
|
|
9
|
-
|
|
10
|
-
1. **JS Pre-filter**: Tier A triggers + basic anomaly detection
|
|
11
|
-
2. **Issue Objects**: Structured alerts (entity, area, threshold, observed, last_changed)
|
|
12
|
-
3. **LLM Decision**: Single JSON verdict from local model
|
|
13
|
-
4. **Smart Notifications**: Dedupe + cooldown to prevent alert fatigue
|
|
14
|
-
5. **Acknowledgment**: HA notification, Telegram, mobile app action, or voice
|
|
15
|
-
6. **Auto-Response**: Water/gas shutoff via HA valves/switches
|
|
16
|
-
|
|
17
|
-
See [docs/SSE_API.md](docs/SSE_API.md) for complete documentation of the SSE system.
|
|
18
|
-
|
|
19
8
|
See [docs/QUICK_START.md](docs/QUICK_START.md) for Docker, HTTP server mode, n8n integration, and more installation options.
|
|
20
9
|
|
|
21
10
|
## Key Features
|
|
@@ -55,14 +44,17 @@ See [docs/QUICK_START.md](docs/QUICK_START.md) for Docker, HTTP server mode, n8n
|
|
|
55
44
|
- Multiple transport modes (stdio, Streamable HTTP)
|
|
56
45
|
- HTTP server with health checks
|
|
57
46
|
- CORS support for browser-based clients
|
|
58
|
-
- Structured logging
|
|
47
|
+
- Structured logging (plain, JSON, GCP-JSON formats)
|
|
59
48
|
- Comprehensive configuration validation with Zod
|
|
60
49
|
- Full type safety with TypeScript
|
|
61
50
|
- Stateful and stateless session support
|
|
51
|
+
- JWT authentication with role-based access control
|
|
52
|
+
|
|
53
|
+
## Available Tools (60 Total)
|
|
62
54
|
|
|
63
|
-
|
|
55
|
+
### Home Assistant Tools (35)
|
|
64
56
|
|
|
65
|
-
|
|
57
|
+
#### State & Entity Tools
|
|
66
58
|
|
|
67
59
|
| Tool | Description |
|
|
68
60
|
|------|-------------|
|
|
@@ -76,14 +68,14 @@ See [docs/QUICK_START.md](docs/QUICK_START.md) for Docker, HTTP server mode, n8n
|
|
|
76
68
|
| `getHistory` | Get historical data for an entity |
|
|
77
69
|
| `listPersons` | List all household members with location state (home/away) |
|
|
78
70
|
|
|
79
|
-
|
|
71
|
+
#### Service & Control Tools
|
|
80
72
|
|
|
81
73
|
| Tool | Description |
|
|
82
74
|
|------|-------------|
|
|
83
75
|
| `callService` | Call any Home Assistant service |
|
|
84
76
|
| `entityAction` | Simple turn_on/turn_off/toggle actions |
|
|
85
77
|
|
|
86
|
-
|
|
78
|
+
#### Device Control Tools
|
|
87
79
|
|
|
88
80
|
| Tool | Description |
|
|
89
81
|
|------|-------------|
|
|
@@ -97,7 +89,7 @@ See [docs/QUICK_START.md](docs/QUICK_START.md) for Docker, HTTP server mode, n8n
|
|
|
97
89
|
| `sendNotification` | Send notifications with full mobile app support (actions, priority, images) |
|
|
98
90
|
| `listNotificationTargets` | Discover available mobile app notification targets |
|
|
99
91
|
|
|
100
|
-
|
|
92
|
+
#### Automation Tools
|
|
101
93
|
|
|
102
94
|
| Tool | Description |
|
|
103
95
|
|------|-------------|
|
|
@@ -111,7 +103,7 @@ See [docs/QUICK_START.md](docs/QUICK_START.md) for Docker, HTTP server mode, n8n
|
|
|
111
103
|
| `deleteAutomation` | Delete an automation |
|
|
112
104
|
| `getAutomationTrace` | Get automation execution history |
|
|
113
105
|
|
|
114
|
-
|
|
106
|
+
#### System Tools
|
|
115
107
|
|
|
116
108
|
| Tool | Description |
|
|
117
109
|
|------|-------------|
|
|
@@ -119,15 +111,76 @@ See [docs/QUICK_START.md](docs/QUICK_START.md) for Docker, HTTP server mode, n8n
|
|
|
119
111
|
| `restartHomeAssistant` | Restart the Home Assistant server |
|
|
120
112
|
| `getSystemLog` | Get system log entries from logbook |
|
|
121
113
|
| `checkUpdates` | Check for available updates |
|
|
122
|
-
| `analyzeSensors` | AI-powered sensor analysis using Ollama |
|
|
123
114
|
|
|
124
|
-
|
|
115
|
+
#### Calendar Tools
|
|
125
116
|
|
|
126
117
|
| Tool | Description |
|
|
127
118
|
|------|-------------|
|
|
128
119
|
| `listCalendars` | List all calendar entities |
|
|
129
120
|
| `getCalendarEvents` | Get events from one or all calendars |
|
|
130
121
|
|
|
122
|
+
### Omada Network Tools (24)
|
|
123
|
+
|
|
124
|
+
#### Site Tools
|
|
125
|
+
|
|
126
|
+
| Tool | Description |
|
|
127
|
+
|------|-------------|
|
|
128
|
+
| `omada_listSites` | List all sites configured on the Omada controller |
|
|
129
|
+
|
|
130
|
+
#### Device Tools
|
|
131
|
+
|
|
132
|
+
| Tool | Description |
|
|
133
|
+
|------|-------------|
|
|
134
|
+
| `omada_listDevices` | List all network devices (APs, switches, gateways) in a site |
|
|
135
|
+
| `omada_getDevice` | Get detailed information about a specific network device |
|
|
136
|
+
| `omada_searchDevices` | Search for devices globally across all sites |
|
|
137
|
+
| `omada_getSwitchStackDetail` | Get detailed information about a switch stack |
|
|
138
|
+
| `omada_listDevicesStats` | Get statistics for global adopted devices with filtering |
|
|
139
|
+
|
|
140
|
+
#### Client Tools
|
|
141
|
+
|
|
142
|
+
| Tool | Description |
|
|
143
|
+
|------|-------------|
|
|
144
|
+
| `omada_listClients` | List all connected clients (devices/users) in a site |
|
|
145
|
+
| `omada_getClient` | Get detailed information about a specific connected client |
|
|
146
|
+
| `omada_listMostActiveClients` | Get the most active clients sorted by total traffic |
|
|
147
|
+
| `omada_listClientsActivity` | Get client activity statistics over time |
|
|
148
|
+
| `omada_listClientsPastConnections` | Get historical client connection data |
|
|
149
|
+
|
|
150
|
+
#### Rate Limit Tools
|
|
151
|
+
|
|
152
|
+
| Tool | Description |
|
|
153
|
+
|------|-------------|
|
|
154
|
+
| `omada_getRateLimitProfiles` | Get available rate limit profiles for a site |
|
|
155
|
+
| `omada_setClientRateLimit` | Set custom bandwidth limits for a client (download/upload in Kbps) |
|
|
156
|
+
| `omada_setClientRateLimitProfile` | Apply a rate limit profile to a client |
|
|
157
|
+
| `omada_disableClientRateLimit` | Remove bandwidth limits from a client |
|
|
158
|
+
|
|
159
|
+
#### Security Tools
|
|
160
|
+
|
|
161
|
+
| Tool | Description |
|
|
162
|
+
|------|-------------|
|
|
163
|
+
| `omada_getThreatList` | Get security threat management list |
|
|
164
|
+
|
|
165
|
+
#### Network Configuration Tools
|
|
166
|
+
|
|
167
|
+
| Tool | Description |
|
|
168
|
+
|------|-------------|
|
|
169
|
+
| `omada_getInternetInfo` | Get internet connection configuration for a site |
|
|
170
|
+
| `omada_getPortForwardingStatus` | Get port forwarding rules (User or UPnP) |
|
|
171
|
+
| `omada_getLanNetworkList` | Get LAN network configuration list |
|
|
172
|
+
| `omada_getLanProfileList` | Get LAN profile configuration list |
|
|
173
|
+
| `omada_getWlanGroupList` | Get WLAN group configuration list |
|
|
174
|
+
| `omada_getSsidList` | Get SSID list for a WLAN group |
|
|
175
|
+
| `omada_getSsidDetail` | Get detailed SSID configuration |
|
|
176
|
+
| `omada_getFirewallSetting` | Get firewall configuration for a site |
|
|
177
|
+
|
|
178
|
+
### AI Tools (1)
|
|
179
|
+
|
|
180
|
+
| Tool | Description |
|
|
181
|
+
|------|-------------|
|
|
182
|
+
| `analyzeSensors` | Analyze sensor data using AI (Ollama) to detect issues and provide recommendations |
|
|
183
|
+
|
|
131
184
|
### MCP Resources
|
|
132
185
|
|
|
133
186
|
| Resource URI | Description |
|
|
@@ -169,6 +222,7 @@ See [docs/QUICK_START.md](docs/QUICK_START.md) for Docker, HTTP server mode, n8n
|
|
|
169
222
|
|
|
170
223
|
| Variable | Default | Description |
|
|
171
224
|
|----------|---------|-------------|
|
|
225
|
+
| `HA_PLUGIN_ENABLED` | `true` | Enable Home Assistant plugin |
|
|
172
226
|
| `HA_STRICT_SSL` | `true` | Validate SSL certificates |
|
|
173
227
|
| `HA_TIMEOUT` | `30000` | API request timeout (ms) |
|
|
174
228
|
|
|
@@ -213,17 +267,86 @@ See [docs/QUICK_START.md](docs/QUICK_START.md) for Docker, HTTP server mode, n8n
|
|
|
213
267
|
| Variable | Default | Description |
|
|
214
268
|
|----------|---------|-------------|
|
|
215
269
|
| `MCP_AUTH_METHOD` | `none` | Auth method: `none` or `bearer` |
|
|
216
|
-
| `
|
|
270
|
+
| `MCP_AUTH_SECRET` | - | JWT signing secret (min 32 chars, required for `bearer` method) |
|
|
271
|
+
| `MCP_PERMISSIONS_CONFIG` | - | JSON config for user roles and permissions |
|
|
272
|
+
|
|
273
|
+
#### JWT Authentication
|
|
274
|
+
|
|
275
|
+
When `MCP_AUTH_METHOD=bearer`, clients must provide a JWT token in the Authorization header:
|
|
276
|
+
|
|
277
|
+
```
|
|
278
|
+
Authorization: Bearer <jwt-token>
|
|
279
|
+
```
|
|
280
|
+
|
|
281
|
+
Generate tokens with your `MCP_AUTH_SECRET` using HS256 algorithm. The JWT payload should include:
|
|
282
|
+
- `sub` (subject): User identifier for permission lookup
|
|
283
|
+
- `exp` (optional): Expiration timestamp
|
|
284
|
+
|
|
285
|
+
#### Permission System
|
|
286
|
+
|
|
287
|
+
The server uses role-based access control with binary permission masks:
|
|
288
|
+
|
|
289
|
+
| Permission | Flag | Description |
|
|
290
|
+
|------------|------|-------------|
|
|
291
|
+
| `ADMIN` | 1 | System operations (restart, updates) |
|
|
292
|
+
| `CONFIGURE` | 2 | Create/modify automations, scripts |
|
|
293
|
+
| `CONTROL` | 4 | Control devices (lights, climate, etc.) |
|
|
294
|
+
| `QUERY` | 8 | Read entity states, history, lists |
|
|
295
|
+
| `NOTIFY` | 16 | Send notifications |
|
|
296
|
+
| `AI` | 32 | Use AI analysis features |
|
|
297
|
+
|
|
298
|
+
**Predefined Roles:**
|
|
299
|
+
|
|
300
|
+
| Role | Permissions |
|
|
301
|
+
|------|-------------|
|
|
302
|
+
| `NONE` | No permissions |
|
|
303
|
+
| `READONLY` | QUERY only |
|
|
304
|
+
| `OPERATOR` | QUERY + CONTROL + NOTIFY |
|
|
305
|
+
| `CONTRIBUTOR` | QUERY + CONTROL + NOTIFY + CONFIGURE |
|
|
306
|
+
| `ADMIN` | All except AI |
|
|
307
|
+
| `SUPERUSER` | All permissions |
|
|
308
|
+
|
|
309
|
+
**Configuration Example:**
|
|
310
|
+
|
|
311
|
+
```json
|
|
312
|
+
{
|
|
313
|
+
"users": [
|
|
314
|
+
{ "sub": "admin@example.com", "role": "admin" },
|
|
315
|
+
{ "sub": "user@example.com", "role": "operator" },
|
|
316
|
+
{ "sub": "viewer@example.com", "role": "readonly" }
|
|
317
|
+
],
|
|
318
|
+
"defaultRole": "NONE"
|
|
319
|
+
}
|
|
320
|
+
```
|
|
321
|
+
|
|
322
|
+
Set via environment variable (escape quotes for shell):
|
|
323
|
+
```bash
|
|
324
|
+
MCP_PERMISSIONS_CONFIG='{"users":[{"sub":"admin","role":"admin"}],"defaultRole":"NONE"}'
|
|
325
|
+
```
|
|
217
326
|
|
|
218
327
|
### Optional - AI Provider
|
|
219
328
|
|
|
220
329
|
| Variable | Default | Description |
|
|
221
330
|
|----------|---------|-------------|
|
|
331
|
+
| `AI_PLUGIN_ENABLED` | `true` | Enable AI plugin |
|
|
222
332
|
| `AI_PROVIDER` | `ollama` | AI provider: `ollama`, `openai`, or `none` |
|
|
223
|
-
| `AI_URL` | `http://
|
|
333
|
+
| `AI_URL` | `http://localhost:11434` | AI server URL (Ollama) |
|
|
224
334
|
| `AI_MODEL` | `llama2` | AI model name |
|
|
225
335
|
| `AI_TIMEOUT` | `60000` | AI request timeout (ms) |
|
|
226
336
|
|
|
337
|
+
### Optional - Omada Network Controller
|
|
338
|
+
|
|
339
|
+
| Variable | Default | Description |
|
|
340
|
+
|----------|---------|-------------|
|
|
341
|
+
| `OMADA_PLUGIN_ENABLED` | `false` | Enable Omada plugin |
|
|
342
|
+
| `OMADA_BASE_URL` | - | Omada controller URL (e.g., `https://192.168.0.1:8043`) |
|
|
343
|
+
| `OMADA_CLIENT_ID` | - | OAuth2 client ID from Omada controller |
|
|
344
|
+
| `OMADA_CLIENT_SECRET` | - | OAuth2 client secret from Omada controller |
|
|
345
|
+
| `OMADA_OMADAC_ID` | - | Omada controller ID |
|
|
346
|
+
| `OMADA_SITE_ID` | - | Default site ID for operations |
|
|
347
|
+
| `OMADA_STRICT_SSL` | `true` | Validate SSL certificates |
|
|
348
|
+
| `OMADA_TIMEOUT` | `30000` | API request timeout (ms) |
|
|
349
|
+
|
|
227
350
|
## Advanced Configuration Examples
|
|
228
351
|
|
|
229
352
|
### With AI Analysis (Ollama)
|
|
@@ -585,8 +708,6 @@ Coffee Run Hobby ([github.com/coffeerunhobby](https://github.com/coffeerunhobby)
|
|
|
585
708
|
|
|
586
709
|
- [Quick Start Guide](docs/QUICK_START.md)
|
|
587
710
|
- [Changelog](docs/CHANGELOG.md)
|
|
588
|
-
- [Local Client Configuration](docs/LOCAL_CLIENT.md)
|
|
589
|
-
- [SSE Event API](docs/SSE_API.md)
|
|
590
711
|
|
|
591
712
|
## Contributing
|
|
592
713
|
|
package/dist/config.d.ts
CHANGED
|
@@ -1,9 +1,20 @@
|
|
|
1
|
+
import { type PermissionsConfig } from './permissions/index.js';
|
|
1
2
|
import type { AIProviderType } from './localAI/types.js';
|
|
2
3
|
export interface EnvironmentConfig {
|
|
3
|
-
|
|
4
|
-
|
|
4
|
+
haPluginEnabled: boolean;
|
|
5
|
+
aiPluginEnabled: boolean;
|
|
6
|
+
omadaPluginEnabled: boolean;
|
|
7
|
+
baseUrl?: string;
|
|
8
|
+
token?: string;
|
|
5
9
|
strictSsl: boolean;
|
|
6
10
|
timeout: number;
|
|
11
|
+
omadaBaseUrl?: string;
|
|
12
|
+
omadaClientId?: string;
|
|
13
|
+
omadaClientSecret?: string;
|
|
14
|
+
omadacId?: string;
|
|
15
|
+
siteId?: string;
|
|
16
|
+
omadaStrictSsl: boolean;
|
|
17
|
+
requestTimeout?: number;
|
|
7
18
|
aiProvider: AIProviderType;
|
|
8
19
|
aiUrl: string;
|
|
9
20
|
aiModel: string;
|
|
@@ -26,7 +37,8 @@ export interface EnvironmentConfig {
|
|
|
26
37
|
rateLimitWindowMs: number;
|
|
27
38
|
rateLimitMaxRequests: number;
|
|
28
39
|
authMethod: 'none' | 'bearer';
|
|
29
|
-
|
|
40
|
+
authSecret?: string;
|
|
41
|
+
permissions: PermissionsConfig;
|
|
30
42
|
}
|
|
31
43
|
export declare function loadConfig(env?: NodeJS.ProcessEnv): EnvironmentConfig;
|
|
32
44
|
export declare function validateConfig(config: EnvironmentConfig): void;
|
package/dist/config.js
CHANGED
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
import { z } from 'zod';
|
|
2
2
|
import { isValidBindAddress, isValidOrigin } from './utils/config-validations.js';
|
|
3
|
+
import { parsePermissionsConfig } from './permissions/index.js';
|
|
3
4
|
import { logger } from './utils/logger.js';
|
|
4
5
|
const createBooleanStringSchema = (defaultValue) => z
|
|
5
6
|
.union([z.literal('true'), z.literal('false')])
|
|
@@ -14,22 +15,25 @@ const numericStringSchema = z
|
|
|
14
15
|
.optional()
|
|
15
16
|
.transform((value) => (value ? Number.parseInt(value, 10) : undefined))
|
|
16
17
|
.pipe(z.number().positive().optional());
|
|
17
|
-
const listStringSchema = z
|
|
18
|
-
.string()
|
|
19
|
-
.optional()
|
|
20
|
-
.transform((value) => value
|
|
21
|
-
? value
|
|
22
|
-
.split(',')
|
|
23
|
-
.map((s) => s.trim())
|
|
24
|
-
.filter(Boolean)
|
|
25
|
-
: undefined);
|
|
26
18
|
const envSchema = z
|
|
27
19
|
.object({
|
|
28
|
-
//
|
|
29
|
-
|
|
30
|
-
|
|
20
|
+
// Plugin Enable Flags (default: false)
|
|
21
|
+
haPluginEnabled: createBooleanStringSchema(false),
|
|
22
|
+
aiPluginEnabled: createBooleanStringSchema(false),
|
|
23
|
+
omadaPluginEnabled: createBooleanStringSchema(false),
|
|
24
|
+
// Home Assistant Client Configuration (optional if using Omada only)
|
|
25
|
+
haUrl: z.string().url({ message: 'HA_URL must be a valid URL' }).optional(),
|
|
26
|
+
haToken: z.string().min(1).optional(),
|
|
31
27
|
haStrictSsl: createBooleanStringSchema(true),
|
|
32
28
|
haTimeout: numericStringSchema,
|
|
29
|
+
// Omada Client Configuration (optional)
|
|
30
|
+
omadaBaseUrl: z.string().url({ message: 'OMADA_BASE_URL must be a valid URL' }).optional(),
|
|
31
|
+
omadaClientId: z.string().min(1).optional(),
|
|
32
|
+
omadaClientSecret: z.string().min(1).optional(),
|
|
33
|
+
omadaOmadacId: z.string().min(1).optional(),
|
|
34
|
+
omadaSiteId: z.string().min(1).optional(),
|
|
35
|
+
omadaStrictSsl: createBooleanStringSchema(true),
|
|
36
|
+
omadaTimeout: numericStringSchema,
|
|
33
37
|
// AI Provider Configuration (use 'none' to disable AI features)
|
|
34
38
|
aiProvider: z.enum(['ollama', 'openai', 'none']).optional(),
|
|
35
39
|
aiUrl: z.string().url().optional(),
|
|
@@ -48,7 +52,7 @@ const envSchema = z
|
|
|
48
52
|
httpEnableHealthcheck: createBooleanStringSchema(true),
|
|
49
53
|
httpHealthcheckPath: z.string().optional(),
|
|
50
54
|
httpAllowCors: createBooleanStringSchema(true),
|
|
51
|
-
httpAllowedOrigins:
|
|
55
|
+
httpAllowedOrigins: z.string().optional().transform((v) => v?.split(',').map((s) => s.trim()).filter(Boolean)),
|
|
52
56
|
// SSE Event Subscription Configuration
|
|
53
57
|
sseEventsEnabled: createBooleanStringSchema(true),
|
|
54
58
|
sseEventsPath: z.string().optional(),
|
|
@@ -58,10 +62,10 @@ const envSchema = z
|
|
|
58
62
|
rateLimitMaxRequests: numericStringSchema,
|
|
59
63
|
// Authentication Configuration
|
|
60
64
|
authMethod: z.enum(['none', 'bearer']).optional().default('none'),
|
|
61
|
-
|
|
65
|
+
authSecret: z.string().optional(),
|
|
66
|
+
permissionsConfig: z.string().optional(),
|
|
62
67
|
})
|
|
63
68
|
.refine((data) => {
|
|
64
|
-
// Validate httpBindAddr if provided
|
|
65
69
|
if (data.httpBindAddr && !isValidBindAddress(data.httpBindAddr)) {
|
|
66
70
|
return false;
|
|
67
71
|
}
|
|
@@ -71,7 +75,6 @@ const envSchema = z
|
|
|
71
75
|
path: ['httpBindAddr'],
|
|
72
76
|
})
|
|
73
77
|
.refine((data) => {
|
|
74
|
-
// Validate httpAllowedOrigins if provided
|
|
75
78
|
if (data.httpAllowedOrigins) {
|
|
76
79
|
for (const origin of data.httpAllowedOrigins) {
|
|
77
80
|
if (!isValidOrigin(origin)) {
|
|
@@ -88,22 +91,33 @@ const envSchema = z
|
|
|
88
91
|
};
|
|
89
92
|
})
|
|
90
93
|
.refine((data) => {
|
|
91
|
-
|
|
92
|
-
if (data.authMethod === 'bearer' && !data.authToken) {
|
|
94
|
+
if (data.authMethod === 'bearer' && !data.authSecret) {
|
|
93
95
|
return false;
|
|
94
96
|
}
|
|
95
97
|
return true;
|
|
96
98
|
}, {
|
|
97
|
-
message: '
|
|
98
|
-
path: ['
|
|
99
|
+
message: 'MCP_AUTH_SECRET is required when MCP_AUTH_METHOD is "bearer"',
|
|
100
|
+
path: ['authSecret'],
|
|
99
101
|
});
|
|
100
102
|
export function loadConfig(env = process.env) {
|
|
101
103
|
const parsed = envSchema.safeParse({
|
|
104
|
+
// Plugin Enable Flags
|
|
105
|
+
haPluginEnabled: env.HA_PLUGIN_ENABLED,
|
|
106
|
+
aiPluginEnabled: env.AI_PLUGIN_ENABLED,
|
|
107
|
+
omadaPluginEnabled: env.OMADA_PLUGIN_ENABLED,
|
|
102
108
|
// Home Assistant Client Configuration
|
|
103
109
|
haUrl: env.HA_URL,
|
|
104
110
|
haToken: env.HA_TOKEN,
|
|
105
111
|
haStrictSsl: env.HA_STRICT_SSL,
|
|
106
112
|
haTimeout: env.HA_TIMEOUT,
|
|
113
|
+
// Omada Client Configuration
|
|
114
|
+
omadaBaseUrl: env.OMADA_BASE_URL,
|
|
115
|
+
omadaClientId: env.OMADA_CLIENT_ID,
|
|
116
|
+
omadaClientSecret: env.OMADA_CLIENT_SECRET,
|
|
117
|
+
omadaOmadacId: env.OMADA_OMADAC_ID,
|
|
118
|
+
omadaSiteId: env.OMADA_SITE_ID,
|
|
119
|
+
omadaStrictSsl: env.OMADA_STRICT_SSL,
|
|
120
|
+
omadaTimeout: env.OMADA_TIMEOUT,
|
|
107
121
|
// AI Provider Configuration
|
|
108
122
|
aiProvider: env.AI_PROVIDER,
|
|
109
123
|
aiUrl: env.AI_URL,
|
|
@@ -132,28 +146,38 @@ export function loadConfig(env = process.env) {
|
|
|
132
146
|
rateLimitMaxRequests: env.MCP_RATE_LIMIT_MAX_REQUESTS,
|
|
133
147
|
// Authentication Configuration
|
|
134
148
|
authMethod: env.MCP_AUTH_METHOD,
|
|
135
|
-
|
|
149
|
+
authSecret: env.MCP_AUTH_SECRET,
|
|
150
|
+
permissionsConfig: env.MCP_PERMISSIONS_CONFIG,
|
|
136
151
|
});
|
|
137
152
|
if (!parsed.success) {
|
|
138
153
|
const messages = parsed.error.issues.map((issue) => issue.message);
|
|
139
154
|
throw new Error(`Invalid environment configuration:\n${messages.join('\n')}`);
|
|
140
155
|
}
|
|
141
|
-
// Default MCP endpoint path
|
|
142
156
|
const httpPath = parsed.data.httpPath ?? '/mcp';
|
|
143
|
-
// Set default bind address and allowed origins for security
|
|
144
157
|
const httpBindAddr = parsed.data.httpBindAddr ?? '127.0.0.1';
|
|
145
158
|
let httpAllowedOrigins = parsed.data.httpAllowedOrigins ?? ['127.0.0.1', 'localhost'];
|
|
146
|
-
// If wildcard is present, use empty array to disable SDK origin validation
|
|
147
159
|
if (httpAllowedOrigins.includes('*')) {
|
|
148
|
-
logger.warn('Wildcard (*) origin allowed - origin validation
|
|
160
|
+
logger.warn('Wildcard (*) origin allowed - origin validation disabled');
|
|
149
161
|
httpAllowedOrigins = [];
|
|
150
162
|
}
|
|
151
163
|
return {
|
|
152
|
-
//
|
|
153
|
-
|
|
164
|
+
// Plugin Enable Flags
|
|
165
|
+
haPluginEnabled: parsed.data.haPluginEnabled,
|
|
166
|
+
aiPluginEnabled: parsed.data.aiPluginEnabled,
|
|
167
|
+
omadaPluginEnabled: parsed.data.omadaPluginEnabled,
|
|
168
|
+
// Home Assistant Client Configuration (optional)
|
|
169
|
+
baseUrl: parsed.data.haUrl?.replace(/\/$/, ''),
|
|
154
170
|
token: parsed.data.haToken,
|
|
155
171
|
strictSsl: parsed.data.haStrictSsl,
|
|
156
172
|
timeout: parsed.data.haTimeout ?? 30000,
|
|
173
|
+
// Omada Client Configuration (optional)
|
|
174
|
+
omadaBaseUrl: parsed.data.omadaBaseUrl?.replace(/\/$/, ''),
|
|
175
|
+
omadaClientId: parsed.data.omadaClientId,
|
|
176
|
+
omadaClientSecret: parsed.data.omadaClientSecret,
|
|
177
|
+
omadacId: parsed.data.omadaOmadacId,
|
|
178
|
+
siteId: parsed.data.omadaSiteId,
|
|
179
|
+
omadaStrictSsl: parsed.data.omadaStrictSsl,
|
|
180
|
+
requestTimeout: parsed.data.omadaTimeout,
|
|
157
181
|
// AI Provider Configuration
|
|
158
182
|
aiProvider: (parsed.data.aiProvider ?? 'ollama'),
|
|
159
183
|
aiUrl: parsed.data.aiUrl ?? 'http://localhost:11434',
|
|
@@ -182,12 +206,11 @@ export function loadConfig(env = process.env) {
|
|
|
182
206
|
rateLimitMaxRequests: parsed.data.rateLimitMaxRequests ?? 100,
|
|
183
207
|
// Authentication Configuration
|
|
184
208
|
authMethod: parsed.data.authMethod,
|
|
185
|
-
|
|
209
|
+
authSecret: parsed.data.authSecret,
|
|
210
|
+
permissions: parsePermissionsConfig(parsed.data.permissionsConfig),
|
|
186
211
|
};
|
|
187
212
|
}
|
|
188
|
-
// Legacy compatibility functions
|
|
189
213
|
export function validateConfig(config) {
|
|
190
|
-
// Config is already validated by Zod, this is for compatibility
|
|
191
214
|
if (!config.baseUrl || !config.token) {
|
|
192
215
|
throw new Error('Invalid configuration: missing baseUrl or token');
|
|
193
216
|
}
|
package/dist/config.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"config.js","sourceRoot":"","sources":["../src/config.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AACxB,OAAO,EAAE,kBAAkB,EAAE,aAAa,EAAE,MAAM,+BAA+B,CAAC;AAClF,OAAO,EAAE,MAAM,EAAE,MAAM,mBAAmB,CAAC;AAG3C,MAAM,yBAAyB,GAAG,CAChC,YAAqB,EAC0G,EAAE,CACjI,CAAC;KACE,KAAK,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC,CAAC;KAC9C,QAAQ,EAAE;KACV,SAAS,CAAC,CAAC,KAAmC,EAAE,EAAE;IACjD,IAAI,KAAK,KAAK,SAAS;QAAE,OAAO,YAAY,CAAC;IAC7C,OAAO,KAAK,KAAK,MAAM,CAAC;AAC1B,CAAC,CAAC,CAAC;AAEP,MAAM,mBAAmB,GAAG,CAAC;KAC1B,MAAM,EAAE;KACR,QAAQ,EAAE;KACV,SAAS,CAAC,CAAC,KAAyB,EAAE,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,MAAM,CAAC,QAAQ,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC;KAC1F,IAAI,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,EAAE,CAAC,CAAC;AAE1C,MAAM,
|
|
1
|
+
{"version":3,"file":"config.js","sourceRoot":"","sources":["../src/config.ts"],"names":[],"mappings":"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"}
|
package/dist/env.d.ts
ADDED
package/dist/env.js
ADDED
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Environment variable loading
|
|
3
|
+
* This file must be imported first in index.ts
|
|
4
|
+
*/
|
|
5
|
+
import { existsSync } from 'node:fs';
|
|
6
|
+
import { config } from 'dotenv';
|
|
7
|
+
// Load .env first (base config)
|
|
8
|
+
config({ path: '.env' });
|
|
9
|
+
// Load .env.local if it exists (overrides)
|
|
10
|
+
if (existsSync('.env.local')) {
|
|
11
|
+
config({ path: '.env.local', override: true });
|
|
12
|
+
}
|
|
13
|
+
//# sourceMappingURL=env.js.map
|
package/dist/env.js.map
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"env.js","sourceRoot":"","sources":["../src/env.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,EAAE,UAAU,EAAE,MAAM,SAAS,CAAC;AACrC,OAAO,EAAE,MAAM,EAAE,MAAM,QAAQ,CAAC;AAEhC,gCAAgC;AAChC,MAAM,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,CAAC,CAAC;AAEzB,2CAA2C;AAC3C,IAAI,UAAU,CAAC,YAAY,CAAC,EAAE,CAAC;IAC7B,MAAM,CAAC,EAAE,IAAI,EAAE,YAAY,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC,CAAC;AACjD,CAAC"}
|
package/dist/haClient/index.d.ts
CHANGED
|
@@ -2,9 +2,14 @@
|
|
|
2
2
|
* Home Assistant API Client
|
|
3
3
|
* Main client class that composes all operation modules
|
|
4
4
|
*/
|
|
5
|
-
import type { EnvironmentConfig } from '../config.js';
|
|
6
5
|
import type { Entity, ServiceCallData, ServiceCallResponse, Automation, AutomationConfig, DomainSummary, HaVersion, LogbookEntry, UpdateInfo, Calendar, CalendarEvent } from '../types/index.js';
|
|
7
6
|
import { DeviceOperations } from './devices.js';
|
|
7
|
+
export interface HaClientOptions {
|
|
8
|
+
baseUrl: string;
|
|
9
|
+
token: string;
|
|
10
|
+
timeout: number;
|
|
11
|
+
strictSsl: boolean;
|
|
12
|
+
}
|
|
8
13
|
/**
|
|
9
14
|
* Main client for interacting with the Home Assistant API.
|
|
10
15
|
* Organized with dedicated operation classes for each domain.
|
|
@@ -20,7 +25,7 @@ export declare class HaClient {
|
|
|
20
25
|
private readonly configOps;
|
|
21
26
|
private readonly calendarOps;
|
|
22
27
|
readonly devices: DeviceOperations;
|
|
23
|
-
constructor(config:
|
|
28
|
+
constructor(config: HaClientOptions);
|
|
24
29
|
/**
|
|
25
30
|
* Get all states (entities)
|
|
26
31
|
*/
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/haClient/index.ts"],"names":[],"mappings":"AAAA;;;GAGG;
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/haClient/index.ts"],"names":[],"mappings":"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"}
|