From be7e50610ad2a547d926e32652046afffd84aabd Mon Sep 17 00:00:00 2001 From: Home Assistant Version Control Date: Wed, 5 Aug 2026 23:27:04 +0000 Subject: [PATCH] 23 files --- .../__pycache__/__init__.cpython-314.pyc | Bin 155724 -> 0 bytes .../__pycache__/config_flow.cpython-314.pyc | Bin 41142 -> 0 bytes .../__pycache__/const.cpython-314.pyc | Bin 8226 -> 0 bytes .../__pycache__/coordinator.cpython-314.pyc | Bin 6816 -> 0 bytes .../embedded_entry.cpython-314.pyc | Bin 18046 -> 0 bytes .../embedded_server.cpython-314.pyc | Bin 85129 -> 0 bytes .../embedded_setup.cpython-314.pyc | Bin 40708 -> 0 bytes .../__pycache__/hacs_nudge.cpython-314.pyc | Bin 6897 -> 0 bytes .../install_source_check.cpython-314.pyc | Bin 5816 -> 0 bytes .../__pycache__/llm_api.cpython-314.pyc | Bin 33839 -> 0 bytes .../__pycache__/mcp_webhook.cpython-314.pyc | Bin 39673 -> 0 bytes .../oauth_autoapprove.cpython-314.pyc | Bin 17455 -> 0 bytes .../__pycache__/oauth_legacy.cpython-314.pyc | Bin 43936 -> 0 bytes .../__pycache__/ui_panel.cpython-314.pyc | Bin 35899 -> 0 bytes .../__pycache__/update.cpython-314.pyc | Bin 16862 -> 0 bytes .../__pycache__/websocket_api.cpython-314.pyc | Bin 304573 -> 0 bytes .../__pycache__/yaml_rt.cpython-314.pyc | Bin 13176 -> 0 bytes custom_components/ha_mcp_tools/const.py | 2 +- .../ha_mcp_tools/embedded_server.py | 218 +++++++++++++++--- custom_components/ha_mcp_tools/manifest.json | 2 +- .../ha_mcp_tools/translations/zh-Hans.json | 26 +-- .../ha_mcp_tools/websocket_api.py | 8 +- zigbee2mqtt/state.json | 50 ++-- 23 files changed, 229 insertions(+), 77 deletions(-) delete mode 100644 custom_components/ha_mcp_tools/__pycache__/__init__.cpython-314.pyc delete mode 100644 custom_components/ha_mcp_tools/__pycache__/config_flow.cpython-314.pyc delete mode 100644 custom_components/ha_mcp_tools/__pycache__/const.cpython-314.pyc delete mode 100644 custom_components/ha_mcp_tools/__pycache__/coordinator.cpython-314.pyc delete mode 100644 custom_components/ha_mcp_tools/__pycache__/embedded_entry.cpython-314.pyc delete mode 100644 custom_components/ha_mcp_tools/__pycache__/embedded_server.cpython-314.pyc delete mode 100644 custom_components/ha_mcp_tools/__pycache__/embedded_setup.cpython-314.pyc delete mode 100644 custom_components/ha_mcp_tools/__pycache__/hacs_nudge.cpython-314.pyc delete mode 100644 custom_components/ha_mcp_tools/__pycache__/install_source_check.cpython-314.pyc delete mode 100644 custom_components/ha_mcp_tools/__pycache__/llm_api.cpython-314.pyc delete mode 100644 custom_components/ha_mcp_tools/__pycache__/mcp_webhook.cpython-314.pyc delete mode 100644 custom_components/ha_mcp_tools/__pycache__/oauth_autoapprove.cpython-314.pyc delete mode 100644 custom_components/ha_mcp_tools/__pycache__/oauth_legacy.cpython-314.pyc delete mode 100644 custom_components/ha_mcp_tools/__pycache__/ui_panel.cpython-314.pyc delete mode 100644 custom_components/ha_mcp_tools/__pycache__/update.cpython-314.pyc delete mode 100644 custom_components/ha_mcp_tools/__pycache__/websocket_api.cpython-314.pyc delete mode 100644 custom_components/ha_mcp_tools/__pycache__/yaml_rt.cpython-314.pyc diff --git a/custom_components/ha_mcp_tools/__pycache__/__init__.cpython-314.pyc b/custom_components/ha_mcp_tools/__pycache__/__init__.cpython-314.pyc deleted file mode 100644 index 1eddfd70f2405ba3618b4c98e5b57a68fdb74538..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 155724 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