ha-mcp-dev 7.12.2.dev1849__tar.gz → 7.12.3.dev1855__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-7.12.2.dev1849/src/ha_mcp_dev.egg-info → ha_mcp_dev-7.12.3.dev1855}/PKG-INFO +1 -1
- {ha_mcp_dev-7.12.2.dev1849 → ha_mcp_dev-7.12.3.dev1855}/pyproject.toml +1 -1
- {ha_mcp_dev-7.12.2.dev1849 → ha_mcp_dev-7.12.3.dev1855}/src/ha_mcp/tools/tools_bug_report.py +40 -0
- {ha_mcp_dev-7.12.2.dev1849 → ha_mcp_dev-7.12.3.dev1855/src/ha_mcp_dev.egg-info}/PKG-INFO +1 -1
- {ha_mcp_dev-7.12.2.dev1849 → ha_mcp_dev-7.12.3.dev1855}/LICENSE +0 -0
- {ha_mcp_dev-7.12.2.dev1849 → ha_mcp_dev-7.12.3.dev1855}/MANIFEST.in +0 -0
- {ha_mcp_dev-7.12.2.dev1849 → ha_mcp_dev-7.12.3.dev1855}/README.md +0 -0
- {ha_mcp_dev-7.12.2.dev1849 → ha_mcp_dev-7.12.3.dev1855}/setup.cfg +0 -0
- {ha_mcp_dev-7.12.2.dev1849 → ha_mcp_dev-7.12.3.dev1855}/src/ha_mcp/__init__.py +0 -0
- {ha_mcp_dev-7.12.2.dev1849 → ha_mcp_dev-7.12.3.dev1855}/src/ha_mcp/__main__.py +0 -0
- {ha_mcp_dev-7.12.2.dev1849 → ha_mcp_dev-7.12.3.dev1855}/src/ha_mcp/_pypi_marker +0 -0
- {ha_mcp_dev-7.12.2.dev1849 → ha_mcp_dev-7.12.3.dev1855}/src/ha_mcp/_version.py +0 -0
- {ha_mcp_dev-7.12.2.dev1849 → ha_mcp_dev-7.12.3.dev1855}/src/ha_mcp/auth/__init__.py +0 -0
- {ha_mcp_dev-7.12.2.dev1849 → ha_mcp_dev-7.12.3.dev1855}/src/ha_mcp/auth/consent_form.py +0 -0
- {ha_mcp_dev-7.12.2.dev1849 → ha_mcp_dev-7.12.3.dev1855}/src/ha_mcp/auth/provider.py +0 -0
- {ha_mcp_dev-7.12.2.dev1849 → ha_mcp_dev-7.12.3.dev1855}/src/ha_mcp/backup_manager.py +0 -0
- {ha_mcp_dev-7.12.2.dev1849 → ha_mcp_dev-7.12.3.dev1855}/src/ha_mcp/browser_landing.py +0 -0
- {ha_mcp_dev-7.12.2.dev1849 → ha_mcp_dev-7.12.3.dev1855}/src/ha_mcp/client/__init__.py +0 -0
- {ha_mcp_dev-7.12.2.dev1849 → ha_mcp_dev-7.12.3.dev1855}/src/ha_mcp/client/rest_client.py +0 -0
- {ha_mcp_dev-7.12.2.dev1849 → ha_mcp_dev-7.12.3.dev1855}/src/ha_mcp/client/supervisor_client.py +0 -0
- {ha_mcp_dev-7.12.2.dev1849 → ha_mcp_dev-7.12.3.dev1855}/src/ha_mcp/client/websocket_client.py +0 -0
- {ha_mcp_dev-7.12.2.dev1849 → ha_mcp_dev-7.12.3.dev1855}/src/ha_mcp/client/websocket_listener.py +0 -0
- {ha_mcp_dev-7.12.2.dev1849 → ha_mcp_dev-7.12.3.dev1855}/src/ha_mcp/config.py +0 -0
- {ha_mcp_dev-7.12.2.dev1849 → ha_mcp_dev-7.12.3.dev1855}/src/ha_mcp/dashboard_screenshot/__init__.py +0 -0
- {ha_mcp_dev-7.12.2.dev1849 → ha_mcp_dev-7.12.3.dev1855}/src/ha_mcp/dashboard_screenshot/capture.py +0 -0
- {ha_mcp_dev-7.12.2.dev1849 → ha_mcp_dev-7.12.3.dev1855}/src/ha_mcp/dashboard_screenshot/provision.py +0 -0
- {ha_mcp_dev-7.12.2.dev1849 → ha_mcp_dev-7.12.3.dev1855}/src/ha_mcp/errors.py +0 -0
- {ha_mcp_dev-7.12.2.dev1849 → ha_mcp_dev-7.12.3.dev1855}/src/ha_mcp/policy/__init__.py +0 -0
- {ha_mcp_dev-7.12.2.dev1849 → ha_mcp_dev-7.12.3.dev1855}/src/ha_mcp/policy/approval_queue.py +0 -0
- {ha_mcp_dev-7.12.2.dev1849 → ha_mcp_dev-7.12.3.dev1855}/src/ha_mcp/policy/evaluator.py +0 -0
- {ha_mcp_dev-7.12.2.dev1849 → ha_mcp_dev-7.12.3.dev1855}/src/ha_mcp/policy/handlers.py +0 -0
- {ha_mcp_dev-7.12.2.dev1849 → ha_mcp_dev-7.12.3.dev1855}/src/ha_mcp/policy/middleware.py +0 -0
- {ha_mcp_dev-7.12.2.dev1849 → ha_mcp_dev-7.12.3.dev1855}/src/ha_mcp/policy/model.py +0 -0
- {ha_mcp_dev-7.12.2.dev1849 → ha_mcp_dev-7.12.3.dev1855}/src/ha_mcp/policy/persistence.py +0 -0
- {ha_mcp_dev-7.12.2.dev1849 → ha_mcp_dev-7.12.3.dev1855}/src/ha_mcp/policy/value_sources.py +0 -0
- {ha_mcp_dev-7.12.2.dev1849 → ha_mcp_dev-7.12.3.dev1855}/src/ha_mcp/py.typed +0 -0
- {ha_mcp_dev-7.12.2.dev1849 → ha_mcp_dev-7.12.3.dev1855}/src/ha_mcp/read_only.py +0 -0
- {ha_mcp_dev-7.12.2.dev1849 → ha_mcp_dev-7.12.3.dev1855}/src/ha_mcp/resources/skills-vendor/.claude/settings.json +0 -0
- {ha_mcp_dev-7.12.2.dev1849 → ha_mcp_dev-7.12.3.dev1855}/src/ha_mcp/resources/skills-vendor/.claude-plugin/marketplace.json +0 -0
- {ha_mcp_dev-7.12.2.dev1849 → ha_mcp_dev-7.12.3.dev1855}/src/ha_mcp/resources/skills-vendor/.claude-plugin/plugin.json +0 -0
- {ha_mcp_dev-7.12.2.dev1849 → ha_mcp_dev-7.12.3.dev1855}/src/ha_mcp/resources/skills-vendor/.github/ISSUE_TEMPLATE/skill-rca.md +0 -0
- {ha_mcp_dev-7.12.2.dev1849 → ha_mcp_dev-7.12.3.dev1855}/src/ha_mcp/resources/skills-vendor/.github/pull_request_template.md +0 -0
- {ha_mcp_dev-7.12.2.dev1849 → ha_mcp_dev-7.12.3.dev1855}/src/ha_mcp/resources/skills-vendor/AGENTS.md +0 -0
- {ha_mcp_dev-7.12.2.dev1849 → ha_mcp_dev-7.12.3.dev1855}/src/ha_mcp/resources/skills-vendor/CLAUDE.md +0 -0
- {ha_mcp_dev-7.12.2.dev1849 → ha_mcp_dev-7.12.3.dev1855}/src/ha_mcp/resources/skills-vendor/CONTRIBUTING.md +0 -0
- {ha_mcp_dev-7.12.2.dev1849 → ha_mcp_dev-7.12.3.dev1855}/src/ha_mcp/resources/skills-vendor/LICENSE +0 -0
- {ha_mcp_dev-7.12.2.dev1849 → ha_mcp_dev-7.12.3.dev1855}/src/ha_mcp/resources/skills-vendor/README.md +0 -0
- {ha_mcp_dev-7.12.2.dev1849 → ha_mcp_dev-7.12.3.dev1855}/src/ha_mcp/resources/skills-vendor/skills/home-assistant-best-practices/SKILL.md +0 -0
- {ha_mcp_dev-7.12.2.dev1849 → ha_mcp_dev-7.12.3.dev1855}/src/ha_mcp/resources/skills-vendor/skills/home-assistant-best-practices/evals/evals.json +0 -0
- {ha_mcp_dev-7.12.2.dev1849 → ha_mcp_dev-7.12.3.dev1855}/src/ha_mcp/resources/skills-vendor/skills/home-assistant-best-practices/references/appdaemon.md +0 -0
- {ha_mcp_dev-7.12.2.dev1849 → ha_mcp_dev-7.12.3.dev1855}/src/ha_mcp/resources/skills-vendor/skills/home-assistant-best-practices/references/automation-patterns.md +0 -0
- {ha_mcp_dev-7.12.2.dev1849 → ha_mcp_dev-7.12.3.dev1855}/src/ha_mcp/resources/skills-vendor/skills/home-assistant-best-practices/references/blueprint-guide.md +0 -0
- {ha_mcp_dev-7.12.2.dev1849 → ha_mcp_dev-7.12.3.dev1855}/src/ha_mcp/resources/skills-vendor/skills/home-assistant-best-practices/references/dashboard-cards.md +0 -0
- {ha_mcp_dev-7.12.2.dev1849 → ha_mcp_dev-7.12.3.dev1855}/src/ha_mcp/resources/skills-vendor/skills/home-assistant-best-practices/references/dashboard-guide.md +0 -0
- {ha_mcp_dev-7.12.2.dev1849 → ha_mcp_dev-7.12.3.dev1855}/src/ha_mcp/resources/skills-vendor/skills/home-assistant-best-practices/references/device-control.md +0 -0
- {ha_mcp_dev-7.12.2.dev1849 → ha_mcp_dev-7.12.3.dev1855}/src/ha_mcp/resources/skills-vendor/skills/home-assistant-best-practices/references/domain-docs.md +0 -0
- {ha_mcp_dev-7.12.2.dev1849 → ha_mcp_dev-7.12.3.dev1855}/src/ha_mcp/resources/skills-vendor/skills/home-assistant-best-practices/references/examples.yaml +0 -0
- {ha_mcp_dev-7.12.2.dev1849 → ha_mcp_dev-7.12.3.dev1855}/src/ha_mcp/resources/skills-vendor/skills/home-assistant-best-practices/references/helper-selection.md +0 -0
- {ha_mcp_dev-7.12.2.dev1849 → ha_mcp_dev-7.12.3.dev1855}/src/ha_mcp/resources/skills-vendor/skills/home-assistant-best-practices/references/safe-refactoring.md +0 -0
- {ha_mcp_dev-7.12.2.dev1849 → ha_mcp_dev-7.12.3.dev1855}/src/ha_mcp/resources/skills-vendor/skills/home-assistant-best-practices/references/scenes.md +0 -0
- {ha_mcp_dev-7.12.2.dev1849 → ha_mcp_dev-7.12.3.dev1855}/src/ha_mcp/resources/skills-vendor/skills/home-assistant-best-practices/references/template-guidelines.md +0 -0
- {ha_mcp_dev-7.12.2.dev1849 → ha_mcp_dev-7.12.3.dev1855}/src/ha_mcp/resources/skills-vendor/skills/home-assistant-best-practices/references/yaml-only-integrations.md +0 -0
- {ha_mcp_dev-7.12.2.dev1849 → ha_mcp_dev-7.12.3.dev1855}/src/ha_mcp/server.py +0 -0
- {ha_mcp_dev-7.12.2.dev1849 → ha_mcp_dev-7.12.3.dev1855}/src/ha_mcp/settings_ui/__init__.py +0 -0
- {ha_mcp_dev-7.12.2.dev1849 → ha_mcp_dev-7.12.3.dev1855}/src/ha_mcp/settings_ui/settings.css +0 -0
- {ha_mcp_dev-7.12.2.dev1849 → ha_mcp_dev-7.12.3.dev1855}/src/ha_mcp/settings_ui/settings.html +0 -0
- {ha_mcp_dev-7.12.2.dev1849 → ha_mcp_dev-7.12.3.dev1855}/src/ha_mcp/settings_ui/settings.js +0 -0
- {ha_mcp_dev-7.12.2.dev1849 → ha_mcp_dev-7.12.3.dev1855}/src/ha_mcp/smoke_test.py +0 -0
- {ha_mcp_dev-7.12.2.dev1849 → ha_mcp_dev-7.12.3.dev1855}/src/ha_mcp/stdio_settings_sidecar.py +0 -0
- {ha_mcp_dev-7.12.2.dev1849 → ha_mcp_dev-7.12.3.dev1855}/src/ha_mcp/tools/__init__.py +0 -0
- {ha_mcp_dev-7.12.2.dev1849 → ha_mcp_dev-7.12.3.dev1855}/src/ha_mcp/tools/auto_backup.py +0 -0
- {ha_mcp_dev-7.12.2.dev1849 → ha_mcp_dev-7.12.3.dev1855}/src/ha_mcp/tools/backup.py +0 -0
- {ha_mcp_dev-7.12.2.dev1849 → ha_mcp_dev-7.12.3.dev1855}/src/ha_mcp/tools/best_practice_checker.py +0 -0
- {ha_mcp_dev-7.12.2.dev1849 → ha_mcp_dev-7.12.3.dev1855}/src/ha_mcp/tools/config_entry_flow.py +0 -0
- {ha_mcp_dev-7.12.2.dev1849 → ha_mcp_dev-7.12.3.dev1855}/src/ha_mcp/tools/device_control.py +0 -0
- {ha_mcp_dev-7.12.2.dev1849 → ha_mcp_dev-7.12.3.dev1855}/src/ha_mcp/tools/enhanced.py +0 -0
- {ha_mcp_dev-7.12.2.dev1849 → ha_mcp_dev-7.12.3.dev1855}/src/ha_mcp/tools/helpers.py +0 -0
- {ha_mcp_dev-7.12.2.dev1849 → ha_mcp_dev-7.12.3.dev1855}/src/ha_mcp/tools/radio/__init__.py +0 -0
- {ha_mcp_dev-7.12.2.dev1849 → ha_mcp_dev-7.12.3.dev1855}/src/ha_mcp/tools/radio/base.py +0 -0
- {ha_mcp_dev-7.12.2.dev1849 → ha_mcp_dev-7.12.3.dev1855}/src/ha_mcp/tools/radio/matter.py +0 -0
- {ha_mcp_dev-7.12.2.dev1849 → ha_mcp_dev-7.12.3.dev1855}/src/ha_mcp/tools/radio/thread.py +0 -0
- {ha_mcp_dev-7.12.2.dev1849 → ha_mcp_dev-7.12.3.dev1855}/src/ha_mcp/tools/radio/zigbee.py +0 -0
- {ha_mcp_dev-7.12.2.dev1849 → ha_mcp_dev-7.12.3.dev1855}/src/ha_mcp/tools/radio/zwave.py +0 -0
- {ha_mcp_dev-7.12.2.dev1849 → ha_mcp_dev-7.12.3.dev1855}/src/ha_mcp/tools/reference_validator.py +0 -0
- {ha_mcp_dev-7.12.2.dev1849 → ha_mcp_dev-7.12.3.dev1855}/src/ha_mcp/tools/registry.py +0 -0
- {ha_mcp_dev-7.12.2.dev1849 → ha_mcp_dev-7.12.3.dev1855}/src/ha_mcp/tools/smart_search/__init__.py +0 -0
- {ha_mcp_dev-7.12.2.dev1849 → ha_mcp_dev-7.12.3.dev1855}/src/ha_mcp/tools/smart_search/_base.py +0 -0
- {ha_mcp_dev-7.12.2.dev1849 → ha_mcp_dev-7.12.3.dev1855}/src/ha_mcp/tools/smart_search/_config.py +0 -0
- {ha_mcp_dev-7.12.2.dev1849 → ha_mcp_dev-7.12.3.dev1855}/src/ha_mcp/tools/smart_search/_deep.py +0 -0
- {ha_mcp_dev-7.12.2.dev1849 → ha_mcp_dev-7.12.3.dev1855}/src/ha_mcp/tools/smart_search/_entities.py +0 -0
- {ha_mcp_dev-7.12.2.dev1849 → ha_mcp_dev-7.12.3.dev1855}/src/ha_mcp/tools/smart_search/_fetch.py +0 -0
- {ha_mcp_dev-7.12.2.dev1849 → ha_mcp_dev-7.12.3.dev1855}/src/ha_mcp/tools/smart_search/_overview.py +0 -0
- {ha_mcp_dev-7.12.2.dev1849 → ha_mcp_dev-7.12.3.dev1855}/src/ha_mcp/tools/smart_search/_scenes.py +0 -0
- {ha_mcp_dev-7.12.2.dev1849 → ha_mcp_dev-7.12.3.dev1855}/src/ha_mcp/tools/smart_search/_scoring.py +0 -0
- {ha_mcp_dev-7.12.2.dev1849 → ha_mcp_dev-7.12.3.dev1855}/src/ha_mcp/tools/tool_search_hint_middleware.py +0 -0
- {ha_mcp_dev-7.12.2.dev1849 → ha_mcp_dev-7.12.3.dev1855}/src/ha_mcp/tools/tools_addons.py +0 -0
- {ha_mcp_dev-7.12.2.dev1849 → ha_mcp_dev-7.12.3.dev1855}/src/ha_mcp/tools/tools_areas.py +0 -0
- {ha_mcp_dev-7.12.2.dev1849 → ha_mcp_dev-7.12.3.dev1855}/src/ha_mcp/tools/tools_blueprints.py +0 -0
- {ha_mcp_dev-7.12.2.dev1849 → ha_mcp_dev-7.12.3.dev1855}/src/ha_mcp/tools/tools_calendar.py +0 -0
- {ha_mcp_dev-7.12.2.dev1849 → ha_mcp_dev-7.12.3.dev1855}/src/ha_mcp/tools/tools_camera.py +0 -0
- {ha_mcp_dev-7.12.2.dev1849 → ha_mcp_dev-7.12.3.dev1855}/src/ha_mcp/tools/tools_categories.py +0 -0
- {ha_mcp_dev-7.12.2.dev1849 → ha_mcp_dev-7.12.3.dev1855}/src/ha_mcp/tools/tools_code.py +0 -0
- {ha_mcp_dev-7.12.2.dev1849 → ha_mcp_dev-7.12.3.dev1855}/src/ha_mcp/tools/tools_config_automations.py +0 -0
- {ha_mcp_dev-7.12.2.dev1849 → ha_mcp_dev-7.12.3.dev1855}/src/ha_mcp/tools/tools_config_dashboards.py +0 -0
- {ha_mcp_dev-7.12.2.dev1849 → ha_mcp_dev-7.12.3.dev1855}/src/ha_mcp/tools/tools_config_helpers.py +0 -0
- {ha_mcp_dev-7.12.2.dev1849 → ha_mcp_dev-7.12.3.dev1855}/src/ha_mcp/tools/tools_config_scenes.py +0 -0
- {ha_mcp_dev-7.12.2.dev1849 → ha_mcp_dev-7.12.3.dev1855}/src/ha_mcp/tools/tools_config_scripts.py +0 -0
- {ha_mcp_dev-7.12.2.dev1849 → ha_mcp_dev-7.12.3.dev1855}/src/ha_mcp/tools/tools_dashboard_screenshot.py +0 -0
- {ha_mcp_dev-7.12.2.dev1849 → ha_mcp_dev-7.12.3.dev1855}/src/ha_mcp/tools/tools_dev.py +0 -0
- {ha_mcp_dev-7.12.2.dev1849 → ha_mcp_dev-7.12.3.dev1855}/src/ha_mcp/tools/tools_energy.py +0 -0
- {ha_mcp_dev-7.12.2.dev1849 → ha_mcp_dev-7.12.3.dev1855}/src/ha_mcp/tools/tools_entities.py +0 -0
- {ha_mcp_dev-7.12.2.dev1849 → ha_mcp_dev-7.12.3.dev1855}/src/ha_mcp/tools/tools_filesystem.py +0 -0
- {ha_mcp_dev-7.12.2.dev1849 → ha_mcp_dev-7.12.3.dev1855}/src/ha_mcp/tools/tools_groups.py +0 -0
- {ha_mcp_dev-7.12.2.dev1849 → ha_mcp_dev-7.12.3.dev1855}/src/ha_mcp/tools/tools_hacs.py +0 -0
- {ha_mcp_dev-7.12.2.dev1849 → ha_mcp_dev-7.12.3.dev1855}/src/ha_mcp/tools/tools_history.py +0 -0
- {ha_mcp_dev-7.12.2.dev1849 → ha_mcp_dev-7.12.3.dev1855}/src/ha_mcp/tools/tools_integrations.py +0 -0
- {ha_mcp_dev-7.12.2.dev1849 → ha_mcp_dev-7.12.3.dev1855}/src/ha_mcp/tools/tools_labels.py +0 -0
- {ha_mcp_dev-7.12.2.dev1849 → ha_mcp_dev-7.12.3.dev1855}/src/ha_mcp/tools/tools_mcp_component.py +0 -0
- {ha_mcp_dev-7.12.2.dev1849 → ha_mcp_dev-7.12.3.dev1855}/src/ha_mcp/tools/tools_radio.py +0 -0
- {ha_mcp_dev-7.12.2.dev1849 → ha_mcp_dev-7.12.3.dev1855}/src/ha_mcp/tools/tools_registry.py +0 -0
- {ha_mcp_dev-7.12.2.dev1849 → ha_mcp_dev-7.12.3.dev1855}/src/ha_mcp/tools/tools_resources.py +0 -0
- {ha_mcp_dev-7.12.2.dev1849 → ha_mcp_dev-7.12.3.dev1855}/src/ha_mcp/tools/tools_search.py +0 -0
- {ha_mcp_dev-7.12.2.dev1849 → ha_mcp_dev-7.12.3.dev1855}/src/ha_mcp/tools/tools_service.py +0 -0
- {ha_mcp_dev-7.12.2.dev1849 → ha_mcp_dev-7.12.3.dev1855}/src/ha_mcp/tools/tools_services.py +0 -0
- {ha_mcp_dev-7.12.2.dev1849 → ha_mcp_dev-7.12.3.dev1855}/src/ha_mcp/tools/tools_system.py +0 -0
- {ha_mcp_dev-7.12.2.dev1849 → ha_mcp_dev-7.12.3.dev1855}/src/ha_mcp/tools/tools_themes.py +0 -0
- {ha_mcp_dev-7.12.2.dev1849 → ha_mcp_dev-7.12.3.dev1855}/src/ha_mcp/tools/tools_todo.py +0 -0
- {ha_mcp_dev-7.12.2.dev1849 → ha_mcp_dev-7.12.3.dev1855}/src/ha_mcp/tools/tools_traces.py +0 -0
- {ha_mcp_dev-7.12.2.dev1849 → ha_mcp_dev-7.12.3.dev1855}/src/ha_mcp/tools/tools_updates.py +0 -0
- {ha_mcp_dev-7.12.2.dev1849 → ha_mcp_dev-7.12.3.dev1855}/src/ha_mcp/tools/tools_utility.py +0 -0
- {ha_mcp_dev-7.12.2.dev1849 → ha_mcp_dev-7.12.3.dev1855}/src/ha_mcp/tools/tools_voice_assistant.py +0 -0
- {ha_mcp_dev-7.12.2.dev1849 → ha_mcp_dev-7.12.3.dev1855}/src/ha_mcp/tools/tools_yaml_config.py +0 -0
- {ha_mcp_dev-7.12.2.dev1849 → ha_mcp_dev-7.12.3.dev1855}/src/ha_mcp/tools/tools_zones.py +0 -0
- {ha_mcp_dev-7.12.2.dev1849 → ha_mcp_dev-7.12.3.dev1855}/src/ha_mcp/tools/util_helpers.py +0 -0
- {ha_mcp_dev-7.12.2.dev1849 → ha_mcp_dev-7.12.3.dev1855}/src/ha_mcp/tools/validation_middleware.py +0 -0
- {ha_mcp_dev-7.12.2.dev1849 → ha_mcp_dev-7.12.3.dev1855}/src/ha_mcp/transforms/__init__.py +0 -0
- {ha_mcp_dev-7.12.2.dev1849 → ha_mcp_dev-7.12.3.dev1855}/src/ha_mcp/transforms/categorized_search.py +0 -0
- {ha_mcp_dev-7.12.2.dev1849 → ha_mcp_dev-7.12.3.dev1855}/src/ha_mcp/transforms/lite_docstrings.py +0 -0
- {ha_mcp_dev-7.12.2.dev1849 → ha_mcp_dev-7.12.3.dev1855}/src/ha_mcp/transport_security.py +0 -0
- {ha_mcp_dev-7.12.2.dev1849 → ha_mcp_dev-7.12.3.dev1855}/src/ha_mcp/update_check.py +0 -0
- {ha_mcp_dev-7.12.2.dev1849 → ha_mcp_dev-7.12.3.dev1855}/src/ha_mcp/utils/__init__.py +0 -0
- {ha_mcp_dev-7.12.2.dev1849 → ha_mcp_dev-7.12.3.dev1855}/src/ha_mcp/utils/config_hash.py +0 -0
- {ha_mcp_dev-7.12.2.dev1849 → ha_mcp_dev-7.12.3.dev1855}/src/ha_mcp/utils/data_paths.py +0 -0
- {ha_mcp_dev-7.12.2.dev1849 → ha_mcp_dev-7.12.3.dev1855}/src/ha_mcp/utils/domain_handlers.py +0 -0
- {ha_mcp_dev-7.12.2.dev1849 → ha_mcp_dev-7.12.3.dev1855}/src/ha_mcp/utils/fuzzy_search.py +0 -0
- {ha_mcp_dev-7.12.2.dev1849 → ha_mcp_dev-7.12.3.dev1855}/src/ha_mcp/utils/kill_signal_diagnostics.py +0 -0
- {ha_mcp_dev-7.12.2.dev1849 → ha_mcp_dev-7.12.3.dev1855}/src/ha_mcp/utils/operation_manager.py +0 -0
- {ha_mcp_dev-7.12.2.dev1849 → ha_mcp_dev-7.12.3.dev1855}/src/ha_mcp/utils/python_sandbox.py +0 -0
- {ha_mcp_dev-7.12.2.dev1849 → ha_mcp_dev-7.12.3.dev1855}/src/ha_mcp/utils/skill_loader.py +0 -0
- {ha_mcp_dev-7.12.2.dev1849 → ha_mcp_dev-7.12.3.dev1855}/src/ha_mcp/utils/usage_logger.py +0 -0
- {ha_mcp_dev-7.12.2.dev1849 → ha_mcp_dev-7.12.3.dev1855}/src/ha_mcp/visibility/__init__.py +0 -0
- {ha_mcp_dev-7.12.2.dev1849 → ha_mcp_dev-7.12.3.dev1855}/src/ha_mcp/visibility/model.py +0 -0
- {ha_mcp_dev-7.12.2.dev1849 → ha_mcp_dev-7.12.3.dev1855}/src/ha_mcp/visibility/persistence.py +0 -0
- {ha_mcp_dev-7.12.2.dev1849 → ha_mcp_dev-7.12.3.dev1855}/src/ha_mcp/visibility/resolver.py +0 -0
- {ha_mcp_dev-7.12.2.dev1849 → ha_mcp_dev-7.12.3.dev1855}/src/ha_mcp_dev.egg-info/SOURCES.txt +0 -0
- {ha_mcp_dev-7.12.2.dev1849 → ha_mcp_dev-7.12.3.dev1855}/src/ha_mcp_dev.egg-info/dependency_links.txt +0 -0
- {ha_mcp_dev-7.12.2.dev1849 → ha_mcp_dev-7.12.3.dev1855}/src/ha_mcp_dev.egg-info/entry_points.txt +0 -0
- {ha_mcp_dev-7.12.2.dev1849 → ha_mcp_dev-7.12.3.dev1855}/src/ha_mcp_dev.egg-info/requires.txt +0 -0
- {ha_mcp_dev-7.12.2.dev1849 → ha_mcp_dev-7.12.3.dev1855}/src/ha_mcp_dev.egg-info/top_level.txt +0 -0
- {ha_mcp_dev-7.12.2.dev1849 → ha_mcp_dev-7.12.3.dev1855}/tests/__init__.py +0 -0
- {ha_mcp_dev-7.12.2.dev1849 → ha_mcp_dev-7.12.3.dev1855}/tests/test_constants.py +0 -0
- {ha_mcp_dev-7.12.2.dev1849 → ha_mcp_dev-7.12.3.dev1855}/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 = "7.12.
|
|
7
|
+
version = "7.12.3.dev1855"
|
|
8
8
|
description = "Home Assistant MCP Server - Complete control of Home Assistant through MCP"
|
|
9
9
|
readme = "README.md"
|
|
10
10
|
# Upper bound widened to <3.15 so the package installs on Home Assistant's
|
{ha_mcp_dev-7.12.2.dev1849 → ha_mcp_dev-7.12.3.dev1855}/src/ha_mcp/tools/tools_bug_report.py
RENAMED
|
@@ -45,6 +45,24 @@ AGENT_BEHAVIOR_URL = (
|
|
|
45
45
|
"https://github.com/homeassistant-ai/ha-mcp/issues/new?template=agent_behavior.yml"
|
|
46
46
|
)
|
|
47
47
|
|
|
48
|
+
# Guidance surfaced when the reported problem is a tool that never shows up in
|
|
49
|
+
# the client's tool list. In issue #1804 this produced a false bug report: the
|
|
50
|
+
# tool was enabled and loaded server-side (startup logs even said so), but the
|
|
51
|
+
# MCP client had never refreshed its cached tool list, so the agent concluded
|
|
52
|
+
# it was a server bug. A stale client-side tool list is the single most likely
|
|
53
|
+
# cause of a missing tool and must be ruled out before filing.
|
|
54
|
+
MISSING_TOOL_HINT = (
|
|
55
|
+
"MISSING/UNAVAILABLE TOOL? If the problem is that a tool you expected is not "
|
|
56
|
+
"in your tool list (can't find it, can't call it), this is very likely NOT a "
|
|
57
|
+
"bug. MCP clients cache the tool list when they connect and do NOT pick up "
|
|
58
|
+
"newly enabled tools until the connection is refreshed. Server-side logs "
|
|
59
|
+
"saying a tool is 'enabled' do NOT mean the client has loaded it. Ask the "
|
|
60
|
+
"user to refresh their MCP connection first: in Claude Desktop / claude.ai "
|
|
61
|
+
"use the connector's refresh option, or simply disconnect and reconnect it; "
|
|
62
|
+
"in Claude Code run /mcp and reconnect the server. Only file a bug if the "
|
|
63
|
+
"tool is still missing after a refresh."
|
|
64
|
+
)
|
|
65
|
+
|
|
48
66
|
# Max characters to include from addon container logs.
|
|
49
67
|
# 3000 chars ≈ 750 LLM tokens — keeps the tool response well below context budgets
|
|
50
68
|
# while still capturing enough recent output to diagnose most issues.
|
|
@@ -188,12 +206,23 @@ def _detect_platform() -> dict[str, str]:
|
|
|
188
206
|
# purpose: only flags that materially change which tools the agent sees, since
|
|
189
207
|
# the same bug report behaves very differently depending on these. New
|
|
190
208
|
# tool-shaping toggles should be added here so triage doesn't have to ask.
|
|
209
|
+
#
|
|
210
|
+
# ``enable_beta_features`` leads the list because it is the master gate: when
|
|
211
|
+
# off it force-disables every beta sub-flag (filesystem tools, code mode, YAML
|
|
212
|
+
# editing, ...) regardless of the sub-flag's own value, so a "missing tool"
|
|
213
|
+
# report is meaningless without it. ``enable_filesystem_tools`` and
|
|
214
|
+
# ``enable_custom_component_integration`` are the exact beta-gated tool families
|
|
215
|
+
# from issue #1804 — surfacing them lets triage see at a glance whether the tool
|
|
216
|
+
# the user couldn't find was even enabled server-side.
|
|
191
217
|
_CONFIG_TOGGLE_FIELDS: tuple[str, ...] = (
|
|
218
|
+
"enable_beta_features",
|
|
192
219
|
"enable_websocket",
|
|
193
220
|
"enable_dashboard_partial_tools",
|
|
194
221
|
"enable_tool_search",
|
|
195
222
|
"tool_search_max_results",
|
|
196
223
|
"enable_yaml_config_editing",
|
|
224
|
+
"enable_filesystem_tools",
|
|
225
|
+
"enable_custom_component_integration",
|
|
197
226
|
"enable_code_mode",
|
|
198
227
|
"enabled_tool_modules",
|
|
199
228
|
)
|
|
@@ -668,6 +697,9 @@ class BugReportTools:
|
|
|
668
697
|
empty string otherwise)
|
|
669
698
|
- `core_error_log` — Home Assistant error log (home-assistant.log) over
|
|
670
699
|
REST; carries auth / integration errors that don't show in addon_logs
|
|
700
|
+
- `missing_tool_hint` — check this FIRST when the report is about a
|
|
701
|
+
missing/unavailable tool; a stale client tool list (not a bug) is the
|
|
702
|
+
usual cause, and refreshing the MCP connection is the fix
|
|
671
703
|
- `suggested_title`, `duplicate_check_urls`, `anonymization_guide`
|
|
672
704
|
"""
|
|
673
705
|
# Detect installation method, platform, and runtime config.
|
|
@@ -821,8 +853,16 @@ class BugReportTools:
|
|
|
821
853
|
"runtime_bug_submit_url": runtime_bug_submit_url,
|
|
822
854
|
"agent_behavior_submit_url": agent_behavior_submit_url,
|
|
823
855
|
"duplicate_check_urls": duplicate_check_urls,
|
|
856
|
+
"missing_tool_hint": MISSING_TOOL_HINT,
|
|
824
857
|
"instructions": (
|
|
825
858
|
"WORKFLOW FOR PRESENTING BUG REPORTS:\n\n"
|
|
859
|
+
"0. **PRE-CHECK — is the problem a missing/unavailable tool?** If "
|
|
860
|
+
"the user's issue is that a tool they expected is missing or "
|
|
861
|
+
"cannot be called, DO NOT file a bug yet. See the "
|
|
862
|
+
"`missing_tool_hint` field: the likely cause is a stale MCP "
|
|
863
|
+
"client tool list (not a server bug), fixed by refreshing or "
|
|
864
|
+
"reconnecting the MCP connection. Only continue with this report "
|
|
865
|
+
"if the tool is still missing after the user refreshes.\n\n"
|
|
826
866
|
"1. **Check for duplicates FIRST** (before presenting the template):\n"
|
|
827
867
|
" - Use the duplicate_check_urls to search for similar issues\n"
|
|
828
868
|
' - If gh CLI is available: use `gh issue list --search "keyword"`\n'
|
|
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-7.12.2.dev1849 → ha_mcp_dev-7.12.3.dev1855}/src/ha_mcp/client/supervisor_client.py
RENAMED
|
File without changes
|
{ha_mcp_dev-7.12.2.dev1849 → ha_mcp_dev-7.12.3.dev1855}/src/ha_mcp/client/websocket_client.py
RENAMED
|
File without changes
|
{ha_mcp_dev-7.12.2.dev1849 → ha_mcp_dev-7.12.3.dev1855}/src/ha_mcp/client/websocket_listener.py
RENAMED
|
File without changes
|
|
File without changes
|
{ha_mcp_dev-7.12.2.dev1849 → ha_mcp_dev-7.12.3.dev1855}/src/ha_mcp/dashboard_screenshot/__init__.py
RENAMED
|
File without changes
|
{ha_mcp_dev-7.12.2.dev1849 → ha_mcp_dev-7.12.3.dev1855}/src/ha_mcp/dashboard_screenshot/capture.py
RENAMED
|
File without changes
|
{ha_mcp_dev-7.12.2.dev1849 → ha_mcp_dev-7.12.3.dev1855}/src/ha_mcp/dashboard_screenshot/provision.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
|
{ha_mcp_dev-7.12.2.dev1849 → ha_mcp_dev-7.12.3.dev1855}/src/ha_mcp/resources/skills-vendor/AGENTS.md
RENAMED
|
File without changes
|
{ha_mcp_dev-7.12.2.dev1849 → ha_mcp_dev-7.12.3.dev1855}/src/ha_mcp/resources/skills-vendor/CLAUDE.md
RENAMED
|
File without changes
|
|
File without changes
|
{ha_mcp_dev-7.12.2.dev1849 → ha_mcp_dev-7.12.3.dev1855}/src/ha_mcp/resources/skills-vendor/LICENSE
RENAMED
|
File without changes
|
{ha_mcp_dev-7.12.2.dev1849 → ha_mcp_dev-7.12.3.dev1855}/src/ha_mcp/resources/skills-vendor/README.md
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{ha_mcp_dev-7.12.2.dev1849 → ha_mcp_dev-7.12.3.dev1855}/src/ha_mcp/settings_ui/settings.html
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
{ha_mcp_dev-7.12.2.dev1849 → ha_mcp_dev-7.12.3.dev1855}/src/ha_mcp/stdio_settings_sidecar.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{ha_mcp_dev-7.12.2.dev1849 → ha_mcp_dev-7.12.3.dev1855}/src/ha_mcp/tools/best_practice_checker.py
RENAMED
|
File without changes
|
{ha_mcp_dev-7.12.2.dev1849 → ha_mcp_dev-7.12.3.dev1855}/src/ha_mcp/tools/config_entry_flow.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-7.12.2.dev1849 → ha_mcp_dev-7.12.3.dev1855}/src/ha_mcp/tools/reference_validator.py
RENAMED
|
File without changes
|
|
File without changes
|
{ha_mcp_dev-7.12.2.dev1849 → ha_mcp_dev-7.12.3.dev1855}/src/ha_mcp/tools/smart_search/__init__.py
RENAMED
|
File without changes
|
{ha_mcp_dev-7.12.2.dev1849 → ha_mcp_dev-7.12.3.dev1855}/src/ha_mcp/tools/smart_search/_base.py
RENAMED
|
File without changes
|
{ha_mcp_dev-7.12.2.dev1849 → ha_mcp_dev-7.12.3.dev1855}/src/ha_mcp/tools/smart_search/_config.py
RENAMED
|
File without changes
|
{ha_mcp_dev-7.12.2.dev1849 → ha_mcp_dev-7.12.3.dev1855}/src/ha_mcp/tools/smart_search/_deep.py
RENAMED
|
File without changes
|
{ha_mcp_dev-7.12.2.dev1849 → ha_mcp_dev-7.12.3.dev1855}/src/ha_mcp/tools/smart_search/_entities.py
RENAMED
|
File without changes
|
{ha_mcp_dev-7.12.2.dev1849 → ha_mcp_dev-7.12.3.dev1855}/src/ha_mcp/tools/smart_search/_fetch.py
RENAMED
|
File without changes
|
{ha_mcp_dev-7.12.2.dev1849 → ha_mcp_dev-7.12.3.dev1855}/src/ha_mcp/tools/smart_search/_overview.py
RENAMED
|
File without changes
|
{ha_mcp_dev-7.12.2.dev1849 → ha_mcp_dev-7.12.3.dev1855}/src/ha_mcp/tools/smart_search/_scenes.py
RENAMED
|
File without changes
|
{ha_mcp_dev-7.12.2.dev1849 → ha_mcp_dev-7.12.3.dev1855}/src/ha_mcp/tools/smart_search/_scoring.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{ha_mcp_dev-7.12.2.dev1849 → ha_mcp_dev-7.12.3.dev1855}/src/ha_mcp/tools/tools_blueprints.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
{ha_mcp_dev-7.12.2.dev1849 → ha_mcp_dev-7.12.3.dev1855}/src/ha_mcp/tools/tools_categories.py
RENAMED
|
File without changes
|
|
File without changes
|
{ha_mcp_dev-7.12.2.dev1849 → ha_mcp_dev-7.12.3.dev1855}/src/ha_mcp/tools/tools_config_automations.py
RENAMED
|
File without changes
|
{ha_mcp_dev-7.12.2.dev1849 → ha_mcp_dev-7.12.3.dev1855}/src/ha_mcp/tools/tools_config_dashboards.py
RENAMED
|
File without changes
|
{ha_mcp_dev-7.12.2.dev1849 → ha_mcp_dev-7.12.3.dev1855}/src/ha_mcp/tools/tools_config_helpers.py
RENAMED
|
File without changes
|
{ha_mcp_dev-7.12.2.dev1849 → ha_mcp_dev-7.12.3.dev1855}/src/ha_mcp/tools/tools_config_scenes.py
RENAMED
|
File without changes
|
{ha_mcp_dev-7.12.2.dev1849 → ha_mcp_dev-7.12.3.dev1855}/src/ha_mcp/tools/tools_config_scripts.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{ha_mcp_dev-7.12.2.dev1849 → ha_mcp_dev-7.12.3.dev1855}/src/ha_mcp/tools/tools_filesystem.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{ha_mcp_dev-7.12.2.dev1849 → ha_mcp_dev-7.12.3.dev1855}/src/ha_mcp/tools/tools_integrations.py
RENAMED
|
File without changes
|
|
File without changes
|
{ha_mcp_dev-7.12.2.dev1849 → ha_mcp_dev-7.12.3.dev1855}/src/ha_mcp/tools/tools_mcp_component.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
|
{ha_mcp_dev-7.12.2.dev1849 → ha_mcp_dev-7.12.3.dev1855}/src/ha_mcp/tools/tools_voice_assistant.py
RENAMED
|
File without changes
|
{ha_mcp_dev-7.12.2.dev1849 → ha_mcp_dev-7.12.3.dev1855}/src/ha_mcp/tools/tools_yaml_config.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
{ha_mcp_dev-7.12.2.dev1849 → ha_mcp_dev-7.12.3.dev1855}/src/ha_mcp/tools/validation_middleware.py
RENAMED
|
File without changes
|
|
File without changes
|
{ha_mcp_dev-7.12.2.dev1849 → ha_mcp_dev-7.12.3.dev1855}/src/ha_mcp/transforms/categorized_search.py
RENAMED
|
File without changes
|
{ha_mcp_dev-7.12.2.dev1849 → ha_mcp_dev-7.12.3.dev1855}/src/ha_mcp/transforms/lite_docstrings.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
|
{ha_mcp_dev-7.12.2.dev1849 → ha_mcp_dev-7.12.3.dev1855}/src/ha_mcp/utils/kill_signal_diagnostics.py
RENAMED
|
File without changes
|
{ha_mcp_dev-7.12.2.dev1849 → ha_mcp_dev-7.12.3.dev1855}/src/ha_mcp/utils/operation_manager.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{ha_mcp_dev-7.12.2.dev1849 → ha_mcp_dev-7.12.3.dev1855}/src/ha_mcp/visibility/persistence.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
{ha_mcp_dev-7.12.2.dev1849 → ha_mcp_dev-7.12.3.dev1855}/src/ha_mcp_dev.egg-info/dependency_links.txt
RENAMED
|
File without changes
|
{ha_mcp_dev-7.12.2.dev1849 → ha_mcp_dev-7.12.3.dev1855}/src/ha_mcp_dev.egg-info/entry_points.txt
RENAMED
|
File without changes
|
{ha_mcp_dev-7.12.2.dev1849 → ha_mcp_dev-7.12.3.dev1855}/src/ha_mcp_dev.egg-info/requires.txt
RENAMED
|
File without changes
|
{ha_mcp_dev-7.12.2.dev1849 → ha_mcp_dev-7.12.3.dev1855}/src/ha_mcp_dev.egg-info/top_level.txt
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|