ha-mcp-dev 8.3.0.dev2457__tar.gz → 8.3.0.dev2461__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.3.0.dev2457/src/ha_mcp_dev.egg-info → ha_mcp_dev-8.3.0.dev2461}/PKG-INFO +1 -1
- {ha_mcp_dev-8.3.0.dev2457 → ha_mcp_dev-8.3.0.dev2461}/pyproject.toml +1 -1
- {ha_mcp_dev-8.3.0.dev2457 → ha_mcp_dev-8.3.0.dev2461}/src/ha_mcp/settings_ui/settings.js +105 -84
- {ha_mcp_dev-8.3.0.dev2457 → ha_mcp_dev-8.3.0.dev2461/src/ha_mcp_dev.egg-info}/PKG-INFO +1 -1
- {ha_mcp_dev-8.3.0.dev2457 → ha_mcp_dev-8.3.0.dev2461}/LICENSE +0 -0
- {ha_mcp_dev-8.3.0.dev2457 → ha_mcp_dev-8.3.0.dev2461}/MANIFEST.in +0 -0
- {ha_mcp_dev-8.3.0.dev2457 → ha_mcp_dev-8.3.0.dev2461}/README.md +0 -0
- {ha_mcp_dev-8.3.0.dev2457 → ha_mcp_dev-8.3.0.dev2461}/setup.cfg +0 -0
- {ha_mcp_dev-8.3.0.dev2457 → ha_mcp_dev-8.3.0.dev2461}/src/ha_mcp/__init__.py +0 -0
- {ha_mcp_dev-8.3.0.dev2457 → ha_mcp_dev-8.3.0.dev2461}/src/ha_mcp/__main__.py +0 -0
- {ha_mcp_dev-8.3.0.dev2457 → ha_mcp_dev-8.3.0.dev2461}/src/ha_mcp/_pypi_marker +0 -0
- {ha_mcp_dev-8.3.0.dev2457 → ha_mcp_dev-8.3.0.dev2461}/src/ha_mcp/_rich_compat.py +0 -0
- {ha_mcp_dev-8.3.0.dev2457 → ha_mcp_dev-8.3.0.dev2461}/src/ha_mcp/_vendor/__init__.py +0 -0
- {ha_mcp_dev-8.3.0.dev2457 → ha_mcp_dev-8.3.0.dev2461}/src/ha_mcp/_vendor/requirements.txt +0 -0
- {ha_mcp_dev-8.3.0.dev2457 → ha_mcp_dev-8.3.0.dev2461}/src/ha_mcp/_vendor/websockets/LICENSE +0 -0
- {ha_mcp_dev-8.3.0.dev2457 → ha_mcp_dev-8.3.0.dev2461}/src/ha_mcp/_vendor/websockets/MANIFEST.sha256 +0 -0
- {ha_mcp_dev-8.3.0.dev2457 → ha_mcp_dev-8.3.0.dev2461}/src/ha_mcp/_vendor/websockets/VENDORED +0 -0
- {ha_mcp_dev-8.3.0.dev2457 → ha_mcp_dev-8.3.0.dev2461}/src/ha_mcp/_vendor/websockets/__init__.py +0 -0
- {ha_mcp_dev-8.3.0.dev2457 → ha_mcp_dev-8.3.0.dev2461}/src/ha_mcp/_vendor/websockets/__main__.py +0 -0
- {ha_mcp_dev-8.3.0.dev2457 → ha_mcp_dev-8.3.0.dev2461}/src/ha_mcp/_vendor/websockets/asyncio/__init__.py +0 -0
- {ha_mcp_dev-8.3.0.dev2457 → ha_mcp_dev-8.3.0.dev2461}/src/ha_mcp/_vendor/websockets/asyncio/client.py +0 -0
- {ha_mcp_dev-8.3.0.dev2457 → ha_mcp_dev-8.3.0.dev2461}/src/ha_mcp/_vendor/websockets/asyncio/connection.py +0 -0
- {ha_mcp_dev-8.3.0.dev2457 → ha_mcp_dev-8.3.0.dev2461}/src/ha_mcp/_vendor/websockets/asyncio/messages.py +0 -0
- {ha_mcp_dev-8.3.0.dev2457 → ha_mcp_dev-8.3.0.dev2461}/src/ha_mcp/_vendor/websockets/asyncio/router.py +0 -0
- {ha_mcp_dev-8.3.0.dev2457 → ha_mcp_dev-8.3.0.dev2461}/src/ha_mcp/_vendor/websockets/asyncio/server.py +0 -0
- {ha_mcp_dev-8.3.0.dev2457 → ha_mcp_dev-8.3.0.dev2461}/src/ha_mcp/_vendor/websockets/auth.py +0 -0
- {ha_mcp_dev-8.3.0.dev2457 → ha_mcp_dev-8.3.0.dev2461}/src/ha_mcp/_vendor/websockets/cli.py +0 -0
- {ha_mcp_dev-8.3.0.dev2457 → ha_mcp_dev-8.3.0.dev2461}/src/ha_mcp/_vendor/websockets/client.py +0 -0
- {ha_mcp_dev-8.3.0.dev2457 → ha_mcp_dev-8.3.0.dev2461}/src/ha_mcp/_vendor/websockets/connection.py +0 -0
- {ha_mcp_dev-8.3.0.dev2457 → ha_mcp_dev-8.3.0.dev2461}/src/ha_mcp/_vendor/websockets/datastructures.py +0 -0
- {ha_mcp_dev-8.3.0.dev2457 → ha_mcp_dev-8.3.0.dev2461}/src/ha_mcp/_vendor/websockets/exceptions.py +0 -0
- {ha_mcp_dev-8.3.0.dev2457 → ha_mcp_dev-8.3.0.dev2461}/src/ha_mcp/_vendor/websockets/extensions/__init__.py +0 -0
- {ha_mcp_dev-8.3.0.dev2457 → ha_mcp_dev-8.3.0.dev2461}/src/ha_mcp/_vendor/websockets/extensions/base.py +0 -0
- {ha_mcp_dev-8.3.0.dev2457 → ha_mcp_dev-8.3.0.dev2461}/src/ha_mcp/_vendor/websockets/extensions/permessage_deflate.py +0 -0
- {ha_mcp_dev-8.3.0.dev2457 → ha_mcp_dev-8.3.0.dev2461}/src/ha_mcp/_vendor/websockets/frames.py +0 -0
- {ha_mcp_dev-8.3.0.dev2457 → ha_mcp_dev-8.3.0.dev2461}/src/ha_mcp/_vendor/websockets/headers.py +0 -0
- {ha_mcp_dev-8.3.0.dev2457 → ha_mcp_dev-8.3.0.dev2461}/src/ha_mcp/_vendor/websockets/http11.py +0 -0
- {ha_mcp_dev-8.3.0.dev2457 → ha_mcp_dev-8.3.0.dev2461}/src/ha_mcp/_vendor/websockets/imports.py +0 -0
- {ha_mcp_dev-8.3.0.dev2457 → ha_mcp_dev-8.3.0.dev2461}/src/ha_mcp/_vendor/websockets/legacy/__init__.py +0 -0
- {ha_mcp_dev-8.3.0.dev2457 → ha_mcp_dev-8.3.0.dev2461}/src/ha_mcp/_vendor/websockets/legacy/auth.py +0 -0
- {ha_mcp_dev-8.3.0.dev2457 → ha_mcp_dev-8.3.0.dev2461}/src/ha_mcp/_vendor/websockets/legacy/client.py +0 -0
- {ha_mcp_dev-8.3.0.dev2457 → ha_mcp_dev-8.3.0.dev2461}/src/ha_mcp/_vendor/websockets/legacy/exceptions.py +0 -0
- {ha_mcp_dev-8.3.0.dev2457 → ha_mcp_dev-8.3.0.dev2461}/src/ha_mcp/_vendor/websockets/legacy/framing.py +0 -0
- {ha_mcp_dev-8.3.0.dev2457 → ha_mcp_dev-8.3.0.dev2461}/src/ha_mcp/_vendor/websockets/legacy/handshake.py +0 -0
- {ha_mcp_dev-8.3.0.dev2457 → ha_mcp_dev-8.3.0.dev2461}/src/ha_mcp/_vendor/websockets/legacy/http.py +0 -0
- {ha_mcp_dev-8.3.0.dev2457 → ha_mcp_dev-8.3.0.dev2461}/src/ha_mcp/_vendor/websockets/legacy/protocol.py +0 -0
- {ha_mcp_dev-8.3.0.dev2457 → ha_mcp_dev-8.3.0.dev2461}/src/ha_mcp/_vendor/websockets/legacy/server.py +0 -0
- {ha_mcp_dev-8.3.0.dev2457 → ha_mcp_dev-8.3.0.dev2461}/src/ha_mcp/_vendor/websockets/protocol.py +0 -0
- {ha_mcp_dev-8.3.0.dev2457 → ha_mcp_dev-8.3.0.dev2461}/src/ha_mcp/_vendor/websockets/proxy.py +0 -0
- {ha_mcp_dev-8.3.0.dev2457 → ha_mcp_dev-8.3.0.dev2461}/src/ha_mcp/_vendor/websockets/py.typed +0 -0
- {ha_mcp_dev-8.3.0.dev2457 → ha_mcp_dev-8.3.0.dev2461}/src/ha_mcp/_vendor/websockets/server.py +0 -0
- {ha_mcp_dev-8.3.0.dev2457 → ha_mcp_dev-8.3.0.dev2461}/src/ha_mcp/_vendor/websockets/streams.py +0 -0
- {ha_mcp_dev-8.3.0.dev2457 → ha_mcp_dev-8.3.0.dev2461}/src/ha_mcp/_vendor/websockets/sync/__init__.py +0 -0
- {ha_mcp_dev-8.3.0.dev2457 → ha_mcp_dev-8.3.0.dev2461}/src/ha_mcp/_vendor/websockets/sync/client.py +0 -0
- {ha_mcp_dev-8.3.0.dev2457 → ha_mcp_dev-8.3.0.dev2461}/src/ha_mcp/_vendor/websockets/sync/connection.py +0 -0
- {ha_mcp_dev-8.3.0.dev2457 → ha_mcp_dev-8.3.0.dev2461}/src/ha_mcp/_vendor/websockets/sync/messages.py +0 -0
- {ha_mcp_dev-8.3.0.dev2457 → ha_mcp_dev-8.3.0.dev2461}/src/ha_mcp/_vendor/websockets/sync/router.py +0 -0
- {ha_mcp_dev-8.3.0.dev2457 → ha_mcp_dev-8.3.0.dev2461}/src/ha_mcp/_vendor/websockets/sync/server.py +0 -0
- {ha_mcp_dev-8.3.0.dev2457 → ha_mcp_dev-8.3.0.dev2461}/src/ha_mcp/_vendor/websockets/sync/utils.py +0 -0
- {ha_mcp_dev-8.3.0.dev2457 → ha_mcp_dev-8.3.0.dev2461}/src/ha_mcp/_vendor/websockets/trio/__init__.py +0 -0
- {ha_mcp_dev-8.3.0.dev2457 → ha_mcp_dev-8.3.0.dev2461}/src/ha_mcp/_vendor/websockets/trio/client.py +0 -0
- {ha_mcp_dev-8.3.0.dev2457 → ha_mcp_dev-8.3.0.dev2461}/src/ha_mcp/_vendor/websockets/trio/connection.py +0 -0
- {ha_mcp_dev-8.3.0.dev2457 → ha_mcp_dev-8.3.0.dev2461}/src/ha_mcp/_vendor/websockets/trio/messages.py +0 -0
- {ha_mcp_dev-8.3.0.dev2457 → ha_mcp_dev-8.3.0.dev2461}/src/ha_mcp/_vendor/websockets/trio/router.py +0 -0
- {ha_mcp_dev-8.3.0.dev2457 → ha_mcp_dev-8.3.0.dev2461}/src/ha_mcp/_vendor/websockets/trio/server.py +0 -0
- {ha_mcp_dev-8.3.0.dev2457 → ha_mcp_dev-8.3.0.dev2461}/src/ha_mcp/_vendor/websockets/trio/utils.py +0 -0
- {ha_mcp_dev-8.3.0.dev2457 → ha_mcp_dev-8.3.0.dev2461}/src/ha_mcp/_vendor/websockets/typing.py +0 -0
- {ha_mcp_dev-8.3.0.dev2457 → ha_mcp_dev-8.3.0.dev2461}/src/ha_mcp/_vendor/websockets/uri.py +0 -0
- {ha_mcp_dev-8.3.0.dev2457 → ha_mcp_dev-8.3.0.dev2461}/src/ha_mcp/_vendor/websockets/utils.py +0 -0
- {ha_mcp_dev-8.3.0.dev2457 → ha_mcp_dev-8.3.0.dev2461}/src/ha_mcp/_vendor/websockets/version.py +0 -0
- {ha_mcp_dev-8.3.0.dev2457 → ha_mcp_dev-8.3.0.dev2461}/src/ha_mcp/_version.py +0 -0
- {ha_mcp_dev-8.3.0.dev2457 → ha_mcp_dev-8.3.0.dev2461}/src/ha_mcp/auth/__init__.py +0 -0
- {ha_mcp_dev-8.3.0.dev2457 → ha_mcp_dev-8.3.0.dev2461}/src/ha_mcp/auth/consent_form.py +0 -0
- {ha_mcp_dev-8.3.0.dev2457 → ha_mcp_dev-8.3.0.dev2461}/src/ha_mcp/auth/oidc_compat.py +0 -0
- {ha_mcp_dev-8.3.0.dev2457 → ha_mcp_dev-8.3.0.dev2461}/src/ha_mcp/auth/provider.py +0 -0
- {ha_mcp_dev-8.3.0.dev2457 → ha_mcp_dev-8.3.0.dev2461}/src/ha_mcp/backup_manager.py +0 -0
- {ha_mcp_dev-8.3.0.dev2457 → ha_mcp_dev-8.3.0.dev2461}/src/ha_mcp/browser_landing.py +0 -0
- {ha_mcp_dev-8.3.0.dev2457 → ha_mcp_dev-8.3.0.dev2461}/src/ha_mcp/client/__init__.py +0 -0
- {ha_mcp_dev-8.3.0.dev2457 → ha_mcp_dev-8.3.0.dev2461}/src/ha_mcp/client/rest_client.py +0 -0
- {ha_mcp_dev-8.3.0.dev2457 → ha_mcp_dev-8.3.0.dev2461}/src/ha_mcp/client/supervisor_client.py +0 -0
- {ha_mcp_dev-8.3.0.dev2457 → ha_mcp_dev-8.3.0.dev2461}/src/ha_mcp/client/websocket_client.py +0 -0
- {ha_mcp_dev-8.3.0.dev2457 → ha_mcp_dev-8.3.0.dev2461}/src/ha_mcp/client/websocket_listener.py +0 -0
- {ha_mcp_dev-8.3.0.dev2457 → ha_mcp_dev-8.3.0.dev2461}/src/ha_mcp/config.py +0 -0
- {ha_mcp_dev-8.3.0.dev2457 → ha_mcp_dev-8.3.0.dev2461}/src/ha_mcp/dashboard_screenshot/__init__.py +0 -0
- {ha_mcp_dev-8.3.0.dev2457 → ha_mcp_dev-8.3.0.dev2461}/src/ha_mcp/dashboard_screenshot/capture.py +0 -0
- {ha_mcp_dev-8.3.0.dev2457 → ha_mcp_dev-8.3.0.dev2461}/src/ha_mcp/dashboard_screenshot/content.py +0 -0
- {ha_mcp_dev-8.3.0.dev2457 → ha_mcp_dev-8.3.0.dev2461}/src/ha_mcp/dashboard_screenshot/paths.py +0 -0
- {ha_mcp_dev-8.3.0.dev2457 → ha_mcp_dev-8.3.0.dev2461}/src/ha_mcp/dashboard_screenshot/provision.py +0 -0
- {ha_mcp_dev-8.3.0.dev2457 → ha_mcp_dev-8.3.0.dev2461}/src/ha_mcp/dashboard_screenshot/theme_guard.py +0 -0
- {ha_mcp_dev-8.3.0.dev2457 → ha_mcp_dev-8.3.0.dev2461}/src/ha_mcp/errors.py +0 -0
- {ha_mcp_dev-8.3.0.dev2457 → ha_mcp_dev-8.3.0.dev2461}/src/ha_mcp/hacs_auto_refresh.py +0 -0
- {ha_mcp_dev-8.3.0.dev2457 → ha_mcp_dev-8.3.0.dev2461}/src/ha_mcp/llm_exposure.py +0 -0
- {ha_mcp_dev-8.3.0.dev2457 → ha_mcp_dev-8.3.0.dev2461}/src/ha_mcp/log_filters.py +0 -0
- {ha_mcp_dev-8.3.0.dev2457 → ha_mcp_dev-8.3.0.dev2461}/src/ha_mcp/policy/__init__.py +0 -0
- {ha_mcp_dev-8.3.0.dev2457 → ha_mcp_dev-8.3.0.dev2461}/src/ha_mcp/policy/approval_queue.py +0 -0
- {ha_mcp_dev-8.3.0.dev2457 → ha_mcp_dev-8.3.0.dev2461}/src/ha_mcp/policy/editing.py +0 -0
- {ha_mcp_dev-8.3.0.dev2457 → ha_mcp_dev-8.3.0.dev2461}/src/ha_mcp/policy/evaluator.py +0 -0
- {ha_mcp_dev-8.3.0.dev2457 → ha_mcp_dev-8.3.0.dev2461}/src/ha_mcp/policy/handlers.py +0 -0
- {ha_mcp_dev-8.3.0.dev2457 → ha_mcp_dev-8.3.0.dev2461}/src/ha_mcp/policy/middleware.py +0 -0
- {ha_mcp_dev-8.3.0.dev2457 → ha_mcp_dev-8.3.0.dev2461}/src/ha_mcp/policy/model.py +0 -0
- {ha_mcp_dev-8.3.0.dev2457 → ha_mcp_dev-8.3.0.dev2461}/src/ha_mcp/policy/persistence.py +0 -0
- {ha_mcp_dev-8.3.0.dev2457 → ha_mcp_dev-8.3.0.dev2461}/src/ha_mcp/policy/value_sources.py +0 -0
- {ha_mcp_dev-8.3.0.dev2457 → ha_mcp_dev-8.3.0.dev2461}/src/ha_mcp/py.typed +0 -0
- {ha_mcp_dev-8.3.0.dev2457 → ha_mcp_dev-8.3.0.dev2461}/src/ha_mcp/read_only.py +0 -0
- {ha_mcp_dev-8.3.0.dev2457 → ha_mcp_dev-8.3.0.dev2461}/src/ha_mcp/redaction.py +0 -0
- {ha_mcp_dev-8.3.0.dev2457 → ha_mcp_dev-8.3.0.dev2461}/src/ha_mcp/renamed_tools.py +0 -0
- {ha_mcp_dev-8.3.0.dev2457 → ha_mcp_dev-8.3.0.dev2461}/src/ha_mcp/resources/skills-vendor/.claude/settings.json +0 -0
- {ha_mcp_dev-8.3.0.dev2457 → ha_mcp_dev-8.3.0.dev2461}/src/ha_mcp/resources/skills-vendor/.claude-plugin/marketplace.json +0 -0
- {ha_mcp_dev-8.3.0.dev2457 → ha_mcp_dev-8.3.0.dev2461}/src/ha_mcp/resources/skills-vendor/.claude-plugin/plugin.json +0 -0
- {ha_mcp_dev-8.3.0.dev2457 → ha_mcp_dev-8.3.0.dev2461}/src/ha_mcp/resources/skills-vendor/.github/ISSUE_TEMPLATE/skill-rca.md +0 -0
- {ha_mcp_dev-8.3.0.dev2457 → ha_mcp_dev-8.3.0.dev2461}/src/ha_mcp/resources/skills-vendor/.github/pull_request_template.md +0 -0
- {ha_mcp_dev-8.3.0.dev2457 → ha_mcp_dev-8.3.0.dev2461}/src/ha_mcp/resources/skills-vendor/AGENTS.md +0 -0
- {ha_mcp_dev-8.3.0.dev2457 → ha_mcp_dev-8.3.0.dev2461}/src/ha_mcp/resources/skills-vendor/CLAUDE.md +0 -0
- {ha_mcp_dev-8.3.0.dev2457 → ha_mcp_dev-8.3.0.dev2461}/src/ha_mcp/resources/skills-vendor/CONTRIBUTING.md +0 -0
- {ha_mcp_dev-8.3.0.dev2457 → ha_mcp_dev-8.3.0.dev2461}/src/ha_mcp/resources/skills-vendor/LICENSE +0 -0
- {ha_mcp_dev-8.3.0.dev2457 → ha_mcp_dev-8.3.0.dev2461}/src/ha_mcp/resources/skills-vendor/README.md +0 -0
- {ha_mcp_dev-8.3.0.dev2457 → ha_mcp_dev-8.3.0.dev2461}/src/ha_mcp/resources/skills-vendor/evals/area-target-over-entity-list/case.yaml +0 -0
- {ha_mcp_dev-8.3.0.dev2457 → ha_mcp_dev-8.3.0.dev2461}/src/ha_mcp/resources/skills-vendor/evals/arrive-home-automation/case.yaml +0 -0
- {ha_mcp_dev-8.3.0.dev2457 → ha_mcp_dev-8.3.0.dev2461}/src/ha_mcp/resources/skills-vendor/evals/assist-shortcut-card/case.yaml +0 -0
- {ha_mcp_dev-8.3.0.dev2457 → ha_mcp_dev-8.3.0.dev2461}/src/ha_mcp/resources/skills-vendor/evals/avg-temperature/case.yaml +0 -0
- {ha_mcp_dev-8.3.0.dev2457 → ha_mcp_dev-8.3.0.dev2461}/src/ha_mcp/resources/skills-vendor/evals/backup-deletion-confirmation/case.yaml +0 -0
- {ha_mcp_dev-8.3.0.dev2457 → ha_mcp_dev-8.3.0.dev2461}/src/ha_mcp/resources/skills-vendor/evals/blueprint-authoring/case.yaml +0 -0
- {ha_mcp_dev-8.3.0.dev2457 → ha_mcp_dev-8.3.0.dev2461}/src/ha_mcp/resources/skills-vendor/evals/button-event-entity/case.yaml +0 -0
- {ha_mcp_dev-8.3.0.dev2457 → ha_mcp_dev-8.3.0.dev2461}/src/ha_mcp/resources/skills-vendor/evals/device-id-trigger-migration/case.yaml +0 -0
- {ha_mcp_dev-8.3.0.dev2457 → ha_mcp_dev-8.3.0.dev2461}/src/ha_mcp/resources/skills-vendor/evals/helper-flow-fields-not-platform-yaml/case.yaml +0 -0
- {ha_mcp_dev-8.3.0.dev2457 → ha_mcp_dev-8.3.0.dev2461}/src/ha_mcp/resources/skills-vendor/evals/media-player-song/case.yaml +0 -0
- {ha_mcp_dev-8.3.0.dev2457 → ha_mcp_dev-8.3.0.dev2461}/src/ha_mcp/resources/skills-vendor/evals/motion-light-automation-mode/case.yaml +0 -0
- {ha_mcp_dev-8.3.0.dev2457 → ha_mcp_dev-8.3.0.dev2461}/src/ha_mcp/resources/skills-vendor/evals/rename-entity-impact-analysis/case.yaml +0 -0
- {ha_mcp_dev-8.3.0.dev2457 → ha_mcp_dev-8.3.0.dev2461}/src/ha_mcp/resources/skills-vendor/evals/template-attributes-yaml-exception/case.yaml +0 -0
- {ha_mcp_dev-8.3.0.dev2457 → ha_mcp_dev-8.3.0.dev2461}/src/ha_mcp/resources/skills-vendor/evals/timer-finished-automation/case.yaml +0 -0
- {ha_mcp_dev-8.3.0.dev2457 → ha_mcp_dev-8.3.0.dev2461}/src/ha_mcp/resources/skills-vendor/evals/vacuum-last-clean/case.yaml +0 -0
- {ha_mcp_dev-8.3.0.dev2457 → ha_mcp_dev-8.3.0.dev2461}/src/ha_mcp/resources/skills-vendor/scripts/check_eval_cases.py +0 -0
- {ha_mcp_dev-8.3.0.dev2457 → ha_mcp_dev-8.3.0.dev2461}/src/ha_mcp/resources/skills-vendor/skills/home-assistant-best-practices/SKILL.md +0 -0
- {ha_mcp_dev-8.3.0.dev2457 → ha_mcp_dev-8.3.0.dev2461}/src/ha_mcp/resources/skills-vendor/skills/home-assistant-best-practices/references/appdaemon.md +0 -0
- {ha_mcp_dev-8.3.0.dev2457 → ha_mcp_dev-8.3.0.dev2461}/src/ha_mcp/resources/skills-vendor/skills/home-assistant-best-practices/references/automation-patterns.md +0 -0
- {ha_mcp_dev-8.3.0.dev2457 → ha_mcp_dev-8.3.0.dev2461}/src/ha_mcp/resources/skills-vendor/skills/home-assistant-best-practices/references/backups.md +0 -0
- {ha_mcp_dev-8.3.0.dev2457 → ha_mcp_dev-8.3.0.dev2461}/src/ha_mcp/resources/skills-vendor/skills/home-assistant-best-practices/references/blueprint-guide.md +0 -0
- {ha_mcp_dev-8.3.0.dev2457 → ha_mcp_dev-8.3.0.dev2461}/src/ha_mcp/resources/skills-vendor/skills/home-assistant-best-practices/references/dashboard-cards.md +0 -0
- {ha_mcp_dev-8.3.0.dev2457 → ha_mcp_dev-8.3.0.dev2461}/src/ha_mcp/resources/skills-vendor/skills/home-assistant-best-practices/references/dashboard-guide.md +0 -0
- {ha_mcp_dev-8.3.0.dev2457 → ha_mcp_dev-8.3.0.dev2461}/src/ha_mcp/resources/skills-vendor/skills/home-assistant-best-practices/references/device-control.md +0 -0
- {ha_mcp_dev-8.3.0.dev2457 → ha_mcp_dev-8.3.0.dev2461}/src/ha_mcp/resources/skills-vendor/skills/home-assistant-best-practices/references/domain-docs.md +0 -0
- {ha_mcp_dev-8.3.0.dev2457 → ha_mcp_dev-8.3.0.dev2461}/src/ha_mcp/resources/skills-vendor/skills/home-assistant-best-practices/references/examples.yaml +0 -0
- {ha_mcp_dev-8.3.0.dev2457 → ha_mcp_dev-8.3.0.dev2461}/src/ha_mcp/resources/skills-vendor/skills/home-assistant-best-practices/references/helper-selection.md +0 -0
- {ha_mcp_dev-8.3.0.dev2457 → ha_mcp_dev-8.3.0.dev2461}/src/ha_mcp/resources/skills-vendor/skills/home-assistant-best-practices/references/safe-refactoring.md +0 -0
- {ha_mcp_dev-8.3.0.dev2457 → ha_mcp_dev-8.3.0.dev2461}/src/ha_mcp/resources/skills-vendor/skills/home-assistant-best-practices/references/scenes.md +0 -0
- {ha_mcp_dev-8.3.0.dev2457 → ha_mcp_dev-8.3.0.dev2461}/src/ha_mcp/resources/skills-vendor/skills/home-assistant-best-practices/references/template-guidelines.md +0 -0
- {ha_mcp_dev-8.3.0.dev2457 → ha_mcp_dev-8.3.0.dev2461}/src/ha_mcp/resources/skills-vendor/skills/home-assistant-best-practices/references/yaml-only-integrations.md +0 -0
- {ha_mcp_dev-8.3.0.dev2457 → ha_mcp_dev-8.3.0.dev2461}/src/ha_mcp/server.py +0 -0
- {ha_mcp_dev-8.3.0.dev2457 → ha_mcp_dev-8.3.0.dev2461}/src/ha_mcp/settings_ui/__init__.py +0 -0
- {ha_mcp_dev-8.3.0.dev2457 → ha_mcp_dev-8.3.0.dev2461}/src/ha_mcp/settings_ui/_handlers_advanced.py +0 -0
- {ha_mcp_dev-8.3.0.dev2457 → ha_mcp_dev-8.3.0.dev2461}/src/ha_mcp/settings_ui/_handlers_backups.py +0 -0
- {ha_mcp_dev-8.3.0.dev2457 → ha_mcp_dev-8.3.0.dev2461}/src/ha_mcp/settings_ui/_handlers_fs.py +0 -0
- {ha_mcp_dev-8.3.0.dev2457 → ha_mcp_dev-8.3.0.dev2461}/src/ha_mcp/settings_ui/_handlers_server.py +0 -0
- {ha_mcp_dev-8.3.0.dev2457 → ha_mcp_dev-8.3.0.dev2461}/src/ha_mcp/settings_ui/_handlers_theme.py +0 -0
- {ha_mcp_dev-8.3.0.dev2457 → ha_mcp_dev-8.3.0.dev2461}/src/ha_mcp/settings_ui/_handlers_tools.py +0 -0
- {ha_mcp_dev-8.3.0.dev2457 → ha_mcp_dev-8.3.0.dev2461}/src/ha_mcp/settings_ui/_i18n.py +0 -0
- {ha_mcp_dev-8.3.0.dev2457 → ha_mcp_dev-8.3.0.dev2461}/src/ha_mcp/settings_ui/_locale_policy.py +0 -0
- {ha_mcp_dev-8.3.0.dev2457 → ha_mcp_dev-8.3.0.dev2461}/src/ha_mcp/settings_ui/_persistence.py +0 -0
- {ha_mcp_dev-8.3.0.dev2457 → ha_mcp_dev-8.3.0.dev2461}/src/ha_mcp/settings_ui/_supervisor.py +0 -0
- {ha_mcp_dev-8.3.0.dev2457 → ha_mcp_dev-8.3.0.dev2461}/src/ha_mcp/settings_ui/_theme.py +0 -0
- {ha_mcp_dev-8.3.0.dev2457 → ha_mcp_dev-8.3.0.dev2461}/src/ha_mcp/settings_ui/_tools_meta.py +0 -0
- {ha_mcp_dev-8.3.0.dev2457 → ha_mcp_dev-8.3.0.dev2461}/src/ha_mcp/settings_ui/locales/README.md +0 -0
- {ha_mcp_dev-8.3.0.dev2457 → ha_mcp_dev-8.3.0.dev2461}/src/ha_mcp/settings_ui/locales/cs.json +0 -0
- {ha_mcp_dev-8.3.0.dev2457 → ha_mcp_dev-8.3.0.dev2461}/src/ha_mcp/settings_ui/locales/de.json +0 -0
- {ha_mcp_dev-8.3.0.dev2457 → ha_mcp_dev-8.3.0.dev2461}/src/ha_mcp/settings_ui/locales/en.json +0 -0
- {ha_mcp_dev-8.3.0.dev2457 → ha_mcp_dev-8.3.0.dev2461}/src/ha_mcp/settings_ui/locales/eo.json +0 -0
- {ha_mcp_dev-8.3.0.dev2457 → ha_mcp_dev-8.3.0.dev2461}/src/ha_mcp/settings_ui/locales/es.json +0 -0
- {ha_mcp_dev-8.3.0.dev2457 → ha_mcp_dev-8.3.0.dev2461}/src/ha_mcp/settings_ui/locales/fr.json +0 -0
- {ha_mcp_dev-8.3.0.dev2457 → ha_mcp_dev-8.3.0.dev2461}/src/ha_mcp/settings_ui/locales/it.json +0 -0
- {ha_mcp_dev-8.3.0.dev2457 → ha_mcp_dev-8.3.0.dev2461}/src/ha_mcp/settings_ui/locales/ko.json +0 -0
- {ha_mcp_dev-8.3.0.dev2457 → ha_mcp_dev-8.3.0.dev2461}/src/ha_mcp/settings_ui/locales/nl.json +0 -0
- {ha_mcp_dev-8.3.0.dev2457 → ha_mcp_dev-8.3.0.dev2461}/src/ha_mcp/settings_ui/locales/pl.json +0 -0
- {ha_mcp_dev-8.3.0.dev2457 → ha_mcp_dev-8.3.0.dev2461}/src/ha_mcp/settings_ui/locales/ru.json +0 -0
- {ha_mcp_dev-8.3.0.dev2457 → ha_mcp_dev-8.3.0.dev2461}/src/ha_mcp/settings_ui/locales/sv.json +0 -0
- {ha_mcp_dev-8.3.0.dev2457 → ha_mcp_dev-8.3.0.dev2461}/src/ha_mcp/settings_ui/locales/tlh.json +0 -0
- {ha_mcp_dev-8.3.0.dev2457 → ha_mcp_dev-8.3.0.dev2461}/src/ha_mcp/settings_ui/locales/zh-Hans.json +0 -0
- {ha_mcp_dev-8.3.0.dev2457 → ha_mcp_dev-8.3.0.dev2461}/src/ha_mcp/settings_ui/settings.css +0 -0
- {ha_mcp_dev-8.3.0.dev2457 → ha_mcp_dev-8.3.0.dev2461}/src/ha_mcp/settings_ui/settings.html +0 -0
- {ha_mcp_dev-8.3.0.dev2457 → ha_mcp_dev-8.3.0.dev2461}/src/ha_mcp/smoke_test.py +0 -0
- {ha_mcp_dev-8.3.0.dev2457 → ha_mcp_dev-8.3.0.dev2461}/src/ha_mcp/stdio_settings_sidecar.py +0 -0
- {ha_mcp_dev-8.3.0.dev2457 → ha_mcp_dev-8.3.0.dev2461}/src/ha_mcp/strict_bps.py +0 -0
- {ha_mcp_dev-8.3.0.dev2457 → ha_mcp_dev-8.3.0.dev2461}/src/ha_mcp/tools/__init__.py +0 -0
- {ha_mcp_dev-8.3.0.dev2457 → ha_mcp_dev-8.3.0.dev2461}/src/ha_mcp/tools/auto_backup.py +0 -0
- {ha_mcp_dev-8.3.0.dev2457 → ha_mcp_dev-8.3.0.dev2461}/src/ha_mcp/tools/backup.py +0 -0
- {ha_mcp_dev-8.3.0.dev2457 → ha_mcp_dev-8.3.0.dev2461}/src/ha_mcp/tools/best_practice_checker.py +0 -0
- {ha_mcp_dev-8.3.0.dev2457 → ha_mcp_dev-8.3.0.dev2461}/src/ha_mcp/tools/best_practice_result.py +0 -0
- {ha_mcp_dev-8.3.0.dev2457 → ha_mcp_dev-8.3.0.dev2461}/src/ha_mcp/tools/best_practice_variables.py +0 -0
- {ha_mcp_dev-8.3.0.dev2457 → ha_mcp_dev-8.3.0.dev2461}/src/ha_mcp/tools/bulk_selector.py +0 -0
- {ha_mcp_dev-8.3.0.dev2457 → ha_mcp_dev-8.3.0.dev2461}/src/ha_mcp/tools/component_api.py +0 -0
- {ha_mcp_dev-8.3.0.dev2457 → ha_mcp_dev-8.3.0.dev2461}/src/ha_mcp/tools/component_config_entries.py +0 -0
- {ha_mcp_dev-8.3.0.dev2457 → ha_mcp_dev-8.3.0.dev2461}/src/ha_mcp/tools/component_config_reads.py +0 -0
- {ha_mcp_dev-8.3.0.dev2457 → ha_mcp_dev-8.3.0.dev2461}/src/ha_mcp/tools/component_devices.py +0 -0
- {ha_mcp_dev-8.3.0.dev2457 → ha_mcp_dev-8.3.0.dev2461}/src/ha_mcp/tools/component_registries.py +0 -0
- {ha_mcp_dev-8.3.0.dev2457 → ha_mcp_dev-8.3.0.dev2461}/src/ha_mcp/tools/component_registry_lookup.py +0 -0
- {ha_mcp_dev-8.3.0.dev2457 → ha_mcp_dev-8.3.0.dev2461}/src/ha_mcp/tools/config_entry_flow.py +0 -0
- {ha_mcp_dev-8.3.0.dev2457 → ha_mcp_dev-8.3.0.dev2461}/src/ha_mcp/tools/config_entry_flow_form.py +0 -0
- {ha_mcp_dev-8.3.0.dev2457 → ha_mcp_dev-8.3.0.dev2461}/src/ha_mcp/tools/config_entry_flow_menu.py +0 -0
- {ha_mcp_dev-8.3.0.dev2457 → ha_mcp_dev-8.3.0.dev2461}/src/ha_mcp/tools/config_entry_flow_walker.py +0 -0
- {ha_mcp_dev-8.3.0.dev2457 → ha_mcp_dev-8.3.0.dev2461}/src/ha_mcp/tools/config_entry_identity.py +0 -0
- {ha_mcp_dev-8.3.0.dev2457 → ha_mcp_dev-8.3.0.dev2461}/src/ha_mcp/tools/config_entry_reconfigure.py +0 -0
- {ha_mcp_dev-8.3.0.dev2457 → ha_mcp_dev-8.3.0.dev2461}/src/ha_mcp/tools/config_entry_reload_watch.py +0 -0
- {ha_mcp_dev-8.3.0.dev2457 → ha_mcp_dev-8.3.0.dev2461}/src/ha_mcp/tools/device_control.py +0 -0
- {ha_mcp_dev-8.3.0.dev2457 → ha_mcp_dev-8.3.0.dev2461}/src/ha_mcp/tools/error_log_parsing.py +0 -0
- {ha_mcp_dev-8.3.0.dev2457 → ha_mcp_dev-8.3.0.dev2461}/src/ha_mcp/tools/hacs_registration.py +0 -0
- {ha_mcp_dev-8.3.0.dev2457 → ha_mcp_dev-8.3.0.dev2461}/src/ha_mcp/tools/helpers.py +0 -0
- {ha_mcp_dev-8.3.0.dev2457 → ha_mcp_dev-8.3.0.dev2461}/src/ha_mcp/tools/integration_reconfigure.py +0 -0
- {ha_mcp_dev-8.3.0.dev2457 → ha_mcp_dev-8.3.0.dev2461}/src/ha_mcp/tools/log_common.py +0 -0
- {ha_mcp_dev-8.3.0.dev2457 → ha_mcp_dev-8.3.0.dev2461}/src/ha_mcp/tools/log_sources.py +0 -0
- {ha_mcp_dev-8.3.0.dev2457 → ha_mcp_dev-8.3.0.dev2461}/src/ha_mcp/tools/log_sources_supervisor.py +0 -0
- {ha_mcp_dev-8.3.0.dev2457 → ha_mcp_dev-8.3.0.dev2461}/src/ha_mcp/tools/radio/__init__.py +0 -0
- {ha_mcp_dev-8.3.0.dev2457 → ha_mcp_dev-8.3.0.dev2461}/src/ha_mcp/tools/radio/base.py +0 -0
- {ha_mcp_dev-8.3.0.dev2457 → ha_mcp_dev-8.3.0.dev2461}/src/ha_mcp/tools/radio/matter.py +0 -0
- {ha_mcp_dev-8.3.0.dev2457 → ha_mcp_dev-8.3.0.dev2461}/src/ha_mcp/tools/radio/thread.py +0 -0
- {ha_mcp_dev-8.3.0.dev2457 → ha_mcp_dev-8.3.0.dev2461}/src/ha_mcp/tools/radio/zigbee.py +0 -0
- {ha_mcp_dev-8.3.0.dev2457 → ha_mcp_dev-8.3.0.dev2461}/src/ha_mcp/tools/radio/zwave.py +0 -0
- {ha_mcp_dev-8.3.0.dev2457 → ha_mcp_dev-8.3.0.dev2461}/src/ha_mcp/tools/reference_validator.py +0 -0
- {ha_mcp_dev-8.3.0.dev2457 → ha_mcp_dev-8.3.0.dev2461}/src/ha_mcp/tools/registry.py +0 -0
- {ha_mcp_dev-8.3.0.dev2457 → ha_mcp_dev-8.3.0.dev2461}/src/ha_mcp/tools/renamed_tool_middleware.py +0 -0
- {ha_mcp_dev-8.3.0.dev2457 → ha_mcp_dev-8.3.0.dev2461}/src/ha_mcp/tools/smart_search/__init__.py +0 -0
- {ha_mcp_dev-8.3.0.dev2457 → ha_mcp_dev-8.3.0.dev2461}/src/ha_mcp/tools/smart_search/_base.py +0 -0
- {ha_mcp_dev-8.3.0.dev2457 → ha_mcp_dev-8.3.0.dev2461}/src/ha_mcp/tools/smart_search/_config.py +0 -0
- {ha_mcp_dev-8.3.0.dev2457 → ha_mcp_dev-8.3.0.dev2461}/src/ha_mcp/tools/smart_search/_deep.py +0 -0
- {ha_mcp_dev-8.3.0.dev2457 → ha_mcp_dev-8.3.0.dev2461}/src/ha_mcp/tools/smart_search/_entities.py +0 -0
- {ha_mcp_dev-8.3.0.dev2457 → ha_mcp_dev-8.3.0.dev2461}/src/ha_mcp/tools/smart_search/_fetch.py +0 -0
- {ha_mcp_dev-8.3.0.dev2457 → ha_mcp_dev-8.3.0.dev2461}/src/ha_mcp/tools/smart_search/_graph.py +0 -0
- {ha_mcp_dev-8.3.0.dev2457 → ha_mcp_dev-8.3.0.dev2461}/src/ha_mcp/tools/smart_search/_overview.py +0 -0
- {ha_mcp_dev-8.3.0.dev2457 → ha_mcp_dev-8.3.0.dev2461}/src/ha_mcp/tools/smart_search/_scenes.py +0 -0
- {ha_mcp_dev-8.3.0.dev2457 → ha_mcp_dev-8.3.0.dev2461}/src/ha_mcp/tools/smart_search/_scoring.py +0 -0
- {ha_mcp_dev-8.3.0.dev2457 → ha_mcp_dev-8.3.0.dev2461}/src/ha_mcp/tools/tool_search_hint_middleware.py +0 -0
- {ha_mcp_dev-8.3.0.dev2457 → ha_mcp_dev-8.3.0.dev2461}/src/ha_mcp/tools/tools_addons.py +0 -0
- {ha_mcp_dev-8.3.0.dev2457 → ha_mcp_dev-8.3.0.dev2461}/src/ha_mcp/tools/tools_areas.py +0 -0
- {ha_mcp_dev-8.3.0.dev2457 → ha_mcp_dev-8.3.0.dev2461}/src/ha_mcp/tools/tools_assist_pipeline.py +0 -0
- {ha_mcp_dev-8.3.0.dev2457 → ha_mcp_dev-8.3.0.dev2461}/src/ha_mcp/tools/tools_blueprints.py +0 -0
- {ha_mcp_dev-8.3.0.dev2457 → ha_mcp_dev-8.3.0.dev2461}/src/ha_mcp/tools/tools_bug_report.py +0 -0
- {ha_mcp_dev-8.3.0.dev2457 → ha_mcp_dev-8.3.0.dev2461}/src/ha_mcp/tools/tools_calendar.py +0 -0
- {ha_mcp_dev-8.3.0.dev2457 → ha_mcp_dev-8.3.0.dev2461}/src/ha_mcp/tools/tools_camera.py +0 -0
- {ha_mcp_dev-8.3.0.dev2457 → ha_mcp_dev-8.3.0.dev2461}/src/ha_mcp/tools/tools_categories.py +0 -0
- {ha_mcp_dev-8.3.0.dev2457 → ha_mcp_dev-8.3.0.dev2461}/src/ha_mcp/tools/tools_code.py +0 -0
- {ha_mcp_dev-8.3.0.dev2457 → ha_mcp_dev-8.3.0.dev2461}/src/ha_mcp/tools/tools_config_automations.py +0 -0
- {ha_mcp_dev-8.3.0.dev2457 → ha_mcp_dev-8.3.0.dev2461}/src/ha_mcp/tools/tools_config_dashboards.py +0 -0
- {ha_mcp_dev-8.3.0.dev2457 → ha_mcp_dev-8.3.0.dev2461}/src/ha_mcp/tools/tools_config_helpers.py +0 -0
- {ha_mcp_dev-8.3.0.dev2457 → ha_mcp_dev-8.3.0.dev2461}/src/ha_mcp/tools/tools_config_scenes.py +0 -0
- {ha_mcp_dev-8.3.0.dev2457 → ha_mcp_dev-8.3.0.dev2461}/src/ha_mcp/tools/tools_config_scripts.py +0 -0
- {ha_mcp_dev-8.3.0.dev2457 → ha_mcp_dev-8.3.0.dev2461}/src/ha_mcp/tools/tools_dashboard_screenshot.py +0 -0
- {ha_mcp_dev-8.3.0.dev2457 → ha_mcp_dev-8.3.0.dev2461}/src/ha_mcp/tools/tools_dev.py +0 -0
- {ha_mcp_dev-8.3.0.dev2457 → ha_mcp_dev-8.3.0.dev2461}/src/ha_mcp/tools/tools_energy.py +0 -0
- {ha_mcp_dev-8.3.0.dev2457 → ha_mcp_dev-8.3.0.dev2461}/src/ha_mcp/tools/tools_entities.py +0 -0
- {ha_mcp_dev-8.3.0.dev2457 → ha_mcp_dev-8.3.0.dev2461}/src/ha_mcp/tools/tools_filesystem.py +0 -0
- {ha_mcp_dev-8.3.0.dev2457 → ha_mcp_dev-8.3.0.dev2461}/src/ha_mcp/tools/tools_groups.py +0 -0
- {ha_mcp_dev-8.3.0.dev2457 → ha_mcp_dev-8.3.0.dev2461}/src/ha_mcp/tools/tools_hacs.py +0 -0
- {ha_mcp_dev-8.3.0.dev2457 → ha_mcp_dev-8.3.0.dev2461}/src/ha_mcp/tools/tools_history.py +0 -0
- {ha_mcp_dev-8.3.0.dev2457 → ha_mcp_dev-8.3.0.dev2461}/src/ha_mcp/tools/tools_integrations.py +0 -0
- {ha_mcp_dev-8.3.0.dev2457 → ha_mcp_dev-8.3.0.dev2461}/src/ha_mcp/tools/tools_labels.py +0 -0
- {ha_mcp_dev-8.3.0.dev2457 → ha_mcp_dev-8.3.0.dev2461}/src/ha_mcp/tools/tools_logs.py +0 -0
- {ha_mcp_dev-8.3.0.dev2457 → ha_mcp_dev-8.3.0.dev2461}/src/ha_mcp/tools/tools_radio.py +0 -0
- {ha_mcp_dev-8.3.0.dev2457 → ha_mcp_dev-8.3.0.dev2461}/src/ha_mcp/tools/tools_registry.py +0 -0
- {ha_mcp_dev-8.3.0.dev2457 → ha_mcp_dev-8.3.0.dev2461}/src/ha_mcp/tools/tools_resources.py +0 -0
- {ha_mcp_dev-8.3.0.dev2457 → ha_mcp_dev-8.3.0.dev2461}/src/ha_mcp/tools/tools_search.py +0 -0
- {ha_mcp_dev-8.3.0.dev2457 → ha_mcp_dev-8.3.0.dev2461}/src/ha_mcp/tools/tools_security_policy.py +0 -0
- {ha_mcp_dev-8.3.0.dev2457 → ha_mcp_dev-8.3.0.dev2461}/src/ha_mcp/tools/tools_service.py +0 -0
- {ha_mcp_dev-8.3.0.dev2457 → ha_mcp_dev-8.3.0.dev2461}/src/ha_mcp/tools/tools_services.py +0 -0
- {ha_mcp_dev-8.3.0.dev2457 → ha_mcp_dev-8.3.0.dev2461}/src/ha_mcp/tools/tools_system.py +0 -0
- {ha_mcp_dev-8.3.0.dev2457 → ha_mcp_dev-8.3.0.dev2461}/src/ha_mcp/tools/tools_themes.py +0 -0
- {ha_mcp_dev-8.3.0.dev2457 → ha_mcp_dev-8.3.0.dev2461}/src/ha_mcp/tools/tools_todo.py +0 -0
- {ha_mcp_dev-8.3.0.dev2457 → ha_mcp_dev-8.3.0.dev2461}/src/ha_mcp/tools/tools_traces.py +0 -0
- {ha_mcp_dev-8.3.0.dev2457 → ha_mcp_dev-8.3.0.dev2461}/src/ha_mcp/tools/tools_updates.py +0 -0
- {ha_mcp_dev-8.3.0.dev2457 → ha_mcp_dev-8.3.0.dev2461}/src/ha_mcp/tools/tools_utility.py +0 -0
- {ha_mcp_dev-8.3.0.dev2457 → ha_mcp_dev-8.3.0.dev2461}/src/ha_mcp/tools/tools_voice_assistant.py +0 -0
- {ha_mcp_dev-8.3.0.dev2457 → ha_mcp_dev-8.3.0.dev2461}/src/ha_mcp/tools/tools_yaml_config.py +0 -0
- {ha_mcp_dev-8.3.0.dev2457 → ha_mcp_dev-8.3.0.dev2461}/src/ha_mcp/tools/tools_yaml_read.py +0 -0
- {ha_mcp_dev-8.3.0.dev2457 → ha_mcp_dev-8.3.0.dev2461}/src/ha_mcp/tools/tools_zones.py +0 -0
- {ha_mcp_dev-8.3.0.dev2457 → ha_mcp_dev-8.3.0.dev2461}/src/ha_mcp/tools/util_helpers.py +0 -0
- {ha_mcp_dev-8.3.0.dev2457 → ha_mcp_dev-8.3.0.dev2461}/src/ha_mcp/tools/validation_middleware.py +0 -0
- {ha_mcp_dev-8.3.0.dev2457 → ha_mcp_dev-8.3.0.dev2461}/src/ha_mcp/transforms/__init__.py +0 -0
- {ha_mcp_dev-8.3.0.dev2457 → ha_mcp_dev-8.3.0.dev2461}/src/ha_mcp/transforms/categorized_search.py +0 -0
- {ha_mcp_dev-8.3.0.dev2457 → ha_mcp_dev-8.3.0.dev2461}/src/ha_mcp/transforms/lite_docstrings.py +0 -0
- {ha_mcp_dev-8.3.0.dev2457 → ha_mcp_dev-8.3.0.dev2461}/src/ha_mcp/transport_security.py +0 -0
- {ha_mcp_dev-8.3.0.dev2457 → ha_mcp_dev-8.3.0.dev2461}/src/ha_mcp/update_check.py +0 -0
- {ha_mcp_dev-8.3.0.dev2457 → ha_mcp_dev-8.3.0.dev2461}/src/ha_mcp/utils/__init__.py +0 -0
- {ha_mcp_dev-8.3.0.dev2457 → ha_mcp_dev-8.3.0.dev2461}/src/ha_mcp/utils/config_hash.py +0 -0
- {ha_mcp_dev-8.3.0.dev2457 → ha_mcp_dev-8.3.0.dev2461}/src/ha_mcp/utils/config_write_lock.py +0 -0
- {ha_mcp_dev-8.3.0.dev2457 → ha_mcp_dev-8.3.0.dev2461}/src/ha_mcp/utils/data_paths.py +0 -0
- {ha_mcp_dev-8.3.0.dev2457 → ha_mcp_dev-8.3.0.dev2461}/src/ha_mcp/utils/domain_handlers.py +0 -0
- {ha_mcp_dev-8.3.0.dev2457 → ha_mcp_dev-8.3.0.dev2461}/src/ha_mcp/utils/entity_membership.py +0 -0
- {ha_mcp_dev-8.3.0.dev2457 → ha_mcp_dev-8.3.0.dev2461}/src/ha_mcp/utils/fuzzy_search.py +0 -0
- {ha_mcp_dev-8.3.0.dev2457 → ha_mcp_dev-8.3.0.dev2461}/src/ha_mcp/utils/kill_signal_diagnostics.py +0 -0
- {ha_mcp_dev-8.3.0.dev2457 → ha_mcp_dev-8.3.0.dev2461}/src/ha_mcp/utils/operation_manager.py +0 -0
- {ha_mcp_dev-8.3.0.dev2457 → ha_mcp_dev-8.3.0.dev2461}/src/ha_mcp/utils/python_sandbox.py +0 -0
- {ha_mcp_dev-8.3.0.dev2457 → ha_mcp_dev-8.3.0.dev2461}/src/ha_mcp/utils/skill_loader.py +0 -0
- {ha_mcp_dev-8.3.0.dev2457 → ha_mcp_dev-8.3.0.dev2461}/src/ha_mcp/utils/usage_logger.py +0 -0
- {ha_mcp_dev-8.3.0.dev2457 → ha_mcp_dev-8.3.0.dev2461}/src/ha_mcp/visibility/__init__.py +0 -0
- {ha_mcp_dev-8.3.0.dev2457 → ha_mcp_dev-8.3.0.dev2461}/src/ha_mcp/visibility/enforcement.py +0 -0
- {ha_mcp_dev-8.3.0.dev2457 → ha_mcp_dev-8.3.0.dev2461}/src/ha_mcp/visibility/model.py +0 -0
- {ha_mcp_dev-8.3.0.dev2457 → ha_mcp_dev-8.3.0.dev2461}/src/ha_mcp/visibility/persistence.py +0 -0
- {ha_mcp_dev-8.3.0.dev2457 → ha_mcp_dev-8.3.0.dev2461}/src/ha_mcp/visibility/resolver.py +0 -0
- {ha_mcp_dev-8.3.0.dev2457 → ha_mcp_dev-8.3.0.dev2461}/src/ha_mcp_dev.egg-info/SOURCES.txt +0 -0
- {ha_mcp_dev-8.3.0.dev2457 → ha_mcp_dev-8.3.0.dev2461}/src/ha_mcp_dev.egg-info/dependency_links.txt +0 -0
- {ha_mcp_dev-8.3.0.dev2457 → ha_mcp_dev-8.3.0.dev2461}/src/ha_mcp_dev.egg-info/entry_points.txt +0 -0
- {ha_mcp_dev-8.3.0.dev2457 → ha_mcp_dev-8.3.0.dev2461}/src/ha_mcp_dev.egg-info/requires.txt +0 -0
- {ha_mcp_dev-8.3.0.dev2457 → ha_mcp_dev-8.3.0.dev2461}/src/ha_mcp_dev.egg-info/top_level.txt +0 -0
- {ha_mcp_dev-8.3.0.dev2457 → ha_mcp_dev-8.3.0.dev2461}/tests/__init__.py +0 -0
- {ha_mcp_dev-8.3.0.dev2457 → ha_mcp_dev-8.3.0.dev2461}/tests/test_constants.py +0 -0
- {ha_mcp_dev-8.3.0.dev2457 → ha_mcp_dev-8.3.0.dev2461}/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.3.0.
|
|
7
|
+
version = "8.3.0.dev2461"
|
|
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
|
|
@@ -489,7 +489,11 @@ async function loadTools() {
|
|
|
489
489
|
updateStatus(t('status.loaded', {}, 'Loaded'));
|
|
490
490
|
}
|
|
491
491
|
|
|
492
|
-
|
|
492
|
+
// Restart-chrome half of applyInfoChrome: which restart control is shown
|
|
493
|
+
// and what the restart notice tells the user to do. Split out (with the
|
|
494
|
+
// footer below) so applyInfoChrome stays orchestration — the branch ladder
|
|
495
|
+
// here alone sits near the complexity limit.
|
|
496
|
+
function _applyRestartChrome(info) {
|
|
493
497
|
// Show restart button if running as add-on; show Stop Sidecar
|
|
494
498
|
// button only when this page is served by the stdio sidecar
|
|
495
499
|
// (HTTP modes serve the same HTML but is_sidecar=false there, so
|
|
@@ -499,84 +503,91 @@ async function applyInfoChrome() {
|
|
|
499
503
|
// reopen Claude Desktop" vs "click Restart Add-on" vs "restart
|
|
500
504
|
// your Docker container") instead of a generic "restart the add-on"
|
|
501
505
|
// that only matches one of three real deployment surfaces.
|
|
502
|
-
|
|
503
|
-
|
|
504
|
-
|
|
505
|
-
|
|
506
|
-
if (info.is_addon) {
|
|
507
|
-
document.getElementById('restartBtn').style.display = '';
|
|
508
|
-
if (noticeEl) {
|
|
509
|
-
noticeEl.textContent = t(
|
|
510
|
-
'notice.restart.addon',
|
|
511
|
-
{},
|
|
512
|
-
'⚠ Changes saved. Click "Restart App (add-on)" for them to take effect. Then refresh the MCP tool list in your AI client.'
|
|
513
|
-
);
|
|
514
|
-
}
|
|
515
|
-
} else if (info.deployment_mode === 'embedded') {
|
|
516
|
-
// In-process (custom component) server: the restart endpoint reloads
|
|
517
|
-
// the server config entry, which reinstalls-if-newer and swaps the
|
|
518
|
-
// worker onto the freshly installed code.
|
|
519
|
-
const rbtn = document.getElementById('restartBtn');
|
|
520
|
-
rbtn.style.display = '';
|
|
521
|
-
restartTargetEmbedded = true;
|
|
522
|
-
rbtn.textContent = t('actions.restart_server', {}, 'Restart HA-MCP Server');
|
|
523
|
-
if (noticeEl) {
|
|
524
|
-
noticeEl.textContent = t(
|
|
525
|
-
'notice.restart.embedded',
|
|
526
|
-
{},
|
|
527
|
-
'⚠ Changes saved. Click "Restart HA-MCP Server" for them to take effect. Then refresh the MCP tool list in your AI client.'
|
|
528
|
-
);
|
|
529
|
-
}
|
|
530
|
-
} else if (info.is_sidecar) {
|
|
531
|
-
if (noticeEl) {
|
|
532
|
-
noticeEl.textContent = t(
|
|
533
|
-
'notice.restart.sidecar',
|
|
534
|
-
{},
|
|
535
|
-
'⚠ Changes saved. Fully quit and reopen your MCP client for them to take effect.'
|
|
536
|
-
);
|
|
537
|
-
}
|
|
538
|
-
document.getElementById('sidecarStopRow').style.display = '';
|
|
539
|
-
} else if (noticeEl) {
|
|
540
|
-
// HTTP / Docker / standalone — no button we can wire to a restart,
|
|
541
|
-
// so describe the action in process terms, then the client-refresh
|
|
542
|
-
// step (remote connectors cache the tool list, same as add-on mode).
|
|
506
|
+
const noticeEl = document.getElementById('restartNoticeText');
|
|
507
|
+
if (info.is_addon) {
|
|
508
|
+
document.getElementById('restartBtn').style.display = '';
|
|
509
|
+
if (noticeEl) {
|
|
543
510
|
noticeEl.textContent = t(
|
|
544
|
-
'notice.restart.
|
|
511
|
+
'notice.restart.addon',
|
|
545
512
|
{},
|
|
546
|
-
'⚠ Changes saved. Restart
|
|
513
|
+
'⚠ Changes saved. Click "Restart App (add-on)" for them to take effect. Then refresh the MCP tool list in your AI client.'
|
|
547
514
|
);
|
|
548
515
|
}
|
|
549
|
-
|
|
550
|
-
//
|
|
551
|
-
//
|
|
552
|
-
//
|
|
553
|
-
|
|
554
|
-
|
|
555
|
-
|
|
556
|
-
|
|
557
|
-
|
|
558
|
-
|
|
559
|
-
|
|
560
|
-
|
|
561
|
-
|
|
562
|
-
|
|
563
|
-
|
|
564
|
-
|
|
565
|
-
|
|
566
|
-
|
|
567
|
-
|
|
568
|
-
|
|
569
|
-
|
|
570
|
-
)
|
|
571
|
-
const installation = deploymentLabel
|
|
572
|
-
? ' · ' + t(
|
|
573
|
-
'footer.installation',
|
|
574
|
-
{method: deploymentLabel},
|
|
575
|
-
'installation: {method}'
|
|
576
|
-
)
|
|
577
|
-
: '';
|
|
578
|
-
if (fEl) fEl.textContent = 'ha-mcp ' + info.version + installation;
|
|
516
|
+
} else if (info.deployment_mode === 'embedded') {
|
|
517
|
+
// In-process (custom component) server: the restart endpoint reloads
|
|
518
|
+
// the server config entry, which reinstalls-if-newer and swaps the
|
|
519
|
+
// worker onto the freshly installed code.
|
|
520
|
+
const rbtn = document.getElementById('restartBtn');
|
|
521
|
+
rbtn.style.display = '';
|
|
522
|
+
restartTargetEmbedded = true;
|
|
523
|
+
rbtn.textContent = t('actions.restart_server', {}, 'Restart HA-MCP Server');
|
|
524
|
+
if (noticeEl) {
|
|
525
|
+
noticeEl.textContent = t(
|
|
526
|
+
'notice.restart.embedded',
|
|
527
|
+
{},
|
|
528
|
+
'⚠ Changes saved. Click "Restart HA-MCP Server" for them to take effect. Then refresh the MCP tool list in your AI client.'
|
|
529
|
+
);
|
|
530
|
+
}
|
|
531
|
+
} else if (info.is_sidecar) {
|
|
532
|
+
if (noticeEl) {
|
|
533
|
+
noticeEl.textContent = t(
|
|
534
|
+
'notice.restart.sidecar',
|
|
535
|
+
{},
|
|
536
|
+
'⚠ Changes saved. Fully quit and reopen your MCP client for them to take effect.'
|
|
537
|
+
);
|
|
579
538
|
}
|
|
539
|
+
document.getElementById('sidecarStopRow').style.display = '';
|
|
540
|
+
} else if (noticeEl) {
|
|
541
|
+
// HTTP / Docker / standalone — no button we can wire to a restart,
|
|
542
|
+
// so describe the action in process terms, then the client-refresh
|
|
543
|
+
// step (remote connectors cache the tool list, same as add-on mode).
|
|
544
|
+
noticeEl.textContent = t(
|
|
545
|
+
'notice.restart.standalone',
|
|
546
|
+
{},
|
|
547
|
+
'⚠ Changes saved. Restart the ha-mcp process, then refresh the MCP tool list in your AI client.'
|
|
548
|
+
);
|
|
549
|
+
}
|
|
550
|
+
}
|
|
551
|
+
|
|
552
|
+
// Footer — show the running build and the same deployment classification
|
|
553
|
+
// used by ha_report_issue. The backend keeps embedded and sidecar distinct
|
|
554
|
+
// because they need different restart behavior; preserve those concise
|
|
555
|
+
// names here and clarify the less obvious packaging-oriented values.
|
|
556
|
+
function _applyVersionFooter(info) {
|
|
557
|
+
if (!info.version) return;
|
|
558
|
+
const fEl = document.getElementById('versionFooterText');
|
|
559
|
+
const deploymentMode = typeof info.deployment_mode === 'string'
|
|
560
|
+
? info.deployment_mode
|
|
561
|
+
: '';
|
|
562
|
+
const deploymentLabels = {
|
|
563
|
+
embedded: 'embedded',
|
|
564
|
+
sidecar: 'sidecar',
|
|
565
|
+
addon: t('footer.deployment.addon', {}, 'app/add-on'),
|
|
566
|
+
docker: t('footer.deployment.docker', {}, 'container/docker'),
|
|
567
|
+
pyinstaller: t('footer.deployment.pyinstaller', {}, 'standalone binary'),
|
|
568
|
+
git: t('footer.deployment.git', {}, 'source checkout'),
|
|
569
|
+
pypi: t('footer.deployment.pypi', {}, 'python package'),
|
|
570
|
+
unknown: t('footer.deployment.unknown', {}, 'unknown'),
|
|
571
|
+
};
|
|
572
|
+
const deploymentLabel = Object.prototype.hasOwnProperty.call(
|
|
573
|
+
deploymentLabels, deploymentMode
|
|
574
|
+
) ? deploymentLabels[deploymentMode] : deploymentMode;
|
|
575
|
+
const installation = deploymentLabel
|
|
576
|
+
? ' · ' + t(
|
|
577
|
+
'footer.installation',
|
|
578
|
+
{method: deploymentLabel},
|
|
579
|
+
'installation: {method}'
|
|
580
|
+
)
|
|
581
|
+
: '';
|
|
582
|
+
if (fEl) fEl.textContent = 'ha-mcp ' + info.version + installation;
|
|
583
|
+
}
|
|
584
|
+
|
|
585
|
+
async function applyInfoChrome() {
|
|
586
|
+
try {
|
|
587
|
+
const infoResp = await fetch('./api/settings/info');
|
|
588
|
+
const info = await infoResp.json();
|
|
589
|
+
_applyRestartChrome(info);
|
|
590
|
+
_applyVersionFooter(info);
|
|
580
591
|
} catch (e) {
|
|
581
592
|
// A transient /api/settings/info failure must not leave the restart
|
|
582
593
|
// button hidden / the restart notice unset silently — log it so the
|
|
@@ -3627,14 +3638,28 @@ async function policyDecide(token, action) {
|
|
|
3627
3638
|
// have landed with only its response lost — so re-read first and revert only
|
|
3628
3639
|
// when the readback actually shows the old value.
|
|
3629
3640
|
//
|
|
3630
|
-
// `spec` is {readState,
|
|
3631
|
-
// {value, known} for this toggle's slice of policyState/readOnlyState
|
|
3632
|
-
//
|
|
3641
|
+
// `spec` is {readState, revertKey, revertText}: readState() returns
|
|
3642
|
+
// {value, known} for this toggle's slice of policyState/readOnlyState.
|
|
3643
|
+
//
|
|
3644
|
+
// Repaints are NOT per-toggle. The re-read below is loadPolicyState(),
|
|
3645
|
+
// which refreshes — or, through _clearFlagSwitchState(), clears — the
|
|
3646
|
+
// state slices of ALL THREE switches. Repainting only the toggle being
|
|
3647
|
+
// saved left the other two painted from state that no longer existed:
|
|
3648
|
+
// a failed re-read after a Read Only Mode save cleared both policy
|
|
3649
|
+
// slices while their switches stayed editable at the stale value with
|
|
3650
|
+
// #policyUnknownNotice hidden, and vice versa for #roUnknownNotice.
|
|
3651
|
+
function _repaintFlagSwitches() {
|
|
3652
|
+
paintPolicyGlobalToggles();
|
|
3653
|
+
syncReadOnlyToggle();
|
|
3654
|
+
render();
|
|
3655
|
+
}
|
|
3656
|
+
|
|
3633
3657
|
async function handleFailedFlagSave(checkbox, previous, saved, spec) {
|
|
3634
3658
|
if (saved === false) {
|
|
3659
|
+
// No re-read happened, so the other switches' state is untouched and
|
|
3660
|
+
// repainting them is a no-op — one shape for both branches.
|
|
3635
3661
|
checkbox.checked = previous;
|
|
3636
|
-
|
|
3637
|
-
render();
|
|
3662
|
+
_repaintFlagSwitches();
|
|
3638
3663
|
updateStatus(t(spec.revertKey, {}, spec.revertText), false, true);
|
|
3639
3664
|
return;
|
|
3640
3665
|
}
|
|
@@ -3661,8 +3686,7 @@ async function handleFailedFlagSave(checkbox, previous, saved, spec) {
|
|
|
3661
3686
|
'reload to see what the server has.');
|
|
3662
3687
|
}
|
|
3663
3688
|
// Paint before the status line so the repaint can't clobber it.
|
|
3664
|
-
|
|
3665
|
-
render();
|
|
3689
|
+
_repaintFlagSwitches();
|
|
3666
3690
|
updateStatus(msg, ok, !ok);
|
|
3667
3691
|
}
|
|
3668
3692
|
|
|
@@ -3677,7 +3701,6 @@ document.getElementById('policy-master-toggle').addEventListener('change', async
|
|
|
3677
3701
|
if (!saved) {
|
|
3678
3702
|
await handleFailedFlagSave(e.target, previous, saved, {
|
|
3679
3703
|
readState: () => ({value: policyState.enabled, known: policyState.enabledKnown}),
|
|
3680
|
-
repaint: paintPolicyGlobalToggles,
|
|
3681
3704
|
revertKey: 'policies.errors.master_save',
|
|
3682
3705
|
revertText:
|
|
3683
3706
|
'Tool Security Policies change did not save. The server still has the previous value',
|
|
@@ -3713,7 +3736,6 @@ document.getElementById('policy-manage-tool-toggle').addEventListener('change',
|
|
|
3713
3736
|
if (!saved) {
|
|
3714
3737
|
await handleFailedFlagSave(e.target, previous, saved, {
|
|
3715
3738
|
readState: () => ({value: policyState.manageToolEnabled, known: policyState.manageToolKnown}),
|
|
3716
|
-
repaint: paintPolicyGlobalToggles,
|
|
3717
3739
|
revertKey: 'policies.errors.manage_tool_save',
|
|
3718
3740
|
revertText:
|
|
3719
3741
|
'Policy-editing tool change did not save. The server still has the previous value',
|
|
@@ -3744,7 +3766,6 @@ document.getElementById('read-only-mode-toggle').addEventListener('change', asyn
|
|
|
3744
3766
|
if (!saved) {
|
|
3745
3767
|
await handleFailedFlagSave(e.target, previous, saved, {
|
|
3746
3768
|
readState: () => ({value: readOnlyState.enabled, known: readOnlyState.enabledKnown}),
|
|
3747
|
-
repaint: syncReadOnlyToggle,
|
|
3748
3769
|
revertKey: 'tools.read_only.save_failed',
|
|
3749
3770
|
revertText:
|
|
3750
3771
|
'Read Only Mode change did not save. The server still has the previous value',
|
|
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.3.0.dev2457 → ha_mcp_dev-8.3.0.dev2461}/src/ha_mcp/_vendor/websockets/MANIFEST.sha256
RENAMED
|
File without changes
|
{ha_mcp_dev-8.3.0.dev2457 → ha_mcp_dev-8.3.0.dev2461}/src/ha_mcp/_vendor/websockets/VENDORED
RENAMED
|
File without changes
|
{ha_mcp_dev-8.3.0.dev2457 → ha_mcp_dev-8.3.0.dev2461}/src/ha_mcp/_vendor/websockets/__init__.py
RENAMED
|
File without changes
|
{ha_mcp_dev-8.3.0.dev2457 → ha_mcp_dev-8.3.0.dev2461}/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.3.0.dev2457 → ha_mcp_dev-8.3.0.dev2461}/src/ha_mcp/_vendor/websockets/client.py
RENAMED
|
File without changes
|
{ha_mcp_dev-8.3.0.dev2457 → ha_mcp_dev-8.3.0.dev2461}/src/ha_mcp/_vendor/websockets/connection.py
RENAMED
|
File without changes
|
|
File without changes
|
{ha_mcp_dev-8.3.0.dev2457 → ha_mcp_dev-8.3.0.dev2461}/src/ha_mcp/_vendor/websockets/exceptions.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{ha_mcp_dev-8.3.0.dev2457 → ha_mcp_dev-8.3.0.dev2461}/src/ha_mcp/_vendor/websockets/frames.py
RENAMED
|
File without changes
|
{ha_mcp_dev-8.3.0.dev2457 → ha_mcp_dev-8.3.0.dev2461}/src/ha_mcp/_vendor/websockets/headers.py
RENAMED
|
File without changes
|
{ha_mcp_dev-8.3.0.dev2457 → ha_mcp_dev-8.3.0.dev2461}/src/ha_mcp/_vendor/websockets/http11.py
RENAMED
|
File without changes
|
{ha_mcp_dev-8.3.0.dev2457 → ha_mcp_dev-8.3.0.dev2461}/src/ha_mcp/_vendor/websockets/imports.py
RENAMED
|
File without changes
|
|
File without changes
|
{ha_mcp_dev-8.3.0.dev2457 → ha_mcp_dev-8.3.0.dev2461}/src/ha_mcp/_vendor/websockets/legacy/auth.py
RENAMED
|
File without changes
|
{ha_mcp_dev-8.3.0.dev2457 → ha_mcp_dev-8.3.0.dev2461}/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.3.0.dev2457 → ha_mcp_dev-8.3.0.dev2461}/src/ha_mcp/_vendor/websockets/legacy/http.py
RENAMED
|
File without changes
|
|
File without changes
|
{ha_mcp_dev-8.3.0.dev2457 → ha_mcp_dev-8.3.0.dev2461}/src/ha_mcp/_vendor/websockets/legacy/server.py
RENAMED
|
File without changes
|
{ha_mcp_dev-8.3.0.dev2457 → ha_mcp_dev-8.3.0.dev2461}/src/ha_mcp/_vendor/websockets/protocol.py
RENAMED
|
File without changes
|
{ha_mcp_dev-8.3.0.dev2457 → ha_mcp_dev-8.3.0.dev2461}/src/ha_mcp/_vendor/websockets/proxy.py
RENAMED
|
File without changes
|
{ha_mcp_dev-8.3.0.dev2457 → ha_mcp_dev-8.3.0.dev2461}/src/ha_mcp/_vendor/websockets/py.typed
RENAMED
|
File without changes
|
{ha_mcp_dev-8.3.0.dev2457 → ha_mcp_dev-8.3.0.dev2461}/src/ha_mcp/_vendor/websockets/server.py
RENAMED
|
File without changes
|
{ha_mcp_dev-8.3.0.dev2457 → ha_mcp_dev-8.3.0.dev2461}/src/ha_mcp/_vendor/websockets/streams.py
RENAMED
|
File without changes
|
{ha_mcp_dev-8.3.0.dev2457 → ha_mcp_dev-8.3.0.dev2461}/src/ha_mcp/_vendor/websockets/sync/__init__.py
RENAMED
|
File without changes
|
{ha_mcp_dev-8.3.0.dev2457 → ha_mcp_dev-8.3.0.dev2461}/src/ha_mcp/_vendor/websockets/sync/client.py
RENAMED
|
File without changes
|
|
File without changes
|
{ha_mcp_dev-8.3.0.dev2457 → ha_mcp_dev-8.3.0.dev2461}/src/ha_mcp/_vendor/websockets/sync/messages.py
RENAMED
|
File without changes
|
{ha_mcp_dev-8.3.0.dev2457 → ha_mcp_dev-8.3.0.dev2461}/src/ha_mcp/_vendor/websockets/sync/router.py
RENAMED
|
File without changes
|
{ha_mcp_dev-8.3.0.dev2457 → ha_mcp_dev-8.3.0.dev2461}/src/ha_mcp/_vendor/websockets/sync/server.py
RENAMED
|
File without changes
|
{ha_mcp_dev-8.3.0.dev2457 → ha_mcp_dev-8.3.0.dev2461}/src/ha_mcp/_vendor/websockets/sync/utils.py
RENAMED
|
File without changes
|
{ha_mcp_dev-8.3.0.dev2457 → ha_mcp_dev-8.3.0.dev2461}/src/ha_mcp/_vendor/websockets/trio/__init__.py
RENAMED
|
File without changes
|
{ha_mcp_dev-8.3.0.dev2457 → ha_mcp_dev-8.3.0.dev2461}/src/ha_mcp/_vendor/websockets/trio/client.py
RENAMED
|
File without changes
|
|
File without changes
|
{ha_mcp_dev-8.3.0.dev2457 → ha_mcp_dev-8.3.0.dev2461}/src/ha_mcp/_vendor/websockets/trio/messages.py
RENAMED
|
File without changes
|
{ha_mcp_dev-8.3.0.dev2457 → ha_mcp_dev-8.3.0.dev2461}/src/ha_mcp/_vendor/websockets/trio/router.py
RENAMED
|
File without changes
|
{ha_mcp_dev-8.3.0.dev2457 → ha_mcp_dev-8.3.0.dev2461}/src/ha_mcp/_vendor/websockets/trio/server.py
RENAMED
|
File without changes
|
{ha_mcp_dev-8.3.0.dev2457 → ha_mcp_dev-8.3.0.dev2461}/src/ha_mcp/_vendor/websockets/trio/utils.py
RENAMED
|
File without changes
|
{ha_mcp_dev-8.3.0.dev2457 → ha_mcp_dev-8.3.0.dev2461}/src/ha_mcp/_vendor/websockets/typing.py
RENAMED
|
File without changes
|
|
File without changes
|
{ha_mcp_dev-8.3.0.dev2457 → ha_mcp_dev-8.3.0.dev2461}/src/ha_mcp/_vendor/websockets/utils.py
RENAMED
|
File without changes
|
{ha_mcp_dev-8.3.0.dev2457 → ha_mcp_dev-8.3.0.dev2461}/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.3.0.dev2457 → ha_mcp_dev-8.3.0.dev2461}/src/ha_mcp/client/supervisor_client.py
RENAMED
|
File without changes
|
|
File without changes
|
{ha_mcp_dev-8.3.0.dev2457 → ha_mcp_dev-8.3.0.dev2461}/src/ha_mcp/client/websocket_listener.py
RENAMED
|
File without changes
|
|
File without changes
|
{ha_mcp_dev-8.3.0.dev2457 → ha_mcp_dev-8.3.0.dev2461}/src/ha_mcp/dashboard_screenshot/__init__.py
RENAMED
|
File without changes
|
{ha_mcp_dev-8.3.0.dev2457 → ha_mcp_dev-8.3.0.dev2461}/src/ha_mcp/dashboard_screenshot/capture.py
RENAMED
|
File without changes
|
{ha_mcp_dev-8.3.0.dev2457 → ha_mcp_dev-8.3.0.dev2461}/src/ha_mcp/dashboard_screenshot/content.py
RENAMED
|
File without changes
|
{ha_mcp_dev-8.3.0.dev2457 → ha_mcp_dev-8.3.0.dev2461}/src/ha_mcp/dashboard_screenshot/paths.py
RENAMED
|
File without changes
|
{ha_mcp_dev-8.3.0.dev2457 → ha_mcp_dev-8.3.0.dev2461}/src/ha_mcp/dashboard_screenshot/provision.py
RENAMED
|
File without changes
|
{ha_mcp_dev-8.3.0.dev2457 → ha_mcp_dev-8.3.0.dev2461}/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
|
{ha_mcp_dev-8.3.0.dev2457 → ha_mcp_dev-8.3.0.dev2461}/src/ha_mcp/resources/skills-vendor/AGENTS.md
RENAMED
|
File without changes
|
{ha_mcp_dev-8.3.0.dev2457 → ha_mcp_dev-8.3.0.dev2461}/src/ha_mcp/resources/skills-vendor/CLAUDE.md
RENAMED
|
File without changes
|
|
File without changes
|
{ha_mcp_dev-8.3.0.dev2457 → ha_mcp_dev-8.3.0.dev2461}/src/ha_mcp/resources/skills-vendor/LICENSE
RENAMED
|
File without changes
|
{ha_mcp_dev-8.3.0.dev2457 → ha_mcp_dev-8.3.0.dev2461}/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
|