ha-mcp-dev 8.2.0.dev2362__tar.gz → 8.2.0.dev2364__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.2.0.dev2362/src/ha_mcp_dev.egg-info → ha_mcp_dev-8.2.0.dev2364}/PKG-INFO +2 -2
- {ha_mcp_dev-8.2.0.dev2362 → ha_mcp_dev-8.2.0.dev2364}/README.md +1 -1
- {ha_mcp_dev-8.2.0.dev2362 → ha_mcp_dev-8.2.0.dev2364}/pyproject.toml +1 -1
- {ha_mcp_dev-8.2.0.dev2362 → ha_mcp_dev-8.2.0.dev2364}/src/ha_mcp/resources/skills-vendor/.claude-plugin/marketplace.json +1 -1
- {ha_mcp_dev-8.2.0.dev2362 → ha_mcp_dev-8.2.0.dev2364}/src/ha_mcp/resources/skills-vendor/.claude-plugin/plugin.json +1 -1
- ha_mcp_dev-8.2.0.dev2364/src/ha_mcp/resources/skills-vendor/AGENTS.md +57 -0
- ha_mcp_dev-8.2.0.dev2364/src/ha_mcp/resources/skills-vendor/CLAUDE.md +57 -0
- {ha_mcp_dev-8.2.0.dev2362 → ha_mcp_dev-8.2.0.dev2364}/src/ha_mcp/resources/skills-vendor/skills/home-assistant-best-practices/SKILL.md +1 -1
- {ha_mcp_dev-8.2.0.dev2362 → ha_mcp_dev-8.2.0.dev2364}/src/ha_mcp/resources/skills-vendor/skills/home-assistant-best-practices/references/automation-patterns.md +0 -30
- {ha_mcp_dev-8.2.0.dev2362 → ha_mcp_dev-8.2.0.dev2364/src/ha_mcp_dev.egg-info}/PKG-INFO +2 -2
- ha_mcp_dev-8.2.0.dev2362/src/ha_mcp/resources/skills-vendor/AGENTS.md +0 -40
- ha_mcp_dev-8.2.0.dev2362/src/ha_mcp/resources/skills-vendor/CLAUDE.md +0 -40
- {ha_mcp_dev-8.2.0.dev2362 → ha_mcp_dev-8.2.0.dev2364}/LICENSE +0 -0
- {ha_mcp_dev-8.2.0.dev2362 → ha_mcp_dev-8.2.0.dev2364}/MANIFEST.in +0 -0
- {ha_mcp_dev-8.2.0.dev2362 → ha_mcp_dev-8.2.0.dev2364}/setup.cfg +0 -0
- {ha_mcp_dev-8.2.0.dev2362 → ha_mcp_dev-8.2.0.dev2364}/src/ha_mcp/__init__.py +0 -0
- {ha_mcp_dev-8.2.0.dev2362 → ha_mcp_dev-8.2.0.dev2364}/src/ha_mcp/__main__.py +0 -0
- {ha_mcp_dev-8.2.0.dev2362 → ha_mcp_dev-8.2.0.dev2364}/src/ha_mcp/_pypi_marker +0 -0
- {ha_mcp_dev-8.2.0.dev2362 → ha_mcp_dev-8.2.0.dev2364}/src/ha_mcp/_rich_compat.py +0 -0
- {ha_mcp_dev-8.2.0.dev2362 → ha_mcp_dev-8.2.0.dev2364}/src/ha_mcp/_vendor/__init__.py +0 -0
- {ha_mcp_dev-8.2.0.dev2362 → ha_mcp_dev-8.2.0.dev2364}/src/ha_mcp/_vendor/requirements.txt +0 -0
- {ha_mcp_dev-8.2.0.dev2362 → ha_mcp_dev-8.2.0.dev2364}/src/ha_mcp/_vendor/websockets/LICENSE +0 -0
- {ha_mcp_dev-8.2.0.dev2362 → ha_mcp_dev-8.2.0.dev2364}/src/ha_mcp/_vendor/websockets/MANIFEST.sha256 +0 -0
- {ha_mcp_dev-8.2.0.dev2362 → ha_mcp_dev-8.2.0.dev2364}/src/ha_mcp/_vendor/websockets/VENDORED +0 -0
- {ha_mcp_dev-8.2.0.dev2362 → ha_mcp_dev-8.2.0.dev2364}/src/ha_mcp/_vendor/websockets/__init__.py +0 -0
- {ha_mcp_dev-8.2.0.dev2362 → ha_mcp_dev-8.2.0.dev2364}/src/ha_mcp/_vendor/websockets/__main__.py +0 -0
- {ha_mcp_dev-8.2.0.dev2362 → ha_mcp_dev-8.2.0.dev2364}/src/ha_mcp/_vendor/websockets/asyncio/__init__.py +0 -0
- {ha_mcp_dev-8.2.0.dev2362 → ha_mcp_dev-8.2.0.dev2364}/src/ha_mcp/_vendor/websockets/asyncio/client.py +0 -0
- {ha_mcp_dev-8.2.0.dev2362 → ha_mcp_dev-8.2.0.dev2364}/src/ha_mcp/_vendor/websockets/asyncio/connection.py +0 -0
- {ha_mcp_dev-8.2.0.dev2362 → ha_mcp_dev-8.2.0.dev2364}/src/ha_mcp/_vendor/websockets/asyncio/messages.py +0 -0
- {ha_mcp_dev-8.2.0.dev2362 → ha_mcp_dev-8.2.0.dev2364}/src/ha_mcp/_vendor/websockets/asyncio/router.py +0 -0
- {ha_mcp_dev-8.2.0.dev2362 → ha_mcp_dev-8.2.0.dev2364}/src/ha_mcp/_vendor/websockets/asyncio/server.py +0 -0
- {ha_mcp_dev-8.2.0.dev2362 → ha_mcp_dev-8.2.0.dev2364}/src/ha_mcp/_vendor/websockets/auth.py +0 -0
- {ha_mcp_dev-8.2.0.dev2362 → ha_mcp_dev-8.2.0.dev2364}/src/ha_mcp/_vendor/websockets/cli.py +0 -0
- {ha_mcp_dev-8.2.0.dev2362 → ha_mcp_dev-8.2.0.dev2364}/src/ha_mcp/_vendor/websockets/client.py +0 -0
- {ha_mcp_dev-8.2.0.dev2362 → ha_mcp_dev-8.2.0.dev2364}/src/ha_mcp/_vendor/websockets/connection.py +0 -0
- {ha_mcp_dev-8.2.0.dev2362 → ha_mcp_dev-8.2.0.dev2364}/src/ha_mcp/_vendor/websockets/datastructures.py +0 -0
- {ha_mcp_dev-8.2.0.dev2362 → ha_mcp_dev-8.2.0.dev2364}/src/ha_mcp/_vendor/websockets/exceptions.py +0 -0
- {ha_mcp_dev-8.2.0.dev2362 → ha_mcp_dev-8.2.0.dev2364}/src/ha_mcp/_vendor/websockets/extensions/__init__.py +0 -0
- {ha_mcp_dev-8.2.0.dev2362 → ha_mcp_dev-8.2.0.dev2364}/src/ha_mcp/_vendor/websockets/extensions/base.py +0 -0
- {ha_mcp_dev-8.2.0.dev2362 → ha_mcp_dev-8.2.0.dev2364}/src/ha_mcp/_vendor/websockets/extensions/permessage_deflate.py +0 -0
- {ha_mcp_dev-8.2.0.dev2362 → ha_mcp_dev-8.2.0.dev2364}/src/ha_mcp/_vendor/websockets/frames.py +0 -0
- {ha_mcp_dev-8.2.0.dev2362 → ha_mcp_dev-8.2.0.dev2364}/src/ha_mcp/_vendor/websockets/headers.py +0 -0
- {ha_mcp_dev-8.2.0.dev2362 → ha_mcp_dev-8.2.0.dev2364}/src/ha_mcp/_vendor/websockets/http11.py +0 -0
- {ha_mcp_dev-8.2.0.dev2362 → ha_mcp_dev-8.2.0.dev2364}/src/ha_mcp/_vendor/websockets/imports.py +0 -0
- {ha_mcp_dev-8.2.0.dev2362 → ha_mcp_dev-8.2.0.dev2364}/src/ha_mcp/_vendor/websockets/legacy/__init__.py +0 -0
- {ha_mcp_dev-8.2.0.dev2362 → ha_mcp_dev-8.2.0.dev2364}/src/ha_mcp/_vendor/websockets/legacy/auth.py +0 -0
- {ha_mcp_dev-8.2.0.dev2362 → ha_mcp_dev-8.2.0.dev2364}/src/ha_mcp/_vendor/websockets/legacy/client.py +0 -0
- {ha_mcp_dev-8.2.0.dev2362 → ha_mcp_dev-8.2.0.dev2364}/src/ha_mcp/_vendor/websockets/legacy/exceptions.py +0 -0
- {ha_mcp_dev-8.2.0.dev2362 → ha_mcp_dev-8.2.0.dev2364}/src/ha_mcp/_vendor/websockets/legacy/framing.py +0 -0
- {ha_mcp_dev-8.2.0.dev2362 → ha_mcp_dev-8.2.0.dev2364}/src/ha_mcp/_vendor/websockets/legacy/handshake.py +0 -0
- {ha_mcp_dev-8.2.0.dev2362 → ha_mcp_dev-8.2.0.dev2364}/src/ha_mcp/_vendor/websockets/legacy/http.py +0 -0
- {ha_mcp_dev-8.2.0.dev2362 → ha_mcp_dev-8.2.0.dev2364}/src/ha_mcp/_vendor/websockets/legacy/protocol.py +0 -0
- {ha_mcp_dev-8.2.0.dev2362 → ha_mcp_dev-8.2.0.dev2364}/src/ha_mcp/_vendor/websockets/legacy/server.py +0 -0
- {ha_mcp_dev-8.2.0.dev2362 → ha_mcp_dev-8.2.0.dev2364}/src/ha_mcp/_vendor/websockets/protocol.py +0 -0
- {ha_mcp_dev-8.2.0.dev2362 → ha_mcp_dev-8.2.0.dev2364}/src/ha_mcp/_vendor/websockets/proxy.py +0 -0
- {ha_mcp_dev-8.2.0.dev2362 → ha_mcp_dev-8.2.0.dev2364}/src/ha_mcp/_vendor/websockets/py.typed +0 -0
- {ha_mcp_dev-8.2.0.dev2362 → ha_mcp_dev-8.2.0.dev2364}/src/ha_mcp/_vendor/websockets/server.py +0 -0
- {ha_mcp_dev-8.2.0.dev2362 → ha_mcp_dev-8.2.0.dev2364}/src/ha_mcp/_vendor/websockets/streams.py +0 -0
- {ha_mcp_dev-8.2.0.dev2362 → ha_mcp_dev-8.2.0.dev2364}/src/ha_mcp/_vendor/websockets/sync/__init__.py +0 -0
- {ha_mcp_dev-8.2.0.dev2362 → ha_mcp_dev-8.2.0.dev2364}/src/ha_mcp/_vendor/websockets/sync/client.py +0 -0
- {ha_mcp_dev-8.2.0.dev2362 → ha_mcp_dev-8.2.0.dev2364}/src/ha_mcp/_vendor/websockets/sync/connection.py +0 -0
- {ha_mcp_dev-8.2.0.dev2362 → ha_mcp_dev-8.2.0.dev2364}/src/ha_mcp/_vendor/websockets/sync/messages.py +0 -0
- {ha_mcp_dev-8.2.0.dev2362 → ha_mcp_dev-8.2.0.dev2364}/src/ha_mcp/_vendor/websockets/sync/router.py +0 -0
- {ha_mcp_dev-8.2.0.dev2362 → ha_mcp_dev-8.2.0.dev2364}/src/ha_mcp/_vendor/websockets/sync/server.py +0 -0
- {ha_mcp_dev-8.2.0.dev2362 → ha_mcp_dev-8.2.0.dev2364}/src/ha_mcp/_vendor/websockets/sync/utils.py +0 -0
- {ha_mcp_dev-8.2.0.dev2362 → ha_mcp_dev-8.2.0.dev2364}/src/ha_mcp/_vendor/websockets/trio/__init__.py +0 -0
- {ha_mcp_dev-8.2.0.dev2362 → ha_mcp_dev-8.2.0.dev2364}/src/ha_mcp/_vendor/websockets/trio/client.py +0 -0
- {ha_mcp_dev-8.2.0.dev2362 → ha_mcp_dev-8.2.0.dev2364}/src/ha_mcp/_vendor/websockets/trio/connection.py +0 -0
- {ha_mcp_dev-8.2.0.dev2362 → ha_mcp_dev-8.2.0.dev2364}/src/ha_mcp/_vendor/websockets/trio/messages.py +0 -0
- {ha_mcp_dev-8.2.0.dev2362 → ha_mcp_dev-8.2.0.dev2364}/src/ha_mcp/_vendor/websockets/trio/router.py +0 -0
- {ha_mcp_dev-8.2.0.dev2362 → ha_mcp_dev-8.2.0.dev2364}/src/ha_mcp/_vendor/websockets/trio/server.py +0 -0
- {ha_mcp_dev-8.2.0.dev2362 → ha_mcp_dev-8.2.0.dev2364}/src/ha_mcp/_vendor/websockets/trio/utils.py +0 -0
- {ha_mcp_dev-8.2.0.dev2362 → ha_mcp_dev-8.2.0.dev2364}/src/ha_mcp/_vendor/websockets/typing.py +0 -0
- {ha_mcp_dev-8.2.0.dev2362 → ha_mcp_dev-8.2.0.dev2364}/src/ha_mcp/_vendor/websockets/uri.py +0 -0
- {ha_mcp_dev-8.2.0.dev2362 → ha_mcp_dev-8.2.0.dev2364}/src/ha_mcp/_vendor/websockets/utils.py +0 -0
- {ha_mcp_dev-8.2.0.dev2362 → ha_mcp_dev-8.2.0.dev2364}/src/ha_mcp/_vendor/websockets/version.py +0 -0
- {ha_mcp_dev-8.2.0.dev2362 → ha_mcp_dev-8.2.0.dev2364}/src/ha_mcp/_version.py +0 -0
- {ha_mcp_dev-8.2.0.dev2362 → ha_mcp_dev-8.2.0.dev2364}/src/ha_mcp/auth/__init__.py +0 -0
- {ha_mcp_dev-8.2.0.dev2362 → ha_mcp_dev-8.2.0.dev2364}/src/ha_mcp/auth/consent_form.py +0 -0
- {ha_mcp_dev-8.2.0.dev2362 → ha_mcp_dev-8.2.0.dev2364}/src/ha_mcp/auth/oidc_compat.py +0 -0
- {ha_mcp_dev-8.2.0.dev2362 → ha_mcp_dev-8.2.0.dev2364}/src/ha_mcp/auth/provider.py +0 -0
- {ha_mcp_dev-8.2.0.dev2362 → ha_mcp_dev-8.2.0.dev2364}/src/ha_mcp/backup_manager.py +0 -0
- {ha_mcp_dev-8.2.0.dev2362 → ha_mcp_dev-8.2.0.dev2364}/src/ha_mcp/browser_landing.py +0 -0
- {ha_mcp_dev-8.2.0.dev2362 → ha_mcp_dev-8.2.0.dev2364}/src/ha_mcp/client/__init__.py +0 -0
- {ha_mcp_dev-8.2.0.dev2362 → ha_mcp_dev-8.2.0.dev2364}/src/ha_mcp/client/rest_client.py +0 -0
- {ha_mcp_dev-8.2.0.dev2362 → ha_mcp_dev-8.2.0.dev2364}/src/ha_mcp/client/supervisor_client.py +0 -0
- {ha_mcp_dev-8.2.0.dev2362 → ha_mcp_dev-8.2.0.dev2364}/src/ha_mcp/client/websocket_client.py +0 -0
- {ha_mcp_dev-8.2.0.dev2362 → ha_mcp_dev-8.2.0.dev2364}/src/ha_mcp/client/websocket_listener.py +0 -0
- {ha_mcp_dev-8.2.0.dev2362 → ha_mcp_dev-8.2.0.dev2364}/src/ha_mcp/config.py +0 -0
- {ha_mcp_dev-8.2.0.dev2362 → ha_mcp_dev-8.2.0.dev2364}/src/ha_mcp/dashboard_screenshot/__init__.py +0 -0
- {ha_mcp_dev-8.2.0.dev2362 → ha_mcp_dev-8.2.0.dev2364}/src/ha_mcp/dashboard_screenshot/capture.py +0 -0
- {ha_mcp_dev-8.2.0.dev2362 → ha_mcp_dev-8.2.0.dev2364}/src/ha_mcp/dashboard_screenshot/content.py +0 -0
- {ha_mcp_dev-8.2.0.dev2362 → ha_mcp_dev-8.2.0.dev2364}/src/ha_mcp/dashboard_screenshot/paths.py +0 -0
- {ha_mcp_dev-8.2.0.dev2362 → ha_mcp_dev-8.2.0.dev2364}/src/ha_mcp/dashboard_screenshot/provision.py +0 -0
- {ha_mcp_dev-8.2.0.dev2362 → ha_mcp_dev-8.2.0.dev2364}/src/ha_mcp/dashboard_screenshot/theme_guard.py +0 -0
- {ha_mcp_dev-8.2.0.dev2362 → ha_mcp_dev-8.2.0.dev2364}/src/ha_mcp/errors.py +0 -0
- {ha_mcp_dev-8.2.0.dev2362 → ha_mcp_dev-8.2.0.dev2364}/src/ha_mcp/hacs_auto_refresh.py +0 -0
- {ha_mcp_dev-8.2.0.dev2362 → ha_mcp_dev-8.2.0.dev2364}/src/ha_mcp/llm_exposure.py +0 -0
- {ha_mcp_dev-8.2.0.dev2362 → ha_mcp_dev-8.2.0.dev2364}/src/ha_mcp/policy/__init__.py +0 -0
- {ha_mcp_dev-8.2.0.dev2362 → ha_mcp_dev-8.2.0.dev2364}/src/ha_mcp/policy/approval_queue.py +0 -0
- {ha_mcp_dev-8.2.0.dev2362 → ha_mcp_dev-8.2.0.dev2364}/src/ha_mcp/policy/editing.py +0 -0
- {ha_mcp_dev-8.2.0.dev2362 → ha_mcp_dev-8.2.0.dev2364}/src/ha_mcp/policy/evaluator.py +0 -0
- {ha_mcp_dev-8.2.0.dev2362 → ha_mcp_dev-8.2.0.dev2364}/src/ha_mcp/policy/handlers.py +0 -0
- {ha_mcp_dev-8.2.0.dev2362 → ha_mcp_dev-8.2.0.dev2364}/src/ha_mcp/policy/middleware.py +0 -0
- {ha_mcp_dev-8.2.0.dev2362 → ha_mcp_dev-8.2.0.dev2364}/src/ha_mcp/policy/model.py +0 -0
- {ha_mcp_dev-8.2.0.dev2362 → ha_mcp_dev-8.2.0.dev2364}/src/ha_mcp/policy/persistence.py +0 -0
- {ha_mcp_dev-8.2.0.dev2362 → ha_mcp_dev-8.2.0.dev2364}/src/ha_mcp/policy/value_sources.py +0 -0
- {ha_mcp_dev-8.2.0.dev2362 → ha_mcp_dev-8.2.0.dev2364}/src/ha_mcp/py.typed +0 -0
- {ha_mcp_dev-8.2.0.dev2362 → ha_mcp_dev-8.2.0.dev2364}/src/ha_mcp/read_only.py +0 -0
- {ha_mcp_dev-8.2.0.dev2362 → ha_mcp_dev-8.2.0.dev2364}/src/ha_mcp/redaction.py +0 -0
- {ha_mcp_dev-8.2.0.dev2362 → ha_mcp_dev-8.2.0.dev2364}/src/ha_mcp/renamed_tools.py +0 -0
- {ha_mcp_dev-8.2.0.dev2362 → ha_mcp_dev-8.2.0.dev2364}/src/ha_mcp/resources/skills-vendor/.claude/settings.json +0 -0
- {ha_mcp_dev-8.2.0.dev2362 → ha_mcp_dev-8.2.0.dev2364}/src/ha_mcp/resources/skills-vendor/.github/ISSUE_TEMPLATE/skill-rca.md +0 -0
- {ha_mcp_dev-8.2.0.dev2362 → ha_mcp_dev-8.2.0.dev2364}/src/ha_mcp/resources/skills-vendor/.github/pull_request_template.md +0 -0
- {ha_mcp_dev-8.2.0.dev2362 → ha_mcp_dev-8.2.0.dev2364}/src/ha_mcp/resources/skills-vendor/CONTRIBUTING.md +0 -0
- {ha_mcp_dev-8.2.0.dev2362 → ha_mcp_dev-8.2.0.dev2364}/src/ha_mcp/resources/skills-vendor/LICENSE +0 -0
- {ha_mcp_dev-8.2.0.dev2362 → ha_mcp_dev-8.2.0.dev2364}/src/ha_mcp/resources/skills-vendor/README.md +0 -0
- {ha_mcp_dev-8.2.0.dev2362 → ha_mcp_dev-8.2.0.dev2364}/src/ha_mcp/resources/skills-vendor/skills/home-assistant-best-practices/evals/evals.json +0 -0
- {ha_mcp_dev-8.2.0.dev2362 → ha_mcp_dev-8.2.0.dev2364}/src/ha_mcp/resources/skills-vendor/skills/home-assistant-best-practices/references/appdaemon.md +0 -0
- {ha_mcp_dev-8.2.0.dev2362 → ha_mcp_dev-8.2.0.dev2364}/src/ha_mcp/resources/skills-vendor/skills/home-assistant-best-practices/references/blueprint-guide.md +0 -0
- {ha_mcp_dev-8.2.0.dev2362 → ha_mcp_dev-8.2.0.dev2364}/src/ha_mcp/resources/skills-vendor/skills/home-assistant-best-practices/references/dashboard-cards.md +0 -0
- {ha_mcp_dev-8.2.0.dev2362 → ha_mcp_dev-8.2.0.dev2364}/src/ha_mcp/resources/skills-vendor/skills/home-assistant-best-practices/references/dashboard-guide.md +0 -0
- {ha_mcp_dev-8.2.0.dev2362 → ha_mcp_dev-8.2.0.dev2364}/src/ha_mcp/resources/skills-vendor/skills/home-assistant-best-practices/references/device-control.md +0 -0
- {ha_mcp_dev-8.2.0.dev2362 → ha_mcp_dev-8.2.0.dev2364}/src/ha_mcp/resources/skills-vendor/skills/home-assistant-best-practices/references/domain-docs.md +0 -0
- {ha_mcp_dev-8.2.0.dev2362 → ha_mcp_dev-8.2.0.dev2364}/src/ha_mcp/resources/skills-vendor/skills/home-assistant-best-practices/references/examples.yaml +0 -0
- {ha_mcp_dev-8.2.0.dev2362 → ha_mcp_dev-8.2.0.dev2364}/src/ha_mcp/resources/skills-vendor/skills/home-assistant-best-practices/references/helper-selection.md +0 -0
- {ha_mcp_dev-8.2.0.dev2362 → ha_mcp_dev-8.2.0.dev2364}/src/ha_mcp/resources/skills-vendor/skills/home-assistant-best-practices/references/safe-refactoring.md +0 -0
- {ha_mcp_dev-8.2.0.dev2362 → ha_mcp_dev-8.2.0.dev2364}/src/ha_mcp/resources/skills-vendor/skills/home-assistant-best-practices/references/scenes.md +0 -0
- {ha_mcp_dev-8.2.0.dev2362 → ha_mcp_dev-8.2.0.dev2364}/src/ha_mcp/resources/skills-vendor/skills/home-assistant-best-practices/references/template-guidelines.md +0 -0
- {ha_mcp_dev-8.2.0.dev2362 → ha_mcp_dev-8.2.0.dev2364}/src/ha_mcp/resources/skills-vendor/skills/home-assistant-best-practices/references/yaml-only-integrations.md +0 -0
- {ha_mcp_dev-8.2.0.dev2362 → ha_mcp_dev-8.2.0.dev2364}/src/ha_mcp/server.py +0 -0
- {ha_mcp_dev-8.2.0.dev2362 → ha_mcp_dev-8.2.0.dev2364}/src/ha_mcp/settings_ui/__init__.py +0 -0
- {ha_mcp_dev-8.2.0.dev2362 → ha_mcp_dev-8.2.0.dev2364}/src/ha_mcp/settings_ui/_handlers_advanced.py +0 -0
- {ha_mcp_dev-8.2.0.dev2362 → ha_mcp_dev-8.2.0.dev2364}/src/ha_mcp/settings_ui/_handlers_backups.py +0 -0
- {ha_mcp_dev-8.2.0.dev2362 → ha_mcp_dev-8.2.0.dev2364}/src/ha_mcp/settings_ui/_handlers_fs.py +0 -0
- {ha_mcp_dev-8.2.0.dev2362 → ha_mcp_dev-8.2.0.dev2364}/src/ha_mcp/settings_ui/_handlers_server.py +0 -0
- {ha_mcp_dev-8.2.0.dev2362 → ha_mcp_dev-8.2.0.dev2364}/src/ha_mcp/settings_ui/_handlers_theme.py +0 -0
- {ha_mcp_dev-8.2.0.dev2362 → ha_mcp_dev-8.2.0.dev2364}/src/ha_mcp/settings_ui/_handlers_tools.py +0 -0
- {ha_mcp_dev-8.2.0.dev2362 → ha_mcp_dev-8.2.0.dev2364}/src/ha_mcp/settings_ui/_i18n.py +0 -0
- {ha_mcp_dev-8.2.0.dev2362 → ha_mcp_dev-8.2.0.dev2364}/src/ha_mcp/settings_ui/_persistence.py +0 -0
- {ha_mcp_dev-8.2.0.dev2362 → ha_mcp_dev-8.2.0.dev2364}/src/ha_mcp/settings_ui/_supervisor.py +0 -0
- {ha_mcp_dev-8.2.0.dev2362 → ha_mcp_dev-8.2.0.dev2364}/src/ha_mcp/settings_ui/_theme.py +0 -0
- {ha_mcp_dev-8.2.0.dev2362 → ha_mcp_dev-8.2.0.dev2364}/src/ha_mcp/settings_ui/_tools_meta.py +0 -0
- {ha_mcp_dev-8.2.0.dev2362 → ha_mcp_dev-8.2.0.dev2364}/src/ha_mcp/settings_ui/locales/README.md +0 -0
- {ha_mcp_dev-8.2.0.dev2362 → ha_mcp_dev-8.2.0.dev2364}/src/ha_mcp/settings_ui/locales/cs.json +0 -0
- {ha_mcp_dev-8.2.0.dev2362 → ha_mcp_dev-8.2.0.dev2364}/src/ha_mcp/settings_ui/locales/de.json +0 -0
- {ha_mcp_dev-8.2.0.dev2362 → ha_mcp_dev-8.2.0.dev2364}/src/ha_mcp/settings_ui/locales/en.json +0 -0
- {ha_mcp_dev-8.2.0.dev2362 → ha_mcp_dev-8.2.0.dev2364}/src/ha_mcp/settings_ui/locales/eo.json +0 -0
- {ha_mcp_dev-8.2.0.dev2362 → ha_mcp_dev-8.2.0.dev2364}/src/ha_mcp/settings_ui/locales/es.json +0 -0
- {ha_mcp_dev-8.2.0.dev2362 → ha_mcp_dev-8.2.0.dev2364}/src/ha_mcp/settings_ui/locales/fr.json +0 -0
- {ha_mcp_dev-8.2.0.dev2362 → ha_mcp_dev-8.2.0.dev2364}/src/ha_mcp/settings_ui/locales/it.json +0 -0
- {ha_mcp_dev-8.2.0.dev2362 → ha_mcp_dev-8.2.0.dev2364}/src/ha_mcp/settings_ui/locales/nl.json +0 -0
- {ha_mcp_dev-8.2.0.dev2362 → ha_mcp_dev-8.2.0.dev2364}/src/ha_mcp/settings_ui/locales/pl.json +0 -0
- {ha_mcp_dev-8.2.0.dev2362 → ha_mcp_dev-8.2.0.dev2364}/src/ha_mcp/settings_ui/locales/ru.json +0 -0
- {ha_mcp_dev-8.2.0.dev2362 → ha_mcp_dev-8.2.0.dev2364}/src/ha_mcp/settings_ui/locales/sv.json +0 -0
- {ha_mcp_dev-8.2.0.dev2362 → ha_mcp_dev-8.2.0.dev2364}/src/ha_mcp/settings_ui/locales/zh-Hans.json +0 -0
- {ha_mcp_dev-8.2.0.dev2362 → ha_mcp_dev-8.2.0.dev2364}/src/ha_mcp/settings_ui/settings.css +0 -0
- {ha_mcp_dev-8.2.0.dev2362 → ha_mcp_dev-8.2.0.dev2364}/src/ha_mcp/settings_ui/settings.html +0 -0
- {ha_mcp_dev-8.2.0.dev2362 → ha_mcp_dev-8.2.0.dev2364}/src/ha_mcp/settings_ui/settings.js +0 -0
- {ha_mcp_dev-8.2.0.dev2362 → ha_mcp_dev-8.2.0.dev2364}/src/ha_mcp/smoke_test.py +0 -0
- {ha_mcp_dev-8.2.0.dev2362 → ha_mcp_dev-8.2.0.dev2364}/src/ha_mcp/stdio_settings_sidecar.py +0 -0
- {ha_mcp_dev-8.2.0.dev2362 → ha_mcp_dev-8.2.0.dev2364}/src/ha_mcp/strict_bps.py +0 -0
- {ha_mcp_dev-8.2.0.dev2362 → ha_mcp_dev-8.2.0.dev2364}/src/ha_mcp/tools/__init__.py +0 -0
- {ha_mcp_dev-8.2.0.dev2362 → ha_mcp_dev-8.2.0.dev2364}/src/ha_mcp/tools/auto_backup.py +0 -0
- {ha_mcp_dev-8.2.0.dev2362 → ha_mcp_dev-8.2.0.dev2364}/src/ha_mcp/tools/backup.py +0 -0
- {ha_mcp_dev-8.2.0.dev2362 → ha_mcp_dev-8.2.0.dev2364}/src/ha_mcp/tools/best_practice_checker.py +0 -0
- {ha_mcp_dev-8.2.0.dev2362 → ha_mcp_dev-8.2.0.dev2364}/src/ha_mcp/tools/best_practice_result.py +0 -0
- {ha_mcp_dev-8.2.0.dev2362 → ha_mcp_dev-8.2.0.dev2364}/src/ha_mcp/tools/best_practice_variables.py +0 -0
- {ha_mcp_dev-8.2.0.dev2362 → ha_mcp_dev-8.2.0.dev2364}/src/ha_mcp/tools/component_api.py +0 -0
- {ha_mcp_dev-8.2.0.dev2362 → ha_mcp_dev-8.2.0.dev2364}/src/ha_mcp/tools/component_config_entries.py +0 -0
- {ha_mcp_dev-8.2.0.dev2362 → ha_mcp_dev-8.2.0.dev2364}/src/ha_mcp/tools/component_config_reads.py +0 -0
- {ha_mcp_dev-8.2.0.dev2362 → ha_mcp_dev-8.2.0.dev2364}/src/ha_mcp/tools/component_devices.py +0 -0
- {ha_mcp_dev-8.2.0.dev2362 → ha_mcp_dev-8.2.0.dev2364}/src/ha_mcp/tools/component_registries.py +0 -0
- {ha_mcp_dev-8.2.0.dev2362 → ha_mcp_dev-8.2.0.dev2364}/src/ha_mcp/tools/component_registry_lookup.py +0 -0
- {ha_mcp_dev-8.2.0.dev2362 → ha_mcp_dev-8.2.0.dev2364}/src/ha_mcp/tools/config_entry_flow.py +0 -0
- {ha_mcp_dev-8.2.0.dev2362 → ha_mcp_dev-8.2.0.dev2364}/src/ha_mcp/tools/config_entry_flow_form.py +0 -0
- {ha_mcp_dev-8.2.0.dev2362 → ha_mcp_dev-8.2.0.dev2364}/src/ha_mcp/tools/config_entry_flow_menu.py +0 -0
- {ha_mcp_dev-8.2.0.dev2362 → ha_mcp_dev-8.2.0.dev2364}/src/ha_mcp/tools/config_entry_flow_walker.py +0 -0
- {ha_mcp_dev-8.2.0.dev2362 → ha_mcp_dev-8.2.0.dev2364}/src/ha_mcp/tools/config_entry_identity.py +0 -0
- {ha_mcp_dev-8.2.0.dev2362 → ha_mcp_dev-8.2.0.dev2364}/src/ha_mcp/tools/config_entry_reconfigure.py +0 -0
- {ha_mcp_dev-8.2.0.dev2362 → ha_mcp_dev-8.2.0.dev2364}/src/ha_mcp/tools/config_entry_reload_watch.py +0 -0
- {ha_mcp_dev-8.2.0.dev2362 → ha_mcp_dev-8.2.0.dev2364}/src/ha_mcp/tools/device_control.py +0 -0
- {ha_mcp_dev-8.2.0.dev2362 → ha_mcp_dev-8.2.0.dev2364}/src/ha_mcp/tools/error_log_parsing.py +0 -0
- {ha_mcp_dev-8.2.0.dev2362 → ha_mcp_dev-8.2.0.dev2364}/src/ha_mcp/tools/hacs_registration.py +0 -0
- {ha_mcp_dev-8.2.0.dev2362 → ha_mcp_dev-8.2.0.dev2364}/src/ha_mcp/tools/helpers.py +0 -0
- {ha_mcp_dev-8.2.0.dev2362 → ha_mcp_dev-8.2.0.dev2364}/src/ha_mcp/tools/integration_reconfigure.py +0 -0
- {ha_mcp_dev-8.2.0.dev2362 → ha_mcp_dev-8.2.0.dev2364}/src/ha_mcp/tools/radio/__init__.py +0 -0
- {ha_mcp_dev-8.2.0.dev2362 → ha_mcp_dev-8.2.0.dev2364}/src/ha_mcp/tools/radio/base.py +0 -0
- {ha_mcp_dev-8.2.0.dev2362 → ha_mcp_dev-8.2.0.dev2364}/src/ha_mcp/tools/radio/matter.py +0 -0
- {ha_mcp_dev-8.2.0.dev2362 → ha_mcp_dev-8.2.0.dev2364}/src/ha_mcp/tools/radio/thread.py +0 -0
- {ha_mcp_dev-8.2.0.dev2362 → ha_mcp_dev-8.2.0.dev2364}/src/ha_mcp/tools/radio/zigbee.py +0 -0
- {ha_mcp_dev-8.2.0.dev2362 → ha_mcp_dev-8.2.0.dev2364}/src/ha_mcp/tools/radio/zwave.py +0 -0
- {ha_mcp_dev-8.2.0.dev2362 → ha_mcp_dev-8.2.0.dev2364}/src/ha_mcp/tools/reference_validator.py +0 -0
- {ha_mcp_dev-8.2.0.dev2362 → ha_mcp_dev-8.2.0.dev2364}/src/ha_mcp/tools/registry.py +0 -0
- {ha_mcp_dev-8.2.0.dev2362 → ha_mcp_dev-8.2.0.dev2364}/src/ha_mcp/tools/renamed_tool_middleware.py +0 -0
- {ha_mcp_dev-8.2.0.dev2362 → ha_mcp_dev-8.2.0.dev2364}/src/ha_mcp/tools/smart_search/__init__.py +0 -0
- {ha_mcp_dev-8.2.0.dev2362 → ha_mcp_dev-8.2.0.dev2364}/src/ha_mcp/tools/smart_search/_base.py +0 -0
- {ha_mcp_dev-8.2.0.dev2362 → ha_mcp_dev-8.2.0.dev2364}/src/ha_mcp/tools/smart_search/_config.py +0 -0
- {ha_mcp_dev-8.2.0.dev2362 → ha_mcp_dev-8.2.0.dev2364}/src/ha_mcp/tools/smart_search/_deep.py +0 -0
- {ha_mcp_dev-8.2.0.dev2362 → ha_mcp_dev-8.2.0.dev2364}/src/ha_mcp/tools/smart_search/_entities.py +0 -0
- {ha_mcp_dev-8.2.0.dev2362 → ha_mcp_dev-8.2.0.dev2364}/src/ha_mcp/tools/smart_search/_fetch.py +0 -0
- {ha_mcp_dev-8.2.0.dev2362 → ha_mcp_dev-8.2.0.dev2364}/src/ha_mcp/tools/smart_search/_overview.py +0 -0
- {ha_mcp_dev-8.2.0.dev2362 → ha_mcp_dev-8.2.0.dev2364}/src/ha_mcp/tools/smart_search/_scenes.py +0 -0
- {ha_mcp_dev-8.2.0.dev2362 → ha_mcp_dev-8.2.0.dev2364}/src/ha_mcp/tools/smart_search/_scoring.py +0 -0
- {ha_mcp_dev-8.2.0.dev2362 → ha_mcp_dev-8.2.0.dev2364}/src/ha_mcp/tools/tool_search_hint_middleware.py +0 -0
- {ha_mcp_dev-8.2.0.dev2362 → ha_mcp_dev-8.2.0.dev2364}/src/ha_mcp/tools/tools_addons.py +0 -0
- {ha_mcp_dev-8.2.0.dev2362 → ha_mcp_dev-8.2.0.dev2364}/src/ha_mcp/tools/tools_areas.py +0 -0
- {ha_mcp_dev-8.2.0.dev2362 → ha_mcp_dev-8.2.0.dev2364}/src/ha_mcp/tools/tools_assist_pipeline.py +0 -0
- {ha_mcp_dev-8.2.0.dev2362 → ha_mcp_dev-8.2.0.dev2364}/src/ha_mcp/tools/tools_blueprints.py +0 -0
- {ha_mcp_dev-8.2.0.dev2362 → ha_mcp_dev-8.2.0.dev2364}/src/ha_mcp/tools/tools_bug_report.py +0 -0
- {ha_mcp_dev-8.2.0.dev2362 → ha_mcp_dev-8.2.0.dev2364}/src/ha_mcp/tools/tools_calendar.py +0 -0
- {ha_mcp_dev-8.2.0.dev2362 → ha_mcp_dev-8.2.0.dev2364}/src/ha_mcp/tools/tools_camera.py +0 -0
- {ha_mcp_dev-8.2.0.dev2362 → ha_mcp_dev-8.2.0.dev2364}/src/ha_mcp/tools/tools_categories.py +0 -0
- {ha_mcp_dev-8.2.0.dev2362 → ha_mcp_dev-8.2.0.dev2364}/src/ha_mcp/tools/tools_code.py +0 -0
- {ha_mcp_dev-8.2.0.dev2362 → ha_mcp_dev-8.2.0.dev2364}/src/ha_mcp/tools/tools_config_automations.py +0 -0
- {ha_mcp_dev-8.2.0.dev2362 → ha_mcp_dev-8.2.0.dev2364}/src/ha_mcp/tools/tools_config_dashboards.py +0 -0
- {ha_mcp_dev-8.2.0.dev2362 → ha_mcp_dev-8.2.0.dev2364}/src/ha_mcp/tools/tools_config_helpers.py +0 -0
- {ha_mcp_dev-8.2.0.dev2362 → ha_mcp_dev-8.2.0.dev2364}/src/ha_mcp/tools/tools_config_scenes.py +0 -0
- {ha_mcp_dev-8.2.0.dev2362 → ha_mcp_dev-8.2.0.dev2364}/src/ha_mcp/tools/tools_config_scripts.py +0 -0
- {ha_mcp_dev-8.2.0.dev2362 → ha_mcp_dev-8.2.0.dev2364}/src/ha_mcp/tools/tools_dashboard_screenshot.py +0 -0
- {ha_mcp_dev-8.2.0.dev2362 → ha_mcp_dev-8.2.0.dev2364}/src/ha_mcp/tools/tools_dev.py +0 -0
- {ha_mcp_dev-8.2.0.dev2362 → ha_mcp_dev-8.2.0.dev2364}/src/ha_mcp/tools/tools_energy.py +0 -0
- {ha_mcp_dev-8.2.0.dev2362 → ha_mcp_dev-8.2.0.dev2364}/src/ha_mcp/tools/tools_entities.py +0 -0
- {ha_mcp_dev-8.2.0.dev2362 → ha_mcp_dev-8.2.0.dev2364}/src/ha_mcp/tools/tools_filesystem.py +0 -0
- {ha_mcp_dev-8.2.0.dev2362 → ha_mcp_dev-8.2.0.dev2364}/src/ha_mcp/tools/tools_groups.py +0 -0
- {ha_mcp_dev-8.2.0.dev2362 → ha_mcp_dev-8.2.0.dev2364}/src/ha_mcp/tools/tools_hacs.py +0 -0
- {ha_mcp_dev-8.2.0.dev2362 → ha_mcp_dev-8.2.0.dev2364}/src/ha_mcp/tools/tools_history.py +0 -0
- {ha_mcp_dev-8.2.0.dev2362 → ha_mcp_dev-8.2.0.dev2364}/src/ha_mcp/tools/tools_integrations.py +0 -0
- {ha_mcp_dev-8.2.0.dev2362 → ha_mcp_dev-8.2.0.dev2364}/src/ha_mcp/tools/tools_labels.py +0 -0
- {ha_mcp_dev-8.2.0.dev2362 → ha_mcp_dev-8.2.0.dev2364}/src/ha_mcp/tools/tools_radio.py +0 -0
- {ha_mcp_dev-8.2.0.dev2362 → ha_mcp_dev-8.2.0.dev2364}/src/ha_mcp/tools/tools_registry.py +0 -0
- {ha_mcp_dev-8.2.0.dev2362 → ha_mcp_dev-8.2.0.dev2364}/src/ha_mcp/tools/tools_resources.py +0 -0
- {ha_mcp_dev-8.2.0.dev2362 → ha_mcp_dev-8.2.0.dev2364}/src/ha_mcp/tools/tools_search.py +0 -0
- {ha_mcp_dev-8.2.0.dev2362 → ha_mcp_dev-8.2.0.dev2364}/src/ha_mcp/tools/tools_security_policy.py +0 -0
- {ha_mcp_dev-8.2.0.dev2362 → ha_mcp_dev-8.2.0.dev2364}/src/ha_mcp/tools/tools_service.py +0 -0
- {ha_mcp_dev-8.2.0.dev2362 → ha_mcp_dev-8.2.0.dev2364}/src/ha_mcp/tools/tools_services.py +0 -0
- {ha_mcp_dev-8.2.0.dev2362 → ha_mcp_dev-8.2.0.dev2364}/src/ha_mcp/tools/tools_system.py +0 -0
- {ha_mcp_dev-8.2.0.dev2362 → ha_mcp_dev-8.2.0.dev2364}/src/ha_mcp/tools/tools_themes.py +0 -0
- {ha_mcp_dev-8.2.0.dev2362 → ha_mcp_dev-8.2.0.dev2364}/src/ha_mcp/tools/tools_todo.py +0 -0
- {ha_mcp_dev-8.2.0.dev2362 → ha_mcp_dev-8.2.0.dev2364}/src/ha_mcp/tools/tools_traces.py +0 -0
- {ha_mcp_dev-8.2.0.dev2362 → ha_mcp_dev-8.2.0.dev2364}/src/ha_mcp/tools/tools_updates.py +0 -0
- {ha_mcp_dev-8.2.0.dev2362 → ha_mcp_dev-8.2.0.dev2364}/src/ha_mcp/tools/tools_utility.py +0 -0
- {ha_mcp_dev-8.2.0.dev2362 → ha_mcp_dev-8.2.0.dev2364}/src/ha_mcp/tools/tools_voice_assistant.py +0 -0
- {ha_mcp_dev-8.2.0.dev2362 → ha_mcp_dev-8.2.0.dev2364}/src/ha_mcp/tools/tools_yaml_config.py +0 -0
- {ha_mcp_dev-8.2.0.dev2362 → ha_mcp_dev-8.2.0.dev2364}/src/ha_mcp/tools/tools_yaml_read.py +0 -0
- {ha_mcp_dev-8.2.0.dev2362 → ha_mcp_dev-8.2.0.dev2364}/src/ha_mcp/tools/tools_zones.py +0 -0
- {ha_mcp_dev-8.2.0.dev2362 → ha_mcp_dev-8.2.0.dev2364}/src/ha_mcp/tools/util_helpers.py +0 -0
- {ha_mcp_dev-8.2.0.dev2362 → ha_mcp_dev-8.2.0.dev2364}/src/ha_mcp/tools/validation_middleware.py +0 -0
- {ha_mcp_dev-8.2.0.dev2362 → ha_mcp_dev-8.2.0.dev2364}/src/ha_mcp/transforms/__init__.py +0 -0
- {ha_mcp_dev-8.2.0.dev2362 → ha_mcp_dev-8.2.0.dev2364}/src/ha_mcp/transforms/categorized_search.py +0 -0
- {ha_mcp_dev-8.2.0.dev2362 → ha_mcp_dev-8.2.0.dev2364}/src/ha_mcp/transforms/lite_docstrings.py +0 -0
- {ha_mcp_dev-8.2.0.dev2362 → ha_mcp_dev-8.2.0.dev2364}/src/ha_mcp/transport_security.py +0 -0
- {ha_mcp_dev-8.2.0.dev2362 → ha_mcp_dev-8.2.0.dev2364}/src/ha_mcp/update_check.py +0 -0
- {ha_mcp_dev-8.2.0.dev2362 → ha_mcp_dev-8.2.0.dev2364}/src/ha_mcp/utils/__init__.py +0 -0
- {ha_mcp_dev-8.2.0.dev2362 → ha_mcp_dev-8.2.0.dev2364}/src/ha_mcp/utils/config_hash.py +0 -0
- {ha_mcp_dev-8.2.0.dev2362 → ha_mcp_dev-8.2.0.dev2364}/src/ha_mcp/utils/config_write_lock.py +0 -0
- {ha_mcp_dev-8.2.0.dev2362 → ha_mcp_dev-8.2.0.dev2364}/src/ha_mcp/utils/data_paths.py +0 -0
- {ha_mcp_dev-8.2.0.dev2362 → ha_mcp_dev-8.2.0.dev2364}/src/ha_mcp/utils/domain_handlers.py +0 -0
- {ha_mcp_dev-8.2.0.dev2362 → ha_mcp_dev-8.2.0.dev2364}/src/ha_mcp/utils/fuzzy_search.py +0 -0
- {ha_mcp_dev-8.2.0.dev2362 → ha_mcp_dev-8.2.0.dev2364}/src/ha_mcp/utils/kill_signal_diagnostics.py +0 -0
- {ha_mcp_dev-8.2.0.dev2362 → ha_mcp_dev-8.2.0.dev2364}/src/ha_mcp/utils/operation_manager.py +0 -0
- {ha_mcp_dev-8.2.0.dev2362 → ha_mcp_dev-8.2.0.dev2364}/src/ha_mcp/utils/python_sandbox.py +0 -0
- {ha_mcp_dev-8.2.0.dev2362 → ha_mcp_dev-8.2.0.dev2364}/src/ha_mcp/utils/skill_loader.py +0 -0
- {ha_mcp_dev-8.2.0.dev2362 → ha_mcp_dev-8.2.0.dev2364}/src/ha_mcp/utils/usage_logger.py +0 -0
- {ha_mcp_dev-8.2.0.dev2362 → ha_mcp_dev-8.2.0.dev2364}/src/ha_mcp/visibility/__init__.py +0 -0
- {ha_mcp_dev-8.2.0.dev2362 → ha_mcp_dev-8.2.0.dev2364}/src/ha_mcp/visibility/enforcement.py +0 -0
- {ha_mcp_dev-8.2.0.dev2362 → ha_mcp_dev-8.2.0.dev2364}/src/ha_mcp/visibility/model.py +0 -0
- {ha_mcp_dev-8.2.0.dev2362 → ha_mcp_dev-8.2.0.dev2364}/src/ha_mcp/visibility/persistence.py +0 -0
- {ha_mcp_dev-8.2.0.dev2362 → ha_mcp_dev-8.2.0.dev2364}/src/ha_mcp/visibility/resolver.py +0 -0
- {ha_mcp_dev-8.2.0.dev2362 → ha_mcp_dev-8.2.0.dev2364}/src/ha_mcp_dev.egg-info/SOURCES.txt +0 -0
- {ha_mcp_dev-8.2.0.dev2362 → ha_mcp_dev-8.2.0.dev2364}/src/ha_mcp_dev.egg-info/dependency_links.txt +0 -0
- {ha_mcp_dev-8.2.0.dev2362 → ha_mcp_dev-8.2.0.dev2364}/src/ha_mcp_dev.egg-info/entry_points.txt +0 -0
- {ha_mcp_dev-8.2.0.dev2362 → ha_mcp_dev-8.2.0.dev2364}/src/ha_mcp_dev.egg-info/requires.txt +0 -0
- {ha_mcp_dev-8.2.0.dev2362 → ha_mcp_dev-8.2.0.dev2364}/src/ha_mcp_dev.egg-info/top_level.txt +0 -0
- {ha_mcp_dev-8.2.0.dev2362 → ha_mcp_dev-8.2.0.dev2364}/tests/__init__.py +0 -0
- {ha_mcp_dev-8.2.0.dev2362 → ha_mcp_dev-8.2.0.dev2364}/tests/test_constants.py +0 -0
- {ha_mcp_dev-8.2.0.dev2362 → ha_mcp_dev-8.2.0.dev2364}/tests/test_env_manager.py +0 -0
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: ha-mcp-dev
|
|
3
|
-
Version: 8.2.0.
|
|
3
|
+
Version: 8.2.0.dev2364
|
|
4
4
|
Summary: Home Assistant MCP Server - Complete control of Home Assistant through MCP
|
|
5
5
|
Author-email: Julien <github@qc-h.net>
|
|
6
6
|
License: MIT
|
|
@@ -396,7 +396,7 @@ Leave it off in clients with deferred tool loading (claude.ai, Claude Desktop, C
|
|
|
396
396
|
|
|
397
397
|
> 🔄 **Refresh your client's tool list after changing this (or any) setting.** Toggling `ENABLE_TOOL_SEARCH` (or changing pinned/disabled tools, Read Only Mode, etc.) changes the tools the server exposes, but your AI client keeps serving its **cached** tool list until it re-fetches. Restarting the app or Home Assistant does **not** refresh the client — reconnect or refresh the MCP server in your client (e.g. re-add/refresh the connector in ChatGPT, or close and reopen Claude Desktop). If you skip this, newly enabled tools won't appear in the client at all, and tools the server no longer exposes still show as available but return `Unknown tool` when called. ChatGPT sometimes keeps serving the stale list even after the connector is removed and re-added under the same name — if tools are still missing after re-adding, delete the connector and create a new one with a **different name**.
|
|
398
398
|
|
|
399
|
-
For the HA app, the same option is documented in [`homeassistant-addon/DOCS.md`](homeassistant-addon/DOCS.md#enable_tool_search) along with the in-
|
|
399
|
+
For the HA app, the same option is documented in [`homeassistant-addon/DOCS.md`](homeassistant-addon/DOCS.md#enable_tool_search) along with the in-app settings UI for fine-grained tool enable/disable/pin.
|
|
400
400
|
|
|
401
401
|
---
|
|
402
402
|
|
|
@@ -364,7 +364,7 @@ Leave it off in clients with deferred tool loading (claude.ai, Claude Desktop, C
|
|
|
364
364
|
|
|
365
365
|
> 🔄 **Refresh your client's tool list after changing this (or any) setting.** Toggling `ENABLE_TOOL_SEARCH` (or changing pinned/disabled tools, Read Only Mode, etc.) changes the tools the server exposes, but your AI client keeps serving its **cached** tool list until it re-fetches. Restarting the app or Home Assistant does **not** refresh the client — reconnect or refresh the MCP server in your client (e.g. re-add/refresh the connector in ChatGPT, or close and reopen Claude Desktop). If you skip this, newly enabled tools won't appear in the client at all, and tools the server no longer exposes still show as available but return `Unknown tool` when called. ChatGPT sometimes keeps serving the stale list even after the connector is removed and re-added under the same name — if tools are still missing after re-adding, delete the connector and create a new one with a **different name**.
|
|
366
366
|
|
|
367
|
-
For the HA app, the same option is documented in [`homeassistant-addon/DOCS.md`](homeassistant-addon/DOCS.md#enable_tool_search) along with the in-
|
|
367
|
+
For the HA app, the same option is documented in [`homeassistant-addon/DOCS.md`](homeassistant-addon/DOCS.md#enable_tool_search) along with the in-app settings UI for fine-grained tool enable/disable/pin.
|
|
368
368
|
|
|
369
369
|
---
|
|
370
370
|
|
|
@@ -4,7 +4,7 @@ build-backend = "setuptools.build_meta"
|
|
|
4
4
|
|
|
5
5
|
[project]
|
|
6
6
|
name = "ha-mcp-dev"
|
|
7
|
-
version = "8.2.0.
|
|
7
|
+
version = "8.2.0.dev2364"
|
|
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
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "home-assistant-skills",
|
|
3
3
|
"description": "Agent skills for Home Assistant: best practices for automations, helpers, templates, device control, and dashboards.",
|
|
4
|
-
"version": "0.
|
|
4
|
+
"version": "0.15.0",
|
|
5
5
|
"repository": "https://github.com/homeassistant-ai/skills",
|
|
6
6
|
"license": "MIT"
|
|
7
7
|
}
|
|
@@ -0,0 +1,57 @@
|
|
|
1
|
+
# CLAUDE.md
|
|
2
|
+
|
|
3
|
+
This file provides guidance to Claude Code (claude.ai/code) when working with code in this repository.
|
|
4
|
+
|
|
5
|
+
## Project Overview
|
|
6
|
+
|
|
7
|
+
This is a community-contributed collection of **Agent Skills** for Home Assistant, following the open [Agent Skills standard](https://agentskills.io/specification). Skills teach AI agents domain expertise for configuring and controlling Home Assistant. The repository doubles as a Claude Code plugin (see `.claude-plugin/plugin.json`).
|
|
8
|
+
|
|
9
|
+
## Repository Structure
|
|
10
|
+
|
|
11
|
+
- `skills/<skill-name>/SKILL.md` — each skill lives in its own folder with a `SKILL.md` file
|
|
12
|
+
- `CONTRIBUTING.md` — skill authoring guidelines and submission workflow
|
|
13
|
+
- `.claude-plugin/plugin.json` — Claude Code plugin metadata
|
|
14
|
+
- `.claude-plugin/marketplace.json` — marketplace metadata for plugin discovery
|
|
15
|
+
- `AGENTS.md` — symlink to `CLAUDE.md` (for agents that use `AGENTS.md` convention)
|
|
16
|
+
- `.github/ISSUE_TEMPLATE/skill-rca.md` — "Report Bad Skill Advice" issue template
|
|
17
|
+
|
|
18
|
+
## Skill Format
|
|
19
|
+
|
|
20
|
+
Every skill is a `SKILL.md` file with YAML frontmatter:
|
|
21
|
+
|
|
22
|
+
```yaml
|
|
23
|
+
---
|
|
24
|
+
name: skill-name-here
|
|
25
|
+
description: >
|
|
26
|
+
When to activate this skill and what symptoms it addresses.
|
|
27
|
+
---
|
|
28
|
+
```
|
|
29
|
+
|
|
30
|
+
Constraints from CONTRIBUTING.md:
|
|
31
|
+
- Max **500 lines** per SKILL.md
|
|
32
|
+
- `metadata.version` must be `0` on new skills (do not edit manually)
|
|
33
|
+
- `name` must match `[a-z0-9-]+` and be ≤64 characters
|
|
34
|
+
- `description` frontmatter must be **≤1024 characters** (CI enforces this via `skills-ref validate`)
|
|
35
|
+
- Reference files must be **one level deep** only (e.g. `references/example.yaml`)
|
|
36
|
+
- Use **forward slashes** in all file paths
|
|
37
|
+
- Optional subdirectories: `references/` (additional docs), `scripts/` (utility scripts), `assets/` (static resources)
|
|
38
|
+
|
|
39
|
+
## Skill Authoring Principles
|
|
40
|
+
|
|
41
|
+
- **Context window conservation** — only include domain-specific knowledge that agents lack; omit general programming advice
|
|
42
|
+
- **Conciseness** — provide patterns and quick-reference tables, not tutorials
|
|
43
|
+
- **Consistent terminology** — one term per concept throughout a skill
|
|
44
|
+
- **Symptom-based triggering** — the `description` frontmatter should describe observable agent behaviors that signal the skill is needed
|
|
45
|
+
- **No tool names** — reference HA REST APIs and concepts, never specific MCP tool names (e.g. `ha_rename_entity`); tool names vary by agent setup
|
|
46
|
+
|
|
47
|
+
## Validation
|
|
48
|
+
|
|
49
|
+
CI runs two workflows on PRs and pushes to `main`:
|
|
50
|
+
- **validate-skills** — runs `skills-ref validate` on every skill when `skills/**` changes
|
|
51
|
+
- **validate-plugin** — validates `.claude-plugin/` metadata
|
|
52
|
+
|
|
53
|
+
To validate locally:
|
|
54
|
+
|
|
55
|
+
```bash
|
|
56
|
+
uvx skills-ref validate skills/<skill-name>
|
|
57
|
+
```
|
|
@@ -0,0 +1,57 @@
|
|
|
1
|
+
# CLAUDE.md
|
|
2
|
+
|
|
3
|
+
This file provides guidance to Claude Code (claude.ai/code) when working with code in this repository.
|
|
4
|
+
|
|
5
|
+
## Project Overview
|
|
6
|
+
|
|
7
|
+
This is a community-contributed collection of **Agent Skills** for Home Assistant, following the open [Agent Skills standard](https://agentskills.io/specification). Skills teach AI agents domain expertise for configuring and controlling Home Assistant. The repository doubles as a Claude Code plugin (see `.claude-plugin/plugin.json`).
|
|
8
|
+
|
|
9
|
+
## Repository Structure
|
|
10
|
+
|
|
11
|
+
- `skills/<skill-name>/SKILL.md` — each skill lives in its own folder with a `SKILL.md` file
|
|
12
|
+
- `CONTRIBUTING.md` — skill authoring guidelines and submission workflow
|
|
13
|
+
- `.claude-plugin/plugin.json` — Claude Code plugin metadata
|
|
14
|
+
- `.claude-plugin/marketplace.json` — marketplace metadata for plugin discovery
|
|
15
|
+
- `AGENTS.md` — symlink to `CLAUDE.md` (for agents that use `AGENTS.md` convention)
|
|
16
|
+
- `.github/ISSUE_TEMPLATE/skill-rca.md` — "Report Bad Skill Advice" issue template
|
|
17
|
+
|
|
18
|
+
## Skill Format
|
|
19
|
+
|
|
20
|
+
Every skill is a `SKILL.md` file with YAML frontmatter:
|
|
21
|
+
|
|
22
|
+
```yaml
|
|
23
|
+
---
|
|
24
|
+
name: skill-name-here
|
|
25
|
+
description: >
|
|
26
|
+
When to activate this skill and what symptoms it addresses.
|
|
27
|
+
---
|
|
28
|
+
```
|
|
29
|
+
|
|
30
|
+
Constraints from CONTRIBUTING.md:
|
|
31
|
+
- Max **500 lines** per SKILL.md
|
|
32
|
+
- `metadata.version` must be `0` on new skills (do not edit manually)
|
|
33
|
+
- `name` must match `[a-z0-9-]+` and be ≤64 characters
|
|
34
|
+
- `description` frontmatter must be **≤1024 characters** (CI enforces this via `skills-ref validate`)
|
|
35
|
+
- Reference files must be **one level deep** only (e.g. `references/example.yaml`)
|
|
36
|
+
- Use **forward slashes** in all file paths
|
|
37
|
+
- Optional subdirectories: `references/` (additional docs), `scripts/` (utility scripts), `assets/` (static resources)
|
|
38
|
+
|
|
39
|
+
## Skill Authoring Principles
|
|
40
|
+
|
|
41
|
+
- **Context window conservation** — only include domain-specific knowledge that agents lack; omit general programming advice
|
|
42
|
+
- **Conciseness** — provide patterns and quick-reference tables, not tutorials
|
|
43
|
+
- **Consistent terminology** — one term per concept throughout a skill
|
|
44
|
+
- **Symptom-based triggering** — the `description` frontmatter should describe observable agent behaviors that signal the skill is needed
|
|
45
|
+
- **No tool names** — reference HA REST APIs and concepts, never specific MCP tool names (e.g. `ha_rename_entity`); tool names vary by agent setup
|
|
46
|
+
|
|
47
|
+
## Validation
|
|
48
|
+
|
|
49
|
+
CI runs two workflows on PRs and pushes to `main`:
|
|
50
|
+
- **validate-skills** — runs `skills-ref validate` on every skill when `skills/**` changes
|
|
51
|
+
- **validate-plugin** — validates `.claude-plugin/` metadata
|
|
52
|
+
|
|
53
|
+
To validate locally:
|
|
54
|
+
|
|
55
|
+
```bash
|
|
56
|
+
uvx skills-ref validate skills/<skill-name>
|
|
57
|
+
```
|
|
@@ -927,36 +927,6 @@ variables:
|
|
|
927
927
|
|
|
928
928
|
`trigger_variables:` is a separate top-level key evaluated **before** triggers fire — it supports **limited templates only** (no `states()`/`state_attr()`), mainly for passing a blueprint `!input` into trigger options. Don't put state-based templates there.
|
|
929
929
|
|
|
930
|
-
### Keys render in order, one at a time
|
|
931
|
-
|
|
932
|
-
A `variables:` block renders one key at a time, each rendered result feeding the context for the next. A key that reads a name declared **further down the same block** reads it while it is still undefined.
|
|
933
|
-
|
|
934
|
-
```yaml
|
|
935
|
-
# AVOID — `total` is still undefined when `msg` renders
|
|
936
|
-
variables:
|
|
937
|
-
msg: "Total: {{ total }}"
|
|
938
|
-
total: "{{ states('sensor.a') | float(0) + states('sensor.b') | float(0) }}"
|
|
939
|
-
|
|
940
|
-
# CORRECT — declare before use
|
|
941
|
-
variables:
|
|
942
|
-
total: "{{ states('sensor.a') | float(0) + states('sensor.b') | float(0) }}"
|
|
943
|
-
msg: "Total: {{ total }}"
|
|
944
|
-
```
|
|
945
|
-
|
|
946
|
-
What the forward read costs depends on how the template uses the name (behavior as of 2026.7):
|
|
947
|
-
|
|
948
|
-
| Use of the undefined name | Result |
|
|
949
|
-
|---|---|
|
|
950
|
-
| `x.attr`, `x['k']`, arithmetic, `<`/`>`/`<=`/`>=`, `\| int`, `\| float` | Raises `UndefinedError`, logs ERROR — **aborts the run** |
|
|
951
|
-
| `{{ x }}`, `{% if x %}`, `{% for i in x %}`, `'p' ~ x` | Empty and falsy, logs WARNING — runs on into the else branch |
|
|
952
|
-
| `x \| length`, `x == y`, `x != y` | `0` / `False` / `True` — **no log and no trace entry** |
|
|
953
|
-
|
|
954
|
-
For the aborting row, [`continue_on_error:`](#continue-on-error) is no escape — it is an action option, a top-level block is not an action, and on a mid-sequence step it cannot suppress a render error. A default like `| int(0)` does not save it either: the default covers an unconvertible value, not an undefined name. In the silent row, watch `!=`: `{% if later != 'x' %}` on a name that is not defined yet takes the **then** branch, leaving nothing behind to explain why.
|
|
955
|
-
|
|
956
|
-
Not a problem when the name also exists in an enclosing scope — the reference then resolves outward to that value. The two placements diverge on that collision, though: a top-level `variables:` block **skips** a key already present in the incoming scope, so the incoming value stands and the block's own definition never takes effect for that run, while a mid-sequence `- variables:` step renders and **overwrites** it. Staging a computation across consecutive `variables:` steps is therefore mid-sequence only.
|
|
957
|
-
|
|
958
|
-
When an automation declares both `trigger_variables:` and `variables:`, the two render as one sequential mapping with `trigger_variables:` first, so a `variables:` key may read a `trigger_variables:` key but not the reverse. That holds for names declared in only one of the two: a name in both merges into a single entry that keeps the `trigger_variables:` position but takes the `variables:` template, so it renders early — before any `trigger_variables:` key declared after it. The separate attach-time render noted above happens before any `variables:` key exists.
|
|
959
|
-
|
|
960
930
|
---
|
|
961
931
|
|
|
962
932
|
## Capturing Action Responses
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: ha-mcp-dev
|
|
3
|
-
Version: 8.2.0.
|
|
3
|
+
Version: 8.2.0.dev2364
|
|
4
4
|
Summary: Home Assistant MCP Server - Complete control of Home Assistant through MCP
|
|
5
5
|
Author-email: Julien <github@qc-h.net>
|
|
6
6
|
License: MIT
|
|
@@ -396,7 +396,7 @@ Leave it off in clients with deferred tool loading (claude.ai, Claude Desktop, C
|
|
|
396
396
|
|
|
397
397
|
> 🔄 **Refresh your client's tool list after changing this (or any) setting.** Toggling `ENABLE_TOOL_SEARCH` (or changing pinned/disabled tools, Read Only Mode, etc.) changes the tools the server exposes, but your AI client keeps serving its **cached** tool list until it re-fetches. Restarting the app or Home Assistant does **not** refresh the client — reconnect or refresh the MCP server in your client (e.g. re-add/refresh the connector in ChatGPT, or close and reopen Claude Desktop). If you skip this, newly enabled tools won't appear in the client at all, and tools the server no longer exposes still show as available but return `Unknown tool` when called. ChatGPT sometimes keeps serving the stale list even after the connector is removed and re-added under the same name — if tools are still missing after re-adding, delete the connector and create a new one with a **different name**.
|
|
398
398
|
|
|
399
|
-
For the HA app, the same option is documented in [`homeassistant-addon/DOCS.md`](homeassistant-addon/DOCS.md#enable_tool_search) along with the in-
|
|
399
|
+
For the HA app, the same option is documented in [`homeassistant-addon/DOCS.md`](homeassistant-addon/DOCS.md#enable_tool_search) along with the in-app settings UI for fine-grained tool enable/disable/pin.
|
|
400
400
|
|
|
401
401
|
---
|
|
402
402
|
|
|
@@ -1,40 +0,0 @@
|
|
|
1
|
-
# CLAUDE.md
|
|
2
|
-
|
|
3
|
-
This file provides guidance to Claude Code (claude.ai/code) when working with code in this repository.
|
|
4
|
-
|
|
5
|
-
## Skill Format
|
|
6
|
-
|
|
7
|
-
Every skill is a `SKILL.md` file with YAML frontmatter:
|
|
8
|
-
|
|
9
|
-
```yaml
|
|
10
|
-
---
|
|
11
|
-
name: skill-name-here
|
|
12
|
-
description: >
|
|
13
|
-
When to activate this skill and what symptoms it addresses.
|
|
14
|
-
---
|
|
15
|
-
```
|
|
16
|
-
|
|
17
|
-
Full authoring constraints: `CONTRIBUTING.md`. The one CI cannot catch:
|
|
18
|
-
- `metadata.version` must be `0` on new skills — do not edit manually; CI assigns the real version on merge
|
|
19
|
-
|
|
20
|
-
## Skill Authoring Principles
|
|
21
|
-
|
|
22
|
-
- **Context window conservation** — only include domain-specific knowledge that agents lack; omit general programming advice
|
|
23
|
-
- **Conciseness** — provide patterns and quick-reference tables, not tutorials
|
|
24
|
-
- **Consistent terminology** — one term per concept throughout a skill
|
|
25
|
-
- **Symptom-based triggering** — the `description` frontmatter should describe observable agent behaviors that signal the skill is needed
|
|
26
|
-
- **No tool names** — reference HA REST APIs and concepts, never specific MCP tool names (e.g. `ha_rename_entity`); tool names vary by agent setup
|
|
27
|
-
|
|
28
|
-
## Validation
|
|
29
|
-
|
|
30
|
-
To validate locally:
|
|
31
|
-
|
|
32
|
-
```bash
|
|
33
|
-
uvx skills-ref validate skills/<skill-name>
|
|
34
|
-
```
|
|
35
|
-
|
|
36
|
-
## Reviewing Skill PRs
|
|
37
|
-
|
|
38
|
-
- Judge prose as agent-consumed context, not human docs — the Skill Authoring Principles above are the review bar (e.g. an operator→result lookup table beats narrative bullets, because agents land here holding one case to resolve)
|
|
39
|
-
- Skills make version-pinned claims about HA behavior — verify against source at the release tag: `gh api repos/home-assistant/core/contents/<path>?ref=2026.7.4 --jq .content | base64 -d`
|
|
40
|
-
- Community PRs come from forks: base-repo `?ref=<pr-branch>` 404s; get the fork with `gh pr view <pr> --json headRepository` and fetch files from there
|
|
@@ -1,40 +0,0 @@
|
|
|
1
|
-
# CLAUDE.md
|
|
2
|
-
|
|
3
|
-
This file provides guidance to Claude Code (claude.ai/code) when working with code in this repository.
|
|
4
|
-
|
|
5
|
-
## Skill Format
|
|
6
|
-
|
|
7
|
-
Every skill is a `SKILL.md` file with YAML frontmatter:
|
|
8
|
-
|
|
9
|
-
```yaml
|
|
10
|
-
---
|
|
11
|
-
name: skill-name-here
|
|
12
|
-
description: >
|
|
13
|
-
When to activate this skill and what symptoms it addresses.
|
|
14
|
-
---
|
|
15
|
-
```
|
|
16
|
-
|
|
17
|
-
Full authoring constraints: `CONTRIBUTING.md`. The one CI cannot catch:
|
|
18
|
-
- `metadata.version` must be `0` on new skills — do not edit manually; CI assigns the real version on merge
|
|
19
|
-
|
|
20
|
-
## Skill Authoring Principles
|
|
21
|
-
|
|
22
|
-
- **Context window conservation** — only include domain-specific knowledge that agents lack; omit general programming advice
|
|
23
|
-
- **Conciseness** — provide patterns and quick-reference tables, not tutorials
|
|
24
|
-
- **Consistent terminology** — one term per concept throughout a skill
|
|
25
|
-
- **Symptom-based triggering** — the `description` frontmatter should describe observable agent behaviors that signal the skill is needed
|
|
26
|
-
- **No tool names** — reference HA REST APIs and concepts, never specific MCP tool names (e.g. `ha_rename_entity`); tool names vary by agent setup
|
|
27
|
-
|
|
28
|
-
## Validation
|
|
29
|
-
|
|
30
|
-
To validate locally:
|
|
31
|
-
|
|
32
|
-
```bash
|
|
33
|
-
uvx skills-ref validate skills/<skill-name>
|
|
34
|
-
```
|
|
35
|
-
|
|
36
|
-
## Reviewing Skill PRs
|
|
37
|
-
|
|
38
|
-
- Judge prose as agent-consumed context, not human docs — the Skill Authoring Principles above are the review bar (e.g. an operator→result lookup table beats narrative bullets, because agents land here holding one case to resolve)
|
|
39
|
-
- Skills make version-pinned claims about HA behavior — verify against source at the release tag: `gh api repos/home-assistant/core/contents/<path>?ref=2026.7.4 --jq .content | base64 -d`
|
|
40
|
-
- Community PRs come from forks: base-repo `?ref=<pr-branch>` 404s; get the fork with `gh pr view <pr> --json headRepository` and fetch files from there
|
|
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.2.0.dev2362 → ha_mcp_dev-8.2.0.dev2364}/src/ha_mcp/_vendor/websockets/MANIFEST.sha256
RENAMED
|
File without changes
|
{ha_mcp_dev-8.2.0.dev2362 → ha_mcp_dev-8.2.0.dev2364}/src/ha_mcp/_vendor/websockets/VENDORED
RENAMED
|
File without changes
|
{ha_mcp_dev-8.2.0.dev2362 → ha_mcp_dev-8.2.0.dev2364}/src/ha_mcp/_vendor/websockets/__init__.py
RENAMED
|
File without changes
|
{ha_mcp_dev-8.2.0.dev2362 → ha_mcp_dev-8.2.0.dev2364}/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.2.0.dev2362 → ha_mcp_dev-8.2.0.dev2364}/src/ha_mcp/_vendor/websockets/client.py
RENAMED
|
File without changes
|
{ha_mcp_dev-8.2.0.dev2362 → ha_mcp_dev-8.2.0.dev2364}/src/ha_mcp/_vendor/websockets/connection.py
RENAMED
|
File without changes
|
|
File without changes
|
{ha_mcp_dev-8.2.0.dev2362 → ha_mcp_dev-8.2.0.dev2364}/src/ha_mcp/_vendor/websockets/exceptions.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{ha_mcp_dev-8.2.0.dev2362 → ha_mcp_dev-8.2.0.dev2364}/src/ha_mcp/_vendor/websockets/frames.py
RENAMED
|
File without changes
|
{ha_mcp_dev-8.2.0.dev2362 → ha_mcp_dev-8.2.0.dev2364}/src/ha_mcp/_vendor/websockets/headers.py
RENAMED
|
File without changes
|
{ha_mcp_dev-8.2.0.dev2362 → ha_mcp_dev-8.2.0.dev2364}/src/ha_mcp/_vendor/websockets/http11.py
RENAMED
|
File without changes
|
{ha_mcp_dev-8.2.0.dev2362 → ha_mcp_dev-8.2.0.dev2364}/src/ha_mcp/_vendor/websockets/imports.py
RENAMED
|
File without changes
|
|
File without changes
|
{ha_mcp_dev-8.2.0.dev2362 → ha_mcp_dev-8.2.0.dev2364}/src/ha_mcp/_vendor/websockets/legacy/auth.py
RENAMED
|
File without changes
|
{ha_mcp_dev-8.2.0.dev2362 → ha_mcp_dev-8.2.0.dev2364}/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.2.0.dev2362 → ha_mcp_dev-8.2.0.dev2364}/src/ha_mcp/_vendor/websockets/legacy/http.py
RENAMED
|
File without changes
|
|
File without changes
|
{ha_mcp_dev-8.2.0.dev2362 → ha_mcp_dev-8.2.0.dev2364}/src/ha_mcp/_vendor/websockets/legacy/server.py
RENAMED
|
File without changes
|
{ha_mcp_dev-8.2.0.dev2362 → ha_mcp_dev-8.2.0.dev2364}/src/ha_mcp/_vendor/websockets/protocol.py
RENAMED
|
File without changes
|
{ha_mcp_dev-8.2.0.dev2362 → ha_mcp_dev-8.2.0.dev2364}/src/ha_mcp/_vendor/websockets/proxy.py
RENAMED
|
File without changes
|
{ha_mcp_dev-8.2.0.dev2362 → ha_mcp_dev-8.2.0.dev2364}/src/ha_mcp/_vendor/websockets/py.typed
RENAMED
|
File without changes
|
{ha_mcp_dev-8.2.0.dev2362 → ha_mcp_dev-8.2.0.dev2364}/src/ha_mcp/_vendor/websockets/server.py
RENAMED
|
File without changes
|
{ha_mcp_dev-8.2.0.dev2362 → ha_mcp_dev-8.2.0.dev2364}/src/ha_mcp/_vendor/websockets/streams.py
RENAMED
|
File without changes
|
{ha_mcp_dev-8.2.0.dev2362 → ha_mcp_dev-8.2.0.dev2364}/src/ha_mcp/_vendor/websockets/sync/__init__.py
RENAMED
|
File without changes
|
{ha_mcp_dev-8.2.0.dev2362 → ha_mcp_dev-8.2.0.dev2364}/src/ha_mcp/_vendor/websockets/sync/client.py
RENAMED
|
File without changes
|
|
File without changes
|
{ha_mcp_dev-8.2.0.dev2362 → ha_mcp_dev-8.2.0.dev2364}/src/ha_mcp/_vendor/websockets/sync/messages.py
RENAMED
|
File without changes
|
{ha_mcp_dev-8.2.0.dev2362 → ha_mcp_dev-8.2.0.dev2364}/src/ha_mcp/_vendor/websockets/sync/router.py
RENAMED
|
File without changes
|
{ha_mcp_dev-8.2.0.dev2362 → ha_mcp_dev-8.2.0.dev2364}/src/ha_mcp/_vendor/websockets/sync/server.py
RENAMED
|
File without changes
|
{ha_mcp_dev-8.2.0.dev2362 → ha_mcp_dev-8.2.0.dev2364}/src/ha_mcp/_vendor/websockets/sync/utils.py
RENAMED
|
File without changes
|
{ha_mcp_dev-8.2.0.dev2362 → ha_mcp_dev-8.2.0.dev2364}/src/ha_mcp/_vendor/websockets/trio/__init__.py
RENAMED
|
File without changes
|
{ha_mcp_dev-8.2.0.dev2362 → ha_mcp_dev-8.2.0.dev2364}/src/ha_mcp/_vendor/websockets/trio/client.py
RENAMED
|
File without changes
|
|
File without changes
|
{ha_mcp_dev-8.2.0.dev2362 → ha_mcp_dev-8.2.0.dev2364}/src/ha_mcp/_vendor/websockets/trio/messages.py
RENAMED
|
File without changes
|
{ha_mcp_dev-8.2.0.dev2362 → ha_mcp_dev-8.2.0.dev2364}/src/ha_mcp/_vendor/websockets/trio/router.py
RENAMED
|
File without changes
|
{ha_mcp_dev-8.2.0.dev2362 → ha_mcp_dev-8.2.0.dev2364}/src/ha_mcp/_vendor/websockets/trio/server.py
RENAMED
|
File without changes
|
{ha_mcp_dev-8.2.0.dev2362 → ha_mcp_dev-8.2.0.dev2364}/src/ha_mcp/_vendor/websockets/trio/utils.py
RENAMED
|
File without changes
|
{ha_mcp_dev-8.2.0.dev2362 → ha_mcp_dev-8.2.0.dev2364}/src/ha_mcp/_vendor/websockets/typing.py
RENAMED
|
File without changes
|
|
File without changes
|
{ha_mcp_dev-8.2.0.dev2362 → ha_mcp_dev-8.2.0.dev2364}/src/ha_mcp/_vendor/websockets/utils.py
RENAMED
|
File without changes
|
{ha_mcp_dev-8.2.0.dev2362 → ha_mcp_dev-8.2.0.dev2364}/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.2.0.dev2362 → ha_mcp_dev-8.2.0.dev2364}/src/ha_mcp/client/supervisor_client.py
RENAMED
|
File without changes
|
|
File without changes
|
{ha_mcp_dev-8.2.0.dev2362 → ha_mcp_dev-8.2.0.dev2364}/src/ha_mcp/client/websocket_listener.py
RENAMED
|
File without changes
|
|
File without changes
|
{ha_mcp_dev-8.2.0.dev2362 → ha_mcp_dev-8.2.0.dev2364}/src/ha_mcp/dashboard_screenshot/__init__.py
RENAMED
|
File without changes
|
{ha_mcp_dev-8.2.0.dev2362 → ha_mcp_dev-8.2.0.dev2364}/src/ha_mcp/dashboard_screenshot/capture.py
RENAMED
|
File without changes
|
{ha_mcp_dev-8.2.0.dev2362 → ha_mcp_dev-8.2.0.dev2364}/src/ha_mcp/dashboard_screenshot/content.py
RENAMED
|
File without changes
|
{ha_mcp_dev-8.2.0.dev2362 → ha_mcp_dev-8.2.0.dev2364}/src/ha_mcp/dashboard_screenshot/paths.py
RENAMED
|
File without changes
|
{ha_mcp_dev-8.2.0.dev2362 → ha_mcp_dev-8.2.0.dev2364}/src/ha_mcp/dashboard_screenshot/provision.py
RENAMED
|
File without changes
|
{ha_mcp_dev-8.2.0.dev2362 → ha_mcp_dev-8.2.0.dev2364}/src/ha_mcp/dashboard_screenshot/theme_guard.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{ha_mcp_dev-8.2.0.dev2362 → ha_mcp_dev-8.2.0.dev2364}/src/ha_mcp/resources/skills-vendor/LICENSE
RENAMED
|
File without changes
|
{ha_mcp_dev-8.2.0.dev2362 → ha_mcp_dev-8.2.0.dev2364}/src/ha_mcp/resources/skills-vendor/README.md
RENAMED
|
File without changes
|
|
File without changes
|