@coffeerunhobby/mcp-ha-connect 0.8.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.
Files changed (638) hide show
  1. package/.env.example +0 -43
  2. package/Dockerfile +7 -9
  3. package/README.md +159 -130
  4. package/dist/autonomic/index.d.ts +6 -0
  5. package/dist/autonomic/index.js +7 -0
  6. package/dist/autonomic/index.js.map +1 -0
  7. package/dist/autonomic/priority.d.ts +60 -0
  8. package/dist/autonomic/priority.js +97 -0
  9. package/dist/autonomic/priority.js.map +1 -0
  10. package/dist/config.d.ts +15 -4
  11. package/dist/config.js +54 -35
  12. package/dist/config.js.map +1 -1
  13. package/dist/env.d.ts +5 -0
  14. package/dist/env.js +13 -0
  15. package/dist/env.js.map +1 -0
  16. package/dist/haClient/config.d.ts +1 -0
  17. package/dist/haClient/config.js +11 -1
  18. package/dist/haClient/config.js.map +1 -1
  19. package/dist/haClient/history.d.ts +1 -0
  20. package/dist/haClient/history.js +7 -4
  21. package/dist/haClient/history.js.map +1 -1
  22. package/dist/haClient/index.d.ts +8 -2
  23. package/dist/haClient/index.js.map +1 -1
  24. package/dist/index.d.ts +1 -1
  25. package/dist/index.js +77 -34
  26. package/dist/index.js.map +1 -1
  27. package/dist/omadaClient/auth.d.ts +43 -0
  28. package/dist/omadaClient/auth.js +148 -0
  29. package/dist/omadaClient/auth.js.map +1 -0
  30. package/dist/omadaClient/client.d.ts +82 -0
  31. package/dist/omadaClient/client.js +173 -0
  32. package/dist/omadaClient/client.js.map +1 -0
  33. package/dist/omadaClient/device.d.ts +32 -0
  34. package/dist/omadaClient/device.js +80 -0
  35. package/dist/omadaClient/device.js.map +1 -0
  36. package/dist/omadaClient/http.d.ts +88 -0
  37. package/dist/omadaClient/http.js +176 -0
  38. package/dist/omadaClient/http.js.map +1 -0
  39. package/dist/omadaClient/index.d.ts +57 -0
  40. package/dist/omadaClient/index.js +136 -0
  41. package/dist/omadaClient/index.js.map +1 -0
  42. package/dist/omadaClient/network.d.ts +63 -0
  43. package/dist/omadaClient/network.js +114 -0
  44. package/dist/omadaClient/network.js.map +1 -0
  45. package/dist/omadaClient/request.d.ts +69 -0
  46. package/dist/omadaClient/request.js +266 -0
  47. package/dist/omadaClient/request.js.map +1 -0
  48. package/dist/omadaClient/security.d.ts +19 -0
  49. package/dist/omadaClient/security.js +44 -0
  50. package/dist/omadaClient/security.js.map +1 -0
  51. package/dist/omadaClient/site.d.ts +20 -0
  52. package/dist/omadaClient/site.js +33 -0
  53. package/dist/omadaClient/site.js.map +1 -0
  54. package/dist/organism/index.d.ts +5 -0
  55. package/dist/organism/index.js +6 -0
  56. package/dist/organism/index.js.map +1 -0
  57. package/dist/organism/priority.d.ts +60 -0
  58. package/dist/organism/priority.js +97 -0
  59. package/dist/organism/priority.js.map +1 -0
  60. package/dist/permissions/index.d.ts +49 -0
  61. package/dist/permissions/index.js +77 -0
  62. package/dist/permissions/index.js.map +1 -0
  63. package/dist/plugins/homeassistant.d.ts +44 -0
  64. package/dist/plugins/homeassistant.js +101 -0
  65. package/dist/plugins/homeassistant.js.map +1 -0
  66. package/dist/plugins/index.d.ts +22 -0
  67. package/dist/plugins/index.js +91 -0
  68. package/dist/plugins/index.js.map +1 -0
  69. package/dist/plugins/localai.d.ts +48 -0
  70. package/dist/plugins/localai.js +111 -0
  71. package/dist/plugins/localai.js.map +1 -0
  72. package/dist/plugins/omada.d.ts +45 -0
  73. package/dist/plugins/omada.js +367 -0
  74. package/dist/plugins/omada.js.map +1 -0
  75. package/dist/plugins/registry.d.ts +93 -0
  76. package/dist/plugins/registry.js +196 -0
  77. package/dist/plugins/registry.js.map +1 -0
  78. package/dist/plugins/types.d.ts +101 -0
  79. package/dist/plugins/types.js +6 -0
  80. package/dist/plugins/types.js.map +1 -0
  81. package/dist/security/audit.d.ts +70 -0
  82. package/dist/security/audit.js +66 -0
  83. package/dist/security/audit.js.map +1 -0
  84. package/dist/security/guardrails.d.ts +66 -0
  85. package/dist/security/guardrails.js +263 -0
  86. package/dist/security/guardrails.js.map +1 -0
  87. package/dist/security/guardrails.test.d.ts +4 -0
  88. package/dist/security/guardrails.test.js +119 -0
  89. package/dist/security/guardrails.test.js.map +1 -0
  90. package/dist/security/index.d.ts +8 -0
  91. package/dist/security/index.js +17 -0
  92. package/dist/security/index.js.map +1 -0
  93. package/dist/security/ip-blocklist.d.ts +66 -0
  94. package/dist/security/ip-blocklist.js +283 -0
  95. package/dist/security/ip-blocklist.js.map +1 -0
  96. package/dist/security/ip-blocklist.test.d.ts +4 -0
  97. package/dist/security/ip-blocklist.test.js +173 -0
  98. package/dist/security/ip-blocklist.test.js.map +1 -0
  99. package/dist/security/policy.d.ts +287 -0
  100. package/dist/security/policy.js +316 -0
  101. package/dist/security/policy.js.map +1 -0
  102. package/dist/security/policy.test.d.ts +4 -0
  103. package/dist/security/policy.test.js +360 -0
  104. package/dist/security/policy.test.js.map +1 -0
  105. package/dist/server/auth.d.ts +12 -3
  106. package/dist/server/auth.js +46 -29
  107. package/dist/server/auth.js.map +1 -1
  108. package/dist/server/authConfig.d.ts +100 -0
  109. package/dist/server/authConfig.js +206 -0
  110. package/dist/server/authConfig.js.map +1 -0
  111. package/dist/server/common.d.ts +7 -1
  112. package/dist/server/common.js +13 -5
  113. package/dist/server/common.js.map +1 -1
  114. package/dist/server/http.d.ts +9 -2
  115. package/dist/server/http.js +101 -60
  116. package/dist/server/http.js.map +1 -1
  117. package/dist/server/jwt.d.ts +35 -0
  118. package/dist/server/jwt.js +123 -0
  119. package/dist/server/jwt.js.map +1 -0
  120. package/dist/server/sse.js +1 -1
  121. package/dist/server/sse.js.map +1 -1
  122. package/dist/server/stdio.d.ts +7 -1
  123. package/dist/server/stdio.js +2 -2
  124. package/dist/server/stdio.js.map +1 -1
  125. package/dist/server/stream.d.ts +9 -2
  126. package/dist/server/stream.js +12 -4
  127. package/dist/server/stream.js.map +1 -1
  128. package/dist/tools/ai/analyzeSensors.d.ts +6 -0
  129. package/dist/tools/ai/analyzeSensors.js +23 -0
  130. package/dist/tools/ai/analyzeSensors.js.map +1 -0
  131. package/dist/tools/ai/index.d.ts +6 -0
  132. package/dist/tools/ai/index.js +14 -0
  133. package/dist/tools/ai/index.js.map +1 -0
  134. package/dist/tools/allMetadata.d.ts +47 -0
  135. package/dist/tools/allMetadata.js +373 -0
  136. package/dist/tools/allMetadata.js.map +1 -0
  137. package/dist/tools/analyzeSensors.js +2 -2
  138. package/dist/tools/analyzeSensors.js.map +1 -1
  139. package/dist/tools/automationControls.js +5 -5
  140. package/dist/tools/automationControls.js.map +1 -1
  141. package/dist/tools/calendar.js +3 -3
  142. package/dist/tools/calendar.js.map +1 -1
  143. package/dist/tools/callService.js +2 -2
  144. package/dist/tools/callService.js.map +1 -1
  145. package/dist/tools/common.d.ts +76 -6
  146. package/dist/tools/common.js +54 -4
  147. package/dist/tools/common.js.map +1 -1
  148. package/dist/tools/controlClimate.js +2 -2
  149. package/dist/tools/controlClimate.js.map +1 -1
  150. package/dist/tools/controlCover.js +2 -2
  151. package/dist/tools/controlCover.js.map +1 -1
  152. package/dist/tools/controlFan.js +2 -2
  153. package/dist/tools/controlFan.js.map +1 -1
  154. package/dist/tools/controlLight.js +2 -2
  155. package/dist/tools/controlLight.js.map +1 -1
  156. package/dist/tools/controlMediaPlayer.js +2 -2
  157. package/dist/tools/controlMediaPlayer.js.map +1 -1
  158. package/dist/tools/createAutomation.js +2 -2
  159. package/dist/tools/createAutomation.js.map +1 -1
  160. package/dist/tools/deleteAutomation.js +2 -2
  161. package/dist/tools/deleteAutomation.js.map +1 -1
  162. package/dist/tools/entityAction.js +2 -2
  163. package/dist/tools/entityAction.js.map +1 -1
  164. package/dist/tools/getAllSensors.js +2 -2
  165. package/dist/tools/getAllSensors.js.map +1 -1
  166. package/dist/tools/getAutomationTrace.js +2 -2
  167. package/dist/tools/getAutomationTrace.js.map +1 -1
  168. package/dist/tools/getDomainSummary.js +2 -2
  169. package/dist/tools/getDomainSummary.js.map +1 -1
  170. package/dist/tools/getEntitiesByDomain.js +2 -2
  171. package/dist/tools/getEntitiesByDomain.js.map +1 -1
  172. package/dist/tools/getHistory.js +2 -2
  173. package/dist/tools/getHistory.js.map +1 -1
  174. package/dist/tools/getState.js +2 -2
  175. package/dist/tools/getState.js.map +1 -1
  176. package/dist/tools/getStates.js +2 -2
  177. package/dist/tools/getStates.js.map +1 -1
  178. package/dist/tools/getVersion.js +2 -2
  179. package/dist/tools/getVersion.js.map +1 -1
  180. package/dist/tools/homeassistant/automationControls.d.ts +9 -0
  181. package/dist/tools/homeassistant/automationControls.js +41 -0
  182. package/dist/tools/homeassistant/automationControls.js.map +1 -0
  183. package/dist/tools/homeassistant/calendar.d.ts +7 -0
  184. package/dist/tools/homeassistant/calendar.js +82 -0
  185. package/dist/tools/homeassistant/calendar.js.map +1 -0
  186. package/dist/tools/homeassistant/callService.d.ts +6 -0
  187. package/dist/tools/homeassistant/callService.js +17 -0
  188. package/dist/tools/homeassistant/callService.js.map +1 -0
  189. package/dist/tools/homeassistant/controlClimate.d.ts +6 -0
  190. package/dist/tools/homeassistant/controlClimate.js +50 -0
  191. package/dist/tools/homeassistant/controlClimate.js.map +1 -0
  192. package/dist/tools/homeassistant/controlCover.d.ts +6 -0
  193. package/dist/tools/homeassistant/controlCover.js +33 -0
  194. package/dist/tools/homeassistant/controlCover.js.map +1 -0
  195. package/dist/tools/homeassistant/controlFan.d.ts +6 -0
  196. package/dist/tools/homeassistant/controlFan.js +34 -0
  197. package/dist/tools/homeassistant/controlFan.js.map +1 -0
  198. package/dist/tools/homeassistant/controlLight.d.ts +6 -0
  199. package/dist/tools/homeassistant/controlLight.js +28 -0
  200. package/dist/tools/homeassistant/controlLight.js.map +1 -0
  201. package/dist/tools/homeassistant/controlMediaPlayer.d.ts +6 -0
  202. package/dist/tools/homeassistant/controlMediaPlayer.js +35 -0
  203. package/dist/tools/homeassistant/controlMediaPlayer.js.map +1 -0
  204. package/dist/tools/homeassistant/createAutomation.d.ts +6 -0
  205. package/dist/tools/homeassistant/createAutomation.js +24 -0
  206. package/dist/tools/homeassistant/createAutomation.js.map +1 -0
  207. package/dist/tools/homeassistant/deleteAutomation.d.ts +6 -0
  208. package/dist/tools/homeassistant/deleteAutomation.js +14 -0
  209. package/dist/tools/homeassistant/deleteAutomation.js.map +1 -0
  210. package/dist/tools/homeassistant/entityAction.d.ts +6 -0
  211. package/dist/tools/homeassistant/entityAction.js +22 -0
  212. package/dist/tools/homeassistant/entityAction.js.map +1 -0
  213. package/dist/tools/homeassistant/getAllSensors.d.ts +6 -0
  214. package/dist/tools/homeassistant/getAllSensors.js +14 -0
  215. package/dist/tools/homeassistant/getAllSensors.js.map +1 -0
  216. package/dist/tools/homeassistant/getAutomationTrace.d.ts +6 -0
  217. package/dist/tools/homeassistant/getAutomationTrace.js +14 -0
  218. package/dist/tools/homeassistant/getAutomationTrace.js.map +1 -0
  219. package/dist/tools/homeassistant/getDomainSummary.d.ts +6 -0
  220. package/dist/tools/homeassistant/getDomainSummary.js +14 -0
  221. package/dist/tools/homeassistant/getDomainSummary.js.map +1 -0
  222. package/dist/tools/homeassistant/getEntitiesByDomain.d.ts +6 -0
  223. package/dist/tools/homeassistant/getEntitiesByDomain.js +14 -0
  224. package/dist/tools/homeassistant/getEntitiesByDomain.js.map +1 -0
  225. package/dist/tools/homeassistant/getHistory.d.ts +6 -0
  226. package/dist/tools/homeassistant/getHistory.js +14 -0
  227. package/dist/tools/homeassistant/getHistory.js.map +1 -0
  228. package/dist/tools/homeassistant/getState.d.ts +6 -0
  229. package/dist/tools/homeassistant/getState.js +17 -0
  230. package/dist/tools/homeassistant/getState.js.map +1 -0
  231. package/dist/tools/homeassistant/getStates.d.ts +6 -0
  232. package/dist/tools/homeassistant/getStates.js +14 -0
  233. package/dist/tools/homeassistant/getStates.js.map +1 -0
  234. package/dist/tools/homeassistant/getVersion.d.ts +6 -0
  235. package/dist/tools/homeassistant/getVersion.js +14 -0
  236. package/dist/tools/homeassistant/getVersion.js.map +1 -0
  237. package/dist/tools/homeassistant/index.d.ts +6 -0
  238. package/dist/tools/homeassistant/index.js +94 -0
  239. package/dist/tools/homeassistant/index.js.map +1 -0
  240. package/dist/tools/homeassistant/listAutomations.d.ts +6 -0
  241. package/dist/tools/homeassistant/listAutomations.js +17 -0
  242. package/dist/tools/homeassistant/listAutomations.js.map +1 -0
  243. package/dist/tools/homeassistant/listEntities.d.ts +6 -0
  244. package/dist/tools/homeassistant/listEntities.js +14 -0
  245. package/dist/tools/homeassistant/listEntities.js.map +1 -0
  246. package/dist/tools/homeassistant/listPersons.d.ts +6 -0
  247. package/dist/tools/homeassistant/listPersons.js +36 -0
  248. package/dist/tools/homeassistant/listPersons.js.map +1 -0
  249. package/dist/tools/homeassistant/sceneAndScript.d.ts +7 -0
  250. package/dist/tools/homeassistant/sceneAndScript.js +32 -0
  251. package/dist/tools/homeassistant/sceneAndScript.js.map +1 -0
  252. package/dist/tools/homeassistant/searchEntities.d.ts +6 -0
  253. package/dist/tools/homeassistant/searchEntities.js +16 -0
  254. package/dist/tools/homeassistant/searchEntities.js.map +1 -0
  255. package/dist/tools/homeassistant/sendNotification.d.ts +8 -0
  256. package/dist/tools/homeassistant/sendNotification.js +160 -0
  257. package/dist/tools/homeassistant/sendNotification.js.map +1 -0
  258. package/dist/tools/homeassistant/systemTools.d.ts +8 -0
  259. package/dist/tools/homeassistant/systemTools.js +32 -0
  260. package/dist/tools/homeassistant/systemTools.js.map +1 -0
  261. package/dist/tools/homeassistant/triggerAutomation.d.ts +6 -0
  262. package/dist/tools/homeassistant/triggerAutomation.js +14 -0
  263. package/dist/tools/homeassistant/triggerAutomation.js.map +1 -0
  264. package/dist/tools/index.d.ts +16 -3
  265. package/dist/tools/index.js +35 -93
  266. package/dist/tools/index.js.map +1 -1
  267. package/dist/tools/lazyLoader.d.ts +50 -0
  268. package/dist/tools/lazyLoader.js +140 -0
  269. package/dist/tools/lazyLoader.js.map +1 -0
  270. package/dist/tools/listAutomations.js +2 -2
  271. package/dist/tools/listAutomations.js.map +1 -1
  272. package/dist/tools/listEntities.js +2 -2
  273. package/dist/tools/listEntities.js.map +1 -1
  274. package/dist/tools/listPersons.js +2 -2
  275. package/dist/tools/listPersons.js.map +1 -1
  276. package/dist/tools/localai/analyzeSensors.d.ts +6 -0
  277. package/dist/tools/localai/analyzeSensors.js +23 -0
  278. package/dist/tools/localai/analyzeSensors.js.map +1 -0
  279. package/dist/tools/localai/index.d.ts +5 -0
  280. package/dist/tools/localai/index.js +6 -0
  281. package/dist/tools/localai/index.js.map +1 -0
  282. package/dist/tools/metaTools.d.ts +74 -0
  283. package/dist/tools/metaTools.js +347 -0
  284. package/dist/tools/metaTools.js.map +1 -0
  285. package/dist/tools/omada/disableClientRateLimit.d.ts +3 -0
  286. package/dist/tools/omada/disableClientRateLimit.js +13 -0
  287. package/dist/tools/omada/disableClientRateLimit.js.map +1 -0
  288. package/dist/tools/omada/getClient.d.ts +3 -0
  289. package/dist/tools/omada/getClient.js +8 -0
  290. package/dist/tools/omada/getClient.js.map +1 -0
  291. package/dist/tools/omada/getDevice.d.ts +3 -0
  292. package/dist/tools/omada/getDevice.js +8 -0
  293. package/dist/tools/omada/getDevice.js.map +1 -0
  294. package/dist/tools/omada/getFirewallSetting.d.ts +3 -0
  295. package/dist/tools/omada/getFirewallSetting.js +8 -0
  296. package/dist/tools/omada/getFirewallSetting.js.map +1 -0
  297. package/dist/tools/omada/getInternetInfo.d.ts +3 -0
  298. package/dist/tools/omada/getInternetInfo.js +8 -0
  299. package/dist/tools/omada/getInternetInfo.js.map +1 -0
  300. package/dist/tools/omada/getLanNetworkList.d.ts +3 -0
  301. package/dist/tools/omada/getLanNetworkList.js +8 -0
  302. package/dist/tools/omada/getLanNetworkList.js.map +1 -0
  303. package/dist/tools/omada/getLanProfileList.d.ts +3 -0
  304. package/dist/tools/omada/getLanProfileList.js +8 -0
  305. package/dist/tools/omada/getLanProfileList.js.map +1 -0
  306. package/dist/tools/omada/getPortForwardingStatus.d.ts +3 -0
  307. package/dist/tools/omada/getPortForwardingStatus.js +15 -0
  308. package/dist/tools/omada/getPortForwardingStatus.js.map +1 -0
  309. package/dist/tools/omada/getRateLimitProfiles.d.ts +3 -0
  310. package/dist/tools/omada/getRateLimitProfiles.js +8 -0
  311. package/dist/tools/omada/getRateLimitProfiles.js.map +1 -0
  312. package/dist/tools/omada/getSsidDetail.d.ts +3 -0
  313. package/dist/tools/omada/getSsidDetail.js +14 -0
  314. package/dist/tools/omada/getSsidDetail.js.map +1 -0
  315. package/dist/tools/omada/getSsidList.d.ts +3 -0
  316. package/dist/tools/omada/getSsidList.js +13 -0
  317. package/dist/tools/omada/getSsidList.js.map +1 -0
  318. package/dist/tools/omada/getSwitchStackDetail.d.ts +3 -0
  319. package/dist/tools/omada/getSwitchStackDetail.js +8 -0
  320. package/dist/tools/omada/getSwitchStackDetail.js.map +1 -0
  321. package/dist/tools/omada/getThreatList.d.ts +3 -0
  322. package/dist/tools/omada/getThreatList.js +33 -0
  323. package/dist/tools/omada/getThreatList.js.map +1 -0
  324. package/dist/tools/omada/getWlanGroupList.d.ts +3 -0
  325. package/dist/tools/omada/getWlanGroupList.js +8 -0
  326. package/dist/tools/omada/getWlanGroupList.js.map +1 -0
  327. package/dist/tools/omada/index.d.ts +6 -0
  328. package/dist/tools/omada/index.js +71 -0
  329. package/dist/tools/omada/index.js.map +1 -0
  330. package/dist/tools/omada/listClients.d.ts +3 -0
  331. package/dist/tools/omada/listClients.js +8 -0
  332. package/dist/tools/omada/listClients.js.map +1 -0
  333. package/dist/tools/omada/listClientsActivity.d.ts +3 -0
  334. package/dist/tools/omada/listClientsActivity.js +14 -0
  335. package/dist/tools/omada/listClientsActivity.js.map +1 -0
  336. package/dist/tools/omada/listClientsPastConnections.d.ts +3 -0
  337. package/dist/tools/omada/listClientsPastConnections.js +31 -0
  338. package/dist/tools/omada/listClientsPastConnections.js.map +1 -0
  339. package/dist/tools/omada/listDevices.d.ts +3 -0
  340. package/dist/tools/omada/listDevices.js +8 -0
  341. package/dist/tools/omada/listDevices.js.map +1 -0
  342. package/dist/tools/omada/listDevicesStats.d.ts +3 -0
  343. package/dist/tools/omada/listDevicesStats.js +28 -0
  344. package/dist/tools/omada/listDevicesStats.js.map +1 -0
  345. package/dist/tools/omada/listMostActiveClients.d.ts +3 -0
  346. package/dist/tools/omada/listMostActiveClients.js +8 -0
  347. package/dist/tools/omada/listMostActiveClients.js.map +1 -0
  348. package/dist/tools/omada/listSites.d.ts +3 -0
  349. package/dist/tools/omada/listSites.js +10 -0
  350. package/dist/tools/omada/listSites.js.map +1 -0
  351. package/dist/tools/omada/metadata.d.ts +18 -0
  352. package/dist/tools/omada/metadata.js +336 -0
  353. package/dist/tools/omada/metadata.js.map +1 -0
  354. package/dist/tools/omada/searchDevices.d.ts +3 -0
  355. package/dist/tools/omada/searchDevices.js +12 -0
  356. package/dist/tools/omada/searchDevices.js.map +1 -0
  357. package/dist/tools/omada/setClientRateLimit.d.ts +3 -0
  358. package/dist/tools/omada/setClientRateLimit.js +15 -0
  359. package/dist/tools/omada/setClientRateLimit.js.map +1 -0
  360. package/dist/tools/omada/setClientRateLimitProfile.d.ts +3 -0
  361. package/dist/tools/omada/setClientRateLimitProfile.js +14 -0
  362. package/dist/tools/omada/setClientRateLimitProfile.js.map +1 -0
  363. package/dist/tools/registry.d.ts +105 -0
  364. package/dist/tools/registry.js +79 -0
  365. package/dist/tools/registry.js.map +1 -0
  366. package/dist/tools/sceneAndScript.js +3 -3
  367. package/dist/tools/sceneAndScript.js.map +1 -1
  368. package/dist/tools/searchEntities.js +2 -2
  369. package/dist/tools/searchEntities.js.map +1 -1
  370. package/dist/tools/sendNotification.js +3 -3
  371. package/dist/tools/sendNotification.js.map +1 -1
  372. package/dist/tools/systemTools.js +8 -8
  373. package/dist/tools/systemTools.js.map +1 -1
  374. package/dist/tools/triggerAutomation.js +2 -2
  375. package/dist/tools/triggerAutomation.js.map +1 -1
  376. package/dist/tools/types.d.ts +9 -0
  377. package/dist/tools/types.js +5 -0
  378. package/dist/tools/types.js.map +1 -0
  379. package/dist/tools/utils/pagination-schema.d.ts +23 -0
  380. package/dist/tools/utils/pagination-schema.js +19 -0
  381. package/dist/tools/utils/pagination-schema.js.map +1 -0
  382. package/dist/types/ai/index.d.ts +4 -0
  383. package/dist/types/ai/index.js +5 -0
  384. package/dist/types/ai/index.js.map +1 -0
  385. package/dist/types/ai/types.d.ts +60 -0
  386. package/dist/types/ai/types.js +6 -0
  387. package/dist/types/ai/types.js.map +1 -0
  388. package/dist/types/config.d.ts +1 -1
  389. package/dist/types/config.js +1 -0
  390. package/dist/types/config.js.map +1 -1
  391. package/dist/types/homeassistant/automations.d.ts +38 -0
  392. package/dist/types/homeassistant/automations.js +5 -0
  393. package/dist/types/homeassistant/automations.js.map +1 -0
  394. package/dist/types/homeassistant/calendars.d.ts +24 -0
  395. package/dist/types/homeassistant/calendars.js +5 -0
  396. package/dist/types/homeassistant/calendars.js.map +1 -0
  397. package/dist/types/homeassistant/config.d.ts +10 -0
  398. package/dist/types/homeassistant/config.js +6 -0
  399. package/dist/types/homeassistant/config.js.map +1 -0
  400. package/dist/types/homeassistant/entities.d.ts +13 -0
  401. package/dist/types/homeassistant/entities.js +5 -0
  402. package/dist/types/homeassistant/entities.js.map +1 -0
  403. package/dist/types/homeassistant/errors.d.ts +15 -0
  404. package/dist/types/homeassistant/errors.js +32 -0
  405. package/dist/types/homeassistant/errors.js.map +1 -0
  406. package/dist/types/homeassistant/haConfig.d.ts +7 -0
  407. package/dist/types/homeassistant/haConfig.js +2 -0
  408. package/dist/types/homeassistant/haConfig.js.map +1 -0
  409. package/dist/types/homeassistant/history.d.ts +12 -0
  410. package/dist/types/homeassistant/history.js +5 -0
  411. package/dist/types/homeassistant/history.js.map +1 -0
  412. package/dist/types/homeassistant/index.d.ts +14 -0
  413. package/dist/types/homeassistant/index.js +6 -0
  414. package/dist/types/homeassistant/index.js.map +1 -0
  415. package/dist/types/homeassistant/request.d.ts +6 -0
  416. package/dist/types/homeassistant/request.js +2 -0
  417. package/dist/types/homeassistant/request.js.map +1 -0
  418. package/dist/types/homeassistant/serviceCall.d.ts +17 -0
  419. package/dist/types/homeassistant/serviceCall.js +2 -0
  420. package/dist/types/homeassistant/serviceCall.js.map +1 -0
  421. package/dist/types/homeassistant/states.d.ts +19 -0
  422. package/dist/types/homeassistant/states.js +5 -0
  423. package/dist/types/homeassistant/states.js.map +1 -0
  424. package/dist/types/homeassistant/updates.d.ts +24 -0
  425. package/dist/types/homeassistant/updates.js +5 -0
  426. package/dist/types/homeassistant/updates.js.map +1 -0
  427. package/dist/types/index.d.ts +6 -11
  428. package/dist/types/index.js +9 -2
  429. package/dist/types/index.js.map +1 -1
  430. package/dist/types/localai/index.d.ts +5 -0
  431. package/dist/types/localai/index.js +6 -0
  432. package/dist/types/localai/index.js.map +1 -0
  433. package/dist/types/localai/types.d.ts +60 -0
  434. package/dist/types/localai/types.js +6 -0
  435. package/dist/types/localai/types.js.map +1 -0
  436. package/dist/types/omada/activeClientInfo.d.ts +17 -0
  437. package/dist/types/omada/activeClientInfo.js +2 -0
  438. package/dist/types/omada/activeClientInfo.js.map +1 -0
  439. package/dist/types/omada/clientActivity.d.ts +31 -0
  440. package/dist/types/omada/clientActivity.js +2 -0
  441. package/dist/types/omada/clientActivity.js.map +1 -0
  442. package/dist/types/omada/clientPastConnection.d.ts +59 -0
  443. package/dist/types/omada/clientPastConnection.js +2 -0
  444. package/dist/types/omada/clientPastConnection.js.map +1 -0
  445. package/dist/types/omada/index.d.ts +13 -0
  446. package/dist/types/omada/index.js +2 -0
  447. package/dist/types/omada/index.js.map +1 -0
  448. package/dist/types/omada/omadaApiResponse.d.ts +5 -0
  449. package/dist/types/omada/omadaApiResponse.js +2 -0
  450. package/dist/types/omada/omadaApiResponse.js.map +1 -0
  451. package/dist/types/omada/omadaClientInfo.d.ts +11 -0
  452. package/dist/types/omada/omadaClientInfo.js +2 -0
  453. package/dist/types/omada/omadaClientInfo.js.map +1 -0
  454. package/dist/types/omada/omadaDeviceInfo.d.ts +11 -0
  455. package/dist/types/omada/omadaDeviceInfo.js +2 -0
  456. package/dist/types/omada/omadaDeviceInfo.js.map +1 -0
  457. package/dist/types/omada/omadaDeviceStats.d.ts +29 -0
  458. package/dist/types/omada/omadaDeviceStats.js +2 -0
  459. package/dist/types/omada/omadaDeviceStats.js.map +1 -0
  460. package/dist/types/omada/omadaSiteSummary.d.ts +5 -0
  461. package/dist/types/omada/omadaSiteSummary.js +2 -0
  462. package/dist/types/omada/omadaSiteSummary.js.map +1 -0
  463. package/dist/types/omada/oswStackDetail.d.ts +11 -0
  464. package/dist/types/omada/oswStackDetail.js +2 -0
  465. package/dist/types/omada/oswStackDetail.js.map +1 -0
  466. package/dist/types/omada/paginatedResult.d.ts +6 -0
  467. package/dist/types/omada/paginatedResult.js +2 -0
  468. package/dist/types/omada/paginatedResult.js.map +1 -0
  469. package/dist/types/omada/rateLimitProfile.d.ts +56 -0
  470. package/dist/types/omada/rateLimitProfile.js +2 -0
  471. package/dist/types/omada/rateLimitProfile.js.map +1 -0
  472. package/dist/types/omada/threatInfo.d.ts +37 -0
  473. package/dist/types/omada/threatInfo.js +2 -0
  474. package/dist/types/omada/threatInfo.js.map +1 -0
  475. package/dist/types/omada/tokenResult.d.ts +6 -0
  476. package/dist/types/omada/tokenResult.js +2 -0
  477. package/dist/types/omada/tokenResult.js.map +1 -0
  478. package/dist/types/permissions.d.ts +92 -0
  479. package/dist/types/permissions.js +136 -0
  480. package/dist/types/permissions.js.map +1 -0
  481. package/dist/utils/config-validations.d.ts +9 -1
  482. package/dist/utils/config-validations.js +29 -20
  483. package/dist/utils/config-validations.js.map +1 -1
  484. package/dist/utils/jwt.d.ts +18 -0
  485. package/dist/utils/jwt.js +47 -0
  486. package/dist/utils/jwt.js.map +1 -0
  487. package/dist/utils/logger.d.ts +4 -5
  488. package/dist/utils/logger.js +70 -59
  489. package/dist/utils/logger.js.map +1 -1
  490. package/dist/version.d.ts +3 -3
  491. package/dist/version.js +3 -14
  492. package/dist/version.js.map +1 -1
  493. package/dist/wrapper.js +1 -1
  494. package/dist/wrapper.js.map +1 -1
  495. package/docs/CHANGELOG.md +42 -0
  496. package/docs/COVERAGE.md +219 -0
  497. package/docs/QUICK_START.md +240 -0
  498. package/package.json +6 -6
  499. package/scripts/generate-jwt.ts +122 -0
  500. package/src/config.ts +79 -44
  501. package/src/haClient/config.ts +13 -2
  502. package/src/haClient/history.ts +9 -4
  503. package/src/haClient/index.ts +9 -2
  504. package/src/index.ts +75 -35
  505. package/src/omadaClient/auth.ts +176 -0
  506. package/src/omadaClient/client.ts +225 -0
  507. package/src/omadaClient/device.ts +91 -0
  508. package/src/omadaClient/index.ts +206 -0
  509. package/src/omadaClient/network.ts +129 -0
  510. package/src/omadaClient/request.ts +332 -0
  511. package/src/omadaClient/security.ts +51 -0
  512. package/src/omadaClient/site.ts +37 -0
  513. package/src/permissions/index.ts +101 -0
  514. package/src/server/auth.ts +59 -31
  515. package/src/server/common.ts +20 -5
  516. package/src/server/http.ts +117 -64
  517. package/src/server/stdio.ts +9 -2
  518. package/src/server/stream.ts +22 -7
  519. package/src/tools/{analyzeSensors.ts → ai/analyzeSensors.ts} +3 -3
  520. package/src/tools/ai/index.ts +20 -0
  521. package/src/tools/common.ts +65 -4
  522. package/src/tools/{automationControls.ts → homeassistant/automationControls.ts} +6 -6
  523. package/src/tools/{calendar.ts → homeassistant/calendar.ts} +4 -4
  524. package/src/tools/{callService.ts → homeassistant/callService.ts} +4 -4
  525. package/src/tools/{controlClimate.ts → homeassistant/controlClimate.ts} +3 -3
  526. package/src/tools/{controlCover.ts → homeassistant/controlCover.ts} +3 -3
  527. package/src/tools/{controlFan.ts → homeassistant/controlFan.ts} +3 -3
  528. package/src/tools/{controlLight.ts → homeassistant/controlLight.ts} +3 -3
  529. package/src/tools/{controlMediaPlayer.ts → homeassistant/controlMediaPlayer.ts} +3 -3
  530. package/src/tools/{createAutomation.ts → homeassistant/createAutomation.ts} +4 -4
  531. package/src/tools/{deleteAutomation.ts → homeassistant/deleteAutomation.ts} +3 -3
  532. package/src/tools/{entityAction.ts → homeassistant/entityAction.ts} +3 -3
  533. package/src/tools/{getAllSensors.ts → homeassistant/getAllSensors.ts} +3 -3
  534. package/src/tools/{getAutomationTrace.ts → homeassistant/getAutomationTrace.ts} +3 -3
  535. package/src/tools/{getDomainSummary.ts → homeassistant/getDomainSummary.ts} +3 -3
  536. package/src/tools/{getEntitiesByDomain.ts → homeassistant/getEntitiesByDomain.ts} +3 -3
  537. package/src/tools/{getHistory.ts → homeassistant/getHistory.ts} +3 -3
  538. package/src/tools/{getState.ts → homeassistant/getState.ts} +3 -3
  539. package/src/tools/{getStates.ts → homeassistant/getStates.ts} +3 -3
  540. package/src/tools/{getVersion.ts → homeassistant/getVersion.ts} +3 -3
  541. package/src/tools/homeassistant/index.ts +121 -0
  542. package/src/tools/{listAutomations.ts → homeassistant/listAutomations.ts} +3 -3
  543. package/src/tools/{listEntities.ts → homeassistant/listEntities.ts} +3 -3
  544. package/src/tools/{listPersons.ts → homeassistant/listPersons.ts} +3 -3
  545. package/src/tools/{sceneAndScript.ts → homeassistant/sceneAndScript.ts} +4 -4
  546. package/src/tools/{searchEntities.ts → homeassistant/searchEntities.ts} +3 -3
  547. package/src/tools/{sendNotification.ts → homeassistant/sendNotification.ts} +4 -4
  548. package/src/tools/{systemTools.ts → homeassistant/systemTools.ts} +9 -9
  549. package/src/tools/{triggerAutomation.ts → homeassistant/triggerAutomation.ts} +3 -3
  550. package/src/tools/index.ts +47 -116
  551. package/src/tools/omada/disableClientRateLimit.ts +23 -0
  552. package/src/tools/omada/getClient.ts +15 -0
  553. package/src/tools/omada/getDevice.ts +15 -0
  554. package/src/tools/omada/getFirewallSetting.ts +15 -0
  555. package/src/tools/omada/getInternetInfo.ts +15 -0
  556. package/src/tools/omada/getLanNetworkList.ts +15 -0
  557. package/src/tools/omada/getLanProfileList.ts +15 -0
  558. package/src/tools/omada/getPortForwardingStatus.ts +26 -0
  559. package/src/tools/omada/getRateLimitProfiles.ts +15 -0
  560. package/src/tools/omada/getSsidDetail.ts +22 -0
  561. package/src/tools/omada/getSsidList.ts +21 -0
  562. package/src/tools/omada/getSwitchStackDetail.ts +15 -0
  563. package/src/tools/omada/getThreatList.ts +42 -0
  564. package/src/tools/omada/getWlanGroupList.ts +15 -0
  565. package/src/tools/omada/index.ts +82 -0
  566. package/src/tools/omada/listClients.ts +15 -0
  567. package/src/tools/omada/listClientsActivity.ts +25 -0
  568. package/src/tools/omada/listClientsPastConnections.ts +44 -0
  569. package/src/tools/omada/listDevices.ts +15 -0
  570. package/src/tools/omada/listDevicesStats.ts +41 -0
  571. package/src/tools/omada/listMostActiveClients.ts +15 -0
  572. package/src/tools/omada/listSites.ts +18 -0
  573. package/src/tools/omada/searchDevices.ts +20 -0
  574. package/src/tools/omada/setClientRateLimit.ts +26 -0
  575. package/src/tools/omada/setClientRateLimitProfile.ts +25 -0
  576. package/src/tools/types.ts +11 -0
  577. package/src/tools/utils/pagination-schema.ts +27 -0
  578. package/src/types/ai/index.ts +11 -0
  579. package/src/types/ai/types.ts +67 -0
  580. package/src/types/homeassistant/config.ts +14 -0
  581. package/src/types/homeassistant/index.ts +45 -0
  582. package/src/types/index.ts +9 -38
  583. package/src/types/omada/activeClientInfo.ts +17 -0
  584. package/src/types/omada/clientActivity.ts +32 -0
  585. package/src/types/omada/clientPastConnection.ts +82 -0
  586. package/src/types/omada/index.ts +13 -0
  587. package/src/types/omada/omadaApiResponse.ts +5 -0
  588. package/src/types/omada/omadaClientInfo.ts +11 -0
  589. package/src/types/omada/omadaDeviceInfo.ts +11 -0
  590. package/src/types/omada/omadaDeviceStats.ts +31 -0
  591. package/src/types/omada/omadaSiteSummary.ts +5 -0
  592. package/src/types/omada/oswStackDetail.ts +11 -0
  593. package/src/types/omada/paginatedResult.ts +6 -0
  594. package/src/types/omada/rateLimitProfile.ts +58 -0
  595. package/src/types/omada/threatInfo.ts +38 -0
  596. package/src/types/omada/tokenResult.ts +6 -0
  597. package/src/utils/config-validations.ts +29 -22
  598. package/src/utils/jwt.ts +69 -0
  599. package/src/utils/logger.ts +72 -66
  600. package/src/version.ts +3 -14
  601. package/src/wrapper.ts +1 -1
  602. package/tests/bdd/configuration.spec.ts +10 -13
  603. package/tests/config.test.ts +14 -36
  604. package/tests/features/configuration.feature +4 -5
  605. package/tests/haClient/config.test.ts +33 -12
  606. package/tests/haClient/history.test.ts +58 -0
  607. package/tests/haClient/index.test.ts +3 -13
  608. package/tests/index.test.ts +5 -9
  609. package/tests/localAI/index.test.ts +1 -1
  610. package/tests/permissions/index.test.ts +173 -0
  611. package/tests/resources/index.test.ts +288 -0
  612. package/tests/server/auth.test.ts +64 -46
  613. package/tests/server/common.test.ts +49 -29
  614. package/tests/server/http.test.ts +6 -32
  615. package/tests/server/stdio.test.ts +27 -28
  616. package/tests/server/stream.test.ts +1 -2
  617. package/tests/tools/ai/analyzeSensors.test.ts +235 -0
  618. package/tests/tools/common.test.ts +124 -0
  619. package/tests/tools/homeassistant/handlers.test.ts +815 -0
  620. package/tests/tools/omada/handlers.test.ts +854 -0
  621. package/tests/tools/registry.test.ts +32 -26
  622. package/tests/utils/config-validations.test.ts +69 -6
  623. package/tests/utils/jwt.test.ts +115 -0
  624. package/docs/LOCAL_CLIENT.md +0 -572
  625. package/docs/SSE_API.md +0 -341
  626. package/src/server/sse.ts +0 -120
  627. package/src/types/config.ts +0 -11
  628. package/tests/server/sse.test.ts +0 -240
  629. /package/src/types/{automations.ts → homeassistant/automations.ts} +0 -0
  630. /package/src/types/{calendars.ts → homeassistant/calendars.ts} +0 -0
  631. /package/src/types/{entities.ts → homeassistant/entities.ts} +0 -0
  632. /package/src/types/{errors.ts → homeassistant/errors.ts} +0 -0
  633. /package/src/types/{haConfig.ts → homeassistant/haConfig.ts} +0 -0
  634. /package/src/types/{history.ts → homeassistant/history.ts} +0 -0
  635. /package/src/types/{request.ts → homeassistant/request.ts} +0 -0
  636. /package/src/types/{serviceCall.ts → homeassistant/serviceCall.ts} +0 -0
  637. /package/src/types/{states.ts → homeassistant/states.ts} +0 -0
  638. /package/src/types/{updates.ts → homeassistant/updates.ts} +0 -0
