ha-mcp-dev 8.4.3.dev2572__tar.gz → 8.4.3.dev2576__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.4.3.dev2572/src/ha_mcp_dev.egg-info → ha_mcp_dev-8.4.3.dev2576}/PKG-INFO +1 -1
- {ha_mcp_dev-8.4.3.dev2572 → ha_mcp_dev-8.4.3.dev2576}/pyproject.toml +1 -1
- {ha_mcp_dev-8.4.3.dev2572 → ha_mcp_dev-8.4.3.dev2576}/src/ha_mcp/tools/smart_search/_overview.py +15 -22
- {ha_mcp_dev-8.4.3.dev2572 → ha_mcp_dev-8.4.3.dev2576}/src/ha_mcp/tools/tools_search.py +111 -14
- {ha_mcp_dev-8.4.3.dev2572 → ha_mcp_dev-8.4.3.dev2576}/src/ha_mcp/tools/util_helpers.py +8 -2
- {ha_mcp_dev-8.4.3.dev2572 → ha_mcp_dev-8.4.3.dev2576/src/ha_mcp_dev.egg-info}/PKG-INFO +1 -1
- {ha_mcp_dev-8.4.3.dev2572 → ha_mcp_dev-8.4.3.dev2576}/LICENSE +0 -0
- {ha_mcp_dev-8.4.3.dev2572 → ha_mcp_dev-8.4.3.dev2576}/MANIFEST.in +0 -0
- {ha_mcp_dev-8.4.3.dev2572 → ha_mcp_dev-8.4.3.dev2576}/README.md +0 -0
- {ha_mcp_dev-8.4.3.dev2572 → ha_mcp_dev-8.4.3.dev2576}/setup.cfg +0 -0
- {ha_mcp_dev-8.4.3.dev2572 → ha_mcp_dev-8.4.3.dev2576}/src/ha_mcp/__init__.py +0 -0
- {ha_mcp_dev-8.4.3.dev2572 → ha_mcp_dev-8.4.3.dev2576}/src/ha_mcp/__main__.py +0 -0
- {ha_mcp_dev-8.4.3.dev2572 → ha_mcp_dev-8.4.3.dev2576}/src/ha_mcp/_pypi_marker +0 -0
- {ha_mcp_dev-8.4.3.dev2572 → ha_mcp_dev-8.4.3.dev2576}/src/ha_mcp/_rich_compat.py +0 -0
- {ha_mcp_dev-8.4.3.dev2572 → ha_mcp_dev-8.4.3.dev2576}/src/ha_mcp/_vendor/__init__.py +0 -0
- {ha_mcp_dev-8.4.3.dev2572 → ha_mcp_dev-8.4.3.dev2576}/src/ha_mcp/_vendor/requirements.txt +0 -0
- {ha_mcp_dev-8.4.3.dev2572 → ha_mcp_dev-8.4.3.dev2576}/src/ha_mcp/_vendor/websockets/LICENSE +0 -0
- {ha_mcp_dev-8.4.3.dev2572 → ha_mcp_dev-8.4.3.dev2576}/src/ha_mcp/_vendor/websockets/MANIFEST.sha256 +0 -0
- {ha_mcp_dev-8.4.3.dev2572 → ha_mcp_dev-8.4.3.dev2576}/src/ha_mcp/_vendor/websockets/VENDORED +0 -0
- {ha_mcp_dev-8.4.3.dev2572 → ha_mcp_dev-8.4.3.dev2576}/src/ha_mcp/_vendor/websockets/__init__.py +0 -0
- {ha_mcp_dev-8.4.3.dev2572 → ha_mcp_dev-8.4.3.dev2576}/src/ha_mcp/_vendor/websockets/__main__.py +0 -0
- {ha_mcp_dev-8.4.3.dev2572 → ha_mcp_dev-8.4.3.dev2576}/src/ha_mcp/_vendor/websockets/asyncio/__init__.py +0 -0
- {ha_mcp_dev-8.4.3.dev2572 → ha_mcp_dev-8.4.3.dev2576}/src/ha_mcp/_vendor/websockets/asyncio/client.py +0 -0
- {ha_mcp_dev-8.4.3.dev2572 → ha_mcp_dev-8.4.3.dev2576}/src/ha_mcp/_vendor/websockets/asyncio/connection.py +0 -0
- {ha_mcp_dev-8.4.3.dev2572 → ha_mcp_dev-8.4.3.dev2576}/src/ha_mcp/_vendor/websockets/asyncio/messages.py +0 -0
- {ha_mcp_dev-8.4.3.dev2572 → ha_mcp_dev-8.4.3.dev2576}/src/ha_mcp/_vendor/websockets/asyncio/router.py +0 -0
- {ha_mcp_dev-8.4.3.dev2572 → ha_mcp_dev-8.4.3.dev2576}/src/ha_mcp/_vendor/websockets/asyncio/server.py +0 -0
- {ha_mcp_dev-8.4.3.dev2572 → ha_mcp_dev-8.4.3.dev2576}/src/ha_mcp/_vendor/websockets/auth.py +0 -0
- {ha_mcp_dev-8.4.3.dev2572 → ha_mcp_dev-8.4.3.dev2576}/src/ha_mcp/_vendor/websockets/cli.py +0 -0
- {ha_mcp_dev-8.4.3.dev2572 → ha_mcp_dev-8.4.3.dev2576}/src/ha_mcp/_vendor/websockets/client.py +0 -0
- {ha_mcp_dev-8.4.3.dev2572 → ha_mcp_dev-8.4.3.dev2576}/src/ha_mcp/_vendor/websockets/connection.py +0 -0
- {ha_mcp_dev-8.4.3.dev2572 → ha_mcp_dev-8.4.3.dev2576}/src/ha_mcp/_vendor/websockets/datastructures.py +0 -0
- {ha_mcp_dev-8.4.3.dev2572 → ha_mcp_dev-8.4.3.dev2576}/src/ha_mcp/_vendor/websockets/exceptions.py +0 -0
- {ha_mcp_dev-8.4.3.dev2572 → ha_mcp_dev-8.4.3.dev2576}/src/ha_mcp/_vendor/websockets/extensions/__init__.py +0 -0
- {ha_mcp_dev-8.4.3.dev2572 → ha_mcp_dev-8.4.3.dev2576}/src/ha_mcp/_vendor/websockets/extensions/base.py +0 -0
- {ha_mcp_dev-8.4.3.dev2572 → ha_mcp_dev-8.4.3.dev2576}/src/ha_mcp/_vendor/websockets/extensions/permessage_deflate.py +0 -0
- {ha_mcp_dev-8.4.3.dev2572 → ha_mcp_dev-8.4.3.dev2576}/src/ha_mcp/_vendor/websockets/frames.py +0 -0
- {ha_mcp_dev-8.4.3.dev2572 → ha_mcp_dev-8.4.3.dev2576}/src/ha_mcp/_vendor/websockets/headers.py +0 -0
- {ha_mcp_dev-8.4.3.dev2572 → ha_mcp_dev-8.4.3.dev2576}/src/ha_mcp/_vendor/websockets/http11.py +0 -0
- {ha_mcp_dev-8.4.3.dev2572 → ha_mcp_dev-8.4.3.dev2576}/src/ha_mcp/_vendor/websockets/imports.py +0 -0
- {ha_mcp_dev-8.4.3.dev2572 → ha_mcp_dev-8.4.3.dev2576}/src/ha_mcp/_vendor/websockets/legacy/__init__.py +0 -0
- {ha_mcp_dev-8.4.3.dev2572 → ha_mcp_dev-8.4.3.dev2576}/src/ha_mcp/_vendor/websockets/legacy/auth.py +0 -0
- {ha_mcp_dev-8.4.3.dev2572 → ha_mcp_dev-8.4.3.dev2576}/src/ha_mcp/_vendor/websockets/legacy/client.py +0 -0
- {ha_mcp_dev-8.4.3.dev2572 → ha_mcp_dev-8.4.3.dev2576}/src/ha_mcp/_vendor/websockets/legacy/exceptions.py +0 -0
- {ha_mcp_dev-8.4.3.dev2572 → ha_mcp_dev-8.4.3.dev2576}/src/ha_mcp/_vendor/websockets/legacy/framing.py +0 -0
- {ha_mcp_dev-8.4.3.dev2572 → ha_mcp_dev-8.4.3.dev2576}/src/ha_mcp/_vendor/websockets/legacy/handshake.py +0 -0
- {ha_mcp_dev-8.4.3.dev2572 → ha_mcp_dev-8.4.3.dev2576}/src/ha_mcp/_vendor/websockets/legacy/http.py +0 -0
- {ha_mcp_dev-8.4.3.dev2572 → ha_mcp_dev-8.4.3.dev2576}/src/ha_mcp/_vendor/websockets/legacy/protocol.py +0 -0
- {ha_mcp_dev-8.4.3.dev2572 → ha_mcp_dev-8.4.3.dev2576}/src/ha_mcp/_vendor/websockets/legacy/server.py +0 -0
- {ha_mcp_dev-8.4.3.dev2572 → ha_mcp_dev-8.4.3.dev2576}/src/ha_mcp/_vendor/websockets/protocol.py +0 -0
- {ha_mcp_dev-8.4.3.dev2572 → ha_mcp_dev-8.4.3.dev2576}/src/ha_mcp/_vendor/websockets/proxy.py +0 -0
- {ha_mcp_dev-8.4.3.dev2572 → ha_mcp_dev-8.4.3.dev2576}/src/ha_mcp/_vendor/websockets/py.typed +0 -0
- {ha_mcp_dev-8.4.3.dev2572 → ha_mcp_dev-8.4.3.dev2576}/src/ha_mcp/_vendor/websockets/server.py +0 -0
- {ha_mcp_dev-8.4.3.dev2572 → ha_mcp_dev-8.4.3.dev2576}/src/ha_mcp/_vendor/websockets/streams.py +0 -0
- {ha_mcp_dev-8.4.3.dev2572 → ha_mcp_dev-8.4.3.dev2576}/src/ha_mcp/_vendor/websockets/sync/__init__.py +0 -0
- {ha_mcp_dev-8.4.3.dev2572 → ha_mcp_dev-8.4.3.dev2576}/src/ha_mcp/_vendor/websockets/sync/client.py +0 -0
- {ha_mcp_dev-8.4.3.dev2572 → ha_mcp_dev-8.4.3.dev2576}/src/ha_mcp/_vendor/websockets/sync/connection.py +0 -0
- {ha_mcp_dev-8.4.3.dev2572 → ha_mcp_dev-8.4.3.dev2576}/src/ha_mcp/_vendor/websockets/sync/messages.py +0 -0
- {ha_mcp_dev-8.4.3.dev2572 → ha_mcp_dev-8.4.3.dev2576}/src/ha_mcp/_vendor/websockets/sync/router.py +0 -0
- {ha_mcp_dev-8.4.3.dev2572 → ha_mcp_dev-8.4.3.dev2576}/src/ha_mcp/_vendor/websockets/sync/server.py +0 -0
- {ha_mcp_dev-8.4.3.dev2572 → ha_mcp_dev-8.4.3.dev2576}/src/ha_mcp/_vendor/websockets/sync/utils.py +0 -0
- {ha_mcp_dev-8.4.3.dev2572 → ha_mcp_dev-8.4.3.dev2576}/src/ha_mcp/_vendor/websockets/trio/__init__.py +0 -0
- {ha_mcp_dev-8.4.3.dev2572 → ha_mcp_dev-8.4.3.dev2576}/src/ha_mcp/_vendor/websockets/trio/client.py +0 -0
- {ha_mcp_dev-8.4.3.dev2572 → ha_mcp_dev-8.4.3.dev2576}/src/ha_mcp/_vendor/websockets/trio/connection.py +0 -0
- {ha_mcp_dev-8.4.3.dev2572 → ha_mcp_dev-8.4.3.dev2576}/src/ha_mcp/_vendor/websockets/trio/messages.py +0 -0
- {ha_mcp_dev-8.4.3.dev2572 → ha_mcp_dev-8.4.3.dev2576}/src/ha_mcp/_vendor/websockets/trio/router.py +0 -0
- {ha_mcp_dev-8.4.3.dev2572 → ha_mcp_dev-8.4.3.dev2576}/src/ha_mcp/_vendor/websockets/trio/server.py +0 -0
- {ha_mcp_dev-8.4.3.dev2572 → ha_mcp_dev-8.4.3.dev2576}/src/ha_mcp/_vendor/websockets/trio/utils.py +0 -0
- {ha_mcp_dev-8.4.3.dev2572 → ha_mcp_dev-8.4.3.dev2576}/src/ha_mcp/_vendor/websockets/typing.py +0 -0
- {ha_mcp_dev-8.4.3.dev2572 → ha_mcp_dev-8.4.3.dev2576}/src/ha_mcp/_vendor/websockets/uri.py +0 -0
- {ha_mcp_dev-8.4.3.dev2572 → ha_mcp_dev-8.4.3.dev2576}/src/ha_mcp/_vendor/websockets/utils.py +0 -0
- {ha_mcp_dev-8.4.3.dev2572 → ha_mcp_dev-8.4.3.dev2576}/src/ha_mcp/_vendor/websockets/version.py +0 -0
- {ha_mcp_dev-8.4.3.dev2572 → ha_mcp_dev-8.4.3.dev2576}/src/ha_mcp/_version.py +0 -0
- {ha_mcp_dev-8.4.3.dev2572 → ha_mcp_dev-8.4.3.dev2576}/src/ha_mcp/auth/__init__.py +0 -0
- {ha_mcp_dev-8.4.3.dev2572 → ha_mcp_dev-8.4.3.dev2576}/src/ha_mcp/auth/consent_form.py +0 -0
- {ha_mcp_dev-8.4.3.dev2572 → ha_mcp_dev-8.4.3.dev2576}/src/ha_mcp/auth/oidc_compat.py +0 -0
- {ha_mcp_dev-8.4.3.dev2572 → ha_mcp_dev-8.4.3.dev2576}/src/ha_mcp/auth/provider.py +0 -0
- {ha_mcp_dev-8.4.3.dev2572 → ha_mcp_dev-8.4.3.dev2576}/src/ha_mcp/backup_manager.py +0 -0
- {ha_mcp_dev-8.4.3.dev2572 → ha_mcp_dev-8.4.3.dev2576}/src/ha_mcp/browser_landing.py +0 -0
- {ha_mcp_dev-8.4.3.dev2572 → ha_mcp_dev-8.4.3.dev2576}/src/ha_mcp/client/__init__.py +0 -0
- {ha_mcp_dev-8.4.3.dev2572 → ha_mcp_dev-8.4.3.dev2576}/src/ha_mcp/client/rest_client.py +0 -0
- {ha_mcp_dev-8.4.3.dev2572 → ha_mcp_dev-8.4.3.dev2576}/src/ha_mcp/client/supervisor_client.py +0 -0
- {ha_mcp_dev-8.4.3.dev2572 → ha_mcp_dev-8.4.3.dev2576}/src/ha_mcp/client/websocket_client.py +0 -0
- {ha_mcp_dev-8.4.3.dev2572 → ha_mcp_dev-8.4.3.dev2576}/src/ha_mcp/client/websocket_listener.py +0 -0
- {ha_mcp_dev-8.4.3.dev2572 → ha_mcp_dev-8.4.3.dev2576}/src/ha_mcp/config.py +0 -0
- {ha_mcp_dev-8.4.3.dev2572 → ha_mcp_dev-8.4.3.dev2576}/src/ha_mcp/dashboard_screenshot/__init__.py +0 -0
- {ha_mcp_dev-8.4.3.dev2572 → ha_mcp_dev-8.4.3.dev2576}/src/ha_mcp/dashboard_screenshot/capture.py +0 -0
- {ha_mcp_dev-8.4.3.dev2572 → ha_mcp_dev-8.4.3.dev2576}/src/ha_mcp/dashboard_screenshot/content.py +0 -0
- {ha_mcp_dev-8.4.3.dev2572 → ha_mcp_dev-8.4.3.dev2576}/src/ha_mcp/dashboard_screenshot/paths.py +0 -0
- {ha_mcp_dev-8.4.3.dev2572 → ha_mcp_dev-8.4.3.dev2576}/src/ha_mcp/dashboard_screenshot/provision.py +0 -0
- {ha_mcp_dev-8.4.3.dev2572 → ha_mcp_dev-8.4.3.dev2576}/src/ha_mcp/dashboard_screenshot/theme_guard.py +0 -0
- {ha_mcp_dev-8.4.3.dev2572 → ha_mcp_dev-8.4.3.dev2576}/src/ha_mcp/errors.py +0 -0
- {ha_mcp_dev-8.4.3.dev2572 → ha_mcp_dev-8.4.3.dev2576}/src/ha_mcp/ha_request_queue.py +0 -0
- {ha_mcp_dev-8.4.3.dev2572 → ha_mcp_dev-8.4.3.dev2576}/src/ha_mcp/hacs_auto_refresh.py +0 -0
- {ha_mcp_dev-8.4.3.dev2572 → ha_mcp_dev-8.4.3.dev2576}/src/ha_mcp/llm_exposure.py +0 -0
- {ha_mcp_dev-8.4.3.dev2572 → ha_mcp_dev-8.4.3.dev2576}/src/ha_mcp/log_filters.py +0 -0
- {ha_mcp_dev-8.4.3.dev2572 → ha_mcp_dev-8.4.3.dev2576}/src/ha_mcp/policy/__init__.py +0 -0
- {ha_mcp_dev-8.4.3.dev2572 → ha_mcp_dev-8.4.3.dev2576}/src/ha_mcp/policy/approval_queue.py +0 -0
- {ha_mcp_dev-8.4.3.dev2572 → ha_mcp_dev-8.4.3.dev2576}/src/ha_mcp/policy/editing.py +0 -0
- {ha_mcp_dev-8.4.3.dev2572 → ha_mcp_dev-8.4.3.dev2576}/src/ha_mcp/policy/evaluator.py +0 -0
- {ha_mcp_dev-8.4.3.dev2572 → ha_mcp_dev-8.4.3.dev2576}/src/ha_mcp/policy/handlers.py +0 -0
- {ha_mcp_dev-8.4.3.dev2572 → ha_mcp_dev-8.4.3.dev2576}/src/ha_mcp/policy/middleware.py +0 -0
- {ha_mcp_dev-8.4.3.dev2572 → ha_mcp_dev-8.4.3.dev2576}/src/ha_mcp/policy/model.py +0 -0
- {ha_mcp_dev-8.4.3.dev2572 → ha_mcp_dev-8.4.3.dev2576}/src/ha_mcp/policy/persistence.py +0 -0
- {ha_mcp_dev-8.4.3.dev2572 → ha_mcp_dev-8.4.3.dev2576}/src/ha_mcp/policy/value_sources.py +0 -0
- {ha_mcp_dev-8.4.3.dev2572 → ha_mcp_dev-8.4.3.dev2576}/src/ha_mcp/py.typed +0 -0
- {ha_mcp_dev-8.4.3.dev2572 → ha_mcp_dev-8.4.3.dev2576}/src/ha_mcp/read_only.py +0 -0
- {ha_mcp_dev-8.4.3.dev2572 → ha_mcp_dev-8.4.3.dev2576}/src/ha_mcp/redaction.py +0 -0
- {ha_mcp_dev-8.4.3.dev2572 → ha_mcp_dev-8.4.3.dev2576}/src/ha_mcp/renamed_tools.py +0 -0
- {ha_mcp_dev-8.4.3.dev2572 → ha_mcp_dev-8.4.3.dev2576}/src/ha_mcp/resources/skills-vendor/.claude/settings.json +0 -0
- {ha_mcp_dev-8.4.3.dev2572 → ha_mcp_dev-8.4.3.dev2576}/src/ha_mcp/resources/skills-vendor/.claude-plugin/marketplace.json +0 -0
- {ha_mcp_dev-8.4.3.dev2572 → ha_mcp_dev-8.4.3.dev2576}/src/ha_mcp/resources/skills-vendor/.claude-plugin/plugin.json +0 -0
- {ha_mcp_dev-8.4.3.dev2572 → ha_mcp_dev-8.4.3.dev2576}/src/ha_mcp/resources/skills-vendor/.github/ISSUE_TEMPLATE/skill-rca.md +0 -0
- {ha_mcp_dev-8.4.3.dev2572 → ha_mcp_dev-8.4.3.dev2576}/src/ha_mcp/resources/skills-vendor/.github/pull_request_template.md +0 -0
- {ha_mcp_dev-8.4.3.dev2572 → ha_mcp_dev-8.4.3.dev2576}/src/ha_mcp/resources/skills-vendor/AGENTS.md +0 -0
- {ha_mcp_dev-8.4.3.dev2572 → ha_mcp_dev-8.4.3.dev2576}/src/ha_mcp/resources/skills-vendor/CLAUDE.md +0 -0
- {ha_mcp_dev-8.4.3.dev2572 → ha_mcp_dev-8.4.3.dev2576}/src/ha_mcp/resources/skills-vendor/CONTRIBUTING.md +0 -0
- {ha_mcp_dev-8.4.3.dev2572 → ha_mcp_dev-8.4.3.dev2576}/src/ha_mcp/resources/skills-vendor/LICENSE +0 -0
- {ha_mcp_dev-8.4.3.dev2572 → ha_mcp_dev-8.4.3.dev2576}/src/ha_mcp/resources/skills-vendor/README.md +0 -0
- {ha_mcp_dev-8.4.3.dev2572 → ha_mcp_dev-8.4.3.dev2576}/src/ha_mcp/resources/skills-vendor/evals/area-target-over-entity-list/case.yaml +0 -0
- {ha_mcp_dev-8.4.3.dev2572 → ha_mcp_dev-8.4.3.dev2576}/src/ha_mcp/resources/skills-vendor/evals/arrive-home-automation/case.yaml +0 -0
- {ha_mcp_dev-8.4.3.dev2572 → ha_mcp_dev-8.4.3.dev2576}/src/ha_mcp/resources/skills-vendor/evals/assist-shortcut-card/case.yaml +0 -0
- {ha_mcp_dev-8.4.3.dev2572 → ha_mcp_dev-8.4.3.dev2576}/src/ha_mcp/resources/skills-vendor/evals/avg-temperature/case.yaml +0 -0
- {ha_mcp_dev-8.4.3.dev2572 → ha_mcp_dev-8.4.3.dev2576}/src/ha_mcp/resources/skills-vendor/evals/backup-deletion-confirmation/case.yaml +0 -0
- {ha_mcp_dev-8.4.3.dev2572 → ha_mcp_dev-8.4.3.dev2576}/src/ha_mcp/resources/skills-vendor/evals/blueprint-authoring/case.yaml +0 -0
- {ha_mcp_dev-8.4.3.dev2572 → ha_mcp_dev-8.4.3.dev2576}/src/ha_mcp/resources/skills-vendor/evals/button-event-entity/case.yaml +0 -0
- {ha_mcp_dev-8.4.3.dev2572 → ha_mcp_dev-8.4.3.dev2576}/src/ha_mcp/resources/skills-vendor/evals/device-id-trigger-migration/case.yaml +0 -0
- {ha_mcp_dev-8.4.3.dev2572 → ha_mcp_dev-8.4.3.dev2576}/src/ha_mcp/resources/skills-vendor/evals/helper-flow-fields-not-platform-yaml/case.yaml +0 -0
- {ha_mcp_dev-8.4.3.dev2572 → ha_mcp_dev-8.4.3.dev2576}/src/ha_mcp/resources/skills-vendor/evals/media-player-song/case.yaml +0 -0
- {ha_mcp_dev-8.4.3.dev2572 → ha_mcp_dev-8.4.3.dev2576}/src/ha_mcp/resources/skills-vendor/evals/motion-light-automation-mode/case.yaml +0 -0
- {ha_mcp_dev-8.4.3.dev2572 → ha_mcp_dev-8.4.3.dev2576}/src/ha_mcp/resources/skills-vendor/evals/rename-entity-impact-analysis/case.yaml +0 -0
- {ha_mcp_dev-8.4.3.dev2572 → ha_mcp_dev-8.4.3.dev2576}/src/ha_mcp/resources/skills-vendor/evals/template-attributes-yaml-exception/case.yaml +0 -0
- {ha_mcp_dev-8.4.3.dev2572 → ha_mcp_dev-8.4.3.dev2576}/src/ha_mcp/resources/skills-vendor/evals/timer-finished-automation/case.yaml +0 -0
- {ha_mcp_dev-8.4.3.dev2572 → ha_mcp_dev-8.4.3.dev2576}/src/ha_mcp/resources/skills-vendor/evals/vacuum-last-clean/case.yaml +0 -0
- {ha_mcp_dev-8.4.3.dev2572 → ha_mcp_dev-8.4.3.dev2576}/src/ha_mcp/resources/skills-vendor/scripts/check_eval_cases.py +0 -0
- {ha_mcp_dev-8.4.3.dev2572 → ha_mcp_dev-8.4.3.dev2576}/src/ha_mcp/resources/skills-vendor/skills/home-assistant-best-practices/SKILL.md +0 -0
- {ha_mcp_dev-8.4.3.dev2572 → ha_mcp_dev-8.4.3.dev2576}/src/ha_mcp/resources/skills-vendor/skills/home-assistant-best-practices/references/appdaemon.md +0 -0
- {ha_mcp_dev-8.4.3.dev2572 → ha_mcp_dev-8.4.3.dev2576}/src/ha_mcp/resources/skills-vendor/skills/home-assistant-best-practices/references/automation-patterns.md +0 -0
- {ha_mcp_dev-8.4.3.dev2572 → ha_mcp_dev-8.4.3.dev2576}/src/ha_mcp/resources/skills-vendor/skills/home-assistant-best-practices/references/backups.md +0 -0
- {ha_mcp_dev-8.4.3.dev2572 → ha_mcp_dev-8.4.3.dev2576}/src/ha_mcp/resources/skills-vendor/skills/home-assistant-best-practices/references/blueprint-guide.md +0 -0
- {ha_mcp_dev-8.4.3.dev2572 → ha_mcp_dev-8.4.3.dev2576}/src/ha_mcp/resources/skills-vendor/skills/home-assistant-best-practices/references/dashboard-cards.md +0 -0
- {ha_mcp_dev-8.4.3.dev2572 → ha_mcp_dev-8.4.3.dev2576}/src/ha_mcp/resources/skills-vendor/skills/home-assistant-best-practices/references/dashboard-guide.md +0 -0
- {ha_mcp_dev-8.4.3.dev2572 → ha_mcp_dev-8.4.3.dev2576}/src/ha_mcp/resources/skills-vendor/skills/home-assistant-best-practices/references/device-control.md +0 -0
- {ha_mcp_dev-8.4.3.dev2572 → ha_mcp_dev-8.4.3.dev2576}/src/ha_mcp/resources/skills-vendor/skills/home-assistant-best-practices/references/domain-docs.md +0 -0
- {ha_mcp_dev-8.4.3.dev2572 → ha_mcp_dev-8.4.3.dev2576}/src/ha_mcp/resources/skills-vendor/skills/home-assistant-best-practices/references/examples.yaml +0 -0
- {ha_mcp_dev-8.4.3.dev2572 → ha_mcp_dev-8.4.3.dev2576}/src/ha_mcp/resources/skills-vendor/skills/home-assistant-best-practices/references/helper-selection.md +0 -0
- {ha_mcp_dev-8.4.3.dev2572 → ha_mcp_dev-8.4.3.dev2576}/src/ha_mcp/resources/skills-vendor/skills/home-assistant-best-practices/references/safe-refactoring.md +0 -0
- {ha_mcp_dev-8.4.3.dev2572 → ha_mcp_dev-8.4.3.dev2576}/src/ha_mcp/resources/skills-vendor/skills/home-assistant-best-practices/references/scenes.md +0 -0
- {ha_mcp_dev-8.4.3.dev2572 → ha_mcp_dev-8.4.3.dev2576}/src/ha_mcp/resources/skills-vendor/skills/home-assistant-best-practices/references/template-guidelines.md +0 -0
- {ha_mcp_dev-8.4.3.dev2572 → ha_mcp_dev-8.4.3.dev2576}/src/ha_mcp/resources/skills-vendor/skills/home-assistant-best-practices/references/yaml-only-integrations.md +0 -0
- {ha_mcp_dev-8.4.3.dev2572 → ha_mcp_dev-8.4.3.dev2576}/src/ha_mcp/server.py +0 -0
- {ha_mcp_dev-8.4.3.dev2572 → ha_mcp_dev-8.4.3.dev2576}/src/ha_mcp/settings_ui/__init__.py +0 -0
- {ha_mcp_dev-8.4.3.dev2572 → ha_mcp_dev-8.4.3.dev2576}/src/ha_mcp/settings_ui/_handlers_advanced.py +0 -0
- {ha_mcp_dev-8.4.3.dev2572 → ha_mcp_dev-8.4.3.dev2576}/src/ha_mcp/settings_ui/_handlers_backups.py +0 -0
- {ha_mcp_dev-8.4.3.dev2572 → ha_mcp_dev-8.4.3.dev2576}/src/ha_mcp/settings_ui/_handlers_fs.py +0 -0
- {ha_mcp_dev-8.4.3.dev2572 → ha_mcp_dev-8.4.3.dev2576}/src/ha_mcp/settings_ui/_handlers_server.py +0 -0
- {ha_mcp_dev-8.4.3.dev2572 → ha_mcp_dev-8.4.3.dev2576}/src/ha_mcp/settings_ui/_handlers_theme.py +0 -0
- {ha_mcp_dev-8.4.3.dev2572 → ha_mcp_dev-8.4.3.dev2576}/src/ha_mcp/settings_ui/_handlers_tools.py +0 -0
- {ha_mcp_dev-8.4.3.dev2572 → ha_mcp_dev-8.4.3.dev2576}/src/ha_mcp/settings_ui/_i18n.py +0 -0
- {ha_mcp_dev-8.4.3.dev2572 → ha_mcp_dev-8.4.3.dev2576}/src/ha_mcp/settings_ui/_locale_policy.py +0 -0
- {ha_mcp_dev-8.4.3.dev2572 → ha_mcp_dev-8.4.3.dev2576}/src/ha_mcp/settings_ui/_persistence.py +0 -0
- {ha_mcp_dev-8.4.3.dev2572 → ha_mcp_dev-8.4.3.dev2576}/src/ha_mcp/settings_ui/_supervisor.py +0 -0
- {ha_mcp_dev-8.4.3.dev2572 → ha_mcp_dev-8.4.3.dev2576}/src/ha_mcp/settings_ui/_theme.py +0 -0
- {ha_mcp_dev-8.4.3.dev2572 → ha_mcp_dev-8.4.3.dev2576}/src/ha_mcp/settings_ui/_tools_meta.py +0 -0
- {ha_mcp_dev-8.4.3.dev2572 → ha_mcp_dev-8.4.3.dev2576}/src/ha_mcp/settings_ui/locales/README.md +0 -0
- {ha_mcp_dev-8.4.3.dev2572 → ha_mcp_dev-8.4.3.dev2576}/src/ha_mcp/settings_ui/locales/cs.json +0 -0
- {ha_mcp_dev-8.4.3.dev2572 → ha_mcp_dev-8.4.3.dev2576}/src/ha_mcp/settings_ui/locales/de.json +0 -0
- {ha_mcp_dev-8.4.3.dev2572 → ha_mcp_dev-8.4.3.dev2576}/src/ha_mcp/settings_ui/locales/en.json +0 -0
- {ha_mcp_dev-8.4.3.dev2572 → ha_mcp_dev-8.4.3.dev2576}/src/ha_mcp/settings_ui/locales/eo.json +0 -0
- {ha_mcp_dev-8.4.3.dev2572 → ha_mcp_dev-8.4.3.dev2576}/src/ha_mcp/settings_ui/locales/es.json +0 -0
- {ha_mcp_dev-8.4.3.dev2572 → ha_mcp_dev-8.4.3.dev2576}/src/ha_mcp/settings_ui/locales/fr.json +0 -0
- {ha_mcp_dev-8.4.3.dev2572 → ha_mcp_dev-8.4.3.dev2576}/src/ha_mcp/settings_ui/locales/it.json +0 -0
- {ha_mcp_dev-8.4.3.dev2572 → ha_mcp_dev-8.4.3.dev2576}/src/ha_mcp/settings_ui/locales/ko.json +0 -0
- {ha_mcp_dev-8.4.3.dev2572 → ha_mcp_dev-8.4.3.dev2576}/src/ha_mcp/settings_ui/locales/nl.json +0 -0
- {ha_mcp_dev-8.4.3.dev2572 → ha_mcp_dev-8.4.3.dev2576}/src/ha_mcp/settings_ui/locales/pl.json +0 -0
- {ha_mcp_dev-8.4.3.dev2572 → ha_mcp_dev-8.4.3.dev2576}/src/ha_mcp/settings_ui/locales/ru.json +0 -0
- {ha_mcp_dev-8.4.3.dev2572 → ha_mcp_dev-8.4.3.dev2576}/src/ha_mcp/settings_ui/locales/sv.json +0 -0
- {ha_mcp_dev-8.4.3.dev2572 → ha_mcp_dev-8.4.3.dev2576}/src/ha_mcp/settings_ui/locales/tlh.json +0 -0
- {ha_mcp_dev-8.4.3.dev2572 → ha_mcp_dev-8.4.3.dev2576}/src/ha_mcp/settings_ui/locales/zh-Hans.json +0 -0
- {ha_mcp_dev-8.4.3.dev2572 → ha_mcp_dev-8.4.3.dev2576}/src/ha_mcp/settings_ui/settings.css +0 -0
- {ha_mcp_dev-8.4.3.dev2572 → ha_mcp_dev-8.4.3.dev2576}/src/ha_mcp/settings_ui/settings.html +0 -0
- {ha_mcp_dev-8.4.3.dev2572 → ha_mcp_dev-8.4.3.dev2576}/src/ha_mcp/settings_ui/settings.js +0 -0
- {ha_mcp_dev-8.4.3.dev2572 → ha_mcp_dev-8.4.3.dev2576}/src/ha_mcp/smoke_test.py +0 -0
- {ha_mcp_dev-8.4.3.dev2572 → ha_mcp_dev-8.4.3.dev2576}/src/ha_mcp/stdio_settings_sidecar.py +0 -0
- {ha_mcp_dev-8.4.3.dev2572 → ha_mcp_dev-8.4.3.dev2576}/src/ha_mcp/strict_bps.py +0 -0
- {ha_mcp_dev-8.4.3.dev2572 → ha_mcp_dev-8.4.3.dev2576}/src/ha_mcp/tool_dispatch.py +0 -0
- {ha_mcp_dev-8.4.3.dev2572 → ha_mcp_dev-8.4.3.dev2576}/src/ha_mcp/tools/__init__.py +0 -0
- {ha_mcp_dev-8.4.3.dev2572 → ha_mcp_dev-8.4.3.dev2576}/src/ha_mcp/tools/auto_backup.py +0 -0
- {ha_mcp_dev-8.4.3.dev2572 → ha_mcp_dev-8.4.3.dev2576}/src/ha_mcp/tools/backup.py +0 -0
- {ha_mcp_dev-8.4.3.dev2572 → ha_mcp_dev-8.4.3.dev2576}/src/ha_mcp/tools/best_practice_checker.py +0 -0
- {ha_mcp_dev-8.4.3.dev2572 → ha_mcp_dev-8.4.3.dev2576}/src/ha_mcp/tools/best_practice_result.py +0 -0
- {ha_mcp_dev-8.4.3.dev2572 → ha_mcp_dev-8.4.3.dev2576}/src/ha_mcp/tools/best_practice_variables.py +0 -0
- {ha_mcp_dev-8.4.3.dev2572 → ha_mcp_dev-8.4.3.dev2576}/src/ha_mcp/tools/blueprint_sources.py +0 -0
- {ha_mcp_dev-8.4.3.dev2572 → ha_mcp_dev-8.4.3.dev2576}/src/ha_mcp/tools/blueprint_substitute.py +0 -0
- {ha_mcp_dev-8.4.3.dev2572 → ha_mcp_dev-8.4.3.dev2576}/src/ha_mcp/tools/blueprint_write.py +0 -0
- {ha_mcp_dev-8.4.3.dev2572 → ha_mcp_dev-8.4.3.dev2576}/src/ha_mcp/tools/bulk_selector.py +0 -0
- {ha_mcp_dev-8.4.3.dev2572 → ha_mcp_dev-8.4.3.dev2576}/src/ha_mcp/tools/component_api.py +0 -0
- {ha_mcp_dev-8.4.3.dev2572 → ha_mcp_dev-8.4.3.dev2576}/src/ha_mcp/tools/component_config_entries.py +0 -0
- {ha_mcp_dev-8.4.3.dev2572 → ha_mcp_dev-8.4.3.dev2576}/src/ha_mcp/tools/component_config_reads.py +0 -0
- {ha_mcp_dev-8.4.3.dev2572 → ha_mcp_dev-8.4.3.dev2576}/src/ha_mcp/tools/component_devices.py +0 -0
- {ha_mcp_dev-8.4.3.dev2572 → ha_mcp_dev-8.4.3.dev2576}/src/ha_mcp/tools/component_registries.py +0 -0
- {ha_mcp_dev-8.4.3.dev2572 → ha_mcp_dev-8.4.3.dev2576}/src/ha_mcp/tools/component_registry_lookup.py +0 -0
- {ha_mcp_dev-8.4.3.dev2572 → ha_mcp_dev-8.4.3.dev2576}/src/ha_mcp/tools/config_entry_flow.py +0 -0
- {ha_mcp_dev-8.4.3.dev2572 → ha_mcp_dev-8.4.3.dev2576}/src/ha_mcp/tools/config_entry_flow_form.py +0 -0
- {ha_mcp_dev-8.4.3.dev2572 → ha_mcp_dev-8.4.3.dev2576}/src/ha_mcp/tools/config_entry_flow_menu.py +0 -0
- {ha_mcp_dev-8.4.3.dev2572 → ha_mcp_dev-8.4.3.dev2576}/src/ha_mcp/tools/config_entry_flow_walker.py +0 -0
- {ha_mcp_dev-8.4.3.dev2572 → ha_mcp_dev-8.4.3.dev2576}/src/ha_mcp/tools/config_entry_identity.py +0 -0
- {ha_mcp_dev-8.4.3.dev2572 → ha_mcp_dev-8.4.3.dev2576}/src/ha_mcp/tools/config_entry_reconfigure.py +0 -0
- {ha_mcp_dev-8.4.3.dev2572 → ha_mcp_dev-8.4.3.dev2576}/src/ha_mcp/tools/config_entry_reload_watch.py +0 -0
- {ha_mcp_dev-8.4.3.dev2572 → ha_mcp_dev-8.4.3.dev2576}/src/ha_mcp/tools/device_control.py +0 -0
- {ha_mcp_dev-8.4.3.dev2572 → ha_mcp_dev-8.4.3.dev2576}/src/ha_mcp/tools/error_log_parsing.py +0 -0
- {ha_mcp_dev-8.4.3.dev2572 → ha_mcp_dev-8.4.3.dev2576}/src/ha_mcp/tools/hacs_registration.py +0 -0
- {ha_mcp_dev-8.4.3.dev2572 → ha_mcp_dev-8.4.3.dev2576}/src/ha_mcp/tools/helpers.py +0 -0
- {ha_mcp_dev-8.4.3.dev2572 → ha_mcp_dev-8.4.3.dev2576}/src/ha_mcp/tools/integration_reconfigure.py +0 -0
- {ha_mcp_dev-8.4.3.dev2572 → ha_mcp_dev-8.4.3.dev2576}/src/ha_mcp/tools/log_common.py +0 -0
- {ha_mcp_dev-8.4.3.dev2572 → ha_mcp_dev-8.4.3.dev2576}/src/ha_mcp/tools/log_sources.py +0 -0
- {ha_mcp_dev-8.4.3.dev2572 → ha_mcp_dev-8.4.3.dev2576}/src/ha_mcp/tools/log_sources_fault.py +0 -0
- {ha_mcp_dev-8.4.3.dev2572 → ha_mcp_dev-8.4.3.dev2576}/src/ha_mcp/tools/log_sources_supervisor.py +0 -0
- {ha_mcp_dev-8.4.3.dev2572 → ha_mcp_dev-8.4.3.dev2576}/src/ha_mcp/tools/radio/__init__.py +0 -0
- {ha_mcp_dev-8.4.3.dev2572 → ha_mcp_dev-8.4.3.dev2576}/src/ha_mcp/tools/radio/base.py +0 -0
- {ha_mcp_dev-8.4.3.dev2572 → ha_mcp_dev-8.4.3.dev2576}/src/ha_mcp/tools/radio/matter.py +0 -0
- {ha_mcp_dev-8.4.3.dev2572 → ha_mcp_dev-8.4.3.dev2576}/src/ha_mcp/tools/radio/thread.py +0 -0
- {ha_mcp_dev-8.4.3.dev2572 → ha_mcp_dev-8.4.3.dev2576}/src/ha_mcp/tools/radio/zigbee.py +0 -0
- {ha_mcp_dev-8.4.3.dev2572 → ha_mcp_dev-8.4.3.dev2576}/src/ha_mcp/tools/radio/zwave.py +0 -0
- {ha_mcp_dev-8.4.3.dev2572 → ha_mcp_dev-8.4.3.dev2576}/src/ha_mcp/tools/reference_validator.py +0 -0
- {ha_mcp_dev-8.4.3.dev2572 → ha_mcp_dev-8.4.3.dev2576}/src/ha_mcp/tools/registry.py +0 -0
- {ha_mcp_dev-8.4.3.dev2572 → ha_mcp_dev-8.4.3.dev2576}/src/ha_mcp/tools/renamed_tool_middleware.py +0 -0
- {ha_mcp_dev-8.4.3.dev2572 → ha_mcp_dev-8.4.3.dev2576}/src/ha_mcp/tools/smart_search/__init__.py +0 -0
- {ha_mcp_dev-8.4.3.dev2572 → ha_mcp_dev-8.4.3.dev2576}/src/ha_mcp/tools/smart_search/_base.py +0 -0
- {ha_mcp_dev-8.4.3.dev2572 → ha_mcp_dev-8.4.3.dev2576}/src/ha_mcp/tools/smart_search/_config.py +0 -0
- {ha_mcp_dev-8.4.3.dev2572 → ha_mcp_dev-8.4.3.dev2576}/src/ha_mcp/tools/smart_search/_deep.py +0 -0
- {ha_mcp_dev-8.4.3.dev2572 → ha_mcp_dev-8.4.3.dev2576}/src/ha_mcp/tools/smart_search/_entities.py +0 -0
- {ha_mcp_dev-8.4.3.dev2572 → ha_mcp_dev-8.4.3.dev2576}/src/ha_mcp/tools/smart_search/_fetch.py +0 -0
- {ha_mcp_dev-8.4.3.dev2572 → ha_mcp_dev-8.4.3.dev2576}/src/ha_mcp/tools/smart_search/_graph.py +0 -0
- {ha_mcp_dev-8.4.3.dev2572 → ha_mcp_dev-8.4.3.dev2576}/src/ha_mcp/tools/smart_search/_scenes.py +0 -0
- {ha_mcp_dev-8.4.3.dev2572 → ha_mcp_dev-8.4.3.dev2576}/src/ha_mcp/tools/smart_search/_scoring.py +0 -0
- {ha_mcp_dev-8.4.3.dev2572 → ha_mcp_dev-8.4.3.dev2576}/src/ha_mcp/tools/tool_search_hint_middleware.py +0 -0
- {ha_mcp_dev-8.4.3.dev2572 → ha_mcp_dev-8.4.3.dev2576}/src/ha_mcp/tools/tools_addons.py +0 -0
- {ha_mcp_dev-8.4.3.dev2572 → ha_mcp_dev-8.4.3.dev2576}/src/ha_mcp/tools/tools_areas.py +0 -0
- {ha_mcp_dev-8.4.3.dev2572 → ha_mcp_dev-8.4.3.dev2576}/src/ha_mcp/tools/tools_assist_pipeline.py +0 -0
- {ha_mcp_dev-8.4.3.dev2572 → ha_mcp_dev-8.4.3.dev2576}/src/ha_mcp/tools/tools_blueprints.py +0 -0
- {ha_mcp_dev-8.4.3.dev2572 → ha_mcp_dev-8.4.3.dev2576}/src/ha_mcp/tools/tools_bug_report.py +0 -0
- {ha_mcp_dev-8.4.3.dev2572 → ha_mcp_dev-8.4.3.dev2576}/src/ha_mcp/tools/tools_calendar.py +0 -0
- {ha_mcp_dev-8.4.3.dev2572 → ha_mcp_dev-8.4.3.dev2576}/src/ha_mcp/tools/tools_camera.py +0 -0
- {ha_mcp_dev-8.4.3.dev2572 → ha_mcp_dev-8.4.3.dev2576}/src/ha_mcp/tools/tools_categories.py +0 -0
- {ha_mcp_dev-8.4.3.dev2572 → ha_mcp_dev-8.4.3.dev2576}/src/ha_mcp/tools/tools_code.py +0 -0
- {ha_mcp_dev-8.4.3.dev2572 → ha_mcp_dev-8.4.3.dev2576}/src/ha_mcp/tools/tools_config_automations.py +0 -0
- {ha_mcp_dev-8.4.3.dev2572 → ha_mcp_dev-8.4.3.dev2576}/src/ha_mcp/tools/tools_config_dashboards.py +0 -0
- {ha_mcp_dev-8.4.3.dev2572 → ha_mcp_dev-8.4.3.dev2576}/src/ha_mcp/tools/tools_config_helpers.py +0 -0
- {ha_mcp_dev-8.4.3.dev2572 → ha_mcp_dev-8.4.3.dev2576}/src/ha_mcp/tools/tools_config_scenes.py +0 -0
- {ha_mcp_dev-8.4.3.dev2572 → ha_mcp_dev-8.4.3.dev2576}/src/ha_mcp/tools/tools_config_scripts.py +0 -0
- {ha_mcp_dev-8.4.3.dev2572 → ha_mcp_dev-8.4.3.dev2576}/src/ha_mcp/tools/tools_dashboard_screenshot.py +0 -0
- {ha_mcp_dev-8.4.3.dev2572 → ha_mcp_dev-8.4.3.dev2576}/src/ha_mcp/tools/tools_dev.py +0 -0
- {ha_mcp_dev-8.4.3.dev2572 → ha_mcp_dev-8.4.3.dev2576}/src/ha_mcp/tools/tools_energy.py +0 -0
- {ha_mcp_dev-8.4.3.dev2572 → ha_mcp_dev-8.4.3.dev2576}/src/ha_mcp/tools/tools_entities.py +0 -0
- {ha_mcp_dev-8.4.3.dev2572 → ha_mcp_dev-8.4.3.dev2576}/src/ha_mcp/tools/tools_filesystem.py +0 -0
- {ha_mcp_dev-8.4.3.dev2572 → ha_mcp_dev-8.4.3.dev2576}/src/ha_mcp/tools/tools_groups.py +0 -0
- {ha_mcp_dev-8.4.3.dev2572 → ha_mcp_dev-8.4.3.dev2576}/src/ha_mcp/tools/tools_hacs.py +0 -0
- {ha_mcp_dev-8.4.3.dev2572 → ha_mcp_dev-8.4.3.dev2576}/src/ha_mcp/tools/tools_history.py +0 -0
- {ha_mcp_dev-8.4.3.dev2572 → ha_mcp_dev-8.4.3.dev2576}/src/ha_mcp/tools/tools_integrations.py +0 -0
- {ha_mcp_dev-8.4.3.dev2572 → ha_mcp_dev-8.4.3.dev2576}/src/ha_mcp/tools/tools_labels.py +0 -0
- {ha_mcp_dev-8.4.3.dev2572 → ha_mcp_dev-8.4.3.dev2576}/src/ha_mcp/tools/tools_logs.py +0 -0
- {ha_mcp_dev-8.4.3.dev2572 → ha_mcp_dev-8.4.3.dev2576}/src/ha_mcp/tools/tools_radio.py +0 -0
- {ha_mcp_dev-8.4.3.dev2572 → ha_mcp_dev-8.4.3.dev2576}/src/ha_mcp/tools/tools_registry.py +0 -0
- {ha_mcp_dev-8.4.3.dev2572 → ha_mcp_dev-8.4.3.dev2576}/src/ha_mcp/tools/tools_resources.py +0 -0
- {ha_mcp_dev-8.4.3.dev2572 → ha_mcp_dev-8.4.3.dev2576}/src/ha_mcp/tools/tools_security_policy.py +0 -0
- {ha_mcp_dev-8.4.3.dev2572 → ha_mcp_dev-8.4.3.dev2576}/src/ha_mcp/tools/tools_service.py +0 -0
- {ha_mcp_dev-8.4.3.dev2572 → ha_mcp_dev-8.4.3.dev2576}/src/ha_mcp/tools/tools_services.py +0 -0
- {ha_mcp_dev-8.4.3.dev2572 → ha_mcp_dev-8.4.3.dev2576}/src/ha_mcp/tools/tools_system.py +0 -0
- {ha_mcp_dev-8.4.3.dev2572 → ha_mcp_dev-8.4.3.dev2576}/src/ha_mcp/tools/tools_themes.py +0 -0
- {ha_mcp_dev-8.4.3.dev2572 → ha_mcp_dev-8.4.3.dev2576}/src/ha_mcp/tools/tools_todo.py +0 -0
- {ha_mcp_dev-8.4.3.dev2572 → ha_mcp_dev-8.4.3.dev2576}/src/ha_mcp/tools/tools_traces.py +0 -0
- {ha_mcp_dev-8.4.3.dev2572 → ha_mcp_dev-8.4.3.dev2576}/src/ha_mcp/tools/tools_updates.py +0 -0
- {ha_mcp_dev-8.4.3.dev2572 → ha_mcp_dev-8.4.3.dev2576}/src/ha_mcp/tools/tools_utility.py +0 -0
- {ha_mcp_dev-8.4.3.dev2572 → ha_mcp_dev-8.4.3.dev2576}/src/ha_mcp/tools/tools_voice_assistant.py +0 -0
- {ha_mcp_dev-8.4.3.dev2572 → ha_mcp_dev-8.4.3.dev2576}/src/ha_mcp/tools/tools_yaml_config.py +0 -0
- {ha_mcp_dev-8.4.3.dev2572 → ha_mcp_dev-8.4.3.dev2576}/src/ha_mcp/tools/tools_yaml_read.py +0 -0
- {ha_mcp_dev-8.4.3.dev2572 → ha_mcp_dev-8.4.3.dev2576}/src/ha_mcp/tools/tools_zones.py +0 -0
- {ha_mcp_dev-8.4.3.dev2572 → ha_mcp_dev-8.4.3.dev2576}/src/ha_mcp/tools/validation_middleware.py +0 -0
- {ha_mcp_dev-8.4.3.dev2572 → ha_mcp_dev-8.4.3.dev2576}/src/ha_mcp/transforms/__init__.py +0 -0
- {ha_mcp_dev-8.4.3.dev2572 → ha_mcp_dev-8.4.3.dev2576}/src/ha_mcp/transforms/categorized_search.py +0 -0
- {ha_mcp_dev-8.4.3.dev2572 → ha_mcp_dev-8.4.3.dev2576}/src/ha_mcp/transforms/lite_docstrings.py +0 -0
- {ha_mcp_dev-8.4.3.dev2572 → ha_mcp_dev-8.4.3.dev2576}/src/ha_mcp/transport_security.py +0 -0
- {ha_mcp_dev-8.4.3.dev2572 → ha_mcp_dev-8.4.3.dev2576}/src/ha_mcp/update_check.py +0 -0
- {ha_mcp_dev-8.4.3.dev2572 → ha_mcp_dev-8.4.3.dev2576}/src/ha_mcp/utils/__init__.py +0 -0
- {ha_mcp_dev-8.4.3.dev2572 → ha_mcp_dev-8.4.3.dev2576}/src/ha_mcp/utils/config_hash.py +0 -0
- {ha_mcp_dev-8.4.3.dev2572 → ha_mcp_dev-8.4.3.dev2576}/src/ha_mcp/utils/config_write_lock.py +0 -0
- {ha_mcp_dev-8.4.3.dev2572 → ha_mcp_dev-8.4.3.dev2576}/src/ha_mcp/utils/data_paths.py +0 -0
- {ha_mcp_dev-8.4.3.dev2572 → ha_mcp_dev-8.4.3.dev2576}/src/ha_mcp/utils/device_registry_semantics.py +0 -0
- {ha_mcp_dev-8.4.3.dev2572 → ha_mcp_dev-8.4.3.dev2576}/src/ha_mcp/utils/domain_handlers.py +0 -0
- {ha_mcp_dev-8.4.3.dev2572 → ha_mcp_dev-8.4.3.dev2576}/src/ha_mcp/utils/entity_membership.py +0 -0
- {ha_mcp_dev-8.4.3.dev2572 → ha_mcp_dev-8.4.3.dev2576}/src/ha_mcp/utils/fuzzy_search.py +0 -0
- {ha_mcp_dev-8.4.3.dev2572 → ha_mcp_dev-8.4.3.dev2576}/src/ha_mcp/utils/kill_signal_diagnostics.py +0 -0
- {ha_mcp_dev-8.4.3.dev2572 → ha_mcp_dev-8.4.3.dev2576}/src/ha_mcp/utils/operation_manager.py +0 -0
- {ha_mcp_dev-8.4.3.dev2572 → ha_mcp_dev-8.4.3.dev2576}/src/ha_mcp/utils/python_sandbox.py +0 -0
- {ha_mcp_dev-8.4.3.dev2572 → ha_mcp_dev-8.4.3.dev2576}/src/ha_mcp/utils/skill_loader.py +0 -0
- {ha_mcp_dev-8.4.3.dev2572 → ha_mcp_dev-8.4.3.dev2576}/src/ha_mcp/utils/usage_logger.py +0 -0
- {ha_mcp_dev-8.4.3.dev2572 → ha_mcp_dev-8.4.3.dev2576}/src/ha_mcp/visibility/__init__.py +0 -0
- {ha_mcp_dev-8.4.3.dev2572 → ha_mcp_dev-8.4.3.dev2576}/src/ha_mcp/visibility/enforcement.py +0 -0
- {ha_mcp_dev-8.4.3.dev2572 → ha_mcp_dev-8.4.3.dev2576}/src/ha_mcp/visibility/model.py +0 -0
- {ha_mcp_dev-8.4.3.dev2572 → ha_mcp_dev-8.4.3.dev2576}/src/ha_mcp/visibility/persistence.py +0 -0
- {ha_mcp_dev-8.4.3.dev2572 → ha_mcp_dev-8.4.3.dev2576}/src/ha_mcp/visibility/resolver.py +0 -0
- {ha_mcp_dev-8.4.3.dev2572 → ha_mcp_dev-8.4.3.dev2576}/src/ha_mcp_dev.egg-info/SOURCES.txt +0 -0
- {ha_mcp_dev-8.4.3.dev2572 → ha_mcp_dev-8.4.3.dev2576}/src/ha_mcp_dev.egg-info/dependency_links.txt +0 -0
- {ha_mcp_dev-8.4.3.dev2572 → ha_mcp_dev-8.4.3.dev2576}/src/ha_mcp_dev.egg-info/entry_points.txt +0 -0
- {ha_mcp_dev-8.4.3.dev2572 → ha_mcp_dev-8.4.3.dev2576}/src/ha_mcp_dev.egg-info/requires.txt +0 -0
- {ha_mcp_dev-8.4.3.dev2572 → ha_mcp_dev-8.4.3.dev2576}/src/ha_mcp_dev.egg-info/top_level.txt +0 -0
- {ha_mcp_dev-8.4.3.dev2572 → ha_mcp_dev-8.4.3.dev2576}/tests/__init__.py +0 -0
- {ha_mcp_dev-8.4.3.dev2572 → ha_mcp_dev-8.4.3.dev2576}/tests/test_constants.py +0 -0
- {ha_mcp_dev-8.4.3.dev2572 → ha_mcp_dev-8.4.3.dev2576}/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.4.3.
|
|
7
|
+
version = "8.4.3.dev2576"
|
|
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
|
{ha_mcp_dev-8.4.3.dev2572 → ha_mcp_dev-8.4.3.dev2576}/src/ha_mcp/tools/smart_search/_overview.py
RENAMED
|
@@ -21,6 +21,18 @@ logger = logging.getLogger(__name__)
|
|
|
21
21
|
class SystemOverviewMixin(_SearchBase):
|
|
22
22
|
"""``get_system_overview`` and its analysis/format/paginate helpers."""
|
|
23
23
|
|
|
24
|
+
async def _fetch_legacy_overview_slices(self) -> list[Any]:
|
|
25
|
+
"""Fetch broad legacy slices in parallel after states succeeds."""
|
|
26
|
+
states = await self.client.get_states()
|
|
27
|
+
optional_results = await asyncio.gather(
|
|
28
|
+
self.client.get_services(),
|
|
29
|
+
self.client.send_websocket_message({"type": "config/area_registry/list"}),
|
|
30
|
+
self.client.send_websocket_message({"type": "config/entity_registry/list"}),
|
|
31
|
+
self.client.send_websocket_message({"type": "config/device_registry/list"}),
|
|
32
|
+
return_exceptions=True,
|
|
33
|
+
)
|
|
34
|
+
return [states, *optional_results]
|
|
35
|
+
|
|
24
36
|
async def get_system_overview(
|
|
25
37
|
self,
|
|
26
38
|
detail_level: str = "standard",
|
|
@@ -76,29 +88,10 @@ class SystemOverviewMixin(_SearchBase):
|
|
|
76
88
|
prefetched_slices["device_registry"],
|
|
77
89
|
]
|
|
78
90
|
else:
|
|
79
|
-
# Fetch
|
|
80
|
-
#
|
|
81
|
-
results = await
|
|
82
|
-
self.client.get_states(),
|
|
83
|
-
self.client.get_services(),
|
|
84
|
-
self.client.send_websocket_message(
|
|
85
|
-
{"type": "config/area_registry/list"}
|
|
86
|
-
),
|
|
87
|
-
self.client.send_websocket_message(
|
|
88
|
-
{"type": "config/entity_registry/list"}
|
|
89
|
-
),
|
|
90
|
-
self.client.send_websocket_message(
|
|
91
|
-
{"type": "config/device_registry/list"}
|
|
92
|
-
),
|
|
93
|
-
return_exceptions=True,
|
|
94
|
-
)
|
|
91
|
+
# Fetch mandatory states first, then read optional slices in
|
|
92
|
+
# parallel; optional failures degrade independently below.
|
|
93
|
+
results = await self._fetch_legacy_overview_slices()
|
|
95
94
|
|
|
96
|
-
# Entities are mandatory — surface connection/auth errors immediately.
|
|
97
|
-
# Use BaseException so a cancelled states fetch propagates instead of
|
|
98
|
-
# being assigned to `entities` and crashing downstream iteration
|
|
99
|
-
# (mirrors get_entities_by_area / _fetch_search_entities).
|
|
100
|
-
if isinstance(results[0], BaseException):
|
|
101
|
-
raise results[0]
|
|
102
95
|
entities = results[0]
|
|
103
96
|
# A cancelled services/registry sub-task must propagate too, not be
|
|
104
97
|
# silently degraded by the fail-open handlers below.
|
|
@@ -1558,6 +1558,51 @@ class _OverviewSlices:
|
|
|
1558
1558
|
repairs: dict[str, Any]
|
|
1559
1559
|
|
|
1560
1560
|
|
|
1561
|
+
# These disjoint sets partition every key documented by ha_get_overview's
|
|
1562
|
+
# fields parameter. Keep the manifest test in sync when the public schema changes.
|
|
1563
|
+
_OVERVIEW_INDEPENDENT_FIELDS = frozenset(
|
|
1564
|
+
{
|
|
1565
|
+
"success",
|
|
1566
|
+
"system_info",
|
|
1567
|
+
"notification_count",
|
|
1568
|
+
"notifications",
|
|
1569
|
+
"repair_count",
|
|
1570
|
+
"dismissed_repair_count",
|
|
1571
|
+
"repairs",
|
|
1572
|
+
"repairs_error",
|
|
1573
|
+
"tool_discovery",
|
|
1574
|
+
"settings_url",
|
|
1575
|
+
"settings_url_hint",
|
|
1576
|
+
"read_only_mode",
|
|
1577
|
+
"read_only_mode_hint",
|
|
1578
|
+
"ha_mcp_update",
|
|
1579
|
+
}
|
|
1580
|
+
)
|
|
1581
|
+
_OVERVIEW_NOTIFICATION_FIELDS = frozenset({"notification_count", "notifications"})
|
|
1582
|
+
_OVERVIEW_REPAIR_FIELDS = frozenset(
|
|
1583
|
+
{
|
|
1584
|
+
"repair_count",
|
|
1585
|
+
"dismissed_repair_count",
|
|
1586
|
+
"repairs",
|
|
1587
|
+
"repairs_error",
|
|
1588
|
+
}
|
|
1589
|
+
)
|
|
1590
|
+
_OVERVIEW_ENTITY_FIELDS = frozenset(
|
|
1591
|
+
{
|
|
1592
|
+
"system_summary",
|
|
1593
|
+
"domain_stats",
|
|
1594
|
+
"area_analysis",
|
|
1595
|
+
"ai_insights",
|
|
1596
|
+
"pagination",
|
|
1597
|
+
"partial",
|
|
1598
|
+
"warnings",
|
|
1599
|
+
"device_types",
|
|
1600
|
+
"service_availability",
|
|
1601
|
+
}
|
|
1602
|
+
)
|
|
1603
|
+
_OVERVIEW_AVAILABLE_FIELDS = _OVERVIEW_INDEPENDENT_FIELDS | _OVERVIEW_ENTITY_FIELDS
|
|
1604
|
+
|
|
1605
|
+
|
|
1561
1606
|
def _build_component_overview_request(inputs: _OverviewInputs) -> dict[str, Any]:
|
|
1562
1607
|
"""Translate resolved ha_get_overview inputs into an ``ha_mcp_tools/overview`` request.
|
|
1563
1608
|
|
|
@@ -4045,7 +4090,7 @@ class SearchTools:
|
|
|
4045
4090
|
default=None,
|
|
4046
4091
|
description=(
|
|
4047
4092
|
"Return only the specified top-level response keys to reduce "
|
|
4048
|
-
'response size (e.g. ["system_info", "
|
|
4093
|
+
'response size (e.g. ["system_info", "domain_stats"]). '
|
|
4049
4094
|
"None = full response (default). "
|
|
4050
4095
|
"Available keys: success, system_summary, domain_stats, "
|
|
4051
4096
|
"area_analysis, ai_insights, pagination, partial, warnings, "
|
|
@@ -4078,6 +4123,14 @@ class SearchTools:
|
|
|
4078
4123
|
Use fields= to project the response to only the keys you need — a
|
|
4079
4124
|
significantly smaller payload when fetching a single sub-section (e.g.
|
|
4080
4125
|
fields=["system_info"] returns just that section instead of the full overview).
|
|
4126
|
+
Requests composed only of system_info, notification, repair, or server
|
|
4127
|
+
metadata fields also skip the unrelated state, service, and registry reads.
|
|
4128
|
+
|
|
4129
|
+
Do not use this tool to inspect a known entity or a narrow set of entities.
|
|
4130
|
+
Use ha_get_state for one entity, ha_get_entity for registry metadata, or
|
|
4131
|
+
ha_search with a domain or area filter. An unprojected overview collects
|
|
4132
|
+
system-wide state, service, and registry data and can be expensive on large
|
|
4133
|
+
Home Assistant installations.
|
|
4081
4134
|
|
|
4082
4135
|
When (and only when) the ha-mcp settings-UI sidecar is running
|
|
4083
4136
|
(stdio mode, e.g. Claude Desktop / Claude Code), the response
|
|
@@ -4126,19 +4179,32 @@ class SearchTools:
|
|
|
4126
4179
|
except ValueError as exc:
|
|
4127
4180
|
raise_tool_error(create_validation_error(str(exc), parameter="domains"))
|
|
4128
4181
|
|
|
4129
|
-
|
|
4130
|
-
|
|
4182
|
+
requested_fields = set(parsed_fields or [])
|
|
4183
|
+
recognized_fields = requested_fields & _OVERVIEW_INDEPENDENT_FIELDS
|
|
4184
|
+
use_independent_collectors = (
|
|
4185
|
+
parsed_fields is not None and not requested_fields & _OVERVIEW_ENTITY_FIELDS
|
|
4186
|
+
)
|
|
4187
|
+
if use_independent_collectors:
|
|
4188
|
+
result = await self._collect_independent_overview(
|
|
4189
|
+
requested_fields=recognized_fields,
|
|
4131
4190
|
detail_level=detail_level,
|
|
4132
|
-
max_entities_per_domain=max_entities_per_domain,
|
|
4133
|
-
include_state=include_state_bool,
|
|
4134
|
-
include_entity_id=include_entity_id_bool,
|
|
4135
|
-
domains_filter=parsed_domains,
|
|
4136
|
-
limit=limit,
|
|
4137
|
-
offset=offset,
|
|
4138
4191
|
include_notifications=include_notifications_bool,
|
|
4139
4192
|
include_dismissed_repairs=include_dismissed_repairs_bool,
|
|
4140
4193
|
)
|
|
4141
|
-
|
|
4194
|
+
else:
|
|
4195
|
+
result = await self._collect_overview(
|
|
4196
|
+
_OverviewInputs(
|
|
4197
|
+
detail_level=detail_level,
|
|
4198
|
+
max_entities_per_domain=max_entities_per_domain,
|
|
4199
|
+
include_state=include_state_bool,
|
|
4200
|
+
include_entity_id=include_entity_id_bool,
|
|
4201
|
+
domains_filter=parsed_domains,
|
|
4202
|
+
limit=limit,
|
|
4203
|
+
offset=offset,
|
|
4204
|
+
include_notifications=include_notifications_bool,
|
|
4205
|
+
include_dismissed_repairs=include_dismissed_repairs_bool,
|
|
4206
|
+
)
|
|
4207
|
+
)
|
|
4142
4208
|
|
|
4143
4209
|
settings = get_global_settings()
|
|
4144
4210
|
if settings.enable_tool_search:
|
|
@@ -4170,7 +4236,11 @@ class SearchTools:
|
|
|
4170
4236
|
# (issue #863).
|
|
4171
4237
|
from ..stdio_settings_sidecar import read_sidecar_url
|
|
4172
4238
|
|
|
4173
|
-
projected = project_fields(
|
|
4239
|
+
projected = project_fields(
|
|
4240
|
+
result,
|
|
4241
|
+
parsed_fields,
|
|
4242
|
+
available_fields=_OVERVIEW_AVAILABLE_FIELDS,
|
|
4243
|
+
)
|
|
4174
4244
|
sidecar_url = read_sidecar_url()
|
|
4175
4245
|
if sidecar_url:
|
|
4176
4246
|
projected["settings_url"] = sidecar_url
|
|
@@ -4215,6 +4285,32 @@ class SearchTools:
|
|
|
4215
4285
|
|
|
4216
4286
|
return projected
|
|
4217
4287
|
|
|
4288
|
+
async def _collect_independent_overview(
|
|
4289
|
+
self,
|
|
4290
|
+
*,
|
|
4291
|
+
requested_fields: set[str],
|
|
4292
|
+
detail_level: str,
|
|
4293
|
+
include_notifications: bool,
|
|
4294
|
+
include_dismissed_repairs: bool,
|
|
4295
|
+
) -> dict[str, Any]:
|
|
4296
|
+
"""Collect requested independent sections with full-path error semantics."""
|
|
4297
|
+
result: dict[str, Any] = {"success": True}
|
|
4298
|
+
if "system_info" in requested_fields:
|
|
4299
|
+
await self._fetch_system_info(result, detail_level)
|
|
4300
|
+
if requested_fields & _OVERVIEW_NOTIFICATION_FIELDS:
|
|
4301
|
+
if include_notifications:
|
|
4302
|
+
await self._fetch_notifications(result)
|
|
4303
|
+
else:
|
|
4304
|
+
result.setdefault("warnings", []).append(
|
|
4305
|
+
"notifications omitted: include_notifications=False"
|
|
4306
|
+
)
|
|
4307
|
+
if requested_fields & _OVERVIEW_REPAIR_FIELDS:
|
|
4308
|
+
await self._fetch_repairs(
|
|
4309
|
+
result,
|
|
4310
|
+
include_dismissed_repairs,
|
|
4311
|
+
)
|
|
4312
|
+
return result
|
|
4313
|
+
|
|
4218
4314
|
async def _fetch_system_info(
|
|
4219
4315
|
self,
|
|
4220
4316
|
result: dict[str, Any],
|
|
@@ -4222,7 +4318,7 @@ class SearchTools:
|
|
|
4222
4318
|
*,
|
|
4223
4319
|
prefetched_config: dict[str, Any] | None = None,
|
|
4224
4320
|
) -> None:
|
|
4225
|
-
"""Populate result['system_info'] from HA config
|
|
4321
|
+
"""Populate result['system_info'] from HA config, warning on failure.
|
|
4226
4322
|
|
|
4227
4323
|
``prefetched_config`` (the component's ``config`` slice, already the bare
|
|
4228
4324
|
``get_config()`` dict) is used verbatim when given, skipping the fetch.
|
|
@@ -4268,6 +4364,7 @@ class SearchTools:
|
|
|
4268
4364
|
logger.warning(
|
|
4269
4365
|
"Failed to fetch system info for overview: %s", e, exc_info=True
|
|
4270
4366
|
)
|
|
4367
|
+
result.setdefault("warnings", []).append(f"system info unavailable: {e}")
|
|
4271
4368
|
if "system_summary" in result:
|
|
4272
4369
|
result["system_summary"].setdefault("version", "unknown")
|
|
4273
4370
|
|
|
@@ -4277,7 +4374,7 @@ class SearchTools:
|
|
|
4277
4374
|
*,
|
|
4278
4375
|
prefetched_notifications: dict[str, Any] | None = None,
|
|
4279
4376
|
) -> None:
|
|
4280
|
-
"""Attach active persistent notifications
|
|
4377
|
+
"""Attach active persistent notifications, warning on failure.
|
|
4281
4378
|
|
|
4282
4379
|
``prefetched_notifications`` (the component's ``notifications`` slice
|
|
4283
4380
|
re-wrapped in the ``{success, result}`` envelope) is unwrapped by the same
|
|
@@ -4331,7 +4428,7 @@ class SearchTools:
|
|
|
4331
4428
|
*,
|
|
4332
4429
|
prefetched_repairs: dict[str, Any] | None = None,
|
|
4333
4430
|
) -> None:
|
|
4334
|
-
"""Attach active repairs issues
|
|
4431
|
+
"""Attach active repairs issues, recording failures in repairs_error.
|
|
4335
4432
|
|
|
4336
4433
|
``prefetched_repairs`` (the component's ``repairs`` slice re-wrapped in the
|
|
4337
4434
|
``{success, result: {issues: [...]}}`` envelope) is unwrapped, filtered
|
|
@@ -390,6 +390,7 @@ def project_fields(
|
|
|
390
390
|
fields: str | list[str] | None,
|
|
391
391
|
*,
|
|
392
392
|
extra_always_keep: frozenset[str] | None = None,
|
|
393
|
+
available_fields: frozenset[str] | None = None,
|
|
393
394
|
) -> dict[str, Any]:
|
|
394
395
|
"""Apply optional field projection to a response data dict.
|
|
395
396
|
|
|
@@ -401,6 +402,10 @@ def project_fields(
|
|
|
401
402
|
contract / diagnostic keys (e.g. the orchestrator's pagination + partial-
|
|
402
403
|
state keys) without having to reimplement the projection logic.
|
|
403
404
|
|
|
405
|
+
``available_fields`` supplies the complete response schema when *data* was
|
|
406
|
+
collected narrowly. It affects typo diagnostics only; projection still
|
|
407
|
+
returns only keys present in *data*.
|
|
408
|
+
|
|
404
409
|
Typo guard: if any requested key does not exist in *data* (excluding the
|
|
405
410
|
always-retained keys), a diagnostic is appended to ``result["warnings"]``
|
|
406
411
|
listing the unknown keys and the available ones. This mirrors the
|
|
@@ -417,9 +422,10 @@ def project_fields(
|
|
|
417
422
|
result = {k: v for k, v in data.items() if k in keep}
|
|
418
423
|
# Typo guard — flag any requested keys that are absent from the response.
|
|
419
424
|
# Exclude the always-retained sentinels so fields=["success"] never warns.
|
|
420
|
-
|
|
425
|
+
known_fields = set(available_fields) if available_fields is not None else set(data)
|
|
426
|
+
unknown = sorted(set(parsed) - known_fields - always_keep)
|
|
421
427
|
if unknown:
|
|
422
|
-
available = sorted(k for k in
|
|
428
|
+
available = sorted(k for k in known_fields if k not in always_keep)
|
|
423
429
|
result.setdefault("warnings", []).append(
|
|
424
430
|
f"fields {unknown!r} not found in response — available keys: {available!r}"
|
|
425
431
|
)
|
|
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.4.3.dev2572 → ha_mcp_dev-8.4.3.dev2576}/src/ha_mcp/_vendor/websockets/MANIFEST.sha256
RENAMED
|
File without changes
|
{ha_mcp_dev-8.4.3.dev2572 → ha_mcp_dev-8.4.3.dev2576}/src/ha_mcp/_vendor/websockets/VENDORED
RENAMED
|
File without changes
|
{ha_mcp_dev-8.4.3.dev2572 → ha_mcp_dev-8.4.3.dev2576}/src/ha_mcp/_vendor/websockets/__init__.py
RENAMED
|
File without changes
|
{ha_mcp_dev-8.4.3.dev2572 → ha_mcp_dev-8.4.3.dev2576}/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.4.3.dev2572 → ha_mcp_dev-8.4.3.dev2576}/src/ha_mcp/_vendor/websockets/client.py
RENAMED
|
File without changes
|
{ha_mcp_dev-8.4.3.dev2572 → ha_mcp_dev-8.4.3.dev2576}/src/ha_mcp/_vendor/websockets/connection.py
RENAMED
|
File without changes
|
|
File without changes
|
{ha_mcp_dev-8.4.3.dev2572 → ha_mcp_dev-8.4.3.dev2576}/src/ha_mcp/_vendor/websockets/exceptions.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{ha_mcp_dev-8.4.3.dev2572 → ha_mcp_dev-8.4.3.dev2576}/src/ha_mcp/_vendor/websockets/frames.py
RENAMED
|
File without changes
|
{ha_mcp_dev-8.4.3.dev2572 → ha_mcp_dev-8.4.3.dev2576}/src/ha_mcp/_vendor/websockets/headers.py
RENAMED
|
File without changes
|
{ha_mcp_dev-8.4.3.dev2572 → ha_mcp_dev-8.4.3.dev2576}/src/ha_mcp/_vendor/websockets/http11.py
RENAMED
|
File without changes
|
{ha_mcp_dev-8.4.3.dev2572 → ha_mcp_dev-8.4.3.dev2576}/src/ha_mcp/_vendor/websockets/imports.py
RENAMED
|
File without changes
|
|
File without changes
|
{ha_mcp_dev-8.4.3.dev2572 → ha_mcp_dev-8.4.3.dev2576}/src/ha_mcp/_vendor/websockets/legacy/auth.py
RENAMED
|
File without changes
|
{ha_mcp_dev-8.4.3.dev2572 → ha_mcp_dev-8.4.3.dev2576}/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.4.3.dev2572 → ha_mcp_dev-8.4.3.dev2576}/src/ha_mcp/_vendor/websockets/legacy/http.py
RENAMED
|
File without changes
|
|
File without changes
|
{ha_mcp_dev-8.4.3.dev2572 → ha_mcp_dev-8.4.3.dev2576}/src/ha_mcp/_vendor/websockets/legacy/server.py
RENAMED
|
File without changes
|
{ha_mcp_dev-8.4.3.dev2572 → ha_mcp_dev-8.4.3.dev2576}/src/ha_mcp/_vendor/websockets/protocol.py
RENAMED
|
File without changes
|
{ha_mcp_dev-8.4.3.dev2572 → ha_mcp_dev-8.4.3.dev2576}/src/ha_mcp/_vendor/websockets/proxy.py
RENAMED
|
File without changes
|
{ha_mcp_dev-8.4.3.dev2572 → ha_mcp_dev-8.4.3.dev2576}/src/ha_mcp/_vendor/websockets/py.typed
RENAMED
|
File without changes
|
{ha_mcp_dev-8.4.3.dev2572 → ha_mcp_dev-8.4.3.dev2576}/src/ha_mcp/_vendor/websockets/server.py
RENAMED
|
File without changes
|
{ha_mcp_dev-8.4.3.dev2572 → ha_mcp_dev-8.4.3.dev2576}/src/ha_mcp/_vendor/websockets/streams.py
RENAMED
|
File without changes
|
{ha_mcp_dev-8.4.3.dev2572 → ha_mcp_dev-8.4.3.dev2576}/src/ha_mcp/_vendor/websockets/sync/__init__.py
RENAMED
|
File without changes
|
{ha_mcp_dev-8.4.3.dev2572 → ha_mcp_dev-8.4.3.dev2576}/src/ha_mcp/_vendor/websockets/sync/client.py
RENAMED
|
File without changes
|
|
File without changes
|
{ha_mcp_dev-8.4.3.dev2572 → ha_mcp_dev-8.4.3.dev2576}/src/ha_mcp/_vendor/websockets/sync/messages.py
RENAMED
|
File without changes
|
{ha_mcp_dev-8.4.3.dev2572 → ha_mcp_dev-8.4.3.dev2576}/src/ha_mcp/_vendor/websockets/sync/router.py
RENAMED
|
File without changes
|
{ha_mcp_dev-8.4.3.dev2572 → ha_mcp_dev-8.4.3.dev2576}/src/ha_mcp/_vendor/websockets/sync/server.py
RENAMED
|
File without changes
|
{ha_mcp_dev-8.4.3.dev2572 → ha_mcp_dev-8.4.3.dev2576}/src/ha_mcp/_vendor/websockets/sync/utils.py
RENAMED
|
File without changes
|
{ha_mcp_dev-8.4.3.dev2572 → ha_mcp_dev-8.4.3.dev2576}/src/ha_mcp/_vendor/websockets/trio/__init__.py
RENAMED
|
File without changes
|
{ha_mcp_dev-8.4.3.dev2572 → ha_mcp_dev-8.4.3.dev2576}/src/ha_mcp/_vendor/websockets/trio/client.py
RENAMED
|
File without changes
|
|
File without changes
|
{ha_mcp_dev-8.4.3.dev2572 → ha_mcp_dev-8.4.3.dev2576}/src/ha_mcp/_vendor/websockets/trio/messages.py
RENAMED
|
File without changes
|
{ha_mcp_dev-8.4.3.dev2572 → ha_mcp_dev-8.4.3.dev2576}/src/ha_mcp/_vendor/websockets/trio/router.py
RENAMED
|
File without changes
|
{ha_mcp_dev-8.4.3.dev2572 → ha_mcp_dev-8.4.3.dev2576}/src/ha_mcp/_vendor/websockets/trio/server.py
RENAMED
|
File without changes
|
{ha_mcp_dev-8.4.3.dev2572 → ha_mcp_dev-8.4.3.dev2576}/src/ha_mcp/_vendor/websockets/trio/utils.py
RENAMED
|
File without changes
|
{ha_mcp_dev-8.4.3.dev2572 → ha_mcp_dev-8.4.3.dev2576}/src/ha_mcp/_vendor/websockets/typing.py
RENAMED
|
File without changes
|
|
File without changes
|
{ha_mcp_dev-8.4.3.dev2572 → ha_mcp_dev-8.4.3.dev2576}/src/ha_mcp/_vendor/websockets/utils.py
RENAMED
|
File without changes
|
{ha_mcp_dev-8.4.3.dev2572 → ha_mcp_dev-8.4.3.dev2576}/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
|
|
File without changes
|
{ha_mcp_dev-8.4.3.dev2572 → ha_mcp_dev-8.4.3.dev2576}/src/ha_mcp/client/supervisor_client.py
RENAMED
|
File without changes
|
|
File without changes
|
{ha_mcp_dev-8.4.3.dev2572 → ha_mcp_dev-8.4.3.dev2576}/src/ha_mcp/client/websocket_listener.py
RENAMED
|
File without changes
|
|
File without changes
|
{ha_mcp_dev-8.4.3.dev2572 → ha_mcp_dev-8.4.3.dev2576}/src/ha_mcp/dashboard_screenshot/__init__.py
RENAMED
|
File without changes
|
{ha_mcp_dev-8.4.3.dev2572 → ha_mcp_dev-8.4.3.dev2576}/src/ha_mcp/dashboard_screenshot/capture.py
RENAMED
|
File without changes
|
{ha_mcp_dev-8.4.3.dev2572 → ha_mcp_dev-8.4.3.dev2576}/src/ha_mcp/dashboard_screenshot/content.py
RENAMED
|
File without changes
|
{ha_mcp_dev-8.4.3.dev2572 → ha_mcp_dev-8.4.3.dev2576}/src/ha_mcp/dashboard_screenshot/paths.py
RENAMED
|
File without changes
|
{ha_mcp_dev-8.4.3.dev2572 → ha_mcp_dev-8.4.3.dev2576}/src/ha_mcp/dashboard_screenshot/provision.py
RENAMED
|
File without changes
|
{ha_mcp_dev-8.4.3.dev2572 → ha_mcp_dev-8.4.3.dev2576}/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
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{ha_mcp_dev-8.4.3.dev2572 → ha_mcp_dev-8.4.3.dev2576}/src/ha_mcp/resources/skills-vendor/AGENTS.md
RENAMED
|
File without changes
|
{ha_mcp_dev-8.4.3.dev2572 → ha_mcp_dev-8.4.3.dev2576}/src/ha_mcp/resources/skills-vendor/CLAUDE.md
RENAMED
|
File without changes
|
|
File without changes
|
{ha_mcp_dev-8.4.3.dev2572 → ha_mcp_dev-8.4.3.dev2576}/src/ha_mcp/resources/skills-vendor/LICENSE
RENAMED
|
File without changes
|
{ha_mcp_dev-8.4.3.dev2572 → ha_mcp_dev-8.4.3.dev2576}/src/ha_mcp/resources/skills-vendor/README.md
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|