ha-mcp-dev 7.6.0.dev635__tar.gz → 7.6.0.dev636__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.6.0.dev635/src/ha_mcp_dev.egg-info → ha_mcp_dev-7.6.0.dev636}/PKG-INFO +1 -1
- {ha_mcp_dev-7.6.0.dev635 → ha_mcp_dev-7.6.0.dev636}/pyproject.toml +1 -1
- {ha_mcp_dev-7.6.0.dev635 → ha_mcp_dev-7.6.0.dev636}/src/ha_mcp/settings_ui.py +44 -148
- {ha_mcp_dev-7.6.0.dev635 → ha_mcp_dev-7.6.0.dev636/src/ha_mcp_dev.egg-info}/PKG-INFO +1 -1
- {ha_mcp_dev-7.6.0.dev635 → ha_mcp_dev-7.6.0.dev636}/LICENSE +0 -0
- {ha_mcp_dev-7.6.0.dev635 → ha_mcp_dev-7.6.0.dev636}/MANIFEST.in +0 -0
- {ha_mcp_dev-7.6.0.dev635 → ha_mcp_dev-7.6.0.dev636}/README.md +0 -0
- {ha_mcp_dev-7.6.0.dev635 → ha_mcp_dev-7.6.0.dev636}/setup.cfg +0 -0
- {ha_mcp_dev-7.6.0.dev635 → ha_mcp_dev-7.6.0.dev636}/src/ha_mcp/__init__.py +0 -0
- {ha_mcp_dev-7.6.0.dev635 → ha_mcp_dev-7.6.0.dev636}/src/ha_mcp/__main__.py +0 -0
- {ha_mcp_dev-7.6.0.dev635 → ha_mcp_dev-7.6.0.dev636}/src/ha_mcp/_pypi_marker +0 -0
- {ha_mcp_dev-7.6.0.dev635 → ha_mcp_dev-7.6.0.dev636}/src/ha_mcp/_version.py +0 -0
- {ha_mcp_dev-7.6.0.dev635 → ha_mcp_dev-7.6.0.dev636}/src/ha_mcp/auth/__init__.py +0 -0
- {ha_mcp_dev-7.6.0.dev635 → ha_mcp_dev-7.6.0.dev636}/src/ha_mcp/auth/consent_form.py +0 -0
- {ha_mcp_dev-7.6.0.dev635 → ha_mcp_dev-7.6.0.dev636}/src/ha_mcp/auth/provider.py +0 -0
- {ha_mcp_dev-7.6.0.dev635 → ha_mcp_dev-7.6.0.dev636}/src/ha_mcp/backup_manager.py +0 -0
- {ha_mcp_dev-7.6.0.dev635 → ha_mcp_dev-7.6.0.dev636}/src/ha_mcp/client/__init__.py +0 -0
- {ha_mcp_dev-7.6.0.dev635 → ha_mcp_dev-7.6.0.dev636}/src/ha_mcp/client/rest_client.py +0 -0
- {ha_mcp_dev-7.6.0.dev635 → ha_mcp_dev-7.6.0.dev636}/src/ha_mcp/client/supervisor_client.py +0 -0
- {ha_mcp_dev-7.6.0.dev635 → ha_mcp_dev-7.6.0.dev636}/src/ha_mcp/client/websocket_client.py +0 -0
- {ha_mcp_dev-7.6.0.dev635 → ha_mcp_dev-7.6.0.dev636}/src/ha_mcp/client/websocket_listener.py +0 -0
- {ha_mcp_dev-7.6.0.dev635 → ha_mcp_dev-7.6.0.dev636}/src/ha_mcp/config.py +0 -0
- {ha_mcp_dev-7.6.0.dev635 → ha_mcp_dev-7.6.0.dev636}/src/ha_mcp/errors.py +0 -0
- {ha_mcp_dev-7.6.0.dev635 → ha_mcp_dev-7.6.0.dev636}/src/ha_mcp/policy/__init__.py +0 -0
- {ha_mcp_dev-7.6.0.dev635 → ha_mcp_dev-7.6.0.dev636}/src/ha_mcp/policy/approval_queue.py +0 -0
- {ha_mcp_dev-7.6.0.dev635 → ha_mcp_dev-7.6.0.dev636}/src/ha_mcp/policy/evaluator.py +0 -0
- {ha_mcp_dev-7.6.0.dev635 → ha_mcp_dev-7.6.0.dev636}/src/ha_mcp/policy/handlers.py +0 -0
- {ha_mcp_dev-7.6.0.dev635 → ha_mcp_dev-7.6.0.dev636}/src/ha_mcp/policy/middleware.py +0 -0
- {ha_mcp_dev-7.6.0.dev635 → ha_mcp_dev-7.6.0.dev636}/src/ha_mcp/policy/model.py +0 -0
- {ha_mcp_dev-7.6.0.dev635 → ha_mcp_dev-7.6.0.dev636}/src/ha_mcp/policy/persistence.py +0 -0
- {ha_mcp_dev-7.6.0.dev635 → ha_mcp_dev-7.6.0.dev636}/src/ha_mcp/policy/value_sources.py +0 -0
- {ha_mcp_dev-7.6.0.dev635 → ha_mcp_dev-7.6.0.dev636}/src/ha_mcp/py.typed +0 -0
- {ha_mcp_dev-7.6.0.dev635 → ha_mcp_dev-7.6.0.dev636}/src/ha_mcp/resources/skills-vendor/.claude/settings.json +0 -0
- {ha_mcp_dev-7.6.0.dev635 → ha_mcp_dev-7.6.0.dev636}/src/ha_mcp/resources/skills-vendor/.claude-plugin/marketplace.json +0 -0
- {ha_mcp_dev-7.6.0.dev635 → ha_mcp_dev-7.6.0.dev636}/src/ha_mcp/resources/skills-vendor/.claude-plugin/plugin.json +0 -0
- {ha_mcp_dev-7.6.0.dev635 → ha_mcp_dev-7.6.0.dev636}/src/ha_mcp/resources/skills-vendor/.github/ISSUE_TEMPLATE/skill-rca.md +0 -0
- {ha_mcp_dev-7.6.0.dev635 → ha_mcp_dev-7.6.0.dev636}/src/ha_mcp/resources/skills-vendor/.github/pull_request_template.md +0 -0
- {ha_mcp_dev-7.6.0.dev635 → ha_mcp_dev-7.6.0.dev636}/src/ha_mcp/resources/skills-vendor/AGENTS.md +0 -0
- {ha_mcp_dev-7.6.0.dev635 → ha_mcp_dev-7.6.0.dev636}/src/ha_mcp/resources/skills-vendor/CLAUDE.md +0 -0
- {ha_mcp_dev-7.6.0.dev635 → ha_mcp_dev-7.6.0.dev636}/src/ha_mcp/resources/skills-vendor/CONTRIBUTING.md +0 -0
- {ha_mcp_dev-7.6.0.dev635 → ha_mcp_dev-7.6.0.dev636}/src/ha_mcp/resources/skills-vendor/LICENSE +0 -0
- {ha_mcp_dev-7.6.0.dev635 → ha_mcp_dev-7.6.0.dev636}/src/ha_mcp/resources/skills-vendor/README.md +0 -0
- {ha_mcp_dev-7.6.0.dev635 → ha_mcp_dev-7.6.0.dev636}/src/ha_mcp/resources/skills-vendor/skills/home-assistant-best-practices/SKILL.md +0 -0
- {ha_mcp_dev-7.6.0.dev635 → ha_mcp_dev-7.6.0.dev636}/src/ha_mcp/resources/skills-vendor/skills/home-assistant-best-practices/evals/evals.json +0 -0
- {ha_mcp_dev-7.6.0.dev635 → ha_mcp_dev-7.6.0.dev636}/src/ha_mcp/resources/skills-vendor/skills/home-assistant-best-practices/references/automation-patterns.md +0 -0
- {ha_mcp_dev-7.6.0.dev635 → ha_mcp_dev-7.6.0.dev636}/src/ha_mcp/resources/skills-vendor/skills/home-assistant-best-practices/references/dashboard-cards.md +0 -0
- {ha_mcp_dev-7.6.0.dev635 → ha_mcp_dev-7.6.0.dev636}/src/ha_mcp/resources/skills-vendor/skills/home-assistant-best-practices/references/dashboard-guide.md +0 -0
- {ha_mcp_dev-7.6.0.dev635 → ha_mcp_dev-7.6.0.dev636}/src/ha_mcp/resources/skills-vendor/skills/home-assistant-best-practices/references/device-control.md +0 -0
- {ha_mcp_dev-7.6.0.dev635 → ha_mcp_dev-7.6.0.dev636}/src/ha_mcp/resources/skills-vendor/skills/home-assistant-best-practices/references/domain-docs.md +0 -0
- {ha_mcp_dev-7.6.0.dev635 → ha_mcp_dev-7.6.0.dev636}/src/ha_mcp/resources/skills-vendor/skills/home-assistant-best-practices/references/examples.yaml +0 -0
- {ha_mcp_dev-7.6.0.dev635 → ha_mcp_dev-7.6.0.dev636}/src/ha_mcp/resources/skills-vendor/skills/home-assistant-best-practices/references/helper-selection.md +0 -0
- {ha_mcp_dev-7.6.0.dev635 → ha_mcp_dev-7.6.0.dev636}/src/ha_mcp/resources/skills-vendor/skills/home-assistant-best-practices/references/safe-refactoring.md +0 -0
- {ha_mcp_dev-7.6.0.dev635 → ha_mcp_dev-7.6.0.dev636}/src/ha_mcp/resources/skills-vendor/skills/home-assistant-best-practices/references/template-guidelines.md +0 -0
- {ha_mcp_dev-7.6.0.dev635 → ha_mcp_dev-7.6.0.dev636}/src/ha_mcp/resources/skills-vendor/skills/home-assistant-best-practices/references/yaml-only-integrations.md +0 -0
- {ha_mcp_dev-7.6.0.dev635 → ha_mcp_dev-7.6.0.dev636}/src/ha_mcp/server.py +0 -0
- {ha_mcp_dev-7.6.0.dev635 → ha_mcp_dev-7.6.0.dev636}/src/ha_mcp/smoke_test.py +0 -0
- {ha_mcp_dev-7.6.0.dev635 → ha_mcp_dev-7.6.0.dev636}/src/ha_mcp/stdio_settings_sidecar.py +0 -0
- {ha_mcp_dev-7.6.0.dev635 → ha_mcp_dev-7.6.0.dev636}/src/ha_mcp/tools/__init__.py +0 -0
- {ha_mcp_dev-7.6.0.dev635 → ha_mcp_dev-7.6.0.dev636}/src/ha_mcp/tools/auto_backup.py +0 -0
- {ha_mcp_dev-7.6.0.dev635 → ha_mcp_dev-7.6.0.dev636}/src/ha_mcp/tools/backup.py +0 -0
- {ha_mcp_dev-7.6.0.dev635 → ha_mcp_dev-7.6.0.dev636}/src/ha_mcp/tools/best_practice_checker.py +0 -0
- {ha_mcp_dev-7.6.0.dev635 → ha_mcp_dev-7.6.0.dev636}/src/ha_mcp/tools/device_control.py +0 -0
- {ha_mcp_dev-7.6.0.dev635 → ha_mcp_dev-7.6.0.dev636}/src/ha_mcp/tools/enhanced.py +0 -0
- {ha_mcp_dev-7.6.0.dev635 → ha_mcp_dev-7.6.0.dev636}/src/ha_mcp/tools/helpers.py +0 -0
- {ha_mcp_dev-7.6.0.dev635 → ha_mcp_dev-7.6.0.dev636}/src/ha_mcp/tools/reference_validator.py +0 -0
- {ha_mcp_dev-7.6.0.dev635 → ha_mcp_dev-7.6.0.dev636}/src/ha_mcp/tools/registry.py +0 -0
- {ha_mcp_dev-7.6.0.dev635 → ha_mcp_dev-7.6.0.dev636}/src/ha_mcp/tools/smart_search.py +0 -0
- {ha_mcp_dev-7.6.0.dev635 → ha_mcp_dev-7.6.0.dev636}/src/ha_mcp/tools/tools_addons.py +0 -0
- {ha_mcp_dev-7.6.0.dev635 → ha_mcp_dev-7.6.0.dev636}/src/ha_mcp/tools/tools_areas.py +0 -0
- {ha_mcp_dev-7.6.0.dev635 → ha_mcp_dev-7.6.0.dev636}/src/ha_mcp/tools/tools_blueprints.py +0 -0
- {ha_mcp_dev-7.6.0.dev635 → ha_mcp_dev-7.6.0.dev636}/src/ha_mcp/tools/tools_bug_report.py +0 -0
- {ha_mcp_dev-7.6.0.dev635 → ha_mcp_dev-7.6.0.dev636}/src/ha_mcp/tools/tools_calendar.py +0 -0
- {ha_mcp_dev-7.6.0.dev635 → ha_mcp_dev-7.6.0.dev636}/src/ha_mcp/tools/tools_camera.py +0 -0
- {ha_mcp_dev-7.6.0.dev635 → ha_mcp_dev-7.6.0.dev636}/src/ha_mcp/tools/tools_categories.py +0 -0
- {ha_mcp_dev-7.6.0.dev635 → ha_mcp_dev-7.6.0.dev636}/src/ha_mcp/tools/tools_code.py +0 -0
- {ha_mcp_dev-7.6.0.dev635 → ha_mcp_dev-7.6.0.dev636}/src/ha_mcp/tools/tools_config_automations.py +0 -0
- {ha_mcp_dev-7.6.0.dev635 → ha_mcp_dev-7.6.0.dev636}/src/ha_mcp/tools/tools_config_dashboards.py +0 -0
- {ha_mcp_dev-7.6.0.dev635 → ha_mcp_dev-7.6.0.dev636}/src/ha_mcp/tools/tools_config_entry_flow.py +0 -0
- {ha_mcp_dev-7.6.0.dev635 → ha_mcp_dev-7.6.0.dev636}/src/ha_mcp/tools/tools_config_helpers.py +0 -0
- {ha_mcp_dev-7.6.0.dev635 → ha_mcp_dev-7.6.0.dev636}/src/ha_mcp/tools/tools_config_scenes.py +0 -0
- {ha_mcp_dev-7.6.0.dev635 → ha_mcp_dev-7.6.0.dev636}/src/ha_mcp/tools/tools_config_scripts.py +0 -0
- {ha_mcp_dev-7.6.0.dev635 → ha_mcp_dev-7.6.0.dev636}/src/ha_mcp/tools/tools_energy.py +0 -0
- {ha_mcp_dev-7.6.0.dev635 → ha_mcp_dev-7.6.0.dev636}/src/ha_mcp/tools/tools_entities.py +0 -0
- {ha_mcp_dev-7.6.0.dev635 → ha_mcp_dev-7.6.0.dev636}/src/ha_mcp/tools/tools_filesystem.py +0 -0
- {ha_mcp_dev-7.6.0.dev635 → ha_mcp_dev-7.6.0.dev636}/src/ha_mcp/tools/tools_groups.py +0 -0
- {ha_mcp_dev-7.6.0.dev635 → ha_mcp_dev-7.6.0.dev636}/src/ha_mcp/tools/tools_hacs.py +0 -0
- {ha_mcp_dev-7.6.0.dev635 → ha_mcp_dev-7.6.0.dev636}/src/ha_mcp/tools/tools_history.py +0 -0
- {ha_mcp_dev-7.6.0.dev635 → ha_mcp_dev-7.6.0.dev636}/src/ha_mcp/tools/tools_integrations.py +0 -0
- {ha_mcp_dev-7.6.0.dev635 → ha_mcp_dev-7.6.0.dev636}/src/ha_mcp/tools/tools_labels.py +0 -0
- {ha_mcp_dev-7.6.0.dev635 → ha_mcp_dev-7.6.0.dev636}/src/ha_mcp/tools/tools_mcp_component.py +0 -0
- {ha_mcp_dev-7.6.0.dev635 → ha_mcp_dev-7.6.0.dev636}/src/ha_mcp/tools/tools_registry.py +0 -0
- {ha_mcp_dev-7.6.0.dev635 → ha_mcp_dev-7.6.0.dev636}/src/ha_mcp/tools/tools_resources.py +0 -0
- {ha_mcp_dev-7.6.0.dev635 → ha_mcp_dev-7.6.0.dev636}/src/ha_mcp/tools/tools_search.py +0 -0
- {ha_mcp_dev-7.6.0.dev635 → ha_mcp_dev-7.6.0.dev636}/src/ha_mcp/tools/tools_service.py +0 -0
- {ha_mcp_dev-7.6.0.dev635 → ha_mcp_dev-7.6.0.dev636}/src/ha_mcp/tools/tools_services.py +0 -0
- {ha_mcp_dev-7.6.0.dev635 → ha_mcp_dev-7.6.0.dev636}/src/ha_mcp/tools/tools_system.py +0 -0
- {ha_mcp_dev-7.6.0.dev635 → ha_mcp_dev-7.6.0.dev636}/src/ha_mcp/tools/tools_todo.py +0 -0
- {ha_mcp_dev-7.6.0.dev635 → ha_mcp_dev-7.6.0.dev636}/src/ha_mcp/tools/tools_traces.py +0 -0
- {ha_mcp_dev-7.6.0.dev635 → ha_mcp_dev-7.6.0.dev636}/src/ha_mcp/tools/tools_updates.py +0 -0
- {ha_mcp_dev-7.6.0.dev635 → ha_mcp_dev-7.6.0.dev636}/src/ha_mcp/tools/tools_utility.py +0 -0
- {ha_mcp_dev-7.6.0.dev635 → ha_mcp_dev-7.6.0.dev636}/src/ha_mcp/tools/tools_voice_assistant.py +0 -0
- {ha_mcp_dev-7.6.0.dev635 → ha_mcp_dev-7.6.0.dev636}/src/ha_mcp/tools/tools_yaml_config.py +0 -0
- {ha_mcp_dev-7.6.0.dev635 → ha_mcp_dev-7.6.0.dev636}/src/ha_mcp/tools/tools_zones.py +0 -0
- {ha_mcp_dev-7.6.0.dev635 → ha_mcp_dev-7.6.0.dev636}/src/ha_mcp/tools/util_helpers.py +0 -0
- {ha_mcp_dev-7.6.0.dev635 → ha_mcp_dev-7.6.0.dev636}/src/ha_mcp/tools/validation_middleware.py +0 -0
- {ha_mcp_dev-7.6.0.dev635 → ha_mcp_dev-7.6.0.dev636}/src/ha_mcp/transforms/__init__.py +0 -0
- {ha_mcp_dev-7.6.0.dev635 → ha_mcp_dev-7.6.0.dev636}/src/ha_mcp/transforms/categorized_search.py +0 -0
- {ha_mcp_dev-7.6.0.dev635 → ha_mcp_dev-7.6.0.dev636}/src/ha_mcp/transforms/lite_docstrings.py +0 -0
- {ha_mcp_dev-7.6.0.dev635 → ha_mcp_dev-7.6.0.dev636}/src/ha_mcp/utils/__init__.py +0 -0
- {ha_mcp_dev-7.6.0.dev635 → ha_mcp_dev-7.6.0.dev636}/src/ha_mcp/utils/config_hash.py +0 -0
- {ha_mcp_dev-7.6.0.dev635 → ha_mcp_dev-7.6.0.dev636}/src/ha_mcp/utils/data_paths.py +0 -0
- {ha_mcp_dev-7.6.0.dev635 → ha_mcp_dev-7.6.0.dev636}/src/ha_mcp/utils/domain_handlers.py +0 -0
- {ha_mcp_dev-7.6.0.dev635 → ha_mcp_dev-7.6.0.dev636}/src/ha_mcp/utils/fuzzy_search.py +0 -0
- {ha_mcp_dev-7.6.0.dev635 → ha_mcp_dev-7.6.0.dev636}/src/ha_mcp/utils/kill_signal_diagnostics.py +0 -0
- {ha_mcp_dev-7.6.0.dev635 → ha_mcp_dev-7.6.0.dev636}/src/ha_mcp/utils/operation_manager.py +0 -0
- {ha_mcp_dev-7.6.0.dev635 → ha_mcp_dev-7.6.0.dev636}/src/ha_mcp/utils/python_sandbox.py +0 -0
- {ha_mcp_dev-7.6.0.dev635 → ha_mcp_dev-7.6.0.dev636}/src/ha_mcp/utils/skill_loader.py +0 -0
- {ha_mcp_dev-7.6.0.dev635 → ha_mcp_dev-7.6.0.dev636}/src/ha_mcp/utils/usage_logger.py +0 -0
- {ha_mcp_dev-7.6.0.dev635 → ha_mcp_dev-7.6.0.dev636}/src/ha_mcp_dev.egg-info/SOURCES.txt +0 -0
- {ha_mcp_dev-7.6.0.dev635 → ha_mcp_dev-7.6.0.dev636}/src/ha_mcp_dev.egg-info/dependency_links.txt +0 -0
- {ha_mcp_dev-7.6.0.dev635 → ha_mcp_dev-7.6.0.dev636}/src/ha_mcp_dev.egg-info/entry_points.txt +0 -0
- {ha_mcp_dev-7.6.0.dev635 → ha_mcp_dev-7.6.0.dev636}/src/ha_mcp_dev.egg-info/requires.txt +0 -0
- {ha_mcp_dev-7.6.0.dev635 → ha_mcp_dev-7.6.0.dev636}/src/ha_mcp_dev.egg-info/top_level.txt +0 -0
- {ha_mcp_dev-7.6.0.dev635 → ha_mcp_dev-7.6.0.dev636}/tests/__init__.py +0 -0
- {ha_mcp_dev-7.6.0.dev635 → ha_mcp_dev-7.6.0.dev636}/tests/test_constants.py +0 -0
- {ha_mcp_dev-7.6.0.dev635 → ha_mcp_dev-7.6.0.dev636}/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.6.0.
|
|
7
|
+
version = "7.6.0.dev636"
|
|
8
8
|
description = "Home Assistant MCP Server - Complete control of Home Assistant through MCP"
|
|
9
9
|
readme = "README.md"
|
|
10
10
|
requires-python = ">=3.13,<3.14"
|
|
@@ -5994,6 +5994,47 @@ def register_settings_routes(
|
|
|
5994
5994
|
)
|
|
5995
5995
|
return
|
|
5996
5996
|
|
|
5997
|
+
# Every route this function mounts except the add-on-only root mount is defined
|
|
5998
|
+
# once in this table and mounted under each active prefix below: at root
|
|
5999
|
+
# in add-on mode (so HA ingress can proxy localhost:9583/), and under the
|
|
6000
|
+
# secret path when one is set (Docker / standalone direct access). A
|
|
6001
|
+
# deployment hits either, both, or — guarded above — neither. Deriving
|
|
6002
|
+
# the mounts from one table keeps them from drifting; the frontend uses
|
|
6003
|
+
# relative fetches (./api/settings/...) so the handlers work at any prefix.
|
|
6004
|
+
routes: list[tuple[str, list[str], str]] = [
|
|
6005
|
+
("/settings", ["GET"], "settings_page"),
|
|
6006
|
+
("/api/settings/tools", ["GET"], "get_tools"),
|
|
6007
|
+
("/api/settings/tools", ["POST"], "save_tools"),
|
|
6008
|
+
("/api/settings/restart", ["POST"], "restart_addon"),
|
|
6009
|
+
("/api/settings/info", ["GET"], "settings_info"),
|
|
6010
|
+
("/api/settings/features", ["GET"], "get_feature_flags"),
|
|
6011
|
+
("/api/settings/features", ["POST"], "save_feature_flags"),
|
|
6012
|
+
# Advanced settings endpoints
|
|
6013
|
+
("/api/settings/advanced", ["GET"], "get_advanced_settings"),
|
|
6014
|
+
("/api/settings/advanced", ["POST"], "save_advanced_settings"),
|
|
6015
|
+
# Auto-backup endpoints (#1288)
|
|
6016
|
+
("/api/settings/backups", ["GET"], "list_backups"),
|
|
6017
|
+
("/api/settings/backups", ["DELETE"], "delete_backups_bulk"),
|
|
6018
|
+
("/api/settings/backups/{name}", ["GET"], "view_backup"),
|
|
6019
|
+
("/api/settings/backups/{name}/diff", ["GET"], "diff_backup"),
|
|
6020
|
+
("/api/settings/backups/{name}/restore", ["POST"], "restore_backup"),
|
|
6021
|
+
("/api/settings/backups/{name}", ["DELETE"], "delete_backup"),
|
|
6022
|
+
("/api/settings/backup-config", ["GET"], "get_backup_config"),
|
|
6023
|
+
("/api/settings/backup-config", ["POST"], "save_backup_config"),
|
|
6024
|
+
# Tool security policies endpoints
|
|
6025
|
+
("/api/policy/config", ["GET"], "policy_get_config"),
|
|
6026
|
+
("/api/policy/config", ["PUT"], "policy_put_config"),
|
|
6027
|
+
("/api/policy/pending", ["GET"], "policy_get_pending"),
|
|
6028
|
+
("/api/policy/approve", ["POST"], "policy_post_approve"),
|
|
6029
|
+
("/api/policy/deny", ["POST"], "policy_post_deny"),
|
|
6030
|
+
("/api/policy/tool-schema", ["GET"], "policy_get_tool_schema"),
|
|
6031
|
+
("/api/policy/value-source", ["GET"], "policy_get_value_source"),
|
|
6032
|
+
]
|
|
6033
|
+
|
|
6034
|
+
def _mount(prefix: str) -> None:
|
|
6035
|
+
for path, methods, handler_key in routes:
|
|
6036
|
+
mcp.custom_route(f"{prefix}{path}", methods=methods)(handlers[handler_key])
|
|
6037
|
+
|
|
5997
6038
|
if is_addon:
|
|
5998
6039
|
# Root mount lets HA ingress proxy localhost:9583/ → settings UI.
|
|
5999
6040
|
# Direct port 9583 LAN access also reaches these routes; in this
|
|
@@ -6001,155 +6042,10 @@ def register_settings_routes(
|
|
|
6001
6042
|
# port 9583 is exposed via host_network and the secret path is
|
|
6002
6043
|
# the auth for direct access. Document this in DOCS.md.
|
|
6003
6044
|
mcp.custom_route("/", methods=["GET"])(handlers["root_page"])
|
|
6004
|
-
|
|
6005
|
-
mcp.custom_route("/api/settings/tools", methods=["GET"])(handlers["get_tools"])
|
|
6006
|
-
mcp.custom_route("/api/settings/tools", methods=["POST"])(
|
|
6007
|
-
handlers["save_tools"]
|
|
6008
|
-
)
|
|
6009
|
-
mcp.custom_route("/api/settings/restart", methods=["POST"])(
|
|
6010
|
-
handlers["restart_addon"]
|
|
6011
|
-
)
|
|
6012
|
-
mcp.custom_route("/api/settings/info", methods=["GET"])(
|
|
6013
|
-
handlers["settings_info"]
|
|
6014
|
-
)
|
|
6015
|
-
mcp.custom_route("/api/settings/features", methods=["GET"])(
|
|
6016
|
-
handlers["get_feature_flags"]
|
|
6017
|
-
)
|
|
6018
|
-
mcp.custom_route("/api/settings/features", methods=["POST"])(
|
|
6019
|
-
handlers["save_feature_flags"]
|
|
6020
|
-
)
|
|
6021
|
-
# Advanced settings endpoints
|
|
6022
|
-
mcp.custom_route("/api/settings/advanced", methods=["GET"])(
|
|
6023
|
-
handlers["get_advanced_settings"]
|
|
6024
|
-
)
|
|
6025
|
-
mcp.custom_route("/api/settings/advanced", methods=["POST"])(
|
|
6026
|
-
handlers["save_advanced_settings"]
|
|
6027
|
-
)
|
|
6028
|
-
# Auto-backup endpoints (#1288)
|
|
6029
|
-
mcp.custom_route("/api/settings/backups", methods=["GET"])(
|
|
6030
|
-
handlers["list_backups"]
|
|
6031
|
-
)
|
|
6032
|
-
mcp.custom_route("/api/settings/backups", methods=["DELETE"])(
|
|
6033
|
-
handlers["delete_backups_bulk"]
|
|
6034
|
-
)
|
|
6035
|
-
mcp.custom_route("/api/settings/backups/{name}", methods=["GET"])(
|
|
6036
|
-
handlers["view_backup"]
|
|
6037
|
-
)
|
|
6038
|
-
mcp.custom_route("/api/settings/backups/{name}/diff", methods=["GET"])(
|
|
6039
|
-
handlers["diff_backup"]
|
|
6040
|
-
)
|
|
6041
|
-
mcp.custom_route("/api/settings/backups/{name}/restore", methods=["POST"])(
|
|
6042
|
-
handlers["restore_backup"]
|
|
6043
|
-
)
|
|
6044
|
-
mcp.custom_route("/api/settings/backups/{name}", methods=["DELETE"])(
|
|
6045
|
-
handlers["delete_backup"]
|
|
6046
|
-
)
|
|
6047
|
-
mcp.custom_route("/api/settings/backup-config", methods=["GET"])(
|
|
6048
|
-
handlers["get_backup_config"]
|
|
6049
|
-
)
|
|
6050
|
-
mcp.custom_route("/api/settings/backup-config", methods=["POST"])(
|
|
6051
|
-
handlers["save_backup_config"]
|
|
6052
|
-
)
|
|
6053
|
-
# Tool security policies endpoints
|
|
6054
|
-
mcp.custom_route("/api/policy/config", methods=["GET"])(
|
|
6055
|
-
handlers["policy_get_config"]
|
|
6056
|
-
)
|
|
6057
|
-
mcp.custom_route("/api/policy/config", methods=["PUT"])(
|
|
6058
|
-
handlers["policy_put_config"]
|
|
6059
|
-
)
|
|
6060
|
-
mcp.custom_route("/api/policy/pending", methods=["GET"])(
|
|
6061
|
-
handlers["policy_get_pending"]
|
|
6062
|
-
)
|
|
6063
|
-
mcp.custom_route("/api/policy/approve", methods=["POST"])(
|
|
6064
|
-
handlers["policy_post_approve"]
|
|
6065
|
-
)
|
|
6066
|
-
mcp.custom_route("/api/policy/deny", methods=["POST"])(
|
|
6067
|
-
handlers["policy_post_deny"]
|
|
6068
|
-
)
|
|
6069
|
-
mcp.custom_route("/api/policy/tool-schema", methods=["GET"])(
|
|
6070
|
-
handlers["policy_get_tool_schema"]
|
|
6071
|
-
)
|
|
6072
|
-
mcp.custom_route("/api/policy/value-source", methods=["GET"])(
|
|
6073
|
-
handlers["policy_get_value_source"]
|
|
6074
|
-
)
|
|
6045
|
+
_mount("")
|
|
6075
6046
|
|
|
6076
6047
|
if secret_prefix:
|
|
6077
6048
|
# Mount under the MCP secret path so Docker / standalone clients
|
|
6078
6049
|
# need the same secret to reach the UI as they do for the MCP
|
|
6079
|
-
# endpoint.
|
|
6080
|
-
|
|
6081
|
-
mcp.custom_route(f"{secret_prefix}/settings", methods=["GET"])(
|
|
6082
|
-
handlers["settings_page"]
|
|
6083
|
-
)
|
|
6084
|
-
mcp.custom_route(f"{secret_prefix}/api/settings/tools", methods=["GET"])(
|
|
6085
|
-
handlers["get_tools"]
|
|
6086
|
-
)
|
|
6087
|
-
mcp.custom_route(f"{secret_prefix}/api/settings/tools", methods=["POST"])(
|
|
6088
|
-
handlers["save_tools"]
|
|
6089
|
-
)
|
|
6090
|
-
mcp.custom_route(f"{secret_prefix}/api/settings/restart", methods=["POST"])(
|
|
6091
|
-
handlers["restart_addon"]
|
|
6092
|
-
)
|
|
6093
|
-
mcp.custom_route(f"{secret_prefix}/api/settings/info", methods=["GET"])(
|
|
6094
|
-
handlers["settings_info"]
|
|
6095
|
-
)
|
|
6096
|
-
mcp.custom_route(f"{secret_prefix}/api/settings/features", methods=["GET"])(
|
|
6097
|
-
handlers["get_feature_flags"]
|
|
6098
|
-
)
|
|
6099
|
-
mcp.custom_route(f"{secret_prefix}/api/settings/features", methods=["POST"])(
|
|
6100
|
-
handlers["save_feature_flags"]
|
|
6101
|
-
)
|
|
6102
|
-
# Advanced settings endpoints
|
|
6103
|
-
mcp.custom_route(f"{secret_prefix}/api/settings/advanced", methods=["GET"])(
|
|
6104
|
-
handlers["get_advanced_settings"]
|
|
6105
|
-
)
|
|
6106
|
-
mcp.custom_route(f"{secret_prefix}/api/settings/advanced", methods=["POST"])(
|
|
6107
|
-
handlers["save_advanced_settings"]
|
|
6108
|
-
)
|
|
6109
|
-
# Auto-backup endpoints (#1288)
|
|
6110
|
-
mcp.custom_route(f"{secret_prefix}/api/settings/backups", methods=["GET"])(
|
|
6111
|
-
handlers["list_backups"]
|
|
6112
|
-
)
|
|
6113
|
-
mcp.custom_route(f"{secret_prefix}/api/settings/backups", methods=["DELETE"])(
|
|
6114
|
-
handlers["delete_backups_bulk"]
|
|
6115
|
-
)
|
|
6116
|
-
mcp.custom_route(
|
|
6117
|
-
f"{secret_prefix}/api/settings/backups/{{name}}", methods=["GET"]
|
|
6118
|
-
)(handlers["view_backup"])
|
|
6119
|
-
mcp.custom_route(
|
|
6120
|
-
f"{secret_prefix}/api/settings/backups/{{name}}/diff", methods=["GET"]
|
|
6121
|
-
)(handlers["diff_backup"])
|
|
6122
|
-
mcp.custom_route(
|
|
6123
|
-
f"{secret_prefix}/api/settings/backups/{{name}}/restore", methods=["POST"]
|
|
6124
|
-
)(handlers["restore_backup"])
|
|
6125
|
-
mcp.custom_route(
|
|
6126
|
-
f"{secret_prefix}/api/settings/backups/{{name}}", methods=["DELETE"]
|
|
6127
|
-
)(handlers["delete_backup"])
|
|
6128
|
-
mcp.custom_route(
|
|
6129
|
-
f"{secret_prefix}/api/settings/backup-config", methods=["GET"]
|
|
6130
|
-
)(handlers["get_backup_config"])
|
|
6131
|
-
mcp.custom_route(
|
|
6132
|
-
f"{secret_prefix}/api/settings/backup-config", methods=["POST"]
|
|
6133
|
-
)(handlers["save_backup_config"])
|
|
6134
|
-
# Tool security policies endpoints
|
|
6135
|
-
mcp.custom_route(f"{secret_prefix}/api/policy/config", methods=["GET"])(
|
|
6136
|
-
handlers["policy_get_config"]
|
|
6137
|
-
)
|
|
6138
|
-
mcp.custom_route(f"{secret_prefix}/api/policy/config", methods=["PUT"])(
|
|
6139
|
-
handlers["policy_put_config"]
|
|
6140
|
-
)
|
|
6141
|
-
mcp.custom_route(f"{secret_prefix}/api/policy/pending", methods=["GET"])(
|
|
6142
|
-
handlers["policy_get_pending"]
|
|
6143
|
-
)
|
|
6144
|
-
mcp.custom_route(f"{secret_prefix}/api/policy/approve", methods=["POST"])(
|
|
6145
|
-
handlers["policy_post_approve"]
|
|
6146
|
-
)
|
|
6147
|
-
mcp.custom_route(f"{secret_prefix}/api/policy/deny", methods=["POST"])(
|
|
6148
|
-
handlers["policy_post_deny"]
|
|
6149
|
-
)
|
|
6150
|
-
mcp.custom_route(f"{secret_prefix}/api/policy/tool-schema", methods=["GET"])(
|
|
6151
|
-
handlers["policy_get_tool_schema"]
|
|
6152
|
-
)
|
|
6153
|
-
mcp.custom_route(f"{secret_prefix}/api/policy/value-source", methods=["GET"])(
|
|
6154
|
-
handlers["policy_get_value_source"]
|
|
6155
|
-
)
|
|
6050
|
+
# endpoint.
|
|
6051
|
+
_mount(secret_prefix)
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
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.6.0.dev635 → ha_mcp_dev-7.6.0.dev636}/src/ha_mcp/resources/skills-vendor/AGENTS.md
RENAMED
|
File without changes
|
{ha_mcp_dev-7.6.0.dev635 → ha_mcp_dev-7.6.0.dev636}/src/ha_mcp/resources/skills-vendor/CLAUDE.md
RENAMED
|
File without changes
|
|
File without changes
|
{ha_mcp_dev-7.6.0.dev635 → ha_mcp_dev-7.6.0.dev636}/src/ha_mcp/resources/skills-vendor/LICENSE
RENAMED
|
File without changes
|
{ha_mcp_dev-7.6.0.dev635 → ha_mcp_dev-7.6.0.dev636}/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.6.0.dev635 → ha_mcp_dev-7.6.0.dev636}/src/ha_mcp/tools/best_practice_checker.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
|
{ha_mcp_dev-7.6.0.dev635 → ha_mcp_dev-7.6.0.dev636}/src/ha_mcp/tools/tools_config_automations.py
RENAMED
|
File without changes
|
{ha_mcp_dev-7.6.0.dev635 → ha_mcp_dev-7.6.0.dev636}/src/ha_mcp/tools/tools_config_dashboards.py
RENAMED
|
File without changes
|
{ha_mcp_dev-7.6.0.dev635 → ha_mcp_dev-7.6.0.dev636}/src/ha_mcp/tools/tools_config_entry_flow.py
RENAMED
|
File without changes
|
{ha_mcp_dev-7.6.0.dev635 → ha_mcp_dev-7.6.0.dev636}/src/ha_mcp/tools/tools_config_helpers.py
RENAMED
|
File without changes
|
|
File without changes
|
{ha_mcp_dev-7.6.0.dev635 → ha_mcp_dev-7.6.0.dev636}/src/ha_mcp/tools/tools_config_scripts.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
|
{ha_mcp_dev-7.6.0.dev635 → ha_mcp_dev-7.6.0.dev636}/src/ha_mcp/tools/tools_voice_assistant.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{ha_mcp_dev-7.6.0.dev635 → ha_mcp_dev-7.6.0.dev636}/src/ha_mcp/tools/validation_middleware.py
RENAMED
|
File without changes
|
|
File without changes
|
{ha_mcp_dev-7.6.0.dev635 → ha_mcp_dev-7.6.0.dev636}/src/ha_mcp/transforms/categorized_search.py
RENAMED
|
File without changes
|
{ha_mcp_dev-7.6.0.dev635 → ha_mcp_dev-7.6.0.dev636}/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
|
{ha_mcp_dev-7.6.0.dev635 → ha_mcp_dev-7.6.0.dev636}/src/ha_mcp/utils/kill_signal_diagnostics.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{ha_mcp_dev-7.6.0.dev635 → ha_mcp_dev-7.6.0.dev636}/src/ha_mcp_dev.egg-info/dependency_links.txt
RENAMED
|
File without changes
|
{ha_mcp_dev-7.6.0.dev635 → ha_mcp_dev-7.6.0.dev636}/src/ha_mcp_dev.egg-info/entry_points.txt
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|