package/.env.example CHANGED
@@ -73,12 +73,6 @@ MCP_SERVER_STATEFUL=false
73
73
  # Default: 3000
74
74
  MCP_HTTP_PORT=3000
75
75
 
76
- # Transport protocol: stream or sse
77
- # - stream: Modern MCP protocol (recommended)
78
- # - sse: Legacy MCP protocol with Server-Sent Events
79
- # Default: stream
80
- MCP_HTTP_TRANSPORT=stream
81
-
82
76
  # Bind address (use 0.0.0.0 to listen on all interfaces)
83
77
  # Default: 127.0.0.1 (localhost only)
84
78
  MCP_HTTP_BIND_ADDR=127.0.0.1
@@ -119,43 +113,6 @@ MCP_AUTH_METHOD=none
119
113
  # Example: MCP_AUTH_TOKEN=token1,token2,token3
120
114
  # MCP_AUTH_TOKEN=your-secret-token-here
121
115
 
122
- # =============================================================================
123
- # Usage Examples
124
- # =============================================================================
125
-
126
- # Example 1: Claude Desktop (Stdio Mode)
127
- # ----------------------------------------
128
- # MCP_SERVER_USE_HTTP=false
129
- # MCP_SERVER_LOG_LEVEL=info
130
- # Then configure claude_desktop_config.json to run: node dist/index.js
131
-
132
- # Example 2: HTTP Server with Stream Transport (Recommended)
133
- # -----------------------------------------------------------
134
- # MCP_SERVER_USE_HTTP=true
135
- # MCP_HTTP_TRANSPORT=stream
136
- # MCP_HTTP_PORT=3000
137
- # MCP_HTTP_BIND_ADDR=127.0.0.1
138
- # Access at: http://mcpserver.10.0.0.18.nip.io:3000/mcp
139
-
140
- # Example 3: HTTP Server with SSE (Legacy Clients)
141
- # -------------------------------------------------
142
- # MCP_SERVER_USE_HTTP=true
143
- # MCP_HTTP_TRANSPORT=sse
144
- # MCP_HTTP_PORT=3000
145
- # Access at: http://mcpserver.10.0.0.18.nip.io:3000/sse
146
-
147
- # Example 4: Production HTTP Server
148
- # ----------------------------------
149
- # MCP_SERVER_USE_HTTP=true
150
- # MCP_SERVER_LOG_FORMAT=json
151
- # MCP_HTTP_TRANSPORT=stream
152
- # MCP_HTTP_PORT=3000
153
- # MCP_HTTP_BIND_ADDR=0.0.0.0
154
- # MCP_HTTP_ALLOWED_ORIGINS=https://your-app.com
155
- # MCP_SERVER_STATEFUL=true
156
- # MCP_AUTH_METHOD=bearer
157
- # MCP_AUTH_TOKEN=n8n-token,openwebui-token,cli-token
158
-
159
116
  # =============================================================================
