ha-mcp-dev 7.12.3.dev1885__tar.gz → 7.12.3.dev1888__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.3.dev1885/src/ha_mcp_dev.egg-info → ha_mcp_dev-7.12.3.dev1888}/PKG-INFO +1 -1
- {ha_mcp_dev-7.12.3.dev1885 → ha_mcp_dev-7.12.3.dev1888}/pyproject.toml +1 -1
- {ha_mcp_dev-7.12.3.dev1885 → ha_mcp_dev-7.12.3.dev1888}/src/ha_mcp/tools/tools_config_helpers.py +110 -4
- {ha_mcp_dev-7.12.3.dev1885 → ha_mcp_dev-7.12.3.dev1888/src/ha_mcp_dev.egg-info}/PKG-INFO +1 -1
- {ha_mcp_dev-7.12.3.dev1885 → ha_mcp_dev-7.12.3.dev1888}/LICENSE +0 -0
- {ha_mcp_dev-7.12.3.dev1885 → ha_mcp_dev-7.12.3.dev1888}/MANIFEST.in +0 -0
- {ha_mcp_dev-7.12.3.dev1885 → ha_mcp_dev-7.12.3.dev1888}/README.md +0 -0
- {ha_mcp_dev-7.12.3.dev1885 → ha_mcp_dev-7.12.3.dev1888}/setup.cfg +0 -0
- {ha_mcp_dev-7.12.3.dev1885 → ha_mcp_dev-7.12.3.dev1888}/src/ha_mcp/__init__.py +0 -0
- {ha_mcp_dev-7.12.3.dev1885 → ha_mcp_dev-7.12.3.dev1888}/src/ha_mcp/__main__.py +0 -0
- {ha_mcp_dev-7.12.3.dev1885 → ha_mcp_dev-7.12.3.dev1888}/src/ha_mcp/_pypi_marker +0 -0
- {ha_mcp_dev-7.12.3.dev1885 → ha_mcp_dev-7.12.3.dev1888}/src/ha_mcp/_version.py +0 -0
- {ha_mcp_dev-7.12.3.dev1885 → ha_mcp_dev-7.12.3.dev1888}/src/ha_mcp/auth/__init__.py +0 -0
- {ha_mcp_dev-7.12.3.dev1885 → ha_mcp_dev-7.12.3.dev1888}/src/ha_mcp/auth/consent_form.py +0 -0
- {ha_mcp_dev-7.12.3.dev1885 → ha_mcp_dev-7.12.3.dev1888}/src/ha_mcp/auth/provider.py +0 -0
- {ha_mcp_dev-7.12.3.dev1885 → ha_mcp_dev-7.12.3.dev1888}/src/ha_mcp/backup_manager.py +0 -0
- {ha_mcp_dev-7.12.3.dev1885 → ha_mcp_dev-7.12.3.dev1888}/src/ha_mcp/browser_landing.py +0 -0
- {ha_mcp_dev-7.12.3.dev1885 → ha_mcp_dev-7.12.3.dev1888}/src/ha_mcp/client/__init__.py +0 -0
- {ha_mcp_dev-7.12.3.dev1885 → ha_mcp_dev-7.12.3.dev1888}/src/ha_mcp/client/rest_client.py +0 -0
- {ha_mcp_dev-7.12.3.dev1885 → ha_mcp_dev-7.12.3.dev1888}/src/ha_mcp/client/supervisor_client.py +0 -0
- {ha_mcp_dev-7.12.3.dev1885 → ha_mcp_dev-7.12.3.dev1888}/src/ha_mcp/client/websocket_client.py +0 -0
- {ha_mcp_dev-7.12.3.dev1885 → ha_mcp_dev-7.12.3.dev1888}/src/ha_mcp/client/websocket_listener.py +0 -0
- {ha_mcp_dev-7.12.3.dev1885 → ha_mcp_dev-7.12.3.dev1888}/src/ha_mcp/config.py +0 -0
- {ha_mcp_dev-7.12.3.dev1885 → ha_mcp_dev-7.12.3.dev1888}/src/ha_mcp/dashboard_screenshot/__init__.py +0 -0
- {ha_mcp_dev-7.12.3.dev1885 → ha_mcp_dev-7.12.3.dev1888}/src/ha_mcp/dashboard_screenshot/capture.py +0 -0
- {ha_mcp_dev-7.12.3.dev1885 → ha_mcp_dev-7.12.3.dev1888}/src/ha_mcp/dashboard_screenshot/provision.py +0 -0
- {ha_mcp_dev-7.12.3.dev1885 → ha_mcp_dev-7.12.3.dev1888}/src/ha_mcp/errors.py +0 -0
- {ha_mcp_dev-7.12.3.dev1885 → ha_mcp_dev-7.12.3.dev1888}/src/ha_mcp/llm_exposure.py +0 -0
- {ha_mcp_dev-7.12.3.dev1885 → ha_mcp_dev-7.12.3.dev1888}/src/ha_mcp/policy/__init__.py +0 -0
- {ha_mcp_dev-7.12.3.dev1885 → ha_mcp_dev-7.12.3.dev1888}/src/ha_mcp/policy/approval_queue.py +0 -0
- {ha_mcp_dev-7.12.3.dev1885 → ha_mcp_dev-7.12.3.dev1888}/src/ha_mcp/policy/evaluator.py +0 -0
- {ha_mcp_dev-7.12.3.dev1885 → ha_mcp_dev-7.12.3.dev1888}/src/ha_mcp/policy/handlers.py +0 -0
- {ha_mcp_dev-7.12.3.dev1885 → ha_mcp_dev-7.12.3.dev1888}/src/ha_mcp/policy/middleware.py +0 -0
- {ha_mcp_dev-7.12.3.dev1885 → ha_mcp_dev-7.12.3.dev1888}/src/ha_mcp/policy/model.py +0 -0
- {ha_mcp_dev-7.12.3.dev1885 → ha_mcp_dev-7.12.3.dev1888}/src/ha_mcp/policy/persistence.py +0 -0
- {ha_mcp_dev-7.12.3.dev1885 → ha_mcp_dev-7.12.3.dev1888}/src/ha_mcp/policy/value_sources.py +0 -0
- {ha_mcp_dev-7.12.3.dev1885 → ha_mcp_dev-7.12.3.dev1888}/src/ha_mcp/py.typed +0 -0
- {ha_mcp_dev-7.12.3.dev1885 → ha_mcp_dev-7.12.3.dev1888}/src/ha_mcp/read_only.py +0 -0
- {ha_mcp_dev-7.12.3.dev1885 → ha_mcp_dev-7.12.3.dev1888}/src/ha_mcp/resources/skills-vendor/.claude/settings.json +0 -0
- {ha_mcp_dev-7.12.3.dev1885 → ha_mcp_dev-7.12.3.dev1888}/src/ha_mcp/resources/skills-vendor/.claude-plugin/marketplace.json +0 -0
- {ha_mcp_dev-7.12.3.dev1885 → ha_mcp_dev-7.12.3.dev1888}/src/ha_mcp/resources/skills-vendor/.claude-plugin/plugin.json +0 -0
- {ha_mcp_dev-7.12.3.dev1885 → ha_mcp_dev-7.12.3.dev1888}/src/ha_mcp/resources/skills-vendor/.github/ISSUE_TEMPLATE/skill-rca.md +0 -0
- {ha_mcp_dev-7.12.3.dev1885 → ha_mcp_dev-7.12.3.dev1888}/src/ha_mcp/resources/skills-vendor/.github/pull_request_template.md +0 -0
- {ha_mcp_dev-7.12.3.dev1885 → ha_mcp_dev-7.12.3.dev1888}/src/ha_mcp/resources/skills-vendor/AGENTS.md +0 -0
- {ha_mcp_dev-7.12.3.dev1885 → ha_mcp_dev-7.12.3.dev1888}/src/ha_mcp/resources/skills-vendor/CLAUDE.md +0 -0
- {ha_mcp_dev-7.12.3.dev1885 → ha_mcp_dev-7.12.3.dev1888}/src/ha_mcp/resources/skills-vendor/CONTRIBUTING.md +0 -0
- {ha_mcp_dev-7.12.3.dev1885 → ha_mcp_dev-7.12.3.dev1888}/src/ha_mcp/resources/skills-vendor/LICENSE +0 -0
- {ha_mcp_dev-7.12.3.dev1885 → ha_mcp_dev-7.12.3.dev1888}/src/ha_mcp/resources/skills-vendor/README.md +0 -0
- {ha_mcp_dev-7.12.3.dev1885 → ha_mcp_dev-7.12.3.dev1888}/src/ha_mcp/resources/skills-vendor/skills/home-assistant-best-practices/SKILL.md +0 -0
- {ha_mcp_dev-7.12.3.dev1885 → ha_mcp_dev-7.12.3.dev1888}/src/ha_mcp/resources/skills-vendor/skills/home-assistant-best-practices/evals/evals.json +0 -0
- {ha_mcp_dev-7.12.3.dev1885 → ha_mcp_dev-7.12.3.dev1888}/src/ha_mcp/resources/skills-vendor/skills/home-assistant-best-practices/references/appdaemon.md +0 -0
- {ha_mcp_dev-7.12.3.dev1885 → ha_mcp_dev-7.12.3.dev1888}/src/ha_mcp/resources/skills-vendor/skills/home-assistant-best-practices/references/automation-patterns.md +0 -0
- {ha_mcp_dev-7.12.3.dev1885 → ha_mcp_dev-7.12.3.dev1888}/src/ha_mcp/resources/skills-vendor/skills/home-assistant-best-practices/references/blueprint-guide.md +0 -0
- {ha_mcp_dev-7.12.3.dev1885 → ha_mcp_dev-7.12.3.dev1888}/src/ha_mcp/resources/skills-vendor/skills/home-assistant-best-practices/references/dashboard-cards.md +0 -0
- {ha_mcp_dev-7.12.3.dev1885 → ha_mcp_dev-7.12.3.dev1888}/src/ha_mcp/resources/skills-vendor/skills/home-assistant-best-practices/references/dashboard-guide.md +0 -0
- {ha_mcp_dev-7.12.3.dev1885 → ha_mcp_dev-7.12.3.dev1888}/src/ha_mcp/resources/skills-vendor/skills/home-assistant-best-practices/references/device-control.md +0 -0
- {ha_mcp_dev-7.12.3.dev1885 → ha_mcp_dev-7.12.3.dev1888}/src/ha_mcp/resources/skills-vendor/skills/home-assistant-best-practices/references/domain-docs.md +0 -0
- {ha_mcp_dev-7.12.3.dev1885 → ha_mcp_dev-7.12.3.dev1888}/src/ha_mcp/resources/skills-vendor/skills/home-assistant-best-practices/references/examples.yaml +0 -0
- {ha_mcp_dev-7.12.3.dev1885 → ha_mcp_dev-7.12.3.dev1888}/src/ha_mcp/resources/skills-vendor/skills/home-assistant-best-practices/references/helper-selection.md +0 -0
- {ha_mcp_dev-7.12.3.dev1885 → ha_mcp_dev-7.12.3.dev1888}/src/ha_mcp/resources/skills-vendor/skills/home-assistant-best-practices/references/safe-refactoring.md +0 -0
- {ha_mcp_dev-7.12.3.dev1885 → ha_mcp_dev-7.12.3.dev1888}/src/ha_mcp/resources/skills-vendor/skills/home-assistant-best-practices/references/scenes.md +0 -0
- {ha_mcp_dev-7.12.3.dev1885 → ha_mcp_dev-7.12.3.dev1888}/src/ha_mcp/resources/skills-vendor/skills/home-assistant-best-practices/references/template-guidelines.md +0 -0
- {ha_mcp_dev-7.12.3.dev1885 → ha_mcp_dev-7.12.3.dev1888}/src/ha_mcp/resources/skills-vendor/skills/home-assistant-best-practices/references/yaml-only-integrations.md +0 -0
- {ha_mcp_dev-7.12.3.dev1885 → ha_mcp_dev-7.12.3.dev1888}/src/ha_mcp/server.py +0 -0
- {ha_mcp_dev-7.12.3.dev1885 → ha_mcp_dev-7.12.3.dev1888}/src/ha_mcp/settings_ui/__init__.py +0 -0
- {ha_mcp_dev-7.12.3.dev1885 → ha_mcp_dev-7.12.3.dev1888}/src/ha_mcp/settings_ui/settings.css +0 -0
- {ha_mcp_dev-7.12.3.dev1885 → ha_mcp_dev-7.12.3.dev1888}/src/ha_mcp/settings_ui/settings.html +0 -0
- {ha_mcp_dev-7.12.3.dev1885 → ha_mcp_dev-7.12.3.dev1888}/src/ha_mcp/settings_ui/settings.js +0 -0
- {ha_mcp_dev-7.12.3.dev1885 → ha_mcp_dev-7.12.3.dev1888}/src/ha_mcp/smoke_test.py +0 -0
- {ha_mcp_dev-7.12.3.dev1885 → ha_mcp_dev-7.12.3.dev1888}/src/ha_mcp/stdio_settings_sidecar.py +0 -0
- {ha_mcp_dev-7.12.3.dev1885 → ha_mcp_dev-7.12.3.dev1888}/src/ha_mcp/strict_bps.py +0 -0
- {ha_mcp_dev-7.12.3.dev1885 → ha_mcp_dev-7.12.3.dev1888}/src/ha_mcp/tools/__init__.py +0 -0
- {ha_mcp_dev-7.12.3.dev1885 → ha_mcp_dev-7.12.3.dev1888}/src/ha_mcp/tools/auto_backup.py +0 -0
- {ha_mcp_dev-7.12.3.dev1885 → ha_mcp_dev-7.12.3.dev1888}/src/ha_mcp/tools/backup.py +0 -0
- {ha_mcp_dev-7.12.3.dev1885 → ha_mcp_dev-7.12.3.dev1888}/src/ha_mcp/tools/best_practice_checker.py +0 -0
- {ha_mcp_dev-7.12.3.dev1885 → ha_mcp_dev-7.12.3.dev1888}/src/ha_mcp/tools/component_api.py +0 -0
- {ha_mcp_dev-7.12.3.dev1885 → ha_mcp_dev-7.12.3.dev1888}/src/ha_mcp/tools/config_entry_flow.py +0 -0
- {ha_mcp_dev-7.12.3.dev1885 → ha_mcp_dev-7.12.3.dev1888}/src/ha_mcp/tools/device_control.py +0 -0
- {ha_mcp_dev-7.12.3.dev1885 → ha_mcp_dev-7.12.3.dev1888}/src/ha_mcp/tools/enhanced.py +0 -0
- {ha_mcp_dev-7.12.3.dev1885 → ha_mcp_dev-7.12.3.dev1888}/src/ha_mcp/tools/helpers.py +0 -0
- {ha_mcp_dev-7.12.3.dev1885 → ha_mcp_dev-7.12.3.dev1888}/src/ha_mcp/tools/radio/__init__.py +0 -0
- {ha_mcp_dev-7.12.3.dev1885 → ha_mcp_dev-7.12.3.dev1888}/src/ha_mcp/tools/radio/base.py +0 -0
- {ha_mcp_dev-7.12.3.dev1885 → ha_mcp_dev-7.12.3.dev1888}/src/ha_mcp/tools/radio/matter.py +0 -0
- {ha_mcp_dev-7.12.3.dev1885 → ha_mcp_dev-7.12.3.dev1888}/src/ha_mcp/tools/radio/thread.py +0 -0
- {ha_mcp_dev-7.12.3.dev1885 → ha_mcp_dev-7.12.3.dev1888}/src/ha_mcp/tools/radio/zigbee.py +0 -0
- {ha_mcp_dev-7.12.3.dev1885 → ha_mcp_dev-7.12.3.dev1888}/src/ha_mcp/tools/radio/zwave.py +0 -0
- {ha_mcp_dev-7.12.3.dev1885 → ha_mcp_dev-7.12.3.dev1888}/src/ha_mcp/tools/reference_validator.py +0 -0
- {ha_mcp_dev-7.12.3.dev1885 → ha_mcp_dev-7.12.3.dev1888}/src/ha_mcp/tools/registry.py +0 -0
- {ha_mcp_dev-7.12.3.dev1885 → ha_mcp_dev-7.12.3.dev1888}/src/ha_mcp/tools/smart_search/__init__.py +0 -0
- {ha_mcp_dev-7.12.3.dev1885 → ha_mcp_dev-7.12.3.dev1888}/src/ha_mcp/tools/smart_search/_base.py +0 -0
- {ha_mcp_dev-7.12.3.dev1885 → ha_mcp_dev-7.12.3.dev1888}/src/ha_mcp/tools/smart_search/_config.py +0 -0
- {ha_mcp_dev-7.12.3.dev1885 → ha_mcp_dev-7.12.3.dev1888}/src/ha_mcp/tools/smart_search/_deep.py +0 -0
- {ha_mcp_dev-7.12.3.dev1885 → ha_mcp_dev-7.12.3.dev1888}/src/ha_mcp/tools/smart_search/_entities.py +0 -0
- {ha_mcp_dev-7.12.3.dev1885 → ha_mcp_dev-7.12.3.dev1888}/src/ha_mcp/tools/smart_search/_fetch.py +0 -0
- {ha_mcp_dev-7.12.3.dev1885 → ha_mcp_dev-7.12.3.dev1888}/src/ha_mcp/tools/smart_search/_overview.py +0 -0
- {ha_mcp_dev-7.12.3.dev1885 → ha_mcp_dev-7.12.3.dev1888}/src/ha_mcp/tools/smart_search/_scenes.py +0 -0
- {ha_mcp_dev-7.12.3.dev1885 → ha_mcp_dev-7.12.3.dev1888}/src/ha_mcp/tools/smart_search/_scoring.py +0 -0
- {ha_mcp_dev-7.12.3.dev1885 → ha_mcp_dev-7.12.3.dev1888}/src/ha_mcp/tools/tool_search_hint_middleware.py +0 -0
- {ha_mcp_dev-7.12.3.dev1885 → ha_mcp_dev-7.12.3.dev1888}/src/ha_mcp/tools/tools_addons.py +0 -0
- {ha_mcp_dev-7.12.3.dev1885 → ha_mcp_dev-7.12.3.dev1888}/src/ha_mcp/tools/tools_areas.py +0 -0
- {ha_mcp_dev-7.12.3.dev1885 → ha_mcp_dev-7.12.3.dev1888}/src/ha_mcp/tools/tools_blueprints.py +0 -0
- {ha_mcp_dev-7.12.3.dev1885 → ha_mcp_dev-7.12.3.dev1888}/src/ha_mcp/tools/tools_bug_report.py +0 -0
- {ha_mcp_dev-7.12.3.dev1885 → ha_mcp_dev-7.12.3.dev1888}/src/ha_mcp/tools/tools_calendar.py +0 -0
- {ha_mcp_dev-7.12.3.dev1885 → ha_mcp_dev-7.12.3.dev1888}/src/ha_mcp/tools/tools_camera.py +0 -0
- {ha_mcp_dev-7.12.3.dev1885 → ha_mcp_dev-7.12.3.dev1888}/src/ha_mcp/tools/tools_categories.py +0 -0
- {ha_mcp_dev-7.12.3.dev1885 → ha_mcp_dev-7.12.3.dev1888}/src/ha_mcp/tools/tools_code.py +0 -0
- {ha_mcp_dev-7.12.3.dev1885 → ha_mcp_dev-7.12.3.dev1888}/src/ha_mcp/tools/tools_config_automations.py +0 -0
- {ha_mcp_dev-7.12.3.dev1885 → ha_mcp_dev-7.12.3.dev1888}/src/ha_mcp/tools/tools_config_dashboards.py +0 -0
- {ha_mcp_dev-7.12.3.dev1885 → ha_mcp_dev-7.12.3.dev1888}/src/ha_mcp/tools/tools_config_scenes.py +0 -0
- {ha_mcp_dev-7.12.3.dev1885 → ha_mcp_dev-7.12.3.dev1888}/src/ha_mcp/tools/tools_config_scripts.py +0 -0
- {ha_mcp_dev-7.12.3.dev1885 → ha_mcp_dev-7.12.3.dev1888}/src/ha_mcp/tools/tools_dashboard_screenshot.py +0 -0
- {ha_mcp_dev-7.12.3.dev1885 → ha_mcp_dev-7.12.3.dev1888}/src/ha_mcp/tools/tools_dev.py +0 -0
- {ha_mcp_dev-7.12.3.dev1885 → ha_mcp_dev-7.12.3.dev1888}/src/ha_mcp/tools/tools_energy.py +0 -0
- {ha_mcp_dev-7.12.3.dev1885 → ha_mcp_dev-7.12.3.dev1888}/src/ha_mcp/tools/tools_entities.py +0 -0
- {ha_mcp_dev-7.12.3.dev1885 → ha_mcp_dev-7.12.3.dev1888}/src/ha_mcp/tools/tools_filesystem.py +0 -0
- {ha_mcp_dev-7.12.3.dev1885 → ha_mcp_dev-7.12.3.dev1888}/src/ha_mcp/tools/tools_groups.py +0 -0
- {ha_mcp_dev-7.12.3.dev1885 → ha_mcp_dev-7.12.3.dev1888}/src/ha_mcp/tools/tools_hacs.py +0 -0
- {ha_mcp_dev-7.12.3.dev1885 → ha_mcp_dev-7.12.3.dev1888}/src/ha_mcp/tools/tools_history.py +0 -0
- {ha_mcp_dev-7.12.3.dev1885 → ha_mcp_dev-7.12.3.dev1888}/src/ha_mcp/tools/tools_integrations.py +0 -0
- {ha_mcp_dev-7.12.3.dev1885 → ha_mcp_dev-7.12.3.dev1888}/src/ha_mcp/tools/tools_labels.py +0 -0
- {ha_mcp_dev-7.12.3.dev1885 → ha_mcp_dev-7.12.3.dev1888}/src/ha_mcp/tools/tools_mcp_component.py +0 -0
- {ha_mcp_dev-7.12.3.dev1885 → ha_mcp_dev-7.12.3.dev1888}/src/ha_mcp/tools/tools_radio.py +0 -0
- {ha_mcp_dev-7.12.3.dev1885 → ha_mcp_dev-7.12.3.dev1888}/src/ha_mcp/tools/tools_registry.py +0 -0
- {ha_mcp_dev-7.12.3.dev1885 → ha_mcp_dev-7.12.3.dev1888}/src/ha_mcp/tools/tools_resources.py +0 -0
- {ha_mcp_dev-7.12.3.dev1885 → ha_mcp_dev-7.12.3.dev1888}/src/ha_mcp/tools/tools_search.py +0 -0
- {ha_mcp_dev-7.12.3.dev1885 → ha_mcp_dev-7.12.3.dev1888}/src/ha_mcp/tools/tools_service.py +0 -0
- {ha_mcp_dev-7.12.3.dev1885 → ha_mcp_dev-7.12.3.dev1888}/src/ha_mcp/tools/tools_services.py +0 -0
- {ha_mcp_dev-7.12.3.dev1885 → ha_mcp_dev-7.12.3.dev1888}/src/ha_mcp/tools/tools_system.py +0 -0
- {ha_mcp_dev-7.12.3.dev1885 → ha_mcp_dev-7.12.3.dev1888}/src/ha_mcp/tools/tools_themes.py +0 -0
- {ha_mcp_dev-7.12.3.dev1885 → ha_mcp_dev-7.12.3.dev1888}/src/ha_mcp/tools/tools_todo.py +0 -0
- {ha_mcp_dev-7.12.3.dev1885 → ha_mcp_dev-7.12.3.dev1888}/src/ha_mcp/tools/tools_traces.py +0 -0
- {ha_mcp_dev-7.12.3.dev1885 → ha_mcp_dev-7.12.3.dev1888}/src/ha_mcp/tools/tools_updates.py +0 -0
- {ha_mcp_dev-7.12.3.dev1885 → ha_mcp_dev-7.12.3.dev1888}/src/ha_mcp/tools/tools_utility.py +0 -0
- {ha_mcp_dev-7.12.3.dev1885 → ha_mcp_dev-7.12.3.dev1888}/src/ha_mcp/tools/tools_voice_assistant.py +0 -0
- {ha_mcp_dev-7.12.3.dev1885 → ha_mcp_dev-7.12.3.dev1888}/src/ha_mcp/tools/tools_yaml_config.py +0 -0
- {ha_mcp_dev-7.12.3.dev1885 → ha_mcp_dev-7.12.3.dev1888}/src/ha_mcp/tools/tools_zones.py +0 -0
- {ha_mcp_dev-7.12.3.dev1885 → ha_mcp_dev-7.12.3.dev1888}/src/ha_mcp/tools/util_helpers.py +0 -0
- {ha_mcp_dev-7.12.3.dev1885 → ha_mcp_dev-7.12.3.dev1888}/src/ha_mcp/tools/validation_middleware.py +0 -0
- {ha_mcp_dev-7.12.3.dev1885 → ha_mcp_dev-7.12.3.dev1888}/src/ha_mcp/transforms/__init__.py +0 -0
- {ha_mcp_dev-7.12.3.dev1885 → ha_mcp_dev-7.12.3.dev1888}/src/ha_mcp/transforms/categorized_search.py +0 -0
- {ha_mcp_dev-7.12.3.dev1885 → ha_mcp_dev-7.12.3.dev1888}/src/ha_mcp/transforms/lite_docstrings.py +0 -0
- {ha_mcp_dev-7.12.3.dev1885 → ha_mcp_dev-7.12.3.dev1888}/src/ha_mcp/transport_security.py +0 -0
- {ha_mcp_dev-7.12.3.dev1885 → ha_mcp_dev-7.12.3.dev1888}/src/ha_mcp/update_check.py +0 -0
- {ha_mcp_dev-7.12.3.dev1885 → ha_mcp_dev-7.12.3.dev1888}/src/ha_mcp/utils/__init__.py +0 -0
- {ha_mcp_dev-7.12.3.dev1885 → ha_mcp_dev-7.12.3.dev1888}/src/ha_mcp/utils/config_hash.py +0 -0
- {ha_mcp_dev-7.12.3.dev1885 → ha_mcp_dev-7.12.3.dev1888}/src/ha_mcp/utils/data_paths.py +0 -0
- {ha_mcp_dev-7.12.3.dev1885 → ha_mcp_dev-7.12.3.dev1888}/src/ha_mcp/utils/domain_handlers.py +0 -0
- {ha_mcp_dev-7.12.3.dev1885 → ha_mcp_dev-7.12.3.dev1888}/src/ha_mcp/utils/fuzzy_search.py +0 -0
- {ha_mcp_dev-7.12.3.dev1885 → ha_mcp_dev-7.12.3.dev1888}/src/ha_mcp/utils/kill_signal_diagnostics.py +0 -0
- {ha_mcp_dev-7.12.3.dev1885 → ha_mcp_dev-7.12.3.dev1888}/src/ha_mcp/utils/operation_manager.py +0 -0
- {ha_mcp_dev-7.12.3.dev1885 → ha_mcp_dev-7.12.3.dev1888}/src/ha_mcp/utils/python_sandbox.py +0 -0
- {ha_mcp_dev-7.12.3.dev1885 → ha_mcp_dev-7.12.3.dev1888}/src/ha_mcp/utils/skill_loader.py +0 -0
- {ha_mcp_dev-7.12.3.dev1885 → ha_mcp_dev-7.12.3.dev1888}/src/ha_mcp/utils/usage_logger.py +0 -0
- {ha_mcp_dev-7.12.3.dev1885 → ha_mcp_dev-7.12.3.dev1888}/src/ha_mcp/visibility/__init__.py +0 -0
- {ha_mcp_dev-7.12.3.dev1885 → ha_mcp_dev-7.12.3.dev1888}/src/ha_mcp/visibility/model.py +0 -0
- {ha_mcp_dev-7.12.3.dev1885 → ha_mcp_dev-7.12.3.dev1888}/src/ha_mcp/visibility/persistence.py +0 -0
- {ha_mcp_dev-7.12.3.dev1885 → ha_mcp_dev-7.12.3.dev1888}/src/ha_mcp/visibility/resolver.py +0 -0
- {ha_mcp_dev-7.12.3.dev1885 → ha_mcp_dev-7.12.3.dev1888}/src/ha_mcp_dev.egg-info/SOURCES.txt +0 -0
- {ha_mcp_dev-7.12.3.dev1885 → ha_mcp_dev-7.12.3.dev1888}/src/ha_mcp_dev.egg-info/dependency_links.txt +0 -0
- {ha_mcp_dev-7.12.3.dev1885 → ha_mcp_dev-7.12.3.dev1888}/src/ha_mcp_dev.egg-info/entry_points.txt +0 -0
- {ha_mcp_dev-7.12.3.dev1885 → ha_mcp_dev-7.12.3.dev1888}/src/ha_mcp_dev.egg-info/requires.txt +0 -0
- {ha_mcp_dev-7.12.3.dev1885 → ha_mcp_dev-7.12.3.dev1888}/src/ha_mcp_dev.egg-info/top_level.txt +0 -0
- {ha_mcp_dev-7.12.3.dev1885 → ha_mcp_dev-7.12.3.dev1888}/tests/__init__.py +0 -0
- {ha_mcp_dev-7.12.3.dev1885 → ha_mcp_dev-7.12.3.dev1888}/tests/test_constants.py +0 -0
- {ha_mcp_dev-7.12.3.dev1885 → ha_mcp_dev-7.12.3.dev1888}/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.3.
|
|
7
|
+
version = "7.12.3.dev1888"
|
|
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.3.dev1885 → ha_mcp_dev-7.12.3.dev1888}/src/ha_mcp/tools/tools_config_helpers.py
RENAMED
|
@@ -1399,6 +1399,85 @@ async def _find_collision_in_simple_helpers(
|
|
|
1399
1399
|
return None
|
|
1400
1400
|
|
|
1401
1401
|
|
|
1402
|
+
_REGISTRY_JOIN_STALE_WARNING = (
|
|
1403
|
+
"Could not read the entity registry, so a renamed helper's 'name' may be the "
|
|
1404
|
+
"creation-time name and no current 'entity_id' is shown; use ha_search to find "
|
|
1405
|
+
"the helper by name for the authoritative current values."
|
|
1406
|
+
)
|
|
1407
|
+
|
|
1408
|
+
|
|
1409
|
+
async def _enrich_helpers_with_current_registry(
|
|
1410
|
+
client: Any, helper_type: str, items: list[Any]
|
|
1411
|
+
) -> list[str]:
|
|
1412
|
+
"""Join the entity registry onto storage-collection helper records.
|
|
1413
|
+
|
|
1414
|
+
The ``{helper_type}/list`` response carries the immutable storage ``id``
|
|
1415
|
+
(the unique_id) and the creation-time ``name``; after a UI rename the
|
|
1416
|
+
current ``entity_id`` and display name live only in the entity registry, so
|
|
1417
|
+
the raw list goes stale (issue #1794). For each record matched by
|
|
1418
|
+
``unique_id`` **and** ``platform == helper_type`` this adds the current
|
|
1419
|
+
``entity_id``, moves the storage name to ``original_name``, and sets
|
|
1420
|
+
``name`` to the current display name (registry ``name``, falling back to
|
|
1421
|
+
``original_name``). ``items`` is mutated in place.
|
|
1422
|
+
|
|
1423
|
+
Storage types without a matching entity (e.g. ``tag``) and platform
|
|
1424
|
+
mismatches are left untouched. Returns a warnings list — non-empty only
|
|
1425
|
+
when the registry read failed, so the caller can flag the un-enriched
|
|
1426
|
+
result instead of silently returning stale values.
|
|
1427
|
+
"""
|
|
1428
|
+
if not items:
|
|
1429
|
+
# Nothing to enrich — skip the full-registry fetch entirely.
|
|
1430
|
+
return []
|
|
1431
|
+
# Degrade-open: enrichment is cosmetic, so any failure — the registry read,
|
|
1432
|
+
# an unexpected registry shape (e.g. a non-hashable ``id`` breaking the
|
|
1433
|
+
# lookup), or a malformed response — flags the result rather than raising
|
|
1434
|
+
# out and letting the caller's handler turn a list call into a failure.
|
|
1435
|
+
# Mirrors _get_entities_for_config_entry, which reads the same endpoint.
|
|
1436
|
+
# send_websocket_message returns {"success": false, ...} instead of raising,
|
|
1437
|
+
# so the malformed-response check below is the branch production takes.
|
|
1438
|
+
try:
|
|
1439
|
+
reg_result = await client.send_websocket_message(
|
|
1440
|
+
{"type": "config/entity_registry/list"}
|
|
1441
|
+
)
|
|
1442
|
+
# A missing / non-list ``result`` (or a non-dict / unsuccessful response)
|
|
1443
|
+
# is a malformed read, not an empty registry — flag it rather than
|
|
1444
|
+
# silently returning un-enriched records. A present-but-empty ``[]`` is a
|
|
1445
|
+
# legitimate no-match and passes through below without a warning.
|
|
1446
|
+
if not (
|
|
1447
|
+
isinstance(reg_result, dict)
|
|
1448
|
+
and reg_result.get("success")
|
|
1449
|
+
and isinstance(reg_result.get("result"), list)
|
|
1450
|
+
):
|
|
1451
|
+
logger.debug(
|
|
1452
|
+
"list_helpers registry enrichment: malformed registry response: %r",
|
|
1453
|
+
reg_result,
|
|
1454
|
+
)
|
|
1455
|
+
return [_REGISTRY_JOIN_STALE_WARNING]
|
|
1456
|
+
registry = reg_result["result"]
|
|
1457
|
+
reg_by_uid = {
|
|
1458
|
+
entry["unique_id"]: entry
|
|
1459
|
+
for entry in registry
|
|
1460
|
+
if isinstance(entry, dict)
|
|
1461
|
+
and entry.get("platform") == helper_type
|
|
1462
|
+
and entry.get("unique_id")
|
|
1463
|
+
}
|
|
1464
|
+
for item in items:
|
|
1465
|
+
if not isinstance(item, dict):
|
|
1466
|
+
continue
|
|
1467
|
+
entry = reg_by_uid.get(item.get("id"))
|
|
1468
|
+
if entry is None:
|
|
1469
|
+
continue
|
|
1470
|
+
item["entity_id"] = entry.get("entity_id")
|
|
1471
|
+
item["original_name"] = item.get("name")
|
|
1472
|
+
item["name"] = (
|
|
1473
|
+
entry.get("name") or entry.get("original_name") or item.get("name")
|
|
1474
|
+
)
|
|
1475
|
+
except Exception as e:
|
|
1476
|
+
logger.debug(f"list_helpers registry enrichment failed: {e}")
|
|
1477
|
+
return [_REGISTRY_JOIN_STALE_WARNING]
|
|
1478
|
+
return []
|
|
1479
|
+
|
|
1480
|
+
|
|
1402
1481
|
async def _check_name_collision(
|
|
1403
1482
|
client: Any,
|
|
1404
1483
|
helper_type: str,
|
|
@@ -3391,6 +3470,14 @@ def _shape_collection_helper_record(rec: dict[str, Any]) -> dict[str, Any]:
|
|
|
3391
3470
|
out["entity_id"] = entity_id
|
|
3392
3471
|
name = rec.get("name")
|
|
3393
3472
|
if name is not None:
|
|
3473
|
+
# The storage body's ``name`` is the creation-time name (a rename
|
|
3474
|
+
# updates the registry, not the body — #1794); preserve it as
|
|
3475
|
+
# ``original_name`` before the current display name overrides it, so a
|
|
3476
|
+
# component-served record carries the same additive shape as the legacy
|
|
3477
|
+
# join (both paths promise entity_id/original_name in the docstring).
|
|
3478
|
+
original_name = out.get("name")
|
|
3479
|
+
if original_name is not None:
|
|
3480
|
+
out["original_name"] = original_name
|
|
3394
3481
|
out["name"] = name
|
|
3395
3482
|
return out
|
|
3396
3483
|
|
|
@@ -3538,11 +3625,19 @@ class HelperConfigTools:
|
|
|
3538
3625
|
List all Home Assistant helpers of a specific type with their configurations.
|
|
3539
3626
|
|
|
3540
3627
|
Returns complete configuration for all helpers of the specified type including:
|
|
3541
|
-
-
|
|
3542
|
-
|
|
3628
|
+
- id (immutable storage key), entity_id (current — address the helper by
|
|
3629
|
+
this, where available), name (current display name), original_name
|
|
3630
|
+
(creation-time name), icon
|
|
3543
3631
|
- Type-specific settings (min/max for input_number, options for input_select, etc.)
|
|
3544
3632
|
- Area and label assignments
|
|
3545
3633
|
|
|
3634
|
+
For a helper renamed in the UI, id/original_name keep the storage values while
|
|
3635
|
+
entity_id/name reflect the current entity registry (entity_id is the identifier
|
|
3636
|
+
ha_config_set_helper resolves against, so prefer it over id for a renamed helper).
|
|
3637
|
+
entity_id/original_name are present only for storage-collection helpers matched in
|
|
3638
|
+
the entity registry — types with no backing entity (e.g. tag), and every record when
|
|
3639
|
+
the registry read degrades, carry only id/name (a warning flags the degraded case).
|
|
3640
|
+
|
|
3546
3641
|
SUPPORTED HELPER TYPES:
|
|
3547
3642
|
- input_button: Virtual buttons for triggering automations
|
|
3548
3643
|
- input_boolean: Toggle switches/checkboxes
|
|
@@ -3602,14 +3697,25 @@ class HelperConfigTools:
|
|
|
3602
3697
|
{"type": f"{helper_type}/list"}
|
|
3603
3698
|
)
|
|
3604
3699
|
if result.get("success"):
|
|
3605
|
-
|
|
3606
|
-
|
|
3700
|
+
# Flatten first: person/list returns {"storage": [...],
|
|
3701
|
+
# "config": [...]} rather than a flat list, so a raw
|
|
3702
|
+
# result["result"] would be a dict here — breaking both the
|
|
3703
|
+
# count and the registry enrichment below (which iterates
|
|
3704
|
+
# records). _flatten_helper_list_result normalises both shapes.
|
|
3705
|
+
items = _flatten_helper_list_result(result)
|
|
3706
|
+
warnings = await _enrich_helpers_with_current_registry(
|
|
3707
|
+
self._client, helper_type, items
|
|
3708
|
+
)
|
|
3709
|
+
response: dict[str, Any] = {
|
|
3607
3710
|
"success": True,
|
|
3608
3711
|
"helper_type": helper_type,
|
|
3609
3712
|
"count": len(items),
|
|
3610
3713
|
"helpers": items,
|
|
3611
3714
|
"message": f"Found {len(items)} {helper_type} helper(s)",
|
|
3612
3715
|
}
|
|
3716
|
+
if warnings:
|
|
3717
|
+
response["warnings"] = warnings
|
|
3718
|
+
return response
|
|
3613
3719
|
raise_tool_error(
|
|
3614
3720
|
create_error_response(
|
|
3615
3721
|
ErrorCode.SERVICE_CALL_FAILED,
|
|
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.3.dev1885 → ha_mcp_dev-7.12.3.dev1888}/src/ha_mcp/client/supervisor_client.py
RENAMED
|
File without changes
|
{ha_mcp_dev-7.12.3.dev1885 → ha_mcp_dev-7.12.3.dev1888}/src/ha_mcp/client/websocket_client.py
RENAMED
|
File without changes
|
{ha_mcp_dev-7.12.3.dev1885 → ha_mcp_dev-7.12.3.dev1888}/src/ha_mcp/client/websocket_listener.py
RENAMED
|
File without changes
|
|
File without changes
|
{ha_mcp_dev-7.12.3.dev1885 → ha_mcp_dev-7.12.3.dev1888}/src/ha_mcp/dashboard_screenshot/__init__.py
RENAMED
|
File without changes
|
{ha_mcp_dev-7.12.3.dev1885 → ha_mcp_dev-7.12.3.dev1888}/src/ha_mcp/dashboard_screenshot/capture.py
RENAMED
|
File without changes
|
{ha_mcp_dev-7.12.3.dev1885 → ha_mcp_dev-7.12.3.dev1888}/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
|
|
File without changes
|
{ha_mcp_dev-7.12.3.dev1885 → ha_mcp_dev-7.12.3.dev1888}/src/ha_mcp/resources/skills-vendor/AGENTS.md
RENAMED
|
File without changes
|
{ha_mcp_dev-7.12.3.dev1885 → ha_mcp_dev-7.12.3.dev1888}/src/ha_mcp/resources/skills-vendor/CLAUDE.md
RENAMED
|
File without changes
|
|
File without changes
|
{ha_mcp_dev-7.12.3.dev1885 → ha_mcp_dev-7.12.3.dev1888}/src/ha_mcp/resources/skills-vendor/LICENSE
RENAMED
|
File without changes
|
{ha_mcp_dev-7.12.3.dev1885 → ha_mcp_dev-7.12.3.dev1888}/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.3.dev1885 → ha_mcp_dev-7.12.3.dev1888}/src/ha_mcp/settings_ui/settings.html
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
{ha_mcp_dev-7.12.3.dev1885 → ha_mcp_dev-7.12.3.dev1888}/src/ha_mcp/stdio_settings_sidecar.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{ha_mcp_dev-7.12.3.dev1885 → ha_mcp_dev-7.12.3.dev1888}/src/ha_mcp/tools/best_practice_checker.py
RENAMED
|
File without changes
|
|
File without changes
|
{ha_mcp_dev-7.12.3.dev1885 → ha_mcp_dev-7.12.3.dev1888}/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.3.dev1885 → ha_mcp_dev-7.12.3.dev1888}/src/ha_mcp/tools/reference_validator.py
RENAMED
|
File without changes
|
|
File without changes
|
{ha_mcp_dev-7.12.3.dev1885 → ha_mcp_dev-7.12.3.dev1888}/src/ha_mcp/tools/smart_search/__init__.py
RENAMED
|
File without changes
|
{ha_mcp_dev-7.12.3.dev1885 → ha_mcp_dev-7.12.3.dev1888}/src/ha_mcp/tools/smart_search/_base.py
RENAMED
|
File without changes
|
{ha_mcp_dev-7.12.3.dev1885 → ha_mcp_dev-7.12.3.dev1888}/src/ha_mcp/tools/smart_search/_config.py
RENAMED
|
File without changes
|
{ha_mcp_dev-7.12.3.dev1885 → ha_mcp_dev-7.12.3.dev1888}/src/ha_mcp/tools/smart_search/_deep.py
RENAMED
|
File without changes
|
{ha_mcp_dev-7.12.3.dev1885 → ha_mcp_dev-7.12.3.dev1888}/src/ha_mcp/tools/smart_search/_entities.py
RENAMED
|
File without changes
|
{ha_mcp_dev-7.12.3.dev1885 → ha_mcp_dev-7.12.3.dev1888}/src/ha_mcp/tools/smart_search/_fetch.py
RENAMED
|
File without changes
|
{ha_mcp_dev-7.12.3.dev1885 → ha_mcp_dev-7.12.3.dev1888}/src/ha_mcp/tools/smart_search/_overview.py
RENAMED
|
File without changes
|
{ha_mcp_dev-7.12.3.dev1885 → ha_mcp_dev-7.12.3.dev1888}/src/ha_mcp/tools/smart_search/_scenes.py
RENAMED
|
File without changes
|
{ha_mcp_dev-7.12.3.dev1885 → ha_mcp_dev-7.12.3.dev1888}/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.3.dev1885 → ha_mcp_dev-7.12.3.dev1888}/src/ha_mcp/tools/tools_blueprints.py
RENAMED
|
File without changes
|
{ha_mcp_dev-7.12.3.dev1885 → ha_mcp_dev-7.12.3.dev1888}/src/ha_mcp/tools/tools_bug_report.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
{ha_mcp_dev-7.12.3.dev1885 → ha_mcp_dev-7.12.3.dev1888}/src/ha_mcp/tools/tools_categories.py
RENAMED
|
File without changes
|
|
File without changes
|
{ha_mcp_dev-7.12.3.dev1885 → ha_mcp_dev-7.12.3.dev1888}/src/ha_mcp/tools/tools_config_automations.py
RENAMED
|
File without changes
|
{ha_mcp_dev-7.12.3.dev1885 → ha_mcp_dev-7.12.3.dev1888}/src/ha_mcp/tools/tools_config_dashboards.py
RENAMED
|
File without changes
|
{ha_mcp_dev-7.12.3.dev1885 → ha_mcp_dev-7.12.3.dev1888}/src/ha_mcp/tools/tools_config_scenes.py
RENAMED
|
File without changes
|
{ha_mcp_dev-7.12.3.dev1885 → ha_mcp_dev-7.12.3.dev1888}/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.3.dev1885 → ha_mcp_dev-7.12.3.dev1888}/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.3.dev1885 → ha_mcp_dev-7.12.3.dev1888}/src/ha_mcp/tools/tools_integrations.py
RENAMED
|
File without changes
|
|
File without changes
|
{ha_mcp_dev-7.12.3.dev1885 → ha_mcp_dev-7.12.3.dev1888}/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.3.dev1885 → ha_mcp_dev-7.12.3.dev1888}/src/ha_mcp/tools/tools_voice_assistant.py
RENAMED
|
File without changes
|
{ha_mcp_dev-7.12.3.dev1885 → ha_mcp_dev-7.12.3.dev1888}/src/ha_mcp/tools/tools_yaml_config.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
{ha_mcp_dev-7.12.3.dev1885 → ha_mcp_dev-7.12.3.dev1888}/src/ha_mcp/tools/validation_middleware.py
RENAMED
|
File without changes
|
|
File without changes
|
{ha_mcp_dev-7.12.3.dev1885 → ha_mcp_dev-7.12.3.dev1888}/src/ha_mcp/transforms/categorized_search.py
RENAMED
|
File without changes
|
{ha_mcp_dev-7.12.3.dev1885 → ha_mcp_dev-7.12.3.dev1888}/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.3.dev1885 → ha_mcp_dev-7.12.3.dev1888}/src/ha_mcp/utils/kill_signal_diagnostics.py
RENAMED
|
File without changes
|
{ha_mcp_dev-7.12.3.dev1885 → ha_mcp_dev-7.12.3.dev1888}/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.3.dev1885 → ha_mcp_dev-7.12.3.dev1888}/src/ha_mcp/visibility/persistence.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
{ha_mcp_dev-7.12.3.dev1885 → ha_mcp_dev-7.12.3.dev1888}/src/ha_mcp_dev.egg-info/dependency_links.txt
RENAMED
|
File without changes
|
{ha_mcp_dev-7.12.3.dev1885 → ha_mcp_dev-7.12.3.dev1888}/src/ha_mcp_dev.egg-info/entry_points.txt
RENAMED
|
File without changes
|
{ha_mcp_dev-7.12.3.dev1885 → ha_mcp_dev-7.12.3.dev1888}/src/ha_mcp_dev.egg-info/requires.txt
RENAMED
|
File without changes
|
{ha_mcp_dev-7.12.3.dev1885 → ha_mcp_dev-7.12.3.dev1888}/src/ha_mcp_dev.egg-info/top_level.txt
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|