ha-mcp-dev 8.1.1.dev2292__tar.gz → 8.1.1.dev2296__tar.gz
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.
- {ha_mcp_dev-8.1.1.dev2292/src/ha_mcp_dev.egg-info → ha_mcp_dev-8.1.1.dev2296}/PKG-INFO +1 -1
- {ha_mcp_dev-8.1.1.dev2292 → ha_mcp_dev-8.1.1.dev2296}/pyproject.toml +2 -2
- {ha_mcp_dev-8.1.1.dev2292 → ha_mcp_dev-8.1.1.dev2296}/src/ha_mcp/tools/tools_dev.py +24 -4
- {ha_mcp_dev-8.1.1.dev2292 → ha_mcp_dev-8.1.1.dev2296/src/ha_mcp_dev.egg-info}/PKG-INFO +1 -1
- {ha_mcp_dev-8.1.1.dev2292 → ha_mcp_dev-8.1.1.dev2296}/LICENSE +0 -0
- {ha_mcp_dev-8.1.1.dev2292 → ha_mcp_dev-8.1.1.dev2296}/MANIFEST.in +0 -0
- {ha_mcp_dev-8.1.1.dev2292 → ha_mcp_dev-8.1.1.dev2296}/README.md +0 -0
- {ha_mcp_dev-8.1.1.dev2292 → ha_mcp_dev-8.1.1.dev2296}/setup.cfg +0 -0
- {ha_mcp_dev-8.1.1.dev2292 → ha_mcp_dev-8.1.1.dev2296}/src/ha_mcp/__init__.py +0 -0
- {ha_mcp_dev-8.1.1.dev2292 → ha_mcp_dev-8.1.1.dev2296}/src/ha_mcp/__main__.py +0 -0
- {ha_mcp_dev-8.1.1.dev2292 → ha_mcp_dev-8.1.1.dev2296}/src/ha_mcp/_pypi_marker +0 -0
- {ha_mcp_dev-8.1.1.dev2292 → ha_mcp_dev-8.1.1.dev2296}/src/ha_mcp/_vendor/__init__.py +0 -0
- {ha_mcp_dev-8.1.1.dev2292 → ha_mcp_dev-8.1.1.dev2296}/src/ha_mcp/_vendor/requirements.txt +0 -0
- {ha_mcp_dev-8.1.1.dev2292 → ha_mcp_dev-8.1.1.dev2296}/src/ha_mcp/_vendor/websockets/LICENSE +0 -0
- {ha_mcp_dev-8.1.1.dev2292 → ha_mcp_dev-8.1.1.dev2296}/src/ha_mcp/_vendor/websockets/MANIFEST.sha256 +0 -0
- {ha_mcp_dev-8.1.1.dev2292 → ha_mcp_dev-8.1.1.dev2296}/src/ha_mcp/_vendor/websockets/VENDORED +0 -0
- {ha_mcp_dev-8.1.1.dev2292 → ha_mcp_dev-8.1.1.dev2296}/src/ha_mcp/_vendor/websockets/__init__.py +0 -0
- {ha_mcp_dev-8.1.1.dev2292 → ha_mcp_dev-8.1.1.dev2296}/src/ha_mcp/_vendor/websockets/__main__.py +0 -0
- {ha_mcp_dev-8.1.1.dev2292 → ha_mcp_dev-8.1.1.dev2296}/src/ha_mcp/_vendor/websockets/asyncio/__init__.py +0 -0
- {ha_mcp_dev-8.1.1.dev2292 → ha_mcp_dev-8.1.1.dev2296}/src/ha_mcp/_vendor/websockets/asyncio/client.py +0 -0
- {ha_mcp_dev-8.1.1.dev2292 → ha_mcp_dev-8.1.1.dev2296}/src/ha_mcp/_vendor/websockets/asyncio/connection.py +0 -0
- {ha_mcp_dev-8.1.1.dev2292 → ha_mcp_dev-8.1.1.dev2296}/src/ha_mcp/_vendor/websockets/asyncio/messages.py +0 -0
- {ha_mcp_dev-8.1.1.dev2292 → ha_mcp_dev-8.1.1.dev2296}/src/ha_mcp/_vendor/websockets/asyncio/router.py +0 -0
- {ha_mcp_dev-8.1.1.dev2292 → ha_mcp_dev-8.1.1.dev2296}/src/ha_mcp/_vendor/websockets/asyncio/server.py +0 -0
- {ha_mcp_dev-8.1.1.dev2292 → ha_mcp_dev-8.1.1.dev2296}/src/ha_mcp/_vendor/websockets/auth.py +0 -0
- {ha_mcp_dev-8.1.1.dev2292 → ha_mcp_dev-8.1.1.dev2296}/src/ha_mcp/_vendor/websockets/cli.py +0 -0
- {ha_mcp_dev-8.1.1.dev2292 → ha_mcp_dev-8.1.1.dev2296}/src/ha_mcp/_vendor/websockets/client.py +0 -0
- {ha_mcp_dev-8.1.1.dev2292 → ha_mcp_dev-8.1.1.dev2296}/src/ha_mcp/_vendor/websockets/connection.py +0 -0
- {ha_mcp_dev-8.1.1.dev2292 → ha_mcp_dev-8.1.1.dev2296}/src/ha_mcp/_vendor/websockets/datastructures.py +0 -0
- {ha_mcp_dev-8.1.1.dev2292 → ha_mcp_dev-8.1.1.dev2296}/src/ha_mcp/_vendor/websockets/exceptions.py +0 -0
- {ha_mcp_dev-8.1.1.dev2292 → ha_mcp_dev-8.1.1.dev2296}/src/ha_mcp/_vendor/websockets/extensions/__init__.py +0 -0
- {ha_mcp_dev-8.1.1.dev2292 → ha_mcp_dev-8.1.1.dev2296}/src/ha_mcp/_vendor/websockets/extensions/base.py +0 -0
- {ha_mcp_dev-8.1.1.dev2292 → ha_mcp_dev-8.1.1.dev2296}/src/ha_mcp/_vendor/websockets/extensions/permessage_deflate.py +0 -0
- {ha_mcp_dev-8.1.1.dev2292 → ha_mcp_dev-8.1.1.dev2296}/src/ha_mcp/_vendor/websockets/frames.py +0 -0
- {ha_mcp_dev-8.1.1.dev2292 → ha_mcp_dev-8.1.1.dev2296}/src/ha_mcp/_vendor/websockets/headers.py +0 -0
- {ha_mcp_dev-8.1.1.dev2292 → ha_mcp_dev-8.1.1.dev2296}/src/ha_mcp/_vendor/websockets/http11.py +0 -0
- {ha_mcp_dev-8.1.1.dev2292 → ha_mcp_dev-8.1.1.dev2296}/src/ha_mcp/_vendor/websockets/imports.py +0 -0
- {ha_mcp_dev-8.1.1.dev2292 → ha_mcp_dev-8.1.1.dev2296}/src/ha_mcp/_vendor/websockets/legacy/__init__.py +0 -0
- {ha_mcp_dev-8.1.1.dev2292 → ha_mcp_dev-8.1.1.dev2296}/src/ha_mcp/_vendor/websockets/legacy/auth.py +0 -0
- {ha_mcp_dev-8.1.1.dev2292 → ha_mcp_dev-8.1.1.dev2296}/src/ha_mcp/_vendor/websockets/legacy/client.py +0 -0
- {ha_mcp_dev-8.1.1.dev2292 → ha_mcp_dev-8.1.1.dev2296}/src/ha_mcp/_vendor/websockets/legacy/exceptions.py +0 -0
- {ha_mcp_dev-8.1.1.dev2292 → ha_mcp_dev-8.1.1.dev2296}/src/ha_mcp/_vendor/websockets/legacy/framing.py +0 -0
- {ha_mcp_dev-8.1.1.dev2292 → ha_mcp_dev-8.1.1.dev2296}/src/ha_mcp/_vendor/websockets/legacy/handshake.py +0 -0
- {ha_mcp_dev-8.1.1.dev2292 → ha_mcp_dev-8.1.1.dev2296}/src/ha_mcp/_vendor/websockets/legacy/http.py +0 -0
- {ha_mcp_dev-8.1.1.dev2292 → ha_mcp_dev-8.1.1.dev2296}/src/ha_mcp/_vendor/websockets/legacy/protocol.py +0 -0
- {ha_mcp_dev-8.1.1.dev2292 → ha_mcp_dev-8.1.1.dev2296}/src/ha_mcp/_vendor/websockets/legacy/server.py +0 -0
- {ha_mcp_dev-8.1.1.dev2292 → ha_mcp_dev-8.1.1.dev2296}/src/ha_mcp/_vendor/websockets/protocol.py +0 -0
- {ha_mcp_dev-8.1.1.dev2292 → ha_mcp_dev-8.1.1.dev2296}/src/ha_mcp/_vendor/websockets/proxy.py +0 -0
- {ha_mcp_dev-8.1.1.dev2292 → ha_mcp_dev-8.1.1.dev2296}/src/ha_mcp/_vendor/websockets/py.typed +0 -0
- {ha_mcp_dev-8.1.1.dev2292 → ha_mcp_dev-8.1.1.dev2296}/src/ha_mcp/_vendor/websockets/server.py +0 -0
- {ha_mcp_dev-8.1.1.dev2292 → ha_mcp_dev-8.1.1.dev2296}/src/ha_mcp/_vendor/websockets/streams.py +0 -0
- {ha_mcp_dev-8.1.1.dev2292 → ha_mcp_dev-8.1.1.dev2296}/src/ha_mcp/_vendor/websockets/sync/__init__.py +0 -0
- {ha_mcp_dev-8.1.1.dev2292 → ha_mcp_dev-8.1.1.dev2296}/src/ha_mcp/_vendor/websockets/sync/client.py +0 -0
- {ha_mcp_dev-8.1.1.dev2292 → ha_mcp_dev-8.1.1.dev2296}/src/ha_mcp/_vendor/websockets/sync/connection.py +0 -0
- {ha_mcp_dev-8.1.1.dev2292 → ha_mcp_dev-8.1.1.dev2296}/src/ha_mcp/_vendor/websockets/sync/messages.py +0 -0
- {ha_mcp_dev-8.1.1.dev2292 → ha_mcp_dev-8.1.1.dev2296}/src/ha_mcp/_vendor/websockets/sync/router.py +0 -0
- {ha_mcp_dev-8.1.1.dev2292 → ha_mcp_dev-8.1.1.dev2296}/src/ha_mcp/_vendor/websockets/sync/server.py +0 -0
- {ha_mcp_dev-8.1.1.dev2292 → ha_mcp_dev-8.1.1.dev2296}/src/ha_mcp/_vendor/websockets/sync/utils.py +0 -0
- {ha_mcp_dev-8.1.1.dev2292 → ha_mcp_dev-8.1.1.dev2296}/src/ha_mcp/_vendor/websockets/trio/__init__.py +0 -0
- {ha_mcp_dev-8.1.1.dev2292 → ha_mcp_dev-8.1.1.dev2296}/src/ha_mcp/_vendor/websockets/trio/client.py +0 -0
- {ha_mcp_dev-8.1.1.dev2292 → ha_mcp_dev-8.1.1.dev2296}/src/ha_mcp/_vendor/websockets/trio/connection.py +0 -0
- {ha_mcp_dev-8.1.1.dev2292 → ha_mcp_dev-8.1.1.dev2296}/src/ha_mcp/_vendor/websockets/trio/messages.py +0 -0
- {ha_mcp_dev-8.1.1.dev2292 → ha_mcp_dev-8.1.1.dev2296}/src/ha_mcp/_vendor/websockets/trio/router.py +0 -0
- {ha_mcp_dev-8.1.1.dev2292 → ha_mcp_dev-8.1.1.dev2296}/src/ha_mcp/_vendor/websockets/trio/server.py +0 -0
- {ha_mcp_dev-8.1.1.dev2292 → ha_mcp_dev-8.1.1.dev2296}/src/ha_mcp/_vendor/websockets/trio/utils.py +0 -0
- {ha_mcp_dev-8.1.1.dev2292 → ha_mcp_dev-8.1.1.dev2296}/src/ha_mcp/_vendor/websockets/typing.py +0 -0
- {ha_mcp_dev-8.1.1.dev2292 → ha_mcp_dev-8.1.1.dev2296}/src/ha_mcp/_vendor/websockets/uri.py +0 -0
- {ha_mcp_dev-8.1.1.dev2292 → ha_mcp_dev-8.1.1.dev2296}/src/ha_mcp/_vendor/websockets/utils.py +0 -0
- {ha_mcp_dev-8.1.1.dev2292 → ha_mcp_dev-8.1.1.dev2296}/src/ha_mcp/_vendor/websockets/version.py +0 -0
- {ha_mcp_dev-8.1.1.dev2292 → ha_mcp_dev-8.1.1.dev2296}/src/ha_mcp/_version.py +0 -0
- {ha_mcp_dev-8.1.1.dev2292 → ha_mcp_dev-8.1.1.dev2296}/src/ha_mcp/auth/__init__.py +0 -0
- {ha_mcp_dev-8.1.1.dev2292 → ha_mcp_dev-8.1.1.dev2296}/src/ha_mcp/auth/consent_form.py +0 -0
- {ha_mcp_dev-8.1.1.dev2292 → ha_mcp_dev-8.1.1.dev2296}/src/ha_mcp/auth/provider.py +0 -0
- {ha_mcp_dev-8.1.1.dev2292 → ha_mcp_dev-8.1.1.dev2296}/src/ha_mcp/backup_manager.py +0 -0
- {ha_mcp_dev-8.1.1.dev2292 → ha_mcp_dev-8.1.1.dev2296}/src/ha_mcp/browser_landing.py +0 -0
- {ha_mcp_dev-8.1.1.dev2292 → ha_mcp_dev-8.1.1.dev2296}/src/ha_mcp/client/__init__.py +0 -0
- {ha_mcp_dev-8.1.1.dev2292 → ha_mcp_dev-8.1.1.dev2296}/src/ha_mcp/client/rest_client.py +0 -0
- {ha_mcp_dev-8.1.1.dev2292 → ha_mcp_dev-8.1.1.dev2296}/src/ha_mcp/client/supervisor_client.py +0 -0
- {ha_mcp_dev-8.1.1.dev2292 → ha_mcp_dev-8.1.1.dev2296}/src/ha_mcp/client/websocket_client.py +0 -0
- {ha_mcp_dev-8.1.1.dev2292 → ha_mcp_dev-8.1.1.dev2296}/src/ha_mcp/client/websocket_listener.py +0 -0
- {ha_mcp_dev-8.1.1.dev2292 → ha_mcp_dev-8.1.1.dev2296}/src/ha_mcp/config.py +0 -0
- {ha_mcp_dev-8.1.1.dev2292 → ha_mcp_dev-8.1.1.dev2296}/src/ha_mcp/dashboard_screenshot/__init__.py +0 -0
- {ha_mcp_dev-8.1.1.dev2292 → ha_mcp_dev-8.1.1.dev2296}/src/ha_mcp/dashboard_screenshot/capture.py +0 -0
- {ha_mcp_dev-8.1.1.dev2292 → ha_mcp_dev-8.1.1.dev2296}/src/ha_mcp/dashboard_screenshot/content.py +0 -0
- {ha_mcp_dev-8.1.1.dev2292 → ha_mcp_dev-8.1.1.dev2296}/src/ha_mcp/dashboard_screenshot/paths.py +0 -0
- {ha_mcp_dev-8.1.1.dev2292 → ha_mcp_dev-8.1.1.dev2296}/src/ha_mcp/dashboard_screenshot/provision.py +0 -0
- {ha_mcp_dev-8.1.1.dev2292 → ha_mcp_dev-8.1.1.dev2296}/src/ha_mcp/dashboard_screenshot/theme_guard.py +0 -0
- {ha_mcp_dev-8.1.1.dev2292 → ha_mcp_dev-8.1.1.dev2296}/src/ha_mcp/errors.py +0 -0
- {ha_mcp_dev-8.1.1.dev2292 → ha_mcp_dev-8.1.1.dev2296}/src/ha_mcp/hacs_auto_refresh.py +0 -0
- {ha_mcp_dev-8.1.1.dev2292 → ha_mcp_dev-8.1.1.dev2296}/src/ha_mcp/llm_exposure.py +0 -0
- {ha_mcp_dev-8.1.1.dev2292 → ha_mcp_dev-8.1.1.dev2296}/src/ha_mcp/policy/__init__.py +0 -0
- {ha_mcp_dev-8.1.1.dev2292 → ha_mcp_dev-8.1.1.dev2296}/src/ha_mcp/policy/approval_queue.py +0 -0
- {ha_mcp_dev-8.1.1.dev2292 → ha_mcp_dev-8.1.1.dev2296}/src/ha_mcp/policy/editing.py +0 -0
- {ha_mcp_dev-8.1.1.dev2292 → ha_mcp_dev-8.1.1.dev2296}/src/ha_mcp/policy/evaluator.py +0 -0
- {ha_mcp_dev-8.1.1.dev2292 → ha_mcp_dev-8.1.1.dev2296}/src/ha_mcp/policy/handlers.py +0 -0
- {ha_mcp_dev-8.1.1.dev2292 → ha_mcp_dev-8.1.1.dev2296}/src/ha_mcp/policy/middleware.py +0 -0
- {ha_mcp_dev-8.1.1.dev2292 → ha_mcp_dev-8.1.1.dev2296}/src/ha_mcp/policy/model.py +0 -0
- {ha_mcp_dev-8.1.1.dev2292 → ha_mcp_dev-8.1.1.dev2296}/src/ha_mcp/policy/persistence.py +0 -0
- {ha_mcp_dev-8.1.1.dev2292 → ha_mcp_dev-8.1.1.dev2296}/src/ha_mcp/policy/value_sources.py +0 -0
- {ha_mcp_dev-8.1.1.dev2292 → ha_mcp_dev-8.1.1.dev2296}/src/ha_mcp/py.typed +0 -0
- {ha_mcp_dev-8.1.1.dev2292 → ha_mcp_dev-8.1.1.dev2296}/src/ha_mcp/read_only.py +0 -0
- {ha_mcp_dev-8.1.1.dev2292 → ha_mcp_dev-8.1.1.dev2296}/src/ha_mcp/redaction.py +0 -0
- {ha_mcp_dev-8.1.1.dev2292 → ha_mcp_dev-8.1.1.dev2296}/src/ha_mcp/resources/skills-vendor/.claude/settings.json +0 -0
- {ha_mcp_dev-8.1.1.dev2292 → ha_mcp_dev-8.1.1.dev2296}/src/ha_mcp/resources/skills-vendor/.claude-plugin/marketplace.json +0 -0
- {ha_mcp_dev-8.1.1.dev2292 → ha_mcp_dev-8.1.1.dev2296}/src/ha_mcp/resources/skills-vendor/.claude-plugin/plugin.json +0 -0
- {ha_mcp_dev-8.1.1.dev2292 → ha_mcp_dev-8.1.1.dev2296}/src/ha_mcp/resources/skills-vendor/.github/ISSUE_TEMPLATE/skill-rca.md +0 -0
- {ha_mcp_dev-8.1.1.dev2292 → ha_mcp_dev-8.1.1.dev2296}/src/ha_mcp/resources/skills-vendor/.github/pull_request_template.md +0 -0
- {ha_mcp_dev-8.1.1.dev2292 → ha_mcp_dev-8.1.1.dev2296}/src/ha_mcp/resources/skills-vendor/AGENTS.md +0 -0
- {ha_mcp_dev-8.1.1.dev2292 → ha_mcp_dev-8.1.1.dev2296}/src/ha_mcp/resources/skills-vendor/CLAUDE.md +0 -0
- {ha_mcp_dev-8.1.1.dev2292 → ha_mcp_dev-8.1.1.dev2296}/src/ha_mcp/resources/skills-vendor/CONTRIBUTING.md +0 -0
- {ha_mcp_dev-8.1.1.dev2292 → ha_mcp_dev-8.1.1.dev2296}/src/ha_mcp/resources/skills-vendor/LICENSE +0 -0
- {ha_mcp_dev-8.1.1.dev2292 → ha_mcp_dev-8.1.1.dev2296}/src/ha_mcp/resources/skills-vendor/README.md +0 -0
- {ha_mcp_dev-8.1.1.dev2292 → ha_mcp_dev-8.1.1.dev2296}/src/ha_mcp/resources/skills-vendor/skills/home-assistant-best-practices/SKILL.md +0 -0
- {ha_mcp_dev-8.1.1.dev2292 → ha_mcp_dev-8.1.1.dev2296}/src/ha_mcp/resources/skills-vendor/skills/home-assistant-best-practices/evals/evals.json +0 -0
- {ha_mcp_dev-8.1.1.dev2292 → ha_mcp_dev-8.1.1.dev2296}/src/ha_mcp/resources/skills-vendor/skills/home-assistant-best-practices/references/appdaemon.md +0 -0
- {ha_mcp_dev-8.1.1.dev2292 → ha_mcp_dev-8.1.1.dev2296}/src/ha_mcp/resources/skills-vendor/skills/home-assistant-best-practices/references/automation-patterns.md +0 -0
- {ha_mcp_dev-8.1.1.dev2292 → ha_mcp_dev-8.1.1.dev2296}/src/ha_mcp/resources/skills-vendor/skills/home-assistant-best-practices/references/blueprint-guide.md +0 -0
- {ha_mcp_dev-8.1.1.dev2292 → ha_mcp_dev-8.1.1.dev2296}/src/ha_mcp/resources/skills-vendor/skills/home-assistant-best-practices/references/dashboard-cards.md +0 -0
- {ha_mcp_dev-8.1.1.dev2292 → ha_mcp_dev-8.1.1.dev2296}/src/ha_mcp/resources/skills-vendor/skills/home-assistant-best-practices/references/dashboard-guide.md +0 -0
- {ha_mcp_dev-8.1.1.dev2292 → ha_mcp_dev-8.1.1.dev2296}/src/ha_mcp/resources/skills-vendor/skills/home-assistant-best-practices/references/device-control.md +0 -0
- {ha_mcp_dev-8.1.1.dev2292 → ha_mcp_dev-8.1.1.dev2296}/src/ha_mcp/resources/skills-vendor/skills/home-assistant-best-practices/references/domain-docs.md +0 -0
- {ha_mcp_dev-8.1.1.dev2292 → ha_mcp_dev-8.1.1.dev2296}/src/ha_mcp/resources/skills-vendor/skills/home-assistant-best-practices/references/examples.yaml +0 -0
- {ha_mcp_dev-8.1.1.dev2292 → ha_mcp_dev-8.1.1.dev2296}/src/ha_mcp/resources/skills-vendor/skills/home-assistant-best-practices/references/helper-selection.md +0 -0
- {ha_mcp_dev-8.1.1.dev2292 → ha_mcp_dev-8.1.1.dev2296}/src/ha_mcp/resources/skills-vendor/skills/home-assistant-best-practices/references/safe-refactoring.md +0 -0
- {ha_mcp_dev-8.1.1.dev2292 → ha_mcp_dev-8.1.1.dev2296}/src/ha_mcp/resources/skills-vendor/skills/home-assistant-best-practices/references/scenes.md +0 -0
- {ha_mcp_dev-8.1.1.dev2292 → ha_mcp_dev-8.1.1.dev2296}/src/ha_mcp/resources/skills-vendor/skills/home-assistant-best-practices/references/template-guidelines.md +0 -0
- {ha_mcp_dev-8.1.1.dev2292 → ha_mcp_dev-8.1.1.dev2296}/src/ha_mcp/resources/skills-vendor/skills/home-assistant-best-practices/references/yaml-only-integrations.md +0 -0
- {ha_mcp_dev-8.1.1.dev2292 → ha_mcp_dev-8.1.1.dev2296}/src/ha_mcp/server.py +0 -0
- {ha_mcp_dev-8.1.1.dev2292 → ha_mcp_dev-8.1.1.dev2296}/src/ha_mcp/settings_ui/__init__.py +0 -0
- {ha_mcp_dev-8.1.1.dev2292 → ha_mcp_dev-8.1.1.dev2296}/src/ha_mcp/settings_ui/_handlers_advanced.py +0 -0
- {ha_mcp_dev-8.1.1.dev2292 → ha_mcp_dev-8.1.1.dev2296}/src/ha_mcp/settings_ui/_handlers_backups.py +0 -0
- {ha_mcp_dev-8.1.1.dev2292 → ha_mcp_dev-8.1.1.dev2296}/src/ha_mcp/settings_ui/_handlers_fs.py +0 -0
- {ha_mcp_dev-8.1.1.dev2292 → ha_mcp_dev-8.1.1.dev2296}/src/ha_mcp/settings_ui/_handlers_server.py +0 -0
- {ha_mcp_dev-8.1.1.dev2292 → ha_mcp_dev-8.1.1.dev2296}/src/ha_mcp/settings_ui/_handlers_theme.py +0 -0
- {ha_mcp_dev-8.1.1.dev2292 → ha_mcp_dev-8.1.1.dev2296}/src/ha_mcp/settings_ui/_handlers_tools.py +0 -0
- {ha_mcp_dev-8.1.1.dev2292 → ha_mcp_dev-8.1.1.dev2296}/src/ha_mcp/settings_ui/_i18n.py +0 -0
- {ha_mcp_dev-8.1.1.dev2292 → ha_mcp_dev-8.1.1.dev2296}/src/ha_mcp/settings_ui/_persistence.py +0 -0
- {ha_mcp_dev-8.1.1.dev2292 → ha_mcp_dev-8.1.1.dev2296}/src/ha_mcp/settings_ui/_supervisor.py +0 -0
- {ha_mcp_dev-8.1.1.dev2292 → ha_mcp_dev-8.1.1.dev2296}/src/ha_mcp/settings_ui/_theme.py +0 -0
- {ha_mcp_dev-8.1.1.dev2292 → ha_mcp_dev-8.1.1.dev2296}/src/ha_mcp/settings_ui/_tools_meta.py +0 -0
- {ha_mcp_dev-8.1.1.dev2292 → ha_mcp_dev-8.1.1.dev2296}/src/ha_mcp/settings_ui/locales/README.md +0 -0
- {ha_mcp_dev-8.1.1.dev2292 → ha_mcp_dev-8.1.1.dev2296}/src/ha_mcp/settings_ui/locales/de.json +0 -0
- {ha_mcp_dev-8.1.1.dev2292 → ha_mcp_dev-8.1.1.dev2296}/src/ha_mcp/settings_ui/locales/en.json +0 -0
- {ha_mcp_dev-8.1.1.dev2292 → ha_mcp_dev-8.1.1.dev2296}/src/ha_mcp/settings_ui/locales/es.json +0 -0
- {ha_mcp_dev-8.1.1.dev2292 → ha_mcp_dev-8.1.1.dev2296}/src/ha_mcp/settings_ui/locales/fr.json +0 -0
- {ha_mcp_dev-8.1.1.dev2292 → ha_mcp_dev-8.1.1.dev2296}/src/ha_mcp/settings_ui/locales/it.json +0 -0
- {ha_mcp_dev-8.1.1.dev2292 → ha_mcp_dev-8.1.1.dev2296}/src/ha_mcp/settings_ui/locales/nl.json +0 -0
- {ha_mcp_dev-8.1.1.dev2292 → ha_mcp_dev-8.1.1.dev2296}/src/ha_mcp/settings_ui/locales/pl.json +0 -0
- {ha_mcp_dev-8.1.1.dev2292 → ha_mcp_dev-8.1.1.dev2296}/src/ha_mcp/settings_ui/locales/ru.json +0 -0
- {ha_mcp_dev-8.1.1.dev2292 → ha_mcp_dev-8.1.1.dev2296}/src/ha_mcp/settings_ui/locales/sv.json +0 -0
- {ha_mcp_dev-8.1.1.dev2292 → ha_mcp_dev-8.1.1.dev2296}/src/ha_mcp/settings_ui/locales/zh-Hans.json +0 -0
- {ha_mcp_dev-8.1.1.dev2292 → ha_mcp_dev-8.1.1.dev2296}/src/ha_mcp/settings_ui/settings.css +0 -0
- {ha_mcp_dev-8.1.1.dev2292 → ha_mcp_dev-8.1.1.dev2296}/src/ha_mcp/settings_ui/settings.html +0 -0
- {ha_mcp_dev-8.1.1.dev2292 → ha_mcp_dev-8.1.1.dev2296}/src/ha_mcp/settings_ui/settings.js +0 -0
- {ha_mcp_dev-8.1.1.dev2292 → ha_mcp_dev-8.1.1.dev2296}/src/ha_mcp/smoke_test.py +0 -0
- {ha_mcp_dev-8.1.1.dev2292 → ha_mcp_dev-8.1.1.dev2296}/src/ha_mcp/stdio_settings_sidecar.py +0 -0
- {ha_mcp_dev-8.1.1.dev2292 → ha_mcp_dev-8.1.1.dev2296}/src/ha_mcp/strict_bps.py +0 -0
- {ha_mcp_dev-8.1.1.dev2292 → ha_mcp_dev-8.1.1.dev2296}/src/ha_mcp/tools/__init__.py +0 -0
- {ha_mcp_dev-8.1.1.dev2292 → ha_mcp_dev-8.1.1.dev2296}/src/ha_mcp/tools/auto_backup.py +0 -0
- {ha_mcp_dev-8.1.1.dev2292 → ha_mcp_dev-8.1.1.dev2296}/src/ha_mcp/tools/backup.py +0 -0
- {ha_mcp_dev-8.1.1.dev2292 → ha_mcp_dev-8.1.1.dev2296}/src/ha_mcp/tools/best_practice_checker.py +0 -0
- {ha_mcp_dev-8.1.1.dev2292 → ha_mcp_dev-8.1.1.dev2296}/src/ha_mcp/tools/best_practice_result.py +0 -0
- {ha_mcp_dev-8.1.1.dev2292 → ha_mcp_dev-8.1.1.dev2296}/src/ha_mcp/tools/best_practice_variables.py +0 -0
- {ha_mcp_dev-8.1.1.dev2292 → ha_mcp_dev-8.1.1.dev2296}/src/ha_mcp/tools/component_api.py +0 -0
- {ha_mcp_dev-8.1.1.dev2292 → ha_mcp_dev-8.1.1.dev2296}/src/ha_mcp/tools/component_config_reads.py +0 -0
- {ha_mcp_dev-8.1.1.dev2292 → ha_mcp_dev-8.1.1.dev2296}/src/ha_mcp/tools/component_devices.py +0 -0
- {ha_mcp_dev-8.1.1.dev2292 → ha_mcp_dev-8.1.1.dev2296}/src/ha_mcp/tools/component_registries.py +0 -0
- {ha_mcp_dev-8.1.1.dev2292 → ha_mcp_dev-8.1.1.dev2296}/src/ha_mcp/tools/component_registry_lookup.py +0 -0
- {ha_mcp_dev-8.1.1.dev2292 → ha_mcp_dev-8.1.1.dev2296}/src/ha_mcp/tools/config_entry_flow.py +0 -0
- {ha_mcp_dev-8.1.1.dev2292 → ha_mcp_dev-8.1.1.dev2296}/src/ha_mcp/tools/config_entry_flow_form.py +0 -0
- {ha_mcp_dev-8.1.1.dev2292 → ha_mcp_dev-8.1.1.dev2296}/src/ha_mcp/tools/config_entry_flow_menu.py +0 -0
- {ha_mcp_dev-8.1.1.dev2292 → ha_mcp_dev-8.1.1.dev2296}/src/ha_mcp/tools/config_entry_flow_walker.py +0 -0
- {ha_mcp_dev-8.1.1.dev2292 → ha_mcp_dev-8.1.1.dev2296}/src/ha_mcp/tools/device_control.py +0 -0
- {ha_mcp_dev-8.1.1.dev2292 → ha_mcp_dev-8.1.1.dev2296}/src/ha_mcp/tools/hacs_registration.py +0 -0
- {ha_mcp_dev-8.1.1.dev2292 → ha_mcp_dev-8.1.1.dev2296}/src/ha_mcp/tools/helpers.py +0 -0
- {ha_mcp_dev-8.1.1.dev2292 → ha_mcp_dev-8.1.1.dev2296}/src/ha_mcp/tools/radio/__init__.py +0 -0
- {ha_mcp_dev-8.1.1.dev2292 → ha_mcp_dev-8.1.1.dev2296}/src/ha_mcp/tools/radio/base.py +0 -0
- {ha_mcp_dev-8.1.1.dev2292 → ha_mcp_dev-8.1.1.dev2296}/src/ha_mcp/tools/radio/matter.py +0 -0
- {ha_mcp_dev-8.1.1.dev2292 → ha_mcp_dev-8.1.1.dev2296}/src/ha_mcp/tools/radio/thread.py +0 -0
- {ha_mcp_dev-8.1.1.dev2292 → ha_mcp_dev-8.1.1.dev2296}/src/ha_mcp/tools/radio/zigbee.py +0 -0
- {ha_mcp_dev-8.1.1.dev2292 → ha_mcp_dev-8.1.1.dev2296}/src/ha_mcp/tools/radio/zwave.py +0 -0
- {ha_mcp_dev-8.1.1.dev2292 → ha_mcp_dev-8.1.1.dev2296}/src/ha_mcp/tools/reference_validator.py +0 -0
- {ha_mcp_dev-8.1.1.dev2292 → ha_mcp_dev-8.1.1.dev2296}/src/ha_mcp/tools/registry.py +0 -0
- {ha_mcp_dev-8.1.1.dev2292 → ha_mcp_dev-8.1.1.dev2296}/src/ha_mcp/tools/smart_search/__init__.py +0 -0
- {ha_mcp_dev-8.1.1.dev2292 → ha_mcp_dev-8.1.1.dev2296}/src/ha_mcp/tools/smart_search/_base.py +0 -0
- {ha_mcp_dev-8.1.1.dev2292 → ha_mcp_dev-8.1.1.dev2296}/src/ha_mcp/tools/smart_search/_config.py +0 -0
- {ha_mcp_dev-8.1.1.dev2292 → ha_mcp_dev-8.1.1.dev2296}/src/ha_mcp/tools/smart_search/_deep.py +0 -0
- {ha_mcp_dev-8.1.1.dev2292 → ha_mcp_dev-8.1.1.dev2296}/src/ha_mcp/tools/smart_search/_entities.py +0 -0
- {ha_mcp_dev-8.1.1.dev2292 → ha_mcp_dev-8.1.1.dev2296}/src/ha_mcp/tools/smart_search/_fetch.py +0 -0
- {ha_mcp_dev-8.1.1.dev2292 → ha_mcp_dev-8.1.1.dev2296}/src/ha_mcp/tools/smart_search/_overview.py +0 -0
- {ha_mcp_dev-8.1.1.dev2292 → ha_mcp_dev-8.1.1.dev2296}/src/ha_mcp/tools/smart_search/_scenes.py +0 -0
- {ha_mcp_dev-8.1.1.dev2292 → ha_mcp_dev-8.1.1.dev2296}/src/ha_mcp/tools/smart_search/_scoring.py +0 -0
- {ha_mcp_dev-8.1.1.dev2292 → ha_mcp_dev-8.1.1.dev2296}/src/ha_mcp/tools/tool_search_hint_middleware.py +0 -0
- {ha_mcp_dev-8.1.1.dev2292 → ha_mcp_dev-8.1.1.dev2296}/src/ha_mcp/tools/tools_addons.py +0 -0
- {ha_mcp_dev-8.1.1.dev2292 → ha_mcp_dev-8.1.1.dev2296}/src/ha_mcp/tools/tools_areas.py +0 -0
- {ha_mcp_dev-8.1.1.dev2292 → ha_mcp_dev-8.1.1.dev2296}/src/ha_mcp/tools/tools_blueprints.py +0 -0
- {ha_mcp_dev-8.1.1.dev2292 → ha_mcp_dev-8.1.1.dev2296}/src/ha_mcp/tools/tools_bug_report.py +0 -0
- {ha_mcp_dev-8.1.1.dev2292 → ha_mcp_dev-8.1.1.dev2296}/src/ha_mcp/tools/tools_calendar.py +0 -0
- {ha_mcp_dev-8.1.1.dev2292 → ha_mcp_dev-8.1.1.dev2296}/src/ha_mcp/tools/tools_camera.py +0 -0
- {ha_mcp_dev-8.1.1.dev2292 → ha_mcp_dev-8.1.1.dev2296}/src/ha_mcp/tools/tools_categories.py +0 -0
- {ha_mcp_dev-8.1.1.dev2292 → ha_mcp_dev-8.1.1.dev2296}/src/ha_mcp/tools/tools_code.py +0 -0
- {ha_mcp_dev-8.1.1.dev2292 → ha_mcp_dev-8.1.1.dev2296}/src/ha_mcp/tools/tools_config_automations.py +0 -0
- {ha_mcp_dev-8.1.1.dev2292 → ha_mcp_dev-8.1.1.dev2296}/src/ha_mcp/tools/tools_config_dashboards.py +0 -0
- {ha_mcp_dev-8.1.1.dev2292 → ha_mcp_dev-8.1.1.dev2296}/src/ha_mcp/tools/tools_config_helpers.py +0 -0
- {ha_mcp_dev-8.1.1.dev2292 → ha_mcp_dev-8.1.1.dev2296}/src/ha_mcp/tools/tools_config_scenes.py +0 -0
- {ha_mcp_dev-8.1.1.dev2292 → ha_mcp_dev-8.1.1.dev2296}/src/ha_mcp/tools/tools_config_scripts.py +0 -0
- {ha_mcp_dev-8.1.1.dev2292 → ha_mcp_dev-8.1.1.dev2296}/src/ha_mcp/tools/tools_dashboard_screenshot.py +0 -0
- {ha_mcp_dev-8.1.1.dev2292 → ha_mcp_dev-8.1.1.dev2296}/src/ha_mcp/tools/tools_energy.py +0 -0
- {ha_mcp_dev-8.1.1.dev2292 → ha_mcp_dev-8.1.1.dev2296}/src/ha_mcp/tools/tools_entities.py +0 -0
- {ha_mcp_dev-8.1.1.dev2292 → ha_mcp_dev-8.1.1.dev2296}/src/ha_mcp/tools/tools_filesystem.py +0 -0
- {ha_mcp_dev-8.1.1.dev2292 → ha_mcp_dev-8.1.1.dev2296}/src/ha_mcp/tools/tools_groups.py +0 -0
- {ha_mcp_dev-8.1.1.dev2292 → ha_mcp_dev-8.1.1.dev2296}/src/ha_mcp/tools/tools_hacs.py +0 -0
- {ha_mcp_dev-8.1.1.dev2292 → ha_mcp_dev-8.1.1.dev2296}/src/ha_mcp/tools/tools_history.py +0 -0
- {ha_mcp_dev-8.1.1.dev2292 → ha_mcp_dev-8.1.1.dev2296}/src/ha_mcp/tools/tools_integrations.py +0 -0
- {ha_mcp_dev-8.1.1.dev2292 → ha_mcp_dev-8.1.1.dev2296}/src/ha_mcp/tools/tools_labels.py +0 -0
- {ha_mcp_dev-8.1.1.dev2292 → ha_mcp_dev-8.1.1.dev2296}/src/ha_mcp/tools/tools_radio.py +0 -0
- {ha_mcp_dev-8.1.1.dev2292 → ha_mcp_dev-8.1.1.dev2296}/src/ha_mcp/tools/tools_registry.py +0 -0
- {ha_mcp_dev-8.1.1.dev2292 → ha_mcp_dev-8.1.1.dev2296}/src/ha_mcp/tools/tools_resources.py +0 -0
- {ha_mcp_dev-8.1.1.dev2292 → ha_mcp_dev-8.1.1.dev2296}/src/ha_mcp/tools/tools_search.py +0 -0
- {ha_mcp_dev-8.1.1.dev2292 → ha_mcp_dev-8.1.1.dev2296}/src/ha_mcp/tools/tools_security_policy.py +0 -0
- {ha_mcp_dev-8.1.1.dev2292 → ha_mcp_dev-8.1.1.dev2296}/src/ha_mcp/tools/tools_service.py +0 -0
- {ha_mcp_dev-8.1.1.dev2292 → ha_mcp_dev-8.1.1.dev2296}/src/ha_mcp/tools/tools_services.py +0 -0
- {ha_mcp_dev-8.1.1.dev2292 → ha_mcp_dev-8.1.1.dev2296}/src/ha_mcp/tools/tools_system.py +0 -0
- {ha_mcp_dev-8.1.1.dev2292 → ha_mcp_dev-8.1.1.dev2296}/src/ha_mcp/tools/tools_themes.py +0 -0
- {ha_mcp_dev-8.1.1.dev2292 → ha_mcp_dev-8.1.1.dev2296}/src/ha_mcp/tools/tools_todo.py +0 -0
- {ha_mcp_dev-8.1.1.dev2292 → ha_mcp_dev-8.1.1.dev2296}/src/ha_mcp/tools/tools_traces.py +0 -0
- {ha_mcp_dev-8.1.1.dev2292 → ha_mcp_dev-8.1.1.dev2296}/src/ha_mcp/tools/tools_updates.py +0 -0
- {ha_mcp_dev-8.1.1.dev2292 → ha_mcp_dev-8.1.1.dev2296}/src/ha_mcp/tools/tools_utility.py +0 -0
- {ha_mcp_dev-8.1.1.dev2292 → ha_mcp_dev-8.1.1.dev2296}/src/ha_mcp/tools/tools_voice_assistant.py +0 -0
- {ha_mcp_dev-8.1.1.dev2292 → ha_mcp_dev-8.1.1.dev2296}/src/ha_mcp/tools/tools_yaml_config.py +0 -0
- {ha_mcp_dev-8.1.1.dev2292 → ha_mcp_dev-8.1.1.dev2296}/src/ha_mcp/tools/tools_yaml_read.py +0 -0
- {ha_mcp_dev-8.1.1.dev2292 → ha_mcp_dev-8.1.1.dev2296}/src/ha_mcp/tools/tools_zones.py +0 -0
- {ha_mcp_dev-8.1.1.dev2292 → ha_mcp_dev-8.1.1.dev2296}/src/ha_mcp/tools/util_helpers.py +0 -0
- {ha_mcp_dev-8.1.1.dev2292 → ha_mcp_dev-8.1.1.dev2296}/src/ha_mcp/tools/validation_middleware.py +0 -0
- {ha_mcp_dev-8.1.1.dev2292 → ha_mcp_dev-8.1.1.dev2296}/src/ha_mcp/transforms/__init__.py +0 -0
- {ha_mcp_dev-8.1.1.dev2292 → ha_mcp_dev-8.1.1.dev2296}/src/ha_mcp/transforms/categorized_search.py +0 -0
- {ha_mcp_dev-8.1.1.dev2292 → ha_mcp_dev-8.1.1.dev2296}/src/ha_mcp/transforms/lite_docstrings.py +0 -0
- {ha_mcp_dev-8.1.1.dev2292 → ha_mcp_dev-8.1.1.dev2296}/src/ha_mcp/transport_security.py +0 -0
- {ha_mcp_dev-8.1.1.dev2292 → ha_mcp_dev-8.1.1.dev2296}/src/ha_mcp/update_check.py +0 -0
- {ha_mcp_dev-8.1.1.dev2292 → ha_mcp_dev-8.1.1.dev2296}/src/ha_mcp/utils/__init__.py +0 -0
- {ha_mcp_dev-8.1.1.dev2292 → ha_mcp_dev-8.1.1.dev2296}/src/ha_mcp/utils/config_hash.py +0 -0
- {ha_mcp_dev-8.1.1.dev2292 → ha_mcp_dev-8.1.1.dev2296}/src/ha_mcp/utils/config_write_lock.py +0 -0
- {ha_mcp_dev-8.1.1.dev2292 → ha_mcp_dev-8.1.1.dev2296}/src/ha_mcp/utils/data_paths.py +0 -0
- {ha_mcp_dev-8.1.1.dev2292 → ha_mcp_dev-8.1.1.dev2296}/src/ha_mcp/utils/domain_handlers.py +0 -0
- {ha_mcp_dev-8.1.1.dev2292 → ha_mcp_dev-8.1.1.dev2296}/src/ha_mcp/utils/fuzzy_search.py +0 -0
- {ha_mcp_dev-8.1.1.dev2292 → ha_mcp_dev-8.1.1.dev2296}/src/ha_mcp/utils/kill_signal_diagnostics.py +0 -0
- {ha_mcp_dev-8.1.1.dev2292 → ha_mcp_dev-8.1.1.dev2296}/src/ha_mcp/utils/operation_manager.py +0 -0
- {ha_mcp_dev-8.1.1.dev2292 → ha_mcp_dev-8.1.1.dev2296}/src/ha_mcp/utils/python_sandbox.py +0 -0
- {ha_mcp_dev-8.1.1.dev2292 → ha_mcp_dev-8.1.1.dev2296}/src/ha_mcp/utils/skill_loader.py +0 -0
- {ha_mcp_dev-8.1.1.dev2292 → ha_mcp_dev-8.1.1.dev2296}/src/ha_mcp/utils/usage_logger.py +0 -0
- {ha_mcp_dev-8.1.1.dev2292 → ha_mcp_dev-8.1.1.dev2296}/src/ha_mcp/visibility/__init__.py +0 -0
- {ha_mcp_dev-8.1.1.dev2292 → ha_mcp_dev-8.1.1.dev2296}/src/ha_mcp/visibility/enforcement.py +0 -0
- {ha_mcp_dev-8.1.1.dev2292 → ha_mcp_dev-8.1.1.dev2296}/src/ha_mcp/visibility/model.py +0 -0
- {ha_mcp_dev-8.1.1.dev2292 → ha_mcp_dev-8.1.1.dev2296}/src/ha_mcp/visibility/persistence.py +0 -0
- {ha_mcp_dev-8.1.1.dev2292 → ha_mcp_dev-8.1.1.dev2296}/src/ha_mcp/visibility/resolver.py +0 -0
- {ha_mcp_dev-8.1.1.dev2292 → ha_mcp_dev-8.1.1.dev2296}/src/ha_mcp_dev.egg-info/SOURCES.txt +0 -0
- {ha_mcp_dev-8.1.1.dev2292 → ha_mcp_dev-8.1.1.dev2296}/src/ha_mcp_dev.egg-info/dependency_links.txt +0 -0
- {ha_mcp_dev-8.1.1.dev2292 → ha_mcp_dev-8.1.1.dev2296}/src/ha_mcp_dev.egg-info/entry_points.txt +0 -0
- {ha_mcp_dev-8.1.1.dev2292 → ha_mcp_dev-8.1.1.dev2296}/src/ha_mcp_dev.egg-info/requires.txt +0 -0
- {ha_mcp_dev-8.1.1.dev2292 → ha_mcp_dev-8.1.1.dev2296}/src/ha_mcp_dev.egg-info/top_level.txt +0 -0
- {ha_mcp_dev-8.1.1.dev2292 → ha_mcp_dev-8.1.1.dev2296}/tests/__init__.py +0 -0
- {ha_mcp_dev-8.1.1.dev2292 → ha_mcp_dev-8.1.1.dev2296}/tests/test_constants.py +0 -0
- {ha_mcp_dev-8.1.1.dev2292 → ha_mcp_dev-8.1.1.dev2296}/tests/test_env_manager.py +0 -0
|
@@ -4,7 +4,7 @@ build-backend = "setuptools.build_meta"
|
|
|
4
4
|
|
|
5
5
|
[project]
|
|
6
6
|
name = "ha-mcp-dev"
|
|
7
|
-
version = "8.1.1.
|
|
7
|
+
version = "8.1.1.dev2296"
|
|
8
8
|
description = "Home Assistant MCP Server - Complete control of Home Assistant through MCP"
|
|
9
9
|
readme = "README.md"
|
|
10
10
|
# Upper bound widened to <3.15 so the package installs on Home Assistant's
|
|
@@ -212,7 +212,7 @@ ignore = [
|
|
|
212
212
|
"tests/**/*" = ["E501", "B011"]
|
|
213
213
|
# Temporary: the equivalent PLC0207/PLR5501 fixes landed in
|
|
214
214
|
# homeassistant-addon-webhook-proxy-dev/ only, per the dev-first/promote-only
|
|
215
|
-
# flow (allow-stable-edit is for stable-only
|
|
215
|
+
# flow (allow-stable-edit is for exceptional stable-only repairs, not routine sweeps —
|
|
216
216
|
# see homeassistant-addon-webhook-proxy/AGENTS.md "Dev-first, promote-only").
|
|
217
217
|
# The -dev entries name where a reset-dev-from-stable run puts those same two
|
|
218
218
|
# stable files (start.py stays put, mcp_proxy/ is renamed to mcp_proxy_dev/),
|
|
@@ -16,6 +16,7 @@ import logging
|
|
|
16
16
|
import sys
|
|
17
17
|
from typing import Annotated, Any, Literal
|
|
18
18
|
|
|
19
|
+
import httpx
|
|
19
20
|
from fastmcp.exceptions import ToolError
|
|
20
21
|
from fastmcp.tools import tool
|
|
21
22
|
from pydantic import Field
|
|
@@ -479,17 +480,36 @@ def schedule_deferred_entry_reload(client: Any, entry_id: str) -> None:
|
|
|
479
480
|
very worker answering the current request, so it must not run until the
|
|
480
481
|
response has flushed. Failures can only be logged — there is no caller
|
|
481
482
|
left to answer.
|
|
483
|
+
|
|
484
|
+
Uses the ``homeassistant.reload_config_entry`` service, NOT
|
|
485
|
+
``POST /config/config_entries/entry/{id}/reload``: only the services
|
|
486
|
+
handler shields the call. HA runs aiohttp with
|
|
487
|
+
``handler_cancellation=True``, and the reload kills the client sending
|
|
488
|
+
this request, so on the unshielded route it cancelled itself mid-unload
|
|
489
|
+
and stranded the entry in ``UNLOAD_IN_PROGRESS`` until HA restarted.
|
|
482
490
|
"""
|
|
483
491
|
|
|
484
492
|
async def _reload() -> None:
|
|
485
493
|
await asyncio.sleep(_SELF_ACTION_FLUSH_DELAY_S)
|
|
486
494
|
try:
|
|
487
|
-
await client.
|
|
488
|
-
"
|
|
495
|
+
await client.call_service(
|
|
496
|
+
"homeassistant", "reload_config_entry", {"entry_id": entry_id}
|
|
489
497
|
)
|
|
490
498
|
logger.info("Deferred reload of entry %s requested", entry_id)
|
|
491
|
-
except Exception:
|
|
492
|
-
|
|
499
|
+
except Exception as exc:
|
|
500
|
+
# A lost reply means the request reached HA and the shielded reload
|
|
501
|
+
# then killed this client — the expected end of a self-restart, not
|
|
502
|
+
# a failure. A connect error or timeout may never have dispatched,
|
|
503
|
+
# so those stay loud. WARNING, not INFO: HA surfaces this package
|
|
504
|
+
# at WARNING and above, so INFO here would log nothing at all.
|
|
505
|
+
if isinstance(exc.__cause__, httpx.ReadError | httpx.RemoteProtocolError):
|
|
506
|
+
logger.warning(
|
|
507
|
+
"Deferred reload of entry %s dispatched; it tore down this "
|
|
508
|
+
"connection before the reply arrived (expected)",
|
|
509
|
+
entry_id,
|
|
510
|
+
)
|
|
511
|
+
else:
|
|
512
|
+
logger.exception("Deferred config-entry reload failed")
|
|
493
513
|
|
|
494
514
|
_spawn_background(_reload())
|
|
495
515
|
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{ha_mcp_dev-8.1.1.dev2292 → ha_mcp_dev-8.1.1.dev2296}/src/ha_mcp/_vendor/websockets/MANIFEST.sha256
RENAMED
|
File without changes
|
{ha_mcp_dev-8.1.1.dev2292 → ha_mcp_dev-8.1.1.dev2296}/src/ha_mcp/_vendor/websockets/VENDORED
RENAMED
|
File without changes
|
{ha_mcp_dev-8.1.1.dev2292 → ha_mcp_dev-8.1.1.dev2296}/src/ha_mcp/_vendor/websockets/__init__.py
RENAMED
|
File without changes
|
{ha_mcp_dev-8.1.1.dev2292 → ha_mcp_dev-8.1.1.dev2296}/src/ha_mcp/_vendor/websockets/__main__.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{ha_mcp_dev-8.1.1.dev2292 → ha_mcp_dev-8.1.1.dev2296}/src/ha_mcp/_vendor/websockets/client.py
RENAMED
|
File without changes
|
{ha_mcp_dev-8.1.1.dev2292 → ha_mcp_dev-8.1.1.dev2296}/src/ha_mcp/_vendor/websockets/connection.py
RENAMED
|
File without changes
|
|
File without changes
|
{ha_mcp_dev-8.1.1.dev2292 → ha_mcp_dev-8.1.1.dev2296}/src/ha_mcp/_vendor/websockets/exceptions.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{ha_mcp_dev-8.1.1.dev2292 → ha_mcp_dev-8.1.1.dev2296}/src/ha_mcp/_vendor/websockets/frames.py
RENAMED
|
File without changes
|
{ha_mcp_dev-8.1.1.dev2292 → ha_mcp_dev-8.1.1.dev2296}/src/ha_mcp/_vendor/websockets/headers.py
RENAMED
|
File without changes
|
{ha_mcp_dev-8.1.1.dev2292 → ha_mcp_dev-8.1.1.dev2296}/src/ha_mcp/_vendor/websockets/http11.py
RENAMED
|
File without changes
|
{ha_mcp_dev-8.1.1.dev2292 → ha_mcp_dev-8.1.1.dev2296}/src/ha_mcp/_vendor/websockets/imports.py
RENAMED
|
File without changes
|
|
File without changes
|
{ha_mcp_dev-8.1.1.dev2292 → ha_mcp_dev-8.1.1.dev2296}/src/ha_mcp/_vendor/websockets/legacy/auth.py
RENAMED
|
File without changes
|
{ha_mcp_dev-8.1.1.dev2292 → ha_mcp_dev-8.1.1.dev2296}/src/ha_mcp/_vendor/websockets/legacy/client.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{ha_mcp_dev-8.1.1.dev2292 → ha_mcp_dev-8.1.1.dev2296}/src/ha_mcp/_vendor/websockets/legacy/http.py
RENAMED
|
File without changes
|
|
File without changes
|
{ha_mcp_dev-8.1.1.dev2292 → ha_mcp_dev-8.1.1.dev2296}/src/ha_mcp/_vendor/websockets/legacy/server.py
RENAMED
|
File without changes
|
{ha_mcp_dev-8.1.1.dev2292 → ha_mcp_dev-8.1.1.dev2296}/src/ha_mcp/_vendor/websockets/protocol.py
RENAMED
|
File without changes
|
{ha_mcp_dev-8.1.1.dev2292 → ha_mcp_dev-8.1.1.dev2296}/src/ha_mcp/_vendor/websockets/proxy.py
RENAMED
|
File without changes
|
{ha_mcp_dev-8.1.1.dev2292 → ha_mcp_dev-8.1.1.dev2296}/src/ha_mcp/_vendor/websockets/py.typed
RENAMED
|
File without changes
|
{ha_mcp_dev-8.1.1.dev2292 → ha_mcp_dev-8.1.1.dev2296}/src/ha_mcp/_vendor/websockets/server.py
RENAMED
|
File without changes
|
{ha_mcp_dev-8.1.1.dev2292 → ha_mcp_dev-8.1.1.dev2296}/src/ha_mcp/_vendor/websockets/streams.py
RENAMED
|
File without changes
|
{ha_mcp_dev-8.1.1.dev2292 → ha_mcp_dev-8.1.1.dev2296}/src/ha_mcp/_vendor/websockets/sync/__init__.py
RENAMED
|
File without changes
|
{ha_mcp_dev-8.1.1.dev2292 → ha_mcp_dev-8.1.1.dev2296}/src/ha_mcp/_vendor/websockets/sync/client.py
RENAMED
|
File without changes
|
|
File without changes
|
{ha_mcp_dev-8.1.1.dev2292 → ha_mcp_dev-8.1.1.dev2296}/src/ha_mcp/_vendor/websockets/sync/messages.py
RENAMED
|
File without changes
|
{ha_mcp_dev-8.1.1.dev2292 → ha_mcp_dev-8.1.1.dev2296}/src/ha_mcp/_vendor/websockets/sync/router.py
RENAMED
|
File without changes
|
{ha_mcp_dev-8.1.1.dev2292 → ha_mcp_dev-8.1.1.dev2296}/src/ha_mcp/_vendor/websockets/sync/server.py
RENAMED
|
File without changes
|
{ha_mcp_dev-8.1.1.dev2292 → ha_mcp_dev-8.1.1.dev2296}/src/ha_mcp/_vendor/websockets/sync/utils.py
RENAMED
|
File without changes
|
{ha_mcp_dev-8.1.1.dev2292 → ha_mcp_dev-8.1.1.dev2296}/src/ha_mcp/_vendor/websockets/trio/__init__.py
RENAMED
|
File without changes
|
{ha_mcp_dev-8.1.1.dev2292 → ha_mcp_dev-8.1.1.dev2296}/src/ha_mcp/_vendor/websockets/trio/client.py
RENAMED
|
File without changes
|
|
File without changes
|
{ha_mcp_dev-8.1.1.dev2292 → ha_mcp_dev-8.1.1.dev2296}/src/ha_mcp/_vendor/websockets/trio/messages.py
RENAMED
|
File without changes
|
{ha_mcp_dev-8.1.1.dev2292 → ha_mcp_dev-8.1.1.dev2296}/src/ha_mcp/_vendor/websockets/trio/router.py
RENAMED
|
File without changes
|
{ha_mcp_dev-8.1.1.dev2292 → ha_mcp_dev-8.1.1.dev2296}/src/ha_mcp/_vendor/websockets/trio/server.py
RENAMED
|
File without changes
|
{ha_mcp_dev-8.1.1.dev2292 → ha_mcp_dev-8.1.1.dev2296}/src/ha_mcp/_vendor/websockets/trio/utils.py
RENAMED
|
File without changes
|
{ha_mcp_dev-8.1.1.dev2292 → ha_mcp_dev-8.1.1.dev2296}/src/ha_mcp/_vendor/websockets/typing.py
RENAMED
|
File without changes
|
|
File without changes
|
{ha_mcp_dev-8.1.1.dev2292 → ha_mcp_dev-8.1.1.dev2296}/src/ha_mcp/_vendor/websockets/utils.py
RENAMED
|
File without changes
|
{ha_mcp_dev-8.1.1.dev2292 → ha_mcp_dev-8.1.1.dev2296}/src/ha_mcp/_vendor/websockets/version.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{ha_mcp_dev-8.1.1.dev2292 → ha_mcp_dev-8.1.1.dev2296}/src/ha_mcp/client/supervisor_client.py
RENAMED
|
File without changes
|
|
File without changes
|
{ha_mcp_dev-8.1.1.dev2292 → ha_mcp_dev-8.1.1.dev2296}/src/ha_mcp/client/websocket_listener.py
RENAMED
|
File without changes
|
|
File without changes
|
{ha_mcp_dev-8.1.1.dev2292 → ha_mcp_dev-8.1.1.dev2296}/src/ha_mcp/dashboard_screenshot/__init__.py
RENAMED
|
File without changes
|
{ha_mcp_dev-8.1.1.dev2292 → ha_mcp_dev-8.1.1.dev2296}/src/ha_mcp/dashboard_screenshot/capture.py
RENAMED
|
File without changes
|
{ha_mcp_dev-8.1.1.dev2292 → ha_mcp_dev-8.1.1.dev2296}/src/ha_mcp/dashboard_screenshot/content.py
RENAMED
|
File without changes
|
{ha_mcp_dev-8.1.1.dev2292 → ha_mcp_dev-8.1.1.dev2296}/src/ha_mcp/dashboard_screenshot/paths.py
RENAMED
|
File without changes
|
{ha_mcp_dev-8.1.1.dev2292 → ha_mcp_dev-8.1.1.dev2296}/src/ha_mcp/dashboard_screenshot/provision.py
RENAMED
|
File without changes
|
{ha_mcp_dev-8.1.1.dev2292 → ha_mcp_dev-8.1.1.dev2296}/src/ha_mcp/dashboard_screenshot/theme_guard.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{ha_mcp_dev-8.1.1.dev2292 → ha_mcp_dev-8.1.1.dev2296}/src/ha_mcp/resources/skills-vendor/AGENTS.md
RENAMED
|
File without changes
|
{ha_mcp_dev-8.1.1.dev2292 → ha_mcp_dev-8.1.1.dev2296}/src/ha_mcp/resources/skills-vendor/CLAUDE.md
RENAMED
|
File without changes
|
|
File without changes
|
{ha_mcp_dev-8.1.1.dev2292 → ha_mcp_dev-8.1.1.dev2296}/src/ha_mcp/resources/skills-vendor/LICENSE
RENAMED
|
File without changes
|
{ha_mcp_dev-8.1.1.dev2292 → ha_mcp_dev-8.1.1.dev2296}/src/ha_mcp/resources/skills-vendor/README.md
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{ha_mcp_dev-8.1.1.dev2292 → ha_mcp_dev-8.1.1.dev2296}/src/ha_mcp/settings_ui/_handlers_advanced.py
RENAMED
|
File without changes
|
{ha_mcp_dev-8.1.1.dev2292 → ha_mcp_dev-8.1.1.dev2296}/src/ha_mcp/settings_ui/_handlers_backups.py
RENAMED
|
File without changes
|
{ha_mcp_dev-8.1.1.dev2292 → ha_mcp_dev-8.1.1.dev2296}/src/ha_mcp/settings_ui/_handlers_fs.py
RENAMED
|
File without changes
|
{ha_mcp_dev-8.1.1.dev2292 → ha_mcp_dev-8.1.1.dev2296}/src/ha_mcp/settings_ui/_handlers_server.py
RENAMED
|
File without changes
|
{ha_mcp_dev-8.1.1.dev2292 → ha_mcp_dev-8.1.1.dev2296}/src/ha_mcp/settings_ui/_handlers_theme.py
RENAMED
|
File without changes
|
{ha_mcp_dev-8.1.1.dev2292 → ha_mcp_dev-8.1.1.dev2296}/src/ha_mcp/settings_ui/_handlers_tools.py
RENAMED
|
File without changes
|
|
File without changes
|
{ha_mcp_dev-8.1.1.dev2292 → ha_mcp_dev-8.1.1.dev2296}/src/ha_mcp/settings_ui/_persistence.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{ha_mcp_dev-8.1.1.dev2292 → ha_mcp_dev-8.1.1.dev2296}/src/ha_mcp/settings_ui/locales/README.md
RENAMED
|
File without changes
|
{ha_mcp_dev-8.1.1.dev2292 → ha_mcp_dev-8.1.1.dev2296}/src/ha_mcp/settings_ui/locales/de.json
RENAMED
|
File without changes
|
{ha_mcp_dev-8.1.1.dev2292 → ha_mcp_dev-8.1.1.dev2296}/src/ha_mcp/settings_ui/locales/en.json
RENAMED
|
File without changes
|
{ha_mcp_dev-8.1.1.dev2292 → ha_mcp_dev-8.1.1.dev2296}/src/ha_mcp/settings_ui/locales/es.json
RENAMED
|
File without changes
|
{ha_mcp_dev-8.1.1.dev2292 → ha_mcp_dev-8.1.1.dev2296}/src/ha_mcp/settings_ui/locales/fr.json
RENAMED
|
File without changes
|
{ha_mcp_dev-8.1.1.dev2292 → ha_mcp_dev-8.1.1.dev2296}/src/ha_mcp/settings_ui/locales/it.json
RENAMED
|
File without changes
|
{ha_mcp_dev-8.1.1.dev2292 → ha_mcp_dev-8.1.1.dev2296}/src/ha_mcp/settings_ui/locales/nl.json
RENAMED
|
File without changes
|
{ha_mcp_dev-8.1.1.dev2292 → ha_mcp_dev-8.1.1.dev2296}/src/ha_mcp/settings_ui/locales/pl.json
RENAMED
|
File without changes
|
{ha_mcp_dev-8.1.1.dev2292 → ha_mcp_dev-8.1.1.dev2296}/src/ha_mcp/settings_ui/locales/ru.json
RENAMED
|
File without changes
|
{ha_mcp_dev-8.1.1.dev2292 → ha_mcp_dev-8.1.1.dev2296}/src/ha_mcp/settings_ui/locales/sv.json
RENAMED
|
File without changes
|
{ha_mcp_dev-8.1.1.dev2292 → ha_mcp_dev-8.1.1.dev2296}/src/ha_mcp/settings_ui/locales/zh-Hans.json
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{ha_mcp_dev-8.1.1.dev2292 → ha_mcp_dev-8.1.1.dev2296}/src/ha_mcp/tools/best_practice_checker.py
RENAMED
|
File without changes
|
{ha_mcp_dev-8.1.1.dev2292 → ha_mcp_dev-8.1.1.dev2296}/src/ha_mcp/tools/best_practice_result.py
RENAMED
|
File without changes
|
{ha_mcp_dev-8.1.1.dev2292 → ha_mcp_dev-8.1.1.dev2296}/src/ha_mcp/tools/best_practice_variables.py
RENAMED
|
File without changes
|
|
File without changes
|
{ha_mcp_dev-8.1.1.dev2292 → ha_mcp_dev-8.1.1.dev2296}/src/ha_mcp/tools/component_config_reads.py
RENAMED
|
File without changes
|
|
File without changes
|
{ha_mcp_dev-8.1.1.dev2292 → ha_mcp_dev-8.1.1.dev2296}/src/ha_mcp/tools/component_registries.py
RENAMED
|
File without changes
|
{ha_mcp_dev-8.1.1.dev2292 → ha_mcp_dev-8.1.1.dev2296}/src/ha_mcp/tools/component_registry_lookup.py
RENAMED
|
File without changes
|
|
File without changes
|
{ha_mcp_dev-8.1.1.dev2292 → ha_mcp_dev-8.1.1.dev2296}/src/ha_mcp/tools/config_entry_flow_form.py
RENAMED
|
File without changes
|
{ha_mcp_dev-8.1.1.dev2292 → ha_mcp_dev-8.1.1.dev2296}/src/ha_mcp/tools/config_entry_flow_menu.py
RENAMED
|
File without changes
|
{ha_mcp_dev-8.1.1.dev2292 → ha_mcp_dev-8.1.1.dev2296}/src/ha_mcp/tools/config_entry_flow_walker.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{ha_mcp_dev-8.1.1.dev2292 → ha_mcp_dev-8.1.1.dev2296}/src/ha_mcp/tools/reference_validator.py
RENAMED
|
File without changes
|
|
File without changes
|
{ha_mcp_dev-8.1.1.dev2292 → ha_mcp_dev-8.1.1.dev2296}/src/ha_mcp/tools/smart_search/__init__.py
RENAMED
|
File without changes
|
{ha_mcp_dev-8.1.1.dev2292 → ha_mcp_dev-8.1.1.dev2296}/src/ha_mcp/tools/smart_search/_base.py
RENAMED
|
File without changes
|
{ha_mcp_dev-8.1.1.dev2292 → ha_mcp_dev-8.1.1.dev2296}/src/ha_mcp/tools/smart_search/_config.py
RENAMED
|
File without changes
|
{ha_mcp_dev-8.1.1.dev2292 → ha_mcp_dev-8.1.1.dev2296}/src/ha_mcp/tools/smart_search/_deep.py
RENAMED
|
File without changes
|
{ha_mcp_dev-8.1.1.dev2292 → ha_mcp_dev-8.1.1.dev2296}/src/ha_mcp/tools/smart_search/_entities.py
RENAMED
|
File without changes
|
{ha_mcp_dev-8.1.1.dev2292 → ha_mcp_dev-8.1.1.dev2296}/src/ha_mcp/tools/smart_search/_fetch.py
RENAMED
|
File without changes
|
{ha_mcp_dev-8.1.1.dev2292 → ha_mcp_dev-8.1.1.dev2296}/src/ha_mcp/tools/smart_search/_overview.py
RENAMED
|
File without changes
|
{ha_mcp_dev-8.1.1.dev2292 → ha_mcp_dev-8.1.1.dev2296}/src/ha_mcp/tools/smart_search/_scenes.py
RENAMED
|
File without changes
|
{ha_mcp_dev-8.1.1.dev2292 → ha_mcp_dev-8.1.1.dev2296}/src/ha_mcp/tools/smart_search/_scoring.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|