160
117
  # Security Notes
161
118
  # =============================================================================
package/Dockerfile CHANGED
@@ -1,21 +1,21 @@
1
1
  # syntax=docker/dockerfile:1.7
2
2
 
3
- FROM node:24-bookworm-slim AS deps
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:24-bookworm-slim AS build
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:24-bookworm-slim AS runtime
14
+ FROM node:25-alpine AS runtime
15
15
 
16
16
  # OCI metadata labels
17
- LABEL org.opencontainers.image.title="Smart HomeAssistant MCP Server"
18
- LABEL org.opencontainers.image.description="Smart home MCP server for Home Assistant plus Local AI integration"
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,10 +24,8 @@ LABEL org.opencontainers.image.licenses="MIT"
24
24
 
25
25
  WORKDIR /app
26
26
  ENV NODE_ENV=production
27
- RUN apt-get update \
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
33
- CMD ["node", "dist/index.js"]
31
+ CMD ["node", "--experimental-quic", "dist/index.js"]
package/README.md CHANGED
@@ -5,122 +5,23 @@ A production-ready Model Context Protocol (MCP) server for Home Assistant integr
5
5
  [![npm version](https://badge.fury.io/js/%40coffeerunhobby%2Fmcp-ha-connect.svg)](https://www.npmjs.com/package/@coffeerunhobby/mcp-ha-connect)
6
6
  [![Docker](https://img.shields.io/badge/docker-ghcr.io-blue)](https://github.com/coffeerunhobby/mcp-ha-connect/pkgs/container/mcp-ha-connect)
7
7
 
8
- ## Quick Start
9
-
10
- Choose your preferred installation method:
11
-
12
- ### Option 1: npx (Recommended - No Installation Required)
13
-
14
- ```json
15
- {
16
- "mcpServers": {
17
- "homeassistant": {
18
- "command": "npx",
19
- "args": ["-y", "@coffeerunhobby/mcp-ha-connect"],
20
- "env": {
21
- "HA_URL": "http://homeassistant.10.0.0.19.nip.io:8123",
22
- "HA_TOKEN": "your_long_lived_access_token"
23
- }
24
- }
25
- }
26
- }
27
- ```
28
-
29
- ### Option 2: Global npm Install
30
-
31
- ```bash
32
- npm install -g @coffeerunhobby/mcp-ha-connect
33
- ```
34
-
35
- ```json
36
- {
37
- "mcpServers": {
38
- "homeassistant": {
39
- "command": "mcp-ha-connect",
40
- "env": {
41
- "HA_URL": "http://homeassistant.10.0.0.19.nip.io:8123",
42
- "HA_TOKEN": "your_token"
43
- }
44
- }
45
- }
46
- }
47
- ```
48
-
49
- ### Option 3: Docker
50
-
51
- ```json
52
- {
53
- "mcpServers": {
54
- "homeassistant": {
55
- "command": "docker",
56
- "args": [
57
- "run",
58
- "--rm",
59
- "-i",
60
- "-e", "HA_URL=http://host.docker.internal:8123",
61
- "-e", "HA_TOKEN=your_token",
62
- "ghcr.io/coffeerunhobby/mcp-ha-connect:latest"
63
- ]
64
- }
65
- }
66
- }
67
- ```
68
-
69
- ### Option 4: Local Development
70
-
71
- ```json
72
- {
73
- "mcpServers": {
74
- "homeassistant": {
75
- "command": "node",
76
- "args": ["C:\\workspace\\mcp-homeassistant\\dist\\index.js"],
77
- "env": {
78
- "HA_URL": "http://homeassistant.10.0.0.19.nip.io:8123",
79
- "HA_TOKEN": "your_token"
80
- }
81
- }
82
- }
83
- }
84
- ```
85
-
86
- ## Configuration Locations
87
-
88
- ### Claude Desktop
89
- - **Windows:** `%APPDATA%\Claude\claude_desktop_config.json`
90
- - **macOS:** `~/Library/Application Support/Claude/claude_desktop_config.json`
91
- - **Linux:** `~/.config/Claude/claude_desktop_config.json`
92
-
93
- ### LM Studio
94
- - **Windows:** `%USERPROFILE%\.lmstudio\config.json`
95
- - **macOS:** `~/Library/Application Support/LM Studio/config.json`
96
- - **Linux:** `~/.config/lmstudio/config.json`
97
-
98
- ## Autonomous Safety Monitoring System
99
-
100
- 1. **JS Pre-filter**: Tier A triggers + basic anomaly detection
101
- 2. **Issue Objects**: Structured alerts (entity, area, threshold, observed, last_changed)
102
- 3. **LLM Decision**: Single JSON verdict from local model
103
- 4. **Smart Notifications**: Dedupe + cooldown to prevent alert fatigue
104
- 5. **Acknowledgment**: HA notification, Telegram, mobile app action, or voice
105
- 6. **Auto-Response**: Water/gas shutoff via HA valves/switches
106
-
107
- See [docs/SSE_API.md](docs/SSE_API.md) for complete documentation of the SSE system.
8
+ See [docs/QUICK_START.md](docs/QUICK_START.md) for Docker, HTTP server mode, n8n integration, and more installation options.
108
9
 
109
10
  ## Key Features
110
11
 
111
12
  ### Core Functionality
112
13
 
113
- - **Smart Device Control**
114
- - Lights: Brightness, color temperature, RGB color, transitions
115
- - Climate: Temperature, HVAC modes, fan modes, humidity
116
- - Covers: Position and tilt control
117
- - Switches: On/off control
118
- - Sensors & Contacts: State monitoring
119
- - Media Players: Playback control, volume, source selection
120
- - Fans: Speed, oscillation, direction
121
- - Locks: Lock/unlock control
122
- - Vacuums: Start, stop, return to base
123
- - Cameras: Motion detection, snapshots
14
+ - Smart Device Control
15
+ - Lights: Brightness, color temperature, RGB color, transitions
16
+ - Climate: Temperature, HVAC modes, fan modes, humidity
17
+ - Covers: Position and tilt control
18
+ - Switches: On/off control
19
+ - Sensors & Contacts: State monitoring
20
+ - Media Players: Playback control, volume, source selection
21
+ - Fans: Speed, oscillation, direction
22
+ - Locks: Lock/unlock control
23
+ - Vacuums: Start, stop, return to base
24
+ - Cameras: Motion detection, snapshots
124
25
 
125
26
  ### Automation Management
126
27
 
@@ -140,17 +41,20 @@ See [docs/SSE_API.md](docs/SSE_API.md) for complete documentation of the SSE sys
140
41
  - Service call support
141
42
  - Advanced entity search
142
43
  - AI-powered sensor analysis with Ollama
143
- - Multiple transport modes (stdio, SSE, Streamable HTTP)
44
+ - Multiple transport modes (stdio, Streamable HTTP)
144
45
  - HTTP server with health checks
145
46
  - CORS support for browser-based clients
146
- - Structured logging with pino (plain, JSON, GCP-JSON formats)
47
+ - Structured logging (plain, JSON, GCP-JSON formats)
147
48
  - Comprehensive configuration validation with Zod
148
49
  - Full type safety with TypeScript
149
50
  - Stateful and stateless session support
51
+ - JWT authentication with role-based access control
150
52
 
151
- ## Available Tools (37 Total)
53
+ ## Available Tools (60 Total)
152
54
 
153
- ### State & Entity Tools
55
+ ### Home Assistant Tools (35)
56
+
57
+ #### State & Entity Tools
154
58
 
155
59
  | Tool | Description |
156
60
  |------|-------------|
@@ -164,14 +68,14 @@ See [docs/SSE_API.md](docs/SSE_API.md) for complete documentation of the SSE sys
164
68
  | `getHistory` | Get historical data for an entity |
165
69
  | `listPersons` | List all household members with location state (home/away) |
166
70
 
167
- ### Service & Control Tools
71
+ #### Service & Control Tools
168
72
 
169
73
  | Tool | Description |
170
74
  |------|-------------|
171
75
  | `callService` | Call any Home Assistant service |
172
76
  | `entityAction` | Simple turn_on/turn_off/toggle actions |
173
77
 
174
- ### Device Control Tools
78
+ #### Device Control Tools
175
79
 
176
80
  | Tool | Description |
177
81
  |------|-------------|
@@ -185,7 +89,7 @@ See [docs/SSE_API.md](docs/SSE_API.md) for complete documentation of the SSE sys
185
89
  | `sendNotification` | Send notifications with full mobile app support (actions, priority, images) |
186
90
  | `listNotificationTargets` | Discover available mobile app notification targets |
187
91
 
188
- ### Automation Tools
92
+ #### Automation Tools
189
93
 
190
94
  | Tool | Description |
191
95
  |------|-------------|
@@ -199,7 +103,7 @@ See [docs/SSE_API.md](docs/SSE_API.md) for complete documentation of the SSE sys
199
103
  | `deleteAutomation` | Delete an automation |
200
104
  | `getAutomationTrace` | Get automation execution history |
201
105
 
202
- ### System Tools
106
+ #### System Tools
203
107
 
204
108
  | Tool | Description |
205
109
  |------|-------------|
@@ -207,15 +111,76 @@ See [docs/SSE_API.md](docs/SSE_API.md) for complete documentation of the SSE sys
207
111
  | `restartHomeAssistant` | Restart the Home Assistant server |
208
112
  | `getSystemLog` | Get system log entries from logbook |
209
113
  | `checkUpdates` | Check for available updates |
210
- | `analyzeSensors` | AI-powered sensor analysis using Ollama |
211
114
 
212
- ### Calendar Tools
115
+ #### Calendar Tools
213
116
 
214
117
  | Tool | Description |
215
118
  |------|-------------|
216
119
  | `listCalendars` | List all calendar entities |
217
120
  | `getCalendarEvents` | Get events from one or all calendars |
218
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
+
219
184
  ### MCP Resources
220
185
 
221
186
  | Resource URI | Description |
@@ -257,6 +222,7 @@ See [docs/SSE_API.md](docs/SSE_API.md) for complete documentation of the SSE sys
257
222
 
258
223
  | Variable | Default | Description |
259
224
  |----------|---------|-------------|
225
+ | `HA_PLUGIN_ENABLED` | `true` | Enable Home Assistant plugin |
260
226
  | `HA_STRICT_SSL` | `true` | Validate SSL certificates |
261
227
  | `HA_TIMEOUT` | `30000` | API request timeout (ms) |
262
228
 
@@ -274,7 +240,6 @@ See [docs/SSE_API.md](docs/SSE_API.md) for complete documentation of the SSE sys
274
240
  | Variable | Default | Description |
275
241
  |----------|---------|-------------|
276
242
  | `MCP_HTTP_PORT` | `3000` | HTTP server port |
277
- | `MCP_HTTP_TRANSPORT` | `stream` | Transport: `stream` or `sse` |
278
243
  | `MCP_HTTP_BIND_ADDR` | `127.0.0.1` | Bind address |
279
244
  | `MCP_HTTP_PATH` | `/mcp` | MCP endpoint path |
280
245
  | `MCP_HTTP_ENABLE_HEALTHCHECK` | `true` | Enable health check endpoint |
@@ -302,17 +267,86 @@ See [docs/SSE_API.md](docs/SSE_API.md) for complete documentation of the SSE sys
302
267
  | Variable | Default | Description |
303
268
  |----------|---------|-------------|
304
269
  | `MCP_AUTH_METHOD` | `none` | Auth method: `none` or `bearer` |
305
- | `MCP_AUTH_TOKEN` | - | Bearer token(s), can be comma-separated for multiple clients |
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
+ ```
306
326
 
307
327
  ### Optional - AI Provider
308
328
 
309
329
  | Variable | Default | Description |
310
330
  |----------|---------|-------------|
331
+ | `AI_PLUGIN_ENABLED` | `true` | Enable AI plugin |
311
332
  | `AI_PROVIDER` | `ollama` | AI provider: `ollama`, `openai`, or `none` |
312
- | `AI_URL` | `http://ollama.10.0.0.17.nip.io:11434` | AI server URL (Ollama) |
333
+ | `AI_URL` | `http://localhost:11434` | AI server URL (Ollama) |
313
334
  | `AI_MODEL` | `llama2` | AI model name |
314
335
  | `AI_TIMEOUT` | `60000` | AI request timeout (ms) |
315
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
+
316
350
  ## Advanced Configuration Examples
317
351
 
318
352
  ### With AI Analysis (Ollama)
@@ -664,10 +698,6 @@ MIT
664
698
 
665
699
  Coffee Run Hobby ([github.com/coffeerunhobby](https://github.com/coffeerunhobby))
666
700
 
667
- ## Version
668
-
669
- 0.7.0
670
-
671
701
  ## Links
672
702
 
673
703
  - **GitHub**: [https://github.com/coffeerunhobby/mcp-ha-connect](https://github.com/coffeerunhobby/mcp-ha-connect)
@@ -676,9 +706,8 @@ Coffee Run Hobby ([github.com/coffeerunhobby](https://github.com/coffeerunhobby)
676
706
 
677
707
  ## Documentation
678
708
 
709
+ - [Quick Start Guide](docs/QUICK_START.md)
679
710
  - [Changelog](docs/CHANGELOG.md)
680
- - [Local Client Configuration](docs/LOCAL_CLIENT.md)
681
- - [SSE Event API](docs/SSE_API.md)
682
711
 
683
712
  ## Contributing
684
713
 
@@ -0,0 +1,6 @@
1
+ /**
2
+ * Autonomic Module
3
+ * Implements the autonomic nervous system architecture for home automation
4
+ * with tiered response system (reflex, supervised, informational)
5
+ */
6
+ export { Priority, PriorityMask, matchesPriority, getPriorityName, getPriorityTier, bypassesQuietHours, requiresImmediateAction, requiresApproval, } from './priority.js';
@@ -0,0 +1,7 @@
1
+ /**
2
+ * Autonomic Module
3
+ * Implements the autonomic nervous system architecture for home automation
4
+ * with tiered response system (reflex, supervised, informational)
5
+ */
6
+ export { Priority, PriorityMask, matchesPriority, getPriorityName, getPriorityTier, bypassesQuietHours, requiresImmediateAction, requiresApproval, } from './priority.js';
7
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/autonomic/index.ts"],"names":[],"mappings":"AAAA;;;;GAIG;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
+ * Autonomic 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
+ * Autonomic 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/autonomic/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"}