ha-mcp-dev 8.5.0.dev2740__tar.gz → 8.5.0.dev2745__tar.gz
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- {ha_mcp_dev-8.5.0.dev2740/src/ha_mcp_dev.egg-info → ha_mcp_dev-8.5.0.dev2745}/PKG-INFO +1 -1
- {ha_mcp_dev-8.5.0.dev2740 → ha_mcp_dev-8.5.0.dev2745}/pyproject.toml +1 -1
- {ha_mcp_dev-8.5.0.dev2740 → ha_mcp_dev-8.5.0.dev2745}/src/ha_mcp/server.py +25 -7
- {ha_mcp_dev-8.5.0.dev2740 → ha_mcp_dev-8.5.0.dev2745}/src/ha_mcp/tools/backup.py +3 -5
- {ha_mcp_dev-8.5.0.dev2740 → ha_mcp_dev-8.5.0.dev2745}/src/ha_mcp/tools/entity_registration.py +5 -3
- {ha_mcp_dev-8.5.0.dev2740 → ha_mcp_dev-8.5.0.dev2745}/src/ha_mcp/tools/tools_addons.py +63 -76
- {ha_mcp_dev-8.5.0.dev2740 → ha_mcp_dev-8.5.0.dev2745}/src/ha_mcp/tools/tools_areas.py +15 -17
- {ha_mcp_dev-8.5.0.dev2740 → ha_mcp_dev-8.5.0.dev2745}/src/ha_mcp/tools/tools_assist_pipeline.py +12 -48
- {ha_mcp_dev-8.5.0.dev2740 → ha_mcp_dev-8.5.0.dev2745}/src/ha_mcp/tools/tools_blueprints.py +20 -39
- {ha_mcp_dev-8.5.0.dev2740 → ha_mcp_dev-8.5.0.dev2745}/src/ha_mcp/tools/tools_bug_report.py +29 -53
- {ha_mcp_dev-8.5.0.dev2740 → ha_mcp_dev-8.5.0.dev2745}/src/ha_mcp/tools/tools_calendar.py +28 -131
- {ha_mcp_dev-8.5.0.dev2740 → ha_mcp_dev-8.5.0.dev2745}/src/ha_mcp/tools/tools_camera.py +21 -42
- {ha_mcp_dev-8.5.0.dev2740 → ha_mcp_dev-8.5.0.dev2745}/src/ha_mcp/tools/tools_categories.py +4 -12
- {ha_mcp_dev-8.5.0.dev2740 → ha_mcp_dev-8.5.0.dev2745}/src/ha_mcp/tools/tools_code.py +44 -51
- {ha_mcp_dev-8.5.0.dev2740 → ha_mcp_dev-8.5.0.dev2745}/src/ha_mcp/tools/tools_config_automations.py +252 -306
- {ha_mcp_dev-8.5.0.dev2740 → ha_mcp_dev-8.5.0.dev2745}/src/ha_mcp/tools/tools_config_dashboards.py +78 -207
- {ha_mcp_dev-8.5.0.dev2740 → ha_mcp_dev-8.5.0.dev2745}/src/ha_mcp/tools/tools_config_helpers.py +71 -138
- {ha_mcp_dev-8.5.0.dev2740 → ha_mcp_dev-8.5.0.dev2745}/src/ha_mcp/tools/tools_config_scenes.py +184 -51
- {ha_mcp_dev-8.5.0.dev2740 → ha_mcp_dev-8.5.0.dev2745}/src/ha_mcp/tools/tools_config_scripts.py +173 -189
- {ha_mcp_dev-8.5.0.dev2740 → ha_mcp_dev-8.5.0.dev2745}/src/ha_mcp/tools/tools_dashboard_screenshot.py +6 -13
- {ha_mcp_dev-8.5.0.dev2740 → ha_mcp_dev-8.5.0.dev2745}/src/ha_mcp/tools/tools_dev.py +9 -30
- {ha_mcp_dev-8.5.0.dev2740 → ha_mcp_dev-8.5.0.dev2745}/src/ha_mcp/tools/tools_energy.py +47 -93
- {ha_mcp_dev-8.5.0.dev2740 → ha_mcp_dev-8.5.0.dev2745}/src/ha_mcp/tools/tools_entities.py +77 -144
- {ha_mcp_dev-8.5.0.dev2740 → ha_mcp_dev-8.5.0.dev2745}/src/ha_mcp/tools/tools_filesystem.py +40 -147
- {ha_mcp_dev-8.5.0.dev2740 → ha_mcp_dev-8.5.0.dev2745}/src/ha_mcp/tools/tools_groups.py +19 -34
- {ha_mcp_dev-8.5.0.dev2740 → ha_mcp_dev-8.5.0.dev2745}/src/ha_mcp/tools/tools_hacs.py +6 -13
- {ha_mcp_dev-8.5.0.dev2740 → ha_mcp_dev-8.5.0.dev2745}/src/ha_mcp/tools/tools_history.py +40 -61
- {ha_mcp_dev-8.5.0.dev2740 → ha_mcp_dev-8.5.0.dev2745}/src/ha_mcp/tools/tools_integrations.py +241 -222
- {ha_mcp_dev-8.5.0.dev2740 → ha_mcp_dev-8.5.0.dev2745}/src/ha_mcp/tools/tools_labels.py +9 -20
- {ha_mcp_dev-8.5.0.dev2740 → ha_mcp_dev-8.5.0.dev2745}/src/ha_mcp/tools/tools_logs.py +109 -83
- {ha_mcp_dev-8.5.0.dev2740 → ha_mcp_dev-8.5.0.dev2745}/src/ha_mcp/tools/tools_radio.py +8 -7
- {ha_mcp_dev-8.5.0.dev2740 → ha_mcp_dev-8.5.0.dev2745}/src/ha_mcp/tools/tools_registry.py +7 -12
- {ha_mcp_dev-8.5.0.dev2740 → ha_mcp_dev-8.5.0.dev2745}/src/ha_mcp/tools/tools_resources.py +41 -108
- {ha_mcp_dev-8.5.0.dev2740 → ha_mcp_dev-8.5.0.dev2745}/src/ha_mcp/tools/tools_search.py +81 -137
- {ha_mcp_dev-8.5.0.dev2740 → ha_mcp_dev-8.5.0.dev2745}/src/ha_mcp/tools/tools_security_policy.py +2 -5
- {ha_mcp_dev-8.5.0.dev2740 → ha_mcp_dev-8.5.0.dev2745}/src/ha_mcp/tools/tools_service.py +66 -104
- {ha_mcp_dev-8.5.0.dev2740 → ha_mcp_dev-8.5.0.dev2745}/src/ha_mcp/tools/tools_services.py +24 -38
- {ha_mcp_dev-8.5.0.dev2740 → ha_mcp_dev-8.5.0.dev2745}/src/ha_mcp/tools/tools_system.py +149 -169
- {ha_mcp_dev-8.5.0.dev2740 → ha_mcp_dev-8.5.0.dev2745}/src/ha_mcp/tools/tools_themes.py +10 -16
- {ha_mcp_dev-8.5.0.dev2740 → ha_mcp_dev-8.5.0.dev2745}/src/ha_mcp/tools/tools_todo.py +20 -70
- {ha_mcp_dev-8.5.0.dev2740 → ha_mcp_dev-8.5.0.dev2745}/src/ha_mcp/tools/tools_traces.py +24 -56
- {ha_mcp_dev-8.5.0.dev2740 → ha_mcp_dev-8.5.0.dev2745}/src/ha_mcp/tools/tools_updates.py +131 -30
- {ha_mcp_dev-8.5.0.dev2740 → ha_mcp_dev-8.5.0.dev2745}/src/ha_mcp/tools/tools_utility.py +26 -73
- {ha_mcp_dev-8.5.0.dev2740 → ha_mcp_dev-8.5.0.dev2745}/src/ha_mcp/tools/tools_voice_assistant.py +12 -18
- {ha_mcp_dev-8.5.0.dev2740 → ha_mcp_dev-8.5.0.dev2745}/src/ha_mcp/tools/tools_yaml_config.py +24 -54
- {ha_mcp_dev-8.5.0.dev2740 → ha_mcp_dev-8.5.0.dev2745}/src/ha_mcp/tools/tools_yaml_read.py +1 -2
- {ha_mcp_dev-8.5.0.dev2740 → ha_mcp_dev-8.5.0.dev2745}/src/ha_mcp/tools/tools_zones.py +15 -26
- {ha_mcp_dev-8.5.0.dev2740 → ha_mcp_dev-8.5.0.dev2745}/src/ha_mcp/tools/util_helpers.py +35 -13
- {ha_mcp_dev-8.5.0.dev2740 → ha_mcp_dev-8.5.0.dev2745}/src/ha_mcp/transforms/component_search.py +3 -6
- {ha_mcp_dev-8.5.0.dev2740 → ha_mcp_dev-8.5.0.dev2745}/src/ha_mcp/utils/python_sandbox.py +0 -9
- {ha_mcp_dev-8.5.0.dev2740 → ha_mcp_dev-8.5.0.dev2745/src/ha_mcp_dev.egg-info}/PKG-INFO +1 -1
- {ha_mcp_dev-8.5.0.dev2740 → ha_mcp_dev-8.5.0.dev2745}/LICENSE +0 -0
- {ha_mcp_dev-8.5.0.dev2740 → ha_mcp_dev-8.5.0.dev2745}/MANIFEST.in +0 -0
- {ha_mcp_dev-8.5.0.dev2740 → ha_mcp_dev-8.5.0.dev2745}/README.md +0 -0
- {ha_mcp_dev-8.5.0.dev2740 → ha_mcp_dev-8.5.0.dev2745}/setup.cfg +0 -0
- {ha_mcp_dev-8.5.0.dev2740 → ha_mcp_dev-8.5.0.dev2745}/src/ha_mcp/__init__.py +0 -0
- {ha_mcp_dev-8.5.0.dev2740 → ha_mcp_dev-8.5.0.dev2745}/src/ha_mcp/__main__.py +0 -0
- {ha_mcp_dev-8.5.0.dev2740 → ha_mcp_dev-8.5.0.dev2745}/src/ha_mcp/_pypi_marker +0 -0
- {ha_mcp_dev-8.5.0.dev2740 → ha_mcp_dev-8.5.0.dev2745}/src/ha_mcp/_rich_compat.py +0 -0
- {ha_mcp_dev-8.5.0.dev2740 → ha_mcp_dev-8.5.0.dev2745}/src/ha_mcp/_vendor/__init__.py +0 -0
- {ha_mcp_dev-8.5.0.dev2740 → ha_mcp_dev-8.5.0.dev2745}/src/ha_mcp/_vendor/fastmcp/LICENSE +0 -0
- {ha_mcp_dev-8.5.0.dev2740 → ha_mcp_dev-8.5.0.dev2745}/src/ha_mcp/_vendor/fastmcp/MANIFEST.sha256 +0 -0
- {ha_mcp_dev-8.5.0.dev2740 → ha_mcp_dev-8.5.0.dev2745}/src/ha_mcp/_vendor/fastmcp/REQUIRES.txt +0 -0
- {ha_mcp_dev-8.5.0.dev2740 → ha_mcp_dev-8.5.0.dev2745}/src/ha_mcp/_vendor/fastmcp/VENDORED +0 -0
- {ha_mcp_dev-8.5.0.dev2740 → ha_mcp_dev-8.5.0.dev2745}/src/ha_mcp/_vendor/fastmcp/__init__.py +0 -0
- {ha_mcp_dev-8.5.0.dev2740 → ha_mcp_dev-8.5.0.dev2745}/src/ha_mcp/_vendor/fastmcp/_compat.py +0 -0
- {ha_mcp_dev-8.5.0.dev2740 → ha_mcp_dev-8.5.0.dev2745}/src/ha_mcp/_vendor/fastmcp/_install_hints.py +0 -0
- {ha_mcp_dev-8.5.0.dev2740 → ha_mcp_dev-8.5.0.dev2745}/src/ha_mcp/_vendor/fastmcp/_warnings.py +0 -0
- {ha_mcp_dev-8.5.0.dev2740 → ha_mcp_dev-8.5.0.dev2745}/src/ha_mcp/_vendor/fastmcp/apps/__init__.py +0 -0
- {ha_mcp_dev-8.5.0.dev2740 → ha_mcp_dev-8.5.0.dev2745}/src/ha_mcp/_vendor/fastmcp/apps/app.py +0 -0
- {ha_mcp_dev-8.5.0.dev2740 → ha_mcp_dev-8.5.0.dev2745}/src/ha_mcp/_vendor/fastmcp/apps/approval.py +0 -0
- {ha_mcp_dev-8.5.0.dev2740 → ha_mcp_dev-8.5.0.dev2745}/src/ha_mcp/_vendor/fastmcp/apps/choice.py +0 -0
- {ha_mcp_dev-8.5.0.dev2740 → ha_mcp_dev-8.5.0.dev2745}/src/ha_mcp/_vendor/fastmcp/apps/config.py +0 -0
- {ha_mcp_dev-8.5.0.dev2740 → ha_mcp_dev-8.5.0.dev2745}/src/ha_mcp/_vendor/fastmcp/apps/file_upload.py +0 -0
- {ha_mcp_dev-8.5.0.dev2740 → ha_mcp_dev-8.5.0.dev2745}/src/ha_mcp/_vendor/fastmcp/apps/form.py +0 -0
- {ha_mcp_dev-8.5.0.dev2740 → ha_mcp_dev-8.5.0.dev2745}/src/ha_mcp/_vendor/fastmcp/apps/generative.py +0 -0
- {ha_mcp_dev-8.5.0.dev2740 → ha_mcp_dev-8.5.0.dev2745}/src/ha_mcp/_vendor/fastmcp/cli/__init__.py +0 -0
- {ha_mcp_dev-8.5.0.dev2740 → ha_mcp_dev-8.5.0.dev2745}/src/ha_mcp/_vendor/fastmcp/cli/__main__.py +0 -0
- {ha_mcp_dev-8.5.0.dev2740 → ha_mcp_dev-8.5.0.dev2745}/src/ha_mcp/_vendor/fastmcp/cli/apps_dev.py +0 -0
- {ha_mcp_dev-8.5.0.dev2740 → ha_mcp_dev-8.5.0.dev2745}/src/ha_mcp/_vendor/fastmcp/cli/auth.py +0 -0
- {ha_mcp_dev-8.5.0.dev2740 → ha_mcp_dev-8.5.0.dev2745}/src/ha_mcp/_vendor/fastmcp/cli/cimd.py +0 -0
- {ha_mcp_dev-8.5.0.dev2740 → ha_mcp_dev-8.5.0.dev2745}/src/ha_mcp/_vendor/fastmcp/cli/cli.py +0 -0
- {ha_mcp_dev-8.5.0.dev2740 → ha_mcp_dev-8.5.0.dev2745}/src/ha_mcp/_vendor/fastmcp/cli/client.py +0 -0
- {ha_mcp_dev-8.5.0.dev2740 → ha_mcp_dev-8.5.0.dev2745}/src/ha_mcp/_vendor/fastmcp/cli/deploy/__init__.py +0 -0
- {ha_mcp_dev-8.5.0.dev2740 → ha_mcp_dev-8.5.0.dev2745}/src/ha_mcp/_vendor/fastmcp/cli/deploy/authentication.py +0 -0
- {ha_mcp_dev-8.5.0.dev2740 → ha_mcp_dev-8.5.0.dev2745}/src/ha_mcp/_vendor/fastmcp/cli/deploy/command.py +0 -0
- {ha_mcp_dev-8.5.0.dev2740 → ha_mcp_dev-8.5.0.dev2745}/src/ha_mcp/_vendor/fastmcp/cli/deploy/configuration.py +0 -0
- {ha_mcp_dev-8.5.0.dev2740 → ha_mcp_dev-8.5.0.dev2745}/src/ha_mcp/_vendor/fastmcp/cli/deploy/credentials.py +0 -0
- {ha_mcp_dev-8.5.0.dev2740 → ha_mcp_dev-8.5.0.dev2745}/src/ha_mcp/_vendor/fastmcp/cli/deploy/horizon_client.py +0 -0
- {ha_mcp_dev-8.5.0.dev2740 → ha_mcp_dev-8.5.0.dev2745}/src/ha_mcp/_vendor/fastmcp/cli/deploy/output.py +0 -0
- {ha_mcp_dev-8.5.0.dev2740 → ha_mcp_dev-8.5.0.dev2745}/src/ha_mcp/_vendor/fastmcp/cli/deploy/state.py +0 -0
- {ha_mcp_dev-8.5.0.dev2740 → ha_mcp_dev-8.5.0.dev2745}/src/ha_mcp/_vendor/fastmcp/cli/discovery.py +0 -0
- {ha_mcp_dev-8.5.0.dev2740 → ha_mcp_dev-8.5.0.dev2745}/src/ha_mcp/_vendor/fastmcp/cli/generate.py +0 -0
- {ha_mcp_dev-8.5.0.dev2740 → ha_mcp_dev-8.5.0.dev2745}/src/ha_mcp/_vendor/fastmcp/cli/install/__init__.py +0 -0
- {ha_mcp_dev-8.5.0.dev2740 → ha_mcp_dev-8.5.0.dev2745}/src/ha_mcp/_vendor/fastmcp/cli/install/claude_code.py +0 -0
- {ha_mcp_dev-8.5.0.dev2740 → ha_mcp_dev-8.5.0.dev2745}/src/ha_mcp/_vendor/fastmcp/cli/install/claude_desktop.py +0 -0
- {ha_mcp_dev-8.5.0.dev2740 → ha_mcp_dev-8.5.0.dev2745}/src/ha_mcp/_vendor/fastmcp/cli/install/cursor.py +0 -0
- {ha_mcp_dev-8.5.0.dev2740 → ha_mcp_dev-8.5.0.dev2745}/src/ha_mcp/_vendor/fastmcp/cli/install/gemini_cli.py +0 -0
- {ha_mcp_dev-8.5.0.dev2740 → ha_mcp_dev-8.5.0.dev2745}/src/ha_mcp/_vendor/fastmcp/cli/install/goose.py +0 -0
- {ha_mcp_dev-8.5.0.dev2740 → ha_mcp_dev-8.5.0.dev2745}/src/ha_mcp/_vendor/fastmcp/cli/install/mcp_json.py +0 -0
- {ha_mcp_dev-8.5.0.dev2740 → ha_mcp_dev-8.5.0.dev2745}/src/ha_mcp/_vendor/fastmcp/cli/install/shared.py +0 -0
- {ha_mcp_dev-8.5.0.dev2740 → ha_mcp_dev-8.5.0.dev2745}/src/ha_mcp/_vendor/fastmcp/cli/install/stdio.py +0 -0
- {ha_mcp_dev-8.5.0.dev2740 → ha_mcp_dev-8.5.0.dev2745}/src/ha_mcp/_vendor/fastmcp/cli/run.py +0 -0
- {ha_mcp_dev-8.5.0.dev2740 → ha_mcp_dev-8.5.0.dev2745}/src/ha_mcp/_vendor/fastmcp/client/__init__.py +0 -0
- {ha_mcp_dev-8.5.0.dev2740 → ha_mcp_dev-8.5.0.dev2745}/src/ha_mcp/_vendor/fastmcp/client/_sdk_context_shim.py +0 -0
- {ha_mcp_dev-8.5.0.dev2740 → ha_mcp_dev-8.5.0.dev2745}/src/ha_mcp/_vendor/fastmcp/client/auth/__init__.py +0 -0
- {ha_mcp_dev-8.5.0.dev2740 → ha_mcp_dev-8.5.0.dev2745}/src/ha_mcp/_vendor/fastmcp/client/auth/bearer.py +0 -0
- {ha_mcp_dev-8.5.0.dev2740 → ha_mcp_dev-8.5.0.dev2745}/src/ha_mcp/_vendor/fastmcp/client/auth/client_credentials.py +0 -0
- {ha_mcp_dev-8.5.0.dev2740 → ha_mcp_dev-8.5.0.dev2745}/src/ha_mcp/_vendor/fastmcp/client/auth/oauth.py +0 -0
- {ha_mcp_dev-8.5.0.dev2740 → ha_mcp_dev-8.5.0.dev2745}/src/ha_mcp/_vendor/fastmcp/client/caching.py +0 -0
- {ha_mcp_dev-8.5.0.dev2740 → ha_mcp_dev-8.5.0.dev2745}/src/ha_mcp/_vendor/fastmcp/client/client.py +0 -0
- {ha_mcp_dev-8.5.0.dev2740 → ha_mcp_dev-8.5.0.dev2745}/src/ha_mcp/_vendor/fastmcp/client/dependencies.py +0 -0
- {ha_mcp_dev-8.5.0.dev2740 → ha_mcp_dev-8.5.0.dev2745}/src/ha_mcp/_vendor/fastmcp/client/elicitation.py +0 -0
- {ha_mcp_dev-8.5.0.dev2740 → ha_mcp_dev-8.5.0.dev2745}/src/ha_mcp/_vendor/fastmcp/client/extension_hooks.py +0 -0
- {ha_mcp_dev-8.5.0.dev2740 → ha_mcp_dev-8.5.0.dev2745}/src/ha_mcp/_vendor/fastmcp/client/group.py +0 -0
- {ha_mcp_dev-8.5.0.dev2740 → ha_mcp_dev-8.5.0.dev2745}/src/ha_mcp/_vendor/fastmcp/client/logging.py +0 -0
- {ha_mcp_dev-8.5.0.dev2740 → ha_mcp_dev-8.5.0.dev2745}/src/ha_mcp/_vendor/fastmcp/client/messages.py +0 -0
- {ha_mcp_dev-8.5.0.dev2740 → ha_mcp_dev-8.5.0.dev2745}/src/ha_mcp/_vendor/fastmcp/client/mixins/__init__.py +0 -0
- {ha_mcp_dev-8.5.0.dev2740 → ha_mcp_dev-8.5.0.dev2745}/src/ha_mcp/_vendor/fastmcp/client/mixins/prompts.py +0 -0
- {ha_mcp_dev-8.5.0.dev2740 → ha_mcp_dev-8.5.0.dev2745}/src/ha_mcp/_vendor/fastmcp/client/mixins/resources.py +0 -0
- {ha_mcp_dev-8.5.0.dev2740 → ha_mcp_dev-8.5.0.dev2745}/src/ha_mcp/_vendor/fastmcp/client/mixins/tools.py +0 -0
- {ha_mcp_dev-8.5.0.dev2740 → ha_mcp_dev-8.5.0.dev2745}/src/ha_mcp/_vendor/fastmcp/client/oauth_callback.py +0 -0
- {ha_mcp_dev-8.5.0.dev2740 → ha_mcp_dev-8.5.0.dev2745}/src/ha_mcp/_vendor/fastmcp/client/progress.py +0 -0
- {ha_mcp_dev-8.5.0.dev2740 → ha_mcp_dev-8.5.0.dev2745}/src/ha_mcp/_vendor/fastmcp/client/roots.py +0 -0
- {ha_mcp_dev-8.5.0.dev2740 → ha_mcp_dev-8.5.0.dev2745}/src/ha_mcp/_vendor/fastmcp/client/sampling/__init__.py +0 -0
- {ha_mcp_dev-8.5.0.dev2740 → ha_mcp_dev-8.5.0.dev2745}/src/ha_mcp/_vendor/fastmcp/client/sampling/handlers/__init__.py +0 -0
- {ha_mcp_dev-8.5.0.dev2740 → ha_mcp_dev-8.5.0.dev2745}/src/ha_mcp/_vendor/fastmcp/client/sampling/handlers/anthropic.py +0 -0
- {ha_mcp_dev-8.5.0.dev2740 → ha_mcp_dev-8.5.0.dev2745}/src/ha_mcp/_vendor/fastmcp/client/sampling/handlers/google_genai.py +0 -0
- {ha_mcp_dev-8.5.0.dev2740 → ha_mcp_dev-8.5.0.dev2745}/src/ha_mcp/_vendor/fastmcp/client/sampling/handlers/openai.py +0 -0
- {ha_mcp_dev-8.5.0.dev2740 → ha_mcp_dev-8.5.0.dev2745}/src/ha_mcp/_vendor/fastmcp/client/telemetry.py +0 -0
- {ha_mcp_dev-8.5.0.dev2740 → ha_mcp_dev-8.5.0.dev2745}/src/ha_mcp/_vendor/fastmcp/client/transports/__init__.py +0 -0
- {ha_mcp_dev-8.5.0.dev2740 → ha_mcp_dev-8.5.0.dev2745}/src/ha_mcp/_vendor/fastmcp/client/transports/base.py +0 -0
- {ha_mcp_dev-8.5.0.dev2740 → ha_mcp_dev-8.5.0.dev2745}/src/ha_mcp/_vendor/fastmcp/client/transports/config.py +0 -0
- {ha_mcp_dev-8.5.0.dev2740 → ha_mcp_dev-8.5.0.dev2745}/src/ha_mcp/_vendor/fastmcp/client/transports/http.py +0 -0
- {ha_mcp_dev-8.5.0.dev2740 → ha_mcp_dev-8.5.0.dev2745}/src/ha_mcp/_vendor/fastmcp/client/transports/inference.py +0 -0
- {ha_mcp_dev-8.5.0.dev2740 → ha_mcp_dev-8.5.0.dev2745}/src/ha_mcp/_vendor/fastmcp/client/transports/memory.py +0 -0
- {ha_mcp_dev-8.5.0.dev2740 → ha_mcp_dev-8.5.0.dev2745}/src/ha_mcp/_vendor/fastmcp/client/transports/sse.py +0 -0
- {ha_mcp_dev-8.5.0.dev2740 → ha_mcp_dev-8.5.0.dev2745}/src/ha_mcp/_vendor/fastmcp/client/transports/stdio.py +0 -0
- {ha_mcp_dev-8.5.0.dev2740 → ha_mcp_dev-8.5.0.dev2745}/src/ha_mcp/_vendor/fastmcp/contrib/README.md +0 -0
- {ha_mcp_dev-8.5.0.dev2740 → ha_mcp_dev-8.5.0.dev2745}/src/ha_mcp/_vendor/fastmcp/contrib/bulk_tool_caller/README.md +0 -0
- {ha_mcp_dev-8.5.0.dev2740 → ha_mcp_dev-8.5.0.dev2745}/src/ha_mcp/_vendor/fastmcp/contrib/bulk_tool_caller/__init__.py +0 -0
- {ha_mcp_dev-8.5.0.dev2740 → ha_mcp_dev-8.5.0.dev2745}/src/ha_mcp/_vendor/fastmcp/contrib/bulk_tool_caller/bulk_tool_caller.py +0 -0
- {ha_mcp_dev-8.5.0.dev2740 → ha_mcp_dev-8.5.0.dev2745}/src/ha_mcp/_vendor/fastmcp/contrib/bulk_tool_caller/example.py +0 -0
- {ha_mcp_dev-8.5.0.dev2740 → ha_mcp_dev-8.5.0.dev2745}/src/ha_mcp/_vendor/fastmcp/contrib/component_manager/README.md +0 -0
- {ha_mcp_dev-8.5.0.dev2740 → ha_mcp_dev-8.5.0.dev2745}/src/ha_mcp/_vendor/fastmcp/contrib/component_manager/__init__.py +0 -0
- {ha_mcp_dev-8.5.0.dev2740 → ha_mcp_dev-8.5.0.dev2745}/src/ha_mcp/_vendor/fastmcp/contrib/component_manager/component_manager.py +0 -0
- {ha_mcp_dev-8.5.0.dev2740 → ha_mcp_dev-8.5.0.dev2745}/src/ha_mcp/_vendor/fastmcp/contrib/component_manager/example.py +0 -0
- {ha_mcp_dev-8.5.0.dev2740 → ha_mcp_dev-8.5.0.dev2745}/src/ha_mcp/_vendor/fastmcp/contrib/mcp_mixin/README.md +0 -0
- {ha_mcp_dev-8.5.0.dev2740 → ha_mcp_dev-8.5.0.dev2745}/src/ha_mcp/_vendor/fastmcp/contrib/mcp_mixin/__init__.py +0 -0
- {ha_mcp_dev-8.5.0.dev2740 → ha_mcp_dev-8.5.0.dev2745}/src/ha_mcp/_vendor/fastmcp/contrib/mcp_mixin/example.py +0 -0
- {ha_mcp_dev-8.5.0.dev2740 → ha_mcp_dev-8.5.0.dev2745}/src/ha_mcp/_vendor/fastmcp/contrib/mcp_mixin/mcp_mixin.py +0 -0
- {ha_mcp_dev-8.5.0.dev2740 → ha_mcp_dev-8.5.0.dev2745}/src/ha_mcp/_vendor/fastmcp/decorators.py +0 -0
- {ha_mcp_dev-8.5.0.dev2740 → ha_mcp_dev-8.5.0.dev2745}/src/ha_mcp/_vendor/fastmcp/dependencies.py +0 -0
- {ha_mcp_dev-8.5.0.dev2740 → ha_mcp_dev-8.5.0.dev2745}/src/ha_mcp/_vendor/fastmcp/exceptions.py +0 -0
- {ha_mcp_dev-8.5.0.dev2740 → ha_mcp_dev-8.5.0.dev2745}/src/ha_mcp/_vendor/fastmcp/experimental/__init__.py +0 -0
- {ha_mcp_dev-8.5.0.dev2740 → ha_mcp_dev-8.5.0.dev2745}/src/ha_mcp/_vendor/fastmcp/experimental/transforms/__init__.py +0 -0
- {ha_mcp_dev-8.5.0.dev2740 → ha_mcp_dev-8.5.0.dev2745}/src/ha_mcp/_vendor/fastmcp/experimental/transforms/code_mode.py +0 -0
- {ha_mcp_dev-8.5.0.dev2740 → ha_mcp_dev-8.5.0.dev2745}/src/ha_mcp/_vendor/fastmcp/mcp_config.py +0 -0
- {ha_mcp_dev-8.5.0.dev2740 → ha_mcp_dev-8.5.0.dev2745}/src/ha_mcp/_vendor/fastmcp/prompts/__init__.py +0 -0
- {ha_mcp_dev-8.5.0.dev2740 → ha_mcp_dev-8.5.0.dev2745}/src/ha_mcp/_vendor/fastmcp/prompts/base.py +0 -0
- {ha_mcp_dev-8.5.0.dev2740 → ha_mcp_dev-8.5.0.dev2745}/src/ha_mcp/_vendor/fastmcp/prompts/function_prompt.py +0 -0
- {ha_mcp_dev-8.5.0.dev2740 → ha_mcp_dev-8.5.0.dev2745}/src/ha_mcp/_vendor/fastmcp/py.typed +0 -0
- {ha_mcp_dev-8.5.0.dev2740 → ha_mcp_dev-8.5.0.dev2745}/src/ha_mcp/_vendor/fastmcp/resources/__init__.py +0 -0
- {ha_mcp_dev-8.5.0.dev2740 → ha_mcp_dev-8.5.0.dev2745}/src/ha_mcp/_vendor/fastmcp/resources/base.py +0 -0
- {ha_mcp_dev-8.5.0.dev2740 → ha_mcp_dev-8.5.0.dev2745}/src/ha_mcp/_vendor/fastmcp/resources/function_resource.py +0 -0
- {ha_mcp_dev-8.5.0.dev2740 → ha_mcp_dev-8.5.0.dev2745}/src/ha_mcp/_vendor/fastmcp/resources/security.py +0 -0
- {ha_mcp_dev-8.5.0.dev2740 → ha_mcp_dev-8.5.0.dev2745}/src/ha_mcp/_vendor/fastmcp/resources/template.py +0 -0
- {ha_mcp_dev-8.5.0.dev2740 → ha_mcp_dev-8.5.0.dev2745}/src/ha_mcp/_vendor/fastmcp/resources/types.py +0 -0
- {ha_mcp_dev-8.5.0.dev2740 → ha_mcp_dev-8.5.0.dev2745}/src/ha_mcp/_vendor/fastmcp/server/__init__.py +0 -0
- {ha_mcp_dev-8.5.0.dev2740 → ha_mcp_dev-8.5.0.dev2745}/src/ha_mcp/_vendor/fastmcp/server/auth/__init__.py +0 -0
- {ha_mcp_dev-8.5.0.dev2740 → ha_mcp_dev-8.5.0.dev2745}/src/ha_mcp/_vendor/fastmcp/server/auth/auth.py +0 -0
- {ha_mcp_dev-8.5.0.dev2740 → ha_mcp_dev-8.5.0.dev2745}/src/ha_mcp/_vendor/fastmcp/server/auth/cimd.py +0 -0
- {ha_mcp_dev-8.5.0.dev2740 → ha_mcp_dev-8.5.0.dev2745}/src/ha_mcp/_vendor/fastmcp/server/auth/handlers/__init__.py +0 -0
- {ha_mcp_dev-8.5.0.dev2740 → ha_mcp_dev-8.5.0.dev2745}/src/ha_mcp/_vendor/fastmcp/server/auth/handlers/authorize.py +0 -0
- {ha_mcp_dev-8.5.0.dev2740 → ha_mcp_dev-8.5.0.dev2745}/src/ha_mcp/_vendor/fastmcp/server/auth/identity_assertion.py +0 -0
- {ha_mcp_dev-8.5.0.dev2740 → ha_mcp_dev-8.5.0.dev2745}/src/ha_mcp/_vendor/fastmcp/server/auth/jwt_issuer.py +0 -0
- {ha_mcp_dev-8.5.0.dev2740 → ha_mcp_dev-8.5.0.dev2745}/src/ha_mcp/_vendor/fastmcp/server/auth/middleware.py +0 -0
- {ha_mcp_dev-8.5.0.dev2740 → ha_mcp_dev-8.5.0.dev2745}/src/ha_mcp/_vendor/fastmcp/server/auth/oauth_proxy/__init__.py +0 -0
- {ha_mcp_dev-8.5.0.dev2740 → ha_mcp_dev-8.5.0.dev2745}/src/ha_mcp/_vendor/fastmcp/server/auth/oauth_proxy/consent.py +0 -0
- {ha_mcp_dev-8.5.0.dev2740 → ha_mcp_dev-8.5.0.dev2745}/src/ha_mcp/_vendor/fastmcp/server/auth/oauth_proxy/models.py +0 -0
- {ha_mcp_dev-8.5.0.dev2740 → ha_mcp_dev-8.5.0.dev2745}/src/ha_mcp/_vendor/fastmcp/server/auth/oauth_proxy/proxy.py +0 -0
- {ha_mcp_dev-8.5.0.dev2740 → ha_mcp_dev-8.5.0.dev2745}/src/ha_mcp/_vendor/fastmcp/server/auth/oauth_proxy/ui.py +0 -0
- {ha_mcp_dev-8.5.0.dev2740 → ha_mcp_dev-8.5.0.dev2745}/src/ha_mcp/_vendor/fastmcp/server/auth/oauth_proxy/upstream.py +0 -0
- {ha_mcp_dev-8.5.0.dev2740 → ha_mcp_dev-8.5.0.dev2745}/src/ha_mcp/_vendor/fastmcp/server/auth/oidc_proxy.py +0 -0
- {ha_mcp_dev-8.5.0.dev2740 → ha_mcp_dev-8.5.0.dev2745}/src/ha_mcp/_vendor/fastmcp/server/auth/providers/__init__.py +0 -0
- {ha_mcp_dev-8.5.0.dev2740 → ha_mcp_dev-8.5.0.dev2745}/src/ha_mcp/_vendor/fastmcp/server/auth/providers/auth0.py +0 -0
- {ha_mcp_dev-8.5.0.dev2740 → ha_mcp_dev-8.5.0.dev2745}/src/ha_mcp/_vendor/fastmcp/server/auth/providers/aws.py +0 -0
- {ha_mcp_dev-8.5.0.dev2740 → ha_mcp_dev-8.5.0.dev2745}/src/ha_mcp/_vendor/fastmcp/server/auth/providers/azure.py +0 -0
- {ha_mcp_dev-8.5.0.dev2740 → ha_mcp_dev-8.5.0.dev2745}/src/ha_mcp/_vendor/fastmcp/server/auth/providers/clerk.py +0 -0
- {ha_mcp_dev-8.5.0.dev2740 → ha_mcp_dev-8.5.0.dev2745}/src/ha_mcp/_vendor/fastmcp/server/auth/providers/debug.py +0 -0
- {ha_mcp_dev-8.5.0.dev2740 → ha_mcp_dev-8.5.0.dev2745}/src/ha_mcp/_vendor/fastmcp/server/auth/providers/descope.py +0 -0
- {ha_mcp_dev-8.5.0.dev2740 → ha_mcp_dev-8.5.0.dev2745}/src/ha_mcp/_vendor/fastmcp/server/auth/providers/discord.py +0 -0
- {ha_mcp_dev-8.5.0.dev2740 → ha_mcp_dev-8.5.0.dev2745}/src/ha_mcp/_vendor/fastmcp/server/auth/providers/github.py +0 -0
- {ha_mcp_dev-8.5.0.dev2740 → ha_mcp_dev-8.5.0.dev2745}/src/ha_mcp/_vendor/fastmcp/server/auth/providers/google.py +0 -0
- {ha_mcp_dev-8.5.0.dev2740 → ha_mcp_dev-8.5.0.dev2745}/src/ha_mcp/_vendor/fastmcp/server/auth/providers/huggingface.py +0 -0
- {ha_mcp_dev-8.5.0.dev2740 → ha_mcp_dev-8.5.0.dev2745}/src/ha_mcp/_vendor/fastmcp/server/auth/providers/in_memory.py +0 -0
- {ha_mcp_dev-8.5.0.dev2740 → ha_mcp_dev-8.5.0.dev2745}/src/ha_mcp/_vendor/fastmcp/server/auth/providers/introspection.py +0 -0
- {ha_mcp_dev-8.5.0.dev2740 → ha_mcp_dev-8.5.0.dev2745}/src/ha_mcp/_vendor/fastmcp/server/auth/providers/jwt.py +0 -0
- {ha_mcp_dev-8.5.0.dev2740 → ha_mcp_dev-8.5.0.dev2745}/src/ha_mcp/_vendor/fastmcp/server/auth/providers/keycloak.py +0 -0
- {ha_mcp_dev-8.5.0.dev2740 → ha_mcp_dev-8.5.0.dev2745}/src/ha_mcp/_vendor/fastmcp/server/auth/providers/oci.py +0 -0
- {ha_mcp_dev-8.5.0.dev2740 → ha_mcp_dev-8.5.0.dev2745}/src/ha_mcp/_vendor/fastmcp/server/auth/providers/propelauth.py +0 -0
- {ha_mcp_dev-8.5.0.dev2740 → ha_mcp_dev-8.5.0.dev2745}/src/ha_mcp/_vendor/fastmcp/server/auth/providers/scalekit.py +0 -0
- {ha_mcp_dev-8.5.0.dev2740 → ha_mcp_dev-8.5.0.dev2745}/src/ha_mcp/_vendor/fastmcp/server/auth/providers/supabase.py +0 -0
- {ha_mcp_dev-8.5.0.dev2740 → ha_mcp_dev-8.5.0.dev2745}/src/ha_mcp/_vendor/fastmcp/server/auth/providers/workos.py +0 -0
- {ha_mcp_dev-8.5.0.dev2740 → ha_mcp_dev-8.5.0.dev2745}/src/ha_mcp/_vendor/fastmcp/server/auth/redirect_validation.py +0 -0
- {ha_mcp_dev-8.5.0.dev2740 → ha_mcp_dev-8.5.0.dev2745}/src/ha_mcp/_vendor/fastmcp/server/auth/ssrf.py +0 -0
- {ha_mcp_dev-8.5.0.dev2740 → ha_mcp_dev-8.5.0.dev2745}/src/ha_mcp/_vendor/fastmcp/server/caching.py +0 -0
- {ha_mcp_dev-8.5.0.dev2740 → ha_mcp_dev-8.5.0.dev2745}/src/ha_mcp/_vendor/fastmcp/server/completions.py +0 -0
- {ha_mcp_dev-8.5.0.dev2740 → ha_mcp_dev-8.5.0.dev2745}/src/ha_mcp/_vendor/fastmcp/server/context.py +0 -0
- {ha_mcp_dev-8.5.0.dev2740 → ha_mcp_dev-8.5.0.dev2745}/src/ha_mcp/_vendor/fastmcp/server/dependencies.py +0 -0
- {ha_mcp_dev-8.5.0.dev2740 → ha_mcp_dev-8.5.0.dev2745}/src/ha_mcp/_vendor/fastmcp/server/elicitation.py +0 -0
- {ha_mcp_dev-8.5.0.dev2740 → ha_mcp_dev-8.5.0.dev2745}/src/ha_mcp/_vendor/fastmcp/server/event_store.py +0 -0
- {ha_mcp_dev-8.5.0.dev2740 → ha_mcp_dev-8.5.0.dev2745}/src/ha_mcp/_vendor/fastmcp/server/extensions.py +0 -0
- {ha_mcp_dev-8.5.0.dev2740 → ha_mcp_dev-8.5.0.dev2745}/src/ha_mcp/_vendor/fastmcp/server/http.py +0 -0
- {ha_mcp_dev-8.5.0.dev2740 → ha_mcp_dev-8.5.0.dev2745}/src/ha_mcp/_vendor/fastmcp/server/lifespan.py +0 -0
- {ha_mcp_dev-8.5.0.dev2740 → ha_mcp_dev-8.5.0.dev2745}/src/ha_mcp/_vendor/fastmcp/server/low_level.py +0 -0
- {ha_mcp_dev-8.5.0.dev2740 → ha_mcp_dev-8.5.0.dev2745}/src/ha_mcp/_vendor/fastmcp/server/middleware/__init__.py +0 -0
- {ha_mcp_dev-8.5.0.dev2740 → ha_mcp_dev-8.5.0.dev2745}/src/ha_mcp/_vendor/fastmcp/server/middleware/authorization.py +0 -0
- {ha_mcp_dev-8.5.0.dev2740 → ha_mcp_dev-8.5.0.dev2745}/src/ha_mcp/_vendor/fastmcp/server/middleware/caching.py +0 -0
- {ha_mcp_dev-8.5.0.dev2740 → ha_mcp_dev-8.5.0.dev2745}/src/ha_mcp/_vendor/fastmcp/server/middleware/dereference.py +0 -0
- {ha_mcp_dev-8.5.0.dev2740 → ha_mcp_dev-8.5.0.dev2745}/src/ha_mcp/_vendor/fastmcp/server/middleware/error_handling.py +0 -0
- {ha_mcp_dev-8.5.0.dev2740 → ha_mcp_dev-8.5.0.dev2745}/src/ha_mcp/_vendor/fastmcp/server/middleware/logging.py +0 -0
- {ha_mcp_dev-8.5.0.dev2740 → ha_mcp_dev-8.5.0.dev2745}/src/ha_mcp/_vendor/fastmcp/server/middleware/middleware.py +0 -0
- {ha_mcp_dev-8.5.0.dev2740 → ha_mcp_dev-8.5.0.dev2745}/src/ha_mcp/_vendor/fastmcp/server/middleware/ping.py +0 -0
- {ha_mcp_dev-8.5.0.dev2740 → ha_mcp_dev-8.5.0.dev2745}/src/ha_mcp/_vendor/fastmcp/server/middleware/rate_limiting.py +0 -0
- {ha_mcp_dev-8.5.0.dev2740 → ha_mcp_dev-8.5.0.dev2745}/src/ha_mcp/_vendor/fastmcp/server/middleware/response_limiting.py +0 -0
- {ha_mcp_dev-8.5.0.dev2740 → ha_mcp_dev-8.5.0.dev2745}/src/ha_mcp/_vendor/fastmcp/server/middleware/timing.py +0 -0
- {ha_mcp_dev-8.5.0.dev2740 → ha_mcp_dev-8.5.0.dev2745}/src/ha_mcp/_vendor/fastmcp/server/middleware/tool_injection.py +0 -0
- {ha_mcp_dev-8.5.0.dev2740 → ha_mcp_dev-8.5.0.dev2745}/src/ha_mcp/_vendor/fastmcp/server/mixins/__init__.py +0 -0
- {ha_mcp_dev-8.5.0.dev2740 → ha_mcp_dev-8.5.0.dev2745}/src/ha_mcp/_vendor/fastmcp/server/mixins/lifespan.py +0 -0
- {ha_mcp_dev-8.5.0.dev2740 → ha_mcp_dev-8.5.0.dev2745}/src/ha_mcp/_vendor/fastmcp/server/mixins/mcp_operations.py +0 -0
- {ha_mcp_dev-8.5.0.dev2740 → ha_mcp_dev-8.5.0.dev2745}/src/ha_mcp/_vendor/fastmcp/server/mixins/transport.py +0 -0
- {ha_mcp_dev-8.5.0.dev2740 → ha_mcp_dev-8.5.0.dev2745}/src/ha_mcp/_vendor/fastmcp/server/providers/__init__.py +0 -0
- {ha_mcp_dev-8.5.0.dev2740 → ha_mcp_dev-8.5.0.dev2745}/src/ha_mcp/_vendor/fastmcp/server/providers/addressing.py +0 -0
- {ha_mcp_dev-8.5.0.dev2740 → ha_mcp_dev-8.5.0.dev2745}/src/ha_mcp/_vendor/fastmcp/server/providers/aggregate.py +0 -0
- {ha_mcp_dev-8.5.0.dev2740 → ha_mcp_dev-8.5.0.dev2745}/src/ha_mcp/_vendor/fastmcp/server/providers/base.py +0 -0
- {ha_mcp_dev-8.5.0.dev2740 → ha_mcp_dev-8.5.0.dev2745}/src/ha_mcp/_vendor/fastmcp/server/providers/fastmcp_provider.py +0 -0
- {ha_mcp_dev-8.5.0.dev2740 → ha_mcp_dev-8.5.0.dev2745}/src/ha_mcp/_vendor/fastmcp/server/providers/filesystem.py +0 -0
- {ha_mcp_dev-8.5.0.dev2740 → ha_mcp_dev-8.5.0.dev2745}/src/ha_mcp/_vendor/fastmcp/server/providers/filesystem_discovery.py +0 -0
- {ha_mcp_dev-8.5.0.dev2740 → ha_mcp_dev-8.5.0.dev2745}/src/ha_mcp/_vendor/fastmcp/server/providers/local_provider/__init__.py +0 -0
- {ha_mcp_dev-8.5.0.dev2740 → ha_mcp_dev-8.5.0.dev2745}/src/ha_mcp/_vendor/fastmcp/server/providers/local_provider/decorators/__init__.py +0 -0
- {ha_mcp_dev-8.5.0.dev2740 → ha_mcp_dev-8.5.0.dev2745}/src/ha_mcp/_vendor/fastmcp/server/providers/local_provider/decorators/prompts.py +0 -0
- {ha_mcp_dev-8.5.0.dev2740 → ha_mcp_dev-8.5.0.dev2745}/src/ha_mcp/_vendor/fastmcp/server/providers/local_provider/decorators/resources.py +0 -0
- {ha_mcp_dev-8.5.0.dev2740 → ha_mcp_dev-8.5.0.dev2745}/src/ha_mcp/_vendor/fastmcp/server/providers/local_provider/decorators/tools.py +0 -0
- {ha_mcp_dev-8.5.0.dev2740 → ha_mcp_dev-8.5.0.dev2745}/src/ha_mcp/_vendor/fastmcp/server/providers/local_provider/local_provider.py +0 -0
- {ha_mcp_dev-8.5.0.dev2740 → ha_mcp_dev-8.5.0.dev2745}/src/ha_mcp/_vendor/fastmcp/server/providers/openapi/README.md +0 -0
- {ha_mcp_dev-8.5.0.dev2740 → ha_mcp_dev-8.5.0.dev2745}/src/ha_mcp/_vendor/fastmcp/server/providers/openapi/__init__.py +0 -0
- {ha_mcp_dev-8.5.0.dev2740 → ha_mcp_dev-8.5.0.dev2745}/src/ha_mcp/_vendor/fastmcp/server/providers/openapi/components.py +0 -0
- {ha_mcp_dev-8.5.0.dev2740 → ha_mcp_dev-8.5.0.dev2745}/src/ha_mcp/_vendor/fastmcp/server/providers/openapi/provider.py +0 -0
- {ha_mcp_dev-8.5.0.dev2740 → ha_mcp_dev-8.5.0.dev2745}/src/ha_mcp/_vendor/fastmcp/server/providers/openapi/routing.py +0 -0
- {ha_mcp_dev-8.5.0.dev2740 → ha_mcp_dev-8.5.0.dev2745}/src/ha_mcp/_vendor/fastmcp/server/providers/prefab_payload.py +0 -0
- {ha_mcp_dev-8.5.0.dev2740 → ha_mcp_dev-8.5.0.dev2745}/src/ha_mcp/_vendor/fastmcp/server/providers/prefab_synthesis.py +0 -0
- {ha_mcp_dev-8.5.0.dev2740 → ha_mcp_dev-8.5.0.dev2745}/src/ha_mcp/_vendor/fastmcp/server/providers/proxy.py +0 -0
- {ha_mcp_dev-8.5.0.dev2740 → ha_mcp_dev-8.5.0.dev2745}/src/ha_mcp/_vendor/fastmcp/server/providers/skills/__init__.py +0 -0
- {ha_mcp_dev-8.5.0.dev2740 → ha_mcp_dev-8.5.0.dev2745}/src/ha_mcp/_vendor/fastmcp/server/providers/skills/_common.py +0 -0
- {ha_mcp_dev-8.5.0.dev2740 → ha_mcp_dev-8.5.0.dev2745}/src/ha_mcp/_vendor/fastmcp/server/providers/skills/claude_provider.py +0 -0
- {ha_mcp_dev-8.5.0.dev2740 → ha_mcp_dev-8.5.0.dev2745}/src/ha_mcp/_vendor/fastmcp/server/providers/skills/directory_provider.py +0 -0
- {ha_mcp_dev-8.5.0.dev2740 → ha_mcp_dev-8.5.0.dev2745}/src/ha_mcp/_vendor/fastmcp/server/providers/skills/skill_provider.py +0 -0
- {ha_mcp_dev-8.5.0.dev2740 → ha_mcp_dev-8.5.0.dev2745}/src/ha_mcp/_vendor/fastmcp/server/providers/skills/vendor_providers.py +0 -0
- {ha_mcp_dev-8.5.0.dev2740 → ha_mcp_dev-8.5.0.dev2745}/src/ha_mcp/_vendor/fastmcp/server/providers/wrapped_provider.py +0 -0
- {ha_mcp_dev-8.5.0.dev2740 → ha_mcp_dev-8.5.0.dev2745}/src/ha_mcp/_vendor/fastmcp/server/server.py +0 -0
- {ha_mcp_dev-8.5.0.dev2740 → ha_mcp_dev-8.5.0.dev2745}/src/ha_mcp/_vendor/fastmcp/server/session_scoped_event_store.py +0 -0
- {ha_mcp_dev-8.5.0.dev2740 → ha_mcp_dev-8.5.0.dev2745}/src/ha_mcp/_vendor/fastmcp/server/sessions.py +0 -0
- {ha_mcp_dev-8.5.0.dev2740 → ha_mcp_dev-8.5.0.dev2745}/src/ha_mcp/_vendor/fastmcp/server/telemetry.py +0 -0
- {ha_mcp_dev-8.5.0.dev2740 → ha_mcp_dev-8.5.0.dev2745}/src/ha_mcp/_vendor/fastmcp/server/transforms/__init__.py +0 -0
- {ha_mcp_dev-8.5.0.dev2740 → ha_mcp_dev-8.5.0.dev2745}/src/ha_mcp/_vendor/fastmcp/server/transforms/catalog.py +0 -0
- {ha_mcp_dev-8.5.0.dev2740 → ha_mcp_dev-8.5.0.dev2745}/src/ha_mcp/_vendor/fastmcp/server/transforms/namespace.py +0 -0
- {ha_mcp_dev-8.5.0.dev2740 → ha_mcp_dev-8.5.0.dev2745}/src/ha_mcp/_vendor/fastmcp/server/transforms/prompts_as_tools.py +0 -0
- {ha_mcp_dev-8.5.0.dev2740 → ha_mcp_dev-8.5.0.dev2745}/src/ha_mcp/_vendor/fastmcp/server/transforms/resources_as_tools.py +0 -0
- {ha_mcp_dev-8.5.0.dev2740 → ha_mcp_dev-8.5.0.dev2745}/src/ha_mcp/_vendor/fastmcp/server/transforms/search/__init__.py +0 -0
- {ha_mcp_dev-8.5.0.dev2740 → ha_mcp_dev-8.5.0.dev2745}/src/ha_mcp/_vendor/fastmcp/server/transforms/search/base.py +0 -0
- {ha_mcp_dev-8.5.0.dev2740 → ha_mcp_dev-8.5.0.dev2745}/src/ha_mcp/_vendor/fastmcp/server/transforms/search/bm25.py +0 -0
- {ha_mcp_dev-8.5.0.dev2740 → ha_mcp_dev-8.5.0.dev2745}/src/ha_mcp/_vendor/fastmcp/server/transforms/search/regex.py +0 -0
- {ha_mcp_dev-8.5.0.dev2740 → ha_mcp_dev-8.5.0.dev2745}/src/ha_mcp/_vendor/fastmcp/server/transforms/tool_transform.py +0 -0
- {ha_mcp_dev-8.5.0.dev2740 → ha_mcp_dev-8.5.0.dev2745}/src/ha_mcp/_vendor/fastmcp/server/transforms/version_filter.py +0 -0
- {ha_mcp_dev-8.5.0.dev2740 → ha_mcp_dev-8.5.0.dev2745}/src/ha_mcp/_vendor/fastmcp/server/transforms/visibility.py +0 -0
- {ha_mcp_dev-8.5.0.dev2740 → ha_mcp_dev-8.5.0.dev2745}/src/ha_mcp/_vendor/fastmcp/settings.py +0 -0
- {ha_mcp_dev-8.5.0.dev2740 → ha_mcp_dev-8.5.0.dev2745}/src/ha_mcp/_vendor/fastmcp/telemetry.py +0 -0
- {ha_mcp_dev-8.5.0.dev2740 → ha_mcp_dev-8.5.0.dev2745}/src/ha_mcp/_vendor/fastmcp/tools/__init__.py +0 -0
- {ha_mcp_dev-8.5.0.dev2740 → ha_mcp_dev-8.5.0.dev2745}/src/ha_mcp/_vendor/fastmcp/tools/base.py +0 -0
- {ha_mcp_dev-8.5.0.dev2740 → ha_mcp_dev-8.5.0.dev2745}/src/ha_mcp/_vendor/fastmcp/tools/function_parsing.py +0 -0
- {ha_mcp_dev-8.5.0.dev2740 → ha_mcp_dev-8.5.0.dev2745}/src/ha_mcp/_vendor/fastmcp/tools/function_tool.py +0 -0
- {ha_mcp_dev-8.5.0.dev2740 → ha_mcp_dev-8.5.0.dev2745}/src/ha_mcp/_vendor/fastmcp/tools/tool_transform.py +0 -0
- {ha_mcp_dev-8.5.0.dev2740 → ha_mcp_dev-8.5.0.dev2745}/src/ha_mcp/_vendor/fastmcp/types.py +0 -0
- {ha_mcp_dev-8.5.0.dev2740 → ha_mcp_dev-8.5.0.dev2745}/src/ha_mcp/_vendor/fastmcp/utilities/__init__.py +0 -0
- {ha_mcp_dev-8.5.0.dev2740 → ha_mcp_dev-8.5.0.dev2745}/src/ha_mcp/_vendor/fastmcp/utilities/asgi_transport.py +0 -0
- {ha_mcp_dev-8.5.0.dev2740 → ha_mcp_dev-8.5.0.dev2745}/src/ha_mcp/_vendor/fastmcp/utilities/async_utils.py +0 -0
- {ha_mcp_dev-8.5.0.dev2740 → ha_mcp_dev-8.5.0.dev2745}/src/ha_mcp/_vendor/fastmcp/utilities/auth.py +0 -0
- {ha_mcp_dev-8.5.0.dev2740 → ha_mcp_dev-8.5.0.dev2745}/src/ha_mcp/_vendor/fastmcp/utilities/authorization.py +0 -0
- {ha_mcp_dev-8.5.0.dev2740 → ha_mcp_dev-8.5.0.dev2745}/src/ha_mcp/_vendor/fastmcp/utilities/cli.py +0 -0
- {ha_mcp_dev-8.5.0.dev2740 → ha_mcp_dev-8.5.0.dev2745}/src/ha_mcp/_vendor/fastmcp/utilities/components.py +0 -0
- {ha_mcp_dev-8.5.0.dev2740 → ha_mcp_dev-8.5.0.dev2745}/src/ha_mcp/_vendor/fastmcp/utilities/docstring_parsing.py +0 -0
- {ha_mcp_dev-8.5.0.dev2740 → ha_mcp_dev-8.5.0.dev2745}/src/ha_mcp/_vendor/fastmcp/utilities/exceptions.py +0 -0
- {ha_mcp_dev-8.5.0.dev2740 → ha_mcp_dev-8.5.0.dev2745}/src/ha_mcp/_vendor/fastmcp/utilities/http.py +0 -0
- {ha_mcp_dev-8.5.0.dev2740 → ha_mcp_dev-8.5.0.dev2745}/src/ha_mcp/_vendor/fastmcp/utilities/inspect.py +0 -0
- {ha_mcp_dev-8.5.0.dev2740 → ha_mcp_dev-8.5.0.dev2745}/src/ha_mcp/_vendor/fastmcp/utilities/json_schema.py +0 -0
- {ha_mcp_dev-8.5.0.dev2740 → ha_mcp_dev-8.5.0.dev2745}/src/ha_mcp/_vendor/fastmcp/utilities/json_schema_type.py +0 -0
- {ha_mcp_dev-8.5.0.dev2740 → ha_mcp_dev-8.5.0.dev2745}/src/ha_mcp/_vendor/fastmcp/utilities/lifespan.py +0 -0
- {ha_mcp_dev-8.5.0.dev2740 → ha_mcp_dev-8.5.0.dev2745}/src/ha_mcp/_vendor/fastmcp/utilities/logging.py +0 -0
- {ha_mcp_dev-8.5.0.dev2740 → ha_mcp_dev-8.5.0.dev2745}/src/ha_mcp/_vendor/fastmcp/utilities/mcp_server_config/__init__.py +0 -0
- {ha_mcp_dev-8.5.0.dev2740 → ha_mcp_dev-8.5.0.dev2745}/src/ha_mcp/_vendor/fastmcp/utilities/mcp_server_config/v1/__init__.py +0 -0
- {ha_mcp_dev-8.5.0.dev2740 → ha_mcp_dev-8.5.0.dev2745}/src/ha_mcp/_vendor/fastmcp/utilities/mcp_server_config/v1/environments/__init__.py +0 -0
- {ha_mcp_dev-8.5.0.dev2740 → ha_mcp_dev-8.5.0.dev2745}/src/ha_mcp/_vendor/fastmcp/utilities/mcp_server_config/v1/environments/base.py +0 -0
- {ha_mcp_dev-8.5.0.dev2740 → ha_mcp_dev-8.5.0.dev2745}/src/ha_mcp/_vendor/fastmcp/utilities/mcp_server_config/v1/environments/uv.py +0 -0
- {ha_mcp_dev-8.5.0.dev2740 → ha_mcp_dev-8.5.0.dev2745}/src/ha_mcp/_vendor/fastmcp/utilities/mcp_server_config/v1/mcp_server_config.py +0 -0
- {ha_mcp_dev-8.5.0.dev2740 → ha_mcp_dev-8.5.0.dev2745}/src/ha_mcp/_vendor/fastmcp/utilities/mcp_server_config/v1/schema.json +0 -0
- {ha_mcp_dev-8.5.0.dev2740 → ha_mcp_dev-8.5.0.dev2745}/src/ha_mcp/_vendor/fastmcp/utilities/mcp_server_config/v1/sources/__init__.py +0 -0
- {ha_mcp_dev-8.5.0.dev2740 → ha_mcp_dev-8.5.0.dev2745}/src/ha_mcp/_vendor/fastmcp/utilities/mcp_server_config/v1/sources/base.py +0 -0
- {ha_mcp_dev-8.5.0.dev2740 → ha_mcp_dev-8.5.0.dev2745}/src/ha_mcp/_vendor/fastmcp/utilities/mcp_server_config/v1/sources/filesystem.py +0 -0
- {ha_mcp_dev-8.5.0.dev2740 → ha_mcp_dev-8.5.0.dev2745}/src/ha_mcp/_vendor/fastmcp/utilities/mime.py +0 -0
- {ha_mcp_dev-8.5.0.dev2740 → ha_mcp_dev-8.5.0.dev2745}/src/ha_mcp/_vendor/fastmcp/utilities/openapi/README.md +0 -0
- {ha_mcp_dev-8.5.0.dev2740 → ha_mcp_dev-8.5.0.dev2745}/src/ha_mcp/_vendor/fastmcp/utilities/openapi/__init__.py +0 -0
- {ha_mcp_dev-8.5.0.dev2740 → ha_mcp_dev-8.5.0.dev2745}/src/ha_mcp/_vendor/fastmcp/utilities/openapi/director.py +0 -0
- {ha_mcp_dev-8.5.0.dev2740 → ha_mcp_dev-8.5.0.dev2745}/src/ha_mcp/_vendor/fastmcp/utilities/openapi/formatters.py +0 -0
- {ha_mcp_dev-8.5.0.dev2740 → ha_mcp_dev-8.5.0.dev2745}/src/ha_mcp/_vendor/fastmcp/utilities/openapi/json_schema_converter.py +0 -0
- {ha_mcp_dev-8.5.0.dev2740 → ha_mcp_dev-8.5.0.dev2745}/src/ha_mcp/_vendor/fastmcp/utilities/openapi/models.py +0 -0
- {ha_mcp_dev-8.5.0.dev2740 → ha_mcp_dev-8.5.0.dev2745}/src/ha_mcp/_vendor/fastmcp/utilities/openapi/parser.py +0 -0
- {ha_mcp_dev-8.5.0.dev2740 → ha_mcp_dev-8.5.0.dev2745}/src/ha_mcp/_vendor/fastmcp/utilities/openapi/schemas.py +0 -0
- {ha_mcp_dev-8.5.0.dev2740 → ha_mcp_dev-8.5.0.dev2745}/src/ha_mcp/_vendor/fastmcp/utilities/pagination.py +0 -0
- {ha_mcp_dev-8.5.0.dev2740 → ha_mcp_dev-8.5.0.dev2745}/src/ha_mcp/_vendor/fastmcp/utilities/prefab.py +0 -0
- {ha_mcp_dev-8.5.0.dev2740 → ha_mcp_dev-8.5.0.dev2745}/src/ha_mcp/_vendor/fastmcp/utilities/skills.py +0 -0
- {ha_mcp_dev-8.5.0.dev2740 → ha_mcp_dev-8.5.0.dev2745}/src/ha_mcp/_vendor/fastmcp/utilities/tasks.py +0 -0
- {ha_mcp_dev-8.5.0.dev2740 → ha_mcp_dev-8.5.0.dev2745}/src/ha_mcp/_vendor/fastmcp/utilities/tests.py +0 -0
- {ha_mcp_dev-8.5.0.dev2740 → ha_mcp_dev-8.5.0.dev2745}/src/ha_mcp/_vendor/fastmcp/utilities/timeout.py +0 -0
- {ha_mcp_dev-8.5.0.dev2740 → ha_mcp_dev-8.5.0.dev2745}/src/ha_mcp/_vendor/fastmcp/utilities/token_cache.py +0 -0
- {ha_mcp_dev-8.5.0.dev2740 → ha_mcp_dev-8.5.0.dev2745}/src/ha_mcp/_vendor/fastmcp/utilities/types.py +0 -0
- {ha_mcp_dev-8.5.0.dev2740 → ha_mcp_dev-8.5.0.dev2745}/src/ha_mcp/_vendor/fastmcp/utilities/ui.py +0 -0
- {ha_mcp_dev-8.5.0.dev2740 → ha_mcp_dev-8.5.0.dev2745}/src/ha_mcp/_vendor/fastmcp/utilities/version_check.py +0 -0
- {ha_mcp_dev-8.5.0.dev2740 → ha_mcp_dev-8.5.0.dev2745}/src/ha_mcp/_vendor/fastmcp/utilities/versions.py +0 -0
- {ha_mcp_dev-8.5.0.dev2740 → ha_mcp_dev-8.5.0.dev2745}/src/ha_mcp/_vendor/mcp/LICENSE +0 -0
- {ha_mcp_dev-8.5.0.dev2740 → ha_mcp_dev-8.5.0.dev2745}/src/ha_mcp/_vendor/mcp/MANIFEST.sha256 +0 -0
- {ha_mcp_dev-8.5.0.dev2740 → ha_mcp_dev-8.5.0.dev2745}/src/ha_mcp/_vendor/mcp/REQUIRES.txt +0 -0
- {ha_mcp_dev-8.5.0.dev2740 → ha_mcp_dev-8.5.0.dev2745}/src/ha_mcp/_vendor/mcp/VENDORED +0 -0
- {ha_mcp_dev-8.5.0.dev2740 → ha_mcp_dev-8.5.0.dev2745}/src/ha_mcp/_vendor/mcp/__init__.py +0 -0
- {ha_mcp_dev-8.5.0.dev2740 → ha_mcp_dev-8.5.0.dev2745}/src/ha_mcp/_vendor/mcp/cli/__init__.py +0 -0
- {ha_mcp_dev-8.5.0.dev2740 → ha_mcp_dev-8.5.0.dev2745}/src/ha_mcp/_vendor/mcp/cli/claude.py +0 -0
- {ha_mcp_dev-8.5.0.dev2740 → ha_mcp_dev-8.5.0.dev2745}/src/ha_mcp/_vendor/mcp/cli/cli.py +0 -0
- {ha_mcp_dev-8.5.0.dev2740 → ha_mcp_dev-8.5.0.dev2745}/src/ha_mcp/_vendor/mcp/client/__init__.py +0 -0
- {ha_mcp_dev-8.5.0.dev2740 → ha_mcp_dev-8.5.0.dev2745}/src/ha_mcp/_vendor/mcp/client/__main__.py +0 -0
- {ha_mcp_dev-8.5.0.dev2740 → ha_mcp_dev-8.5.0.dev2745}/src/ha_mcp/_vendor/mcp/client/_input_required.py +0 -0
- {ha_mcp_dev-8.5.0.dev2740 → ha_mcp_dev-8.5.0.dev2745}/src/ha_mcp/_vendor/mcp/client/_memory.py +0 -0
- {ha_mcp_dev-8.5.0.dev2740 → ha_mcp_dev-8.5.0.dev2745}/src/ha_mcp/_vendor/mcp/client/_probe.py +0 -0
- {ha_mcp_dev-8.5.0.dev2740 → ha_mcp_dev-8.5.0.dev2745}/src/ha_mcp/_vendor/mcp/client/_transport.py +0 -0
- {ha_mcp_dev-8.5.0.dev2740 → ha_mcp_dev-8.5.0.dev2745}/src/ha_mcp/_vendor/mcp/client/auth/__init__.py +0 -0
- {ha_mcp_dev-8.5.0.dev2740 → ha_mcp_dev-8.5.0.dev2745}/src/ha_mcp/_vendor/mcp/client/auth/exceptions.py +0 -0
- {ha_mcp_dev-8.5.0.dev2740 → ha_mcp_dev-8.5.0.dev2745}/src/ha_mcp/_vendor/mcp/client/auth/extensions/__init__.py +0 -0
- {ha_mcp_dev-8.5.0.dev2740 → ha_mcp_dev-8.5.0.dev2745}/src/ha_mcp/_vendor/mcp/client/auth/extensions/client_credentials.py +0 -0
- {ha_mcp_dev-8.5.0.dev2740 → ha_mcp_dev-8.5.0.dev2745}/src/ha_mcp/_vendor/mcp/client/auth/extensions/identity_assertion.py +0 -0
- {ha_mcp_dev-8.5.0.dev2740 → ha_mcp_dev-8.5.0.dev2745}/src/ha_mcp/_vendor/mcp/client/auth/oauth2.py +0 -0
- {ha_mcp_dev-8.5.0.dev2740 → ha_mcp_dev-8.5.0.dev2745}/src/ha_mcp/_vendor/mcp/client/auth/utils.py +0 -0
- {ha_mcp_dev-8.5.0.dev2740 → ha_mcp_dev-8.5.0.dev2745}/src/ha_mcp/_vendor/mcp/client/caching.py +0 -0
- {ha_mcp_dev-8.5.0.dev2740 → ha_mcp_dev-8.5.0.dev2745}/src/ha_mcp/_vendor/mcp/client/client.py +0 -0
- {ha_mcp_dev-8.5.0.dev2740 → ha_mcp_dev-8.5.0.dev2745}/src/ha_mcp/_vendor/mcp/client/context.py +0 -0
- {ha_mcp_dev-8.5.0.dev2740 → ha_mcp_dev-8.5.0.dev2745}/src/ha_mcp/_vendor/mcp/client/extension.py +0 -0
- {ha_mcp_dev-8.5.0.dev2740 → ha_mcp_dev-8.5.0.dev2745}/src/ha_mcp/_vendor/mcp/client/session.py +0 -0
- {ha_mcp_dev-8.5.0.dev2740 → ha_mcp_dev-8.5.0.dev2745}/src/ha_mcp/_vendor/mcp/client/session_group.py +0 -0
- {ha_mcp_dev-8.5.0.dev2740 → ha_mcp_dev-8.5.0.dev2745}/src/ha_mcp/_vendor/mcp/client/sse.py +0 -0
- {ha_mcp_dev-8.5.0.dev2740 → ha_mcp_dev-8.5.0.dev2745}/src/ha_mcp/_vendor/mcp/client/stdio.py +0 -0
- {ha_mcp_dev-8.5.0.dev2740 → ha_mcp_dev-8.5.0.dev2745}/src/ha_mcp/_vendor/mcp/client/streamable_http.py +0 -0
- {ha_mcp_dev-8.5.0.dev2740 → ha_mcp_dev-8.5.0.dev2745}/src/ha_mcp/_vendor/mcp/client/subscriptions.py +0 -0
- {ha_mcp_dev-8.5.0.dev2740 → ha_mcp_dev-8.5.0.dev2745}/src/ha_mcp/_vendor/mcp/os/__init__.py +0 -0
- {ha_mcp_dev-8.5.0.dev2740 → ha_mcp_dev-8.5.0.dev2745}/src/ha_mcp/_vendor/mcp/os/posix/__init__.py +0 -0
- {ha_mcp_dev-8.5.0.dev2740 → ha_mcp_dev-8.5.0.dev2745}/src/ha_mcp/_vendor/mcp/os/posix/utilities.py +0 -0
- {ha_mcp_dev-8.5.0.dev2740 → ha_mcp_dev-8.5.0.dev2745}/src/ha_mcp/_vendor/mcp/os/win32/__init__.py +0 -0
- {ha_mcp_dev-8.5.0.dev2740 → ha_mcp_dev-8.5.0.dev2745}/src/ha_mcp/_vendor/mcp/os/win32/utilities.py +0 -0
- {ha_mcp_dev-8.5.0.dev2740 → ha_mcp_dev-8.5.0.dev2745}/src/ha_mcp/_vendor/mcp/py.typed +0 -0
- {ha_mcp_dev-8.5.0.dev2740 → ha_mcp_dev-8.5.0.dev2745}/src/ha_mcp/_vendor/mcp/server/__init__.py +0 -0
- {ha_mcp_dev-8.5.0.dev2740 → ha_mcp_dev-8.5.0.dev2745}/src/ha_mcp/_vendor/mcp/server/__main__.py +0 -0
- {ha_mcp_dev-8.5.0.dev2740 → ha_mcp_dev-8.5.0.dev2745}/src/ha_mcp/_vendor/mcp/server/_otel.py +0 -0
- {ha_mcp_dev-8.5.0.dev2740 → ha_mcp_dev-8.5.0.dev2745}/src/ha_mcp/_vendor/mcp/server/_streamable_http_modern.py +0 -0
- {ha_mcp_dev-8.5.0.dev2740 → ha_mcp_dev-8.5.0.dev2745}/src/ha_mcp/_vendor/mcp/server/apps.py +0 -0
- {ha_mcp_dev-8.5.0.dev2740 → ha_mcp_dev-8.5.0.dev2745}/src/ha_mcp/_vendor/mcp/server/auth/__init__.py +0 -0
- {ha_mcp_dev-8.5.0.dev2740 → ha_mcp_dev-8.5.0.dev2745}/src/ha_mcp/_vendor/mcp/server/auth/errors.py +0 -0
- {ha_mcp_dev-8.5.0.dev2740 → ha_mcp_dev-8.5.0.dev2745}/src/ha_mcp/_vendor/mcp/server/auth/handlers/__init__.py +0 -0
- {ha_mcp_dev-8.5.0.dev2740 → ha_mcp_dev-8.5.0.dev2745}/src/ha_mcp/_vendor/mcp/server/auth/handlers/authorize.py +0 -0
- {ha_mcp_dev-8.5.0.dev2740 → ha_mcp_dev-8.5.0.dev2745}/src/ha_mcp/_vendor/mcp/server/auth/handlers/metadata.py +0 -0
- {ha_mcp_dev-8.5.0.dev2740 → ha_mcp_dev-8.5.0.dev2745}/src/ha_mcp/_vendor/mcp/server/auth/handlers/register.py +0 -0
- {ha_mcp_dev-8.5.0.dev2740 → ha_mcp_dev-8.5.0.dev2745}/src/ha_mcp/_vendor/mcp/server/auth/handlers/revoke.py +0 -0
- {ha_mcp_dev-8.5.0.dev2740 → ha_mcp_dev-8.5.0.dev2745}/src/ha_mcp/_vendor/mcp/server/auth/handlers/token.py +0 -0
- {ha_mcp_dev-8.5.0.dev2740 → ha_mcp_dev-8.5.0.dev2745}/src/ha_mcp/_vendor/mcp/server/auth/json_response.py +0 -0
- {ha_mcp_dev-8.5.0.dev2740 → ha_mcp_dev-8.5.0.dev2745}/src/ha_mcp/_vendor/mcp/server/auth/middleware/__init__.py +0 -0
- {ha_mcp_dev-8.5.0.dev2740 → ha_mcp_dev-8.5.0.dev2745}/src/ha_mcp/_vendor/mcp/server/auth/middleware/auth_context.py +0 -0
- {ha_mcp_dev-8.5.0.dev2740 → ha_mcp_dev-8.5.0.dev2745}/src/ha_mcp/_vendor/mcp/server/auth/middleware/bearer_auth.py +0 -0
- {ha_mcp_dev-8.5.0.dev2740 → ha_mcp_dev-8.5.0.dev2745}/src/ha_mcp/_vendor/mcp/server/auth/middleware/client_auth.py +0 -0
- {ha_mcp_dev-8.5.0.dev2740 → ha_mcp_dev-8.5.0.dev2745}/src/ha_mcp/_vendor/mcp/server/auth/provider.py +0 -0
- {ha_mcp_dev-8.5.0.dev2740 → ha_mcp_dev-8.5.0.dev2745}/src/ha_mcp/_vendor/mcp/server/auth/routes.py +0 -0
- {ha_mcp_dev-8.5.0.dev2740 → ha_mcp_dev-8.5.0.dev2745}/src/ha_mcp/_vendor/mcp/server/auth/settings.py +0 -0
- {ha_mcp_dev-8.5.0.dev2740 → ha_mcp_dev-8.5.0.dev2745}/src/ha_mcp/_vendor/mcp/server/caching.py +0 -0
- {ha_mcp_dev-8.5.0.dev2740 → ha_mcp_dev-8.5.0.dev2745}/src/ha_mcp/_vendor/mcp/server/connection.py +0 -0
- {ha_mcp_dev-8.5.0.dev2740 → ha_mcp_dev-8.5.0.dev2745}/src/ha_mcp/_vendor/mcp/server/context.py +0 -0
- {ha_mcp_dev-8.5.0.dev2740 → ha_mcp_dev-8.5.0.dev2745}/src/ha_mcp/_vendor/mcp/server/elicitation.py +0 -0
- {ha_mcp_dev-8.5.0.dev2740 → ha_mcp_dev-8.5.0.dev2745}/src/ha_mcp/_vendor/mcp/server/extension.py +0 -0
- {ha_mcp_dev-8.5.0.dev2740 → ha_mcp_dev-8.5.0.dev2745}/src/ha_mcp/_vendor/mcp/server/fastmcp.py +0 -0
- {ha_mcp_dev-8.5.0.dev2740 → ha_mcp_dev-8.5.0.dev2745}/src/ha_mcp/_vendor/mcp/server/lowlevel/__init__.py +0 -0
- {ha_mcp_dev-8.5.0.dev2740 → ha_mcp_dev-8.5.0.dev2745}/src/ha_mcp/_vendor/mcp/server/lowlevel/helper_types.py +0 -0
- {ha_mcp_dev-8.5.0.dev2740 → ha_mcp_dev-8.5.0.dev2745}/src/ha_mcp/_vendor/mcp/server/lowlevel/server.py +0 -0
- {ha_mcp_dev-8.5.0.dev2740 → ha_mcp_dev-8.5.0.dev2745}/src/ha_mcp/_vendor/mcp/server/mcpserver/__init__.py +0 -0
- {ha_mcp_dev-8.5.0.dev2740 → ha_mcp_dev-8.5.0.dev2745}/src/ha_mcp/_vendor/mcp/server/mcpserver/context.py +0 -0
- {ha_mcp_dev-8.5.0.dev2740 → ha_mcp_dev-8.5.0.dev2745}/src/ha_mcp/_vendor/mcp/server/mcpserver/exceptions.py +0 -0
- {ha_mcp_dev-8.5.0.dev2740 → ha_mcp_dev-8.5.0.dev2745}/src/ha_mcp/_vendor/mcp/server/mcpserver/prompts/__init__.py +0 -0
- {ha_mcp_dev-8.5.0.dev2740 → ha_mcp_dev-8.5.0.dev2745}/src/ha_mcp/_vendor/mcp/server/mcpserver/prompts/base.py +0 -0
- {ha_mcp_dev-8.5.0.dev2740 → ha_mcp_dev-8.5.0.dev2745}/src/ha_mcp/_vendor/mcp/server/mcpserver/prompts/manager.py +0 -0
- {ha_mcp_dev-8.5.0.dev2740 → ha_mcp_dev-8.5.0.dev2745}/src/ha_mcp/_vendor/mcp/server/mcpserver/resolve.py +0 -0
- {ha_mcp_dev-8.5.0.dev2740 → ha_mcp_dev-8.5.0.dev2745}/src/ha_mcp/_vendor/mcp/server/mcpserver/resources/__init__.py +0 -0
- {ha_mcp_dev-8.5.0.dev2740 → ha_mcp_dev-8.5.0.dev2745}/src/ha_mcp/_vendor/mcp/server/mcpserver/resources/base.py +0 -0
- {ha_mcp_dev-8.5.0.dev2740 → ha_mcp_dev-8.5.0.dev2745}/src/ha_mcp/_vendor/mcp/server/mcpserver/resources/resource_manager.py +0 -0
- {ha_mcp_dev-8.5.0.dev2740 → ha_mcp_dev-8.5.0.dev2745}/src/ha_mcp/_vendor/mcp/server/mcpserver/resources/templates.py +0 -0
- {ha_mcp_dev-8.5.0.dev2740 → ha_mcp_dev-8.5.0.dev2745}/src/ha_mcp/_vendor/mcp/server/mcpserver/resources/types.py +0 -0
- {ha_mcp_dev-8.5.0.dev2740 → ha_mcp_dev-8.5.0.dev2745}/src/ha_mcp/_vendor/mcp/server/mcpserver/server.py +0 -0
- {ha_mcp_dev-8.5.0.dev2740 → ha_mcp_dev-8.5.0.dev2745}/src/ha_mcp/_vendor/mcp/server/mcpserver/tools/__init__.py +0 -0
- {ha_mcp_dev-8.5.0.dev2740 → ha_mcp_dev-8.5.0.dev2745}/src/ha_mcp/_vendor/mcp/server/mcpserver/tools/base.py +0 -0
- {ha_mcp_dev-8.5.0.dev2740 → ha_mcp_dev-8.5.0.dev2745}/src/ha_mcp/_vendor/mcp/server/mcpserver/tools/tool_manager.py +0 -0
- {ha_mcp_dev-8.5.0.dev2740 → ha_mcp_dev-8.5.0.dev2745}/src/ha_mcp/_vendor/mcp/server/mcpserver/utilities/__init__.py +0 -0
- {ha_mcp_dev-8.5.0.dev2740 → ha_mcp_dev-8.5.0.dev2745}/src/ha_mcp/_vendor/mcp/server/mcpserver/utilities/context_injection.py +0 -0
- {ha_mcp_dev-8.5.0.dev2740 → ha_mcp_dev-8.5.0.dev2745}/src/ha_mcp/_vendor/mcp/server/mcpserver/utilities/func_metadata.py +0 -0
- {ha_mcp_dev-8.5.0.dev2740 → ha_mcp_dev-8.5.0.dev2745}/src/ha_mcp/_vendor/mcp/server/mcpserver/utilities/logging.py +0 -0
- {ha_mcp_dev-8.5.0.dev2740 → ha_mcp_dev-8.5.0.dev2745}/src/ha_mcp/_vendor/mcp/server/mcpserver/utilities/types.py +0 -0
- {ha_mcp_dev-8.5.0.dev2740 → ha_mcp_dev-8.5.0.dev2745}/src/ha_mcp/_vendor/mcp/server/models.py +0 -0
- {ha_mcp_dev-8.5.0.dev2740 → ha_mcp_dev-8.5.0.dev2745}/src/ha_mcp/_vendor/mcp/server/request_state.py +0 -0
- {ha_mcp_dev-8.5.0.dev2740 → ha_mcp_dev-8.5.0.dev2745}/src/ha_mcp/_vendor/mcp/server/runner.py +0 -0
- {ha_mcp_dev-8.5.0.dev2740 → ha_mcp_dev-8.5.0.dev2745}/src/ha_mcp/_vendor/mcp/server/session.py +0 -0
- {ha_mcp_dev-8.5.0.dev2740 → ha_mcp_dev-8.5.0.dev2745}/src/ha_mcp/_vendor/mcp/server/sse.py +0 -0
- {ha_mcp_dev-8.5.0.dev2740 → ha_mcp_dev-8.5.0.dev2745}/src/ha_mcp/_vendor/mcp/server/stdio.py +0 -0
- {ha_mcp_dev-8.5.0.dev2740 → ha_mcp_dev-8.5.0.dev2745}/src/ha_mcp/_vendor/mcp/server/streamable_http.py +0 -0
- {ha_mcp_dev-8.5.0.dev2740 → ha_mcp_dev-8.5.0.dev2745}/src/ha_mcp/_vendor/mcp/server/streamable_http_manager.py +0 -0
- {ha_mcp_dev-8.5.0.dev2740 → ha_mcp_dev-8.5.0.dev2745}/src/ha_mcp/_vendor/mcp/server/subscriptions.py +0 -0
- {ha_mcp_dev-8.5.0.dev2740 → ha_mcp_dev-8.5.0.dev2745}/src/ha_mcp/_vendor/mcp/server/transport_security.py +0 -0
- {ha_mcp_dev-8.5.0.dev2740 → ha_mcp_dev-8.5.0.dev2745}/src/ha_mcp/_vendor/mcp/server/validation.py +0 -0
- {ha_mcp_dev-8.5.0.dev2740 → ha_mcp_dev-8.5.0.dev2745}/src/ha_mcp/_vendor/mcp/shared/__init__.py +0 -0
- {ha_mcp_dev-8.5.0.dev2740 → ha_mcp_dev-8.5.0.dev2745}/src/ha_mcp/_vendor/mcp/shared/_callable_inspection.py +0 -0
- {ha_mcp_dev-8.5.0.dev2740 → ha_mcp_dev-8.5.0.dev2745}/src/ha_mcp/_vendor/mcp/shared/_compat.py +0 -0
- {ha_mcp_dev-8.5.0.dev2740 → ha_mcp_dev-8.5.0.dev2745}/src/ha_mcp/_vendor/mcp/shared/_context_streams.py +0 -0
- {ha_mcp_dev-8.5.0.dev2740 → ha_mcp_dev-8.5.0.dev2745}/src/ha_mcp/_vendor/mcp/shared/_httpx_utils.py +0 -0
- {ha_mcp_dev-8.5.0.dev2740 → ha_mcp_dev-8.5.0.dev2745}/src/ha_mcp/_vendor/mcp/shared/_otel.py +0 -0
- {ha_mcp_dev-8.5.0.dev2740 → ha_mcp_dev-8.5.0.dev2745}/src/ha_mcp/_vendor/mcp/shared/_stream_protocols.py +0 -0
- {ha_mcp_dev-8.5.0.dev2740 → ha_mcp_dev-8.5.0.dev2745}/src/ha_mcp/_vendor/mcp/shared/auth.py +0 -0
- {ha_mcp_dev-8.5.0.dev2740 → ha_mcp_dev-8.5.0.dev2745}/src/ha_mcp/_vendor/mcp/shared/auth_utils.py +0 -0
- {ha_mcp_dev-8.5.0.dev2740 → ha_mcp_dev-8.5.0.dev2745}/src/ha_mcp/_vendor/mcp/shared/context.py +0 -0
- {ha_mcp_dev-8.5.0.dev2740 → ha_mcp_dev-8.5.0.dev2745}/src/ha_mcp/_vendor/mcp/shared/direct_dispatcher.py +0 -0
- {ha_mcp_dev-8.5.0.dev2740 → ha_mcp_dev-8.5.0.dev2745}/src/ha_mcp/_vendor/mcp/shared/dispatcher.py +0 -0
- {ha_mcp_dev-8.5.0.dev2740 → ha_mcp_dev-8.5.0.dev2745}/src/ha_mcp/_vendor/mcp/shared/exceptions.py +0 -0
- {ha_mcp_dev-8.5.0.dev2740 → ha_mcp_dev-8.5.0.dev2745}/src/ha_mcp/_vendor/mcp/shared/extension.py +0 -0
- {ha_mcp_dev-8.5.0.dev2740 → ha_mcp_dev-8.5.0.dev2745}/src/ha_mcp/_vendor/mcp/shared/inbound.py +0 -0
- {ha_mcp_dev-8.5.0.dev2740 → ha_mcp_dev-8.5.0.dev2745}/src/ha_mcp/_vendor/mcp/shared/jsonrpc_dispatcher.py +0 -0
- {ha_mcp_dev-8.5.0.dev2740 → ha_mcp_dev-8.5.0.dev2745}/src/ha_mcp/_vendor/mcp/shared/memory.py +0 -0
- {ha_mcp_dev-8.5.0.dev2740 → ha_mcp_dev-8.5.0.dev2745}/src/ha_mcp/_vendor/mcp/shared/message.py +0 -0
- {ha_mcp_dev-8.5.0.dev2740 → ha_mcp_dev-8.5.0.dev2745}/src/ha_mcp/_vendor/mcp/shared/metadata_utils.py +0 -0
- {ha_mcp_dev-8.5.0.dev2740 → ha_mcp_dev-8.5.0.dev2745}/src/ha_mcp/_vendor/mcp/shared/path_security.py +0 -0
- {ha_mcp_dev-8.5.0.dev2740 → ha_mcp_dev-8.5.0.dev2745}/src/ha_mcp/_vendor/mcp/shared/peer.py +0 -0
- {ha_mcp_dev-8.5.0.dev2740 → ha_mcp_dev-8.5.0.dev2745}/src/ha_mcp/_vendor/mcp/shared/subscriptions.py +0 -0
- {ha_mcp_dev-8.5.0.dev2740 → ha_mcp_dev-8.5.0.dev2745}/src/ha_mcp/_vendor/mcp/shared/tool_name_validation.py +0 -0
- {ha_mcp_dev-8.5.0.dev2740 → ha_mcp_dev-8.5.0.dev2745}/src/ha_mcp/_vendor/mcp/shared/transport_context.py +0 -0
- {ha_mcp_dev-8.5.0.dev2740 → ha_mcp_dev-8.5.0.dev2745}/src/ha_mcp/_vendor/mcp/shared/uri_template.py +0 -0
- {ha_mcp_dev-8.5.0.dev2740 → ha_mcp_dev-8.5.0.dev2745}/src/ha_mcp/_vendor/mcp/types/__init__.py +0 -0
- {ha_mcp_dev-8.5.0.dev2740 → ha_mcp_dev-8.5.0.dev2745}/src/ha_mcp/_vendor/mcp/types/jsonrpc.py +0 -0
- {ha_mcp_dev-8.5.0.dev2740 → ha_mcp_dev-8.5.0.dev2745}/src/ha_mcp/_vendor/mcp/types/methods.py +0 -0
- {ha_mcp_dev-8.5.0.dev2740 → ha_mcp_dev-8.5.0.dev2745}/src/ha_mcp/_vendor/mcp/types/version.py +0 -0
- {ha_mcp_dev-8.5.0.dev2740 → ha_mcp_dev-8.5.0.dev2745}/src/ha_mcp/_vendor/mcp_types/LICENSE +0 -0
- {ha_mcp_dev-8.5.0.dev2740 → ha_mcp_dev-8.5.0.dev2745}/src/ha_mcp/_vendor/mcp_types/MANIFEST.sha256 +0 -0
- {ha_mcp_dev-8.5.0.dev2740 → ha_mcp_dev-8.5.0.dev2745}/src/ha_mcp/_vendor/mcp_types/REQUIRES.txt +0 -0
- {ha_mcp_dev-8.5.0.dev2740 → ha_mcp_dev-8.5.0.dev2745}/src/ha_mcp/_vendor/mcp_types/VENDORED +0 -0
- {ha_mcp_dev-8.5.0.dev2740 → ha_mcp_dev-8.5.0.dev2745}/src/ha_mcp/_vendor/mcp_types/__init__.py +0 -0
- {ha_mcp_dev-8.5.0.dev2740 → ha_mcp_dev-8.5.0.dev2745}/src/ha_mcp/_vendor/mcp_types/_types.py +0 -0
- {ha_mcp_dev-8.5.0.dev2740 → ha_mcp_dev-8.5.0.dev2745}/src/ha_mcp/_vendor/mcp_types/_v2025_11_25/__init__.py +0 -0
- {ha_mcp_dev-8.5.0.dev2740 → ha_mcp_dev-8.5.0.dev2745}/src/ha_mcp/_vendor/mcp_types/_v2026_07_28/__init__.py +0 -0
- {ha_mcp_dev-8.5.0.dev2740 → ha_mcp_dev-8.5.0.dev2745}/src/ha_mcp/_vendor/mcp_types/_wire_base.py +0 -0
- {ha_mcp_dev-8.5.0.dev2740 → ha_mcp_dev-8.5.0.dev2745}/src/ha_mcp/_vendor/mcp_types/jsonrpc.py +0 -0
- {ha_mcp_dev-8.5.0.dev2740 → ha_mcp_dev-8.5.0.dev2745}/src/ha_mcp/_vendor/mcp_types/methods.py +0 -0
- {ha_mcp_dev-8.5.0.dev2740 → ha_mcp_dev-8.5.0.dev2745}/src/ha_mcp/_vendor/mcp_types/py.typed +0 -0
- {ha_mcp_dev-8.5.0.dev2740 → ha_mcp_dev-8.5.0.dev2745}/src/ha_mcp/_vendor/mcp_types/version.py +0 -0
- {ha_mcp_dev-8.5.0.dev2740 → ha_mcp_dev-8.5.0.dev2745}/src/ha_mcp/_vendor/requirements.txt +0 -0
- {ha_mcp_dev-8.5.0.dev2740 → ha_mcp_dev-8.5.0.dev2745}/src/ha_mcp/_vendor/websockets/LICENSE +0 -0
- {ha_mcp_dev-8.5.0.dev2740 → ha_mcp_dev-8.5.0.dev2745}/src/ha_mcp/_vendor/websockets/MANIFEST.sha256 +0 -0
- {ha_mcp_dev-8.5.0.dev2740 → ha_mcp_dev-8.5.0.dev2745}/src/ha_mcp/_vendor/websockets/VENDORED +0 -0
- {ha_mcp_dev-8.5.0.dev2740 → ha_mcp_dev-8.5.0.dev2745}/src/ha_mcp/_vendor/websockets/__init__.py +0 -0
- {ha_mcp_dev-8.5.0.dev2740 → ha_mcp_dev-8.5.0.dev2745}/src/ha_mcp/_vendor/websockets/__main__.py +0 -0
- {ha_mcp_dev-8.5.0.dev2740 → ha_mcp_dev-8.5.0.dev2745}/src/ha_mcp/_vendor/websockets/asyncio/__init__.py +0 -0
- {ha_mcp_dev-8.5.0.dev2740 → ha_mcp_dev-8.5.0.dev2745}/src/ha_mcp/_vendor/websockets/asyncio/client.py +0 -0
- {ha_mcp_dev-8.5.0.dev2740 → ha_mcp_dev-8.5.0.dev2745}/src/ha_mcp/_vendor/websockets/asyncio/connection.py +0 -0
- {ha_mcp_dev-8.5.0.dev2740 → ha_mcp_dev-8.5.0.dev2745}/src/ha_mcp/_vendor/websockets/asyncio/messages.py +0 -0
- {ha_mcp_dev-8.5.0.dev2740 → ha_mcp_dev-8.5.0.dev2745}/src/ha_mcp/_vendor/websockets/asyncio/router.py +0 -0
- {ha_mcp_dev-8.5.0.dev2740 → ha_mcp_dev-8.5.0.dev2745}/src/ha_mcp/_vendor/websockets/asyncio/server.py +0 -0
- {ha_mcp_dev-8.5.0.dev2740 → ha_mcp_dev-8.5.0.dev2745}/src/ha_mcp/_vendor/websockets/auth.py +0 -0
- {ha_mcp_dev-8.5.0.dev2740 → ha_mcp_dev-8.5.0.dev2745}/src/ha_mcp/_vendor/websockets/cli.py +0 -0
- {ha_mcp_dev-8.5.0.dev2740 → ha_mcp_dev-8.5.0.dev2745}/src/ha_mcp/_vendor/websockets/client.py +0 -0
- {ha_mcp_dev-8.5.0.dev2740 → ha_mcp_dev-8.5.0.dev2745}/src/ha_mcp/_vendor/websockets/connection.py +0 -0
- {ha_mcp_dev-8.5.0.dev2740 → ha_mcp_dev-8.5.0.dev2745}/src/ha_mcp/_vendor/websockets/datastructures.py +0 -0
- {ha_mcp_dev-8.5.0.dev2740 → ha_mcp_dev-8.5.0.dev2745}/src/ha_mcp/_vendor/websockets/exceptions.py +0 -0
- {ha_mcp_dev-8.5.0.dev2740 → ha_mcp_dev-8.5.0.dev2745}/src/ha_mcp/_vendor/websockets/extensions/__init__.py +0 -0
- {ha_mcp_dev-8.5.0.dev2740 → ha_mcp_dev-8.5.0.dev2745}/src/ha_mcp/_vendor/websockets/extensions/base.py +0 -0
- {ha_mcp_dev-8.5.0.dev2740 → ha_mcp_dev-8.5.0.dev2745}/src/ha_mcp/_vendor/websockets/extensions/permessage_deflate.py +0 -0
- {ha_mcp_dev-8.5.0.dev2740 → ha_mcp_dev-8.5.0.dev2745}/src/ha_mcp/_vendor/websockets/frames.py +0 -0
- {ha_mcp_dev-8.5.0.dev2740 → ha_mcp_dev-8.5.0.dev2745}/src/ha_mcp/_vendor/websockets/headers.py +0 -0
- {ha_mcp_dev-8.5.0.dev2740 → ha_mcp_dev-8.5.0.dev2745}/src/ha_mcp/_vendor/websockets/http11.py +0 -0
- {ha_mcp_dev-8.5.0.dev2740 → ha_mcp_dev-8.5.0.dev2745}/src/ha_mcp/_vendor/websockets/imports.py +0 -0
- {ha_mcp_dev-8.5.0.dev2740 → ha_mcp_dev-8.5.0.dev2745}/src/ha_mcp/_vendor/websockets/legacy/__init__.py +0 -0
- {ha_mcp_dev-8.5.0.dev2740 → ha_mcp_dev-8.5.0.dev2745}/src/ha_mcp/_vendor/websockets/legacy/auth.py +0 -0
- {ha_mcp_dev-8.5.0.dev2740 → ha_mcp_dev-8.5.0.dev2745}/src/ha_mcp/_vendor/websockets/legacy/client.py +0 -0
- {ha_mcp_dev-8.5.0.dev2740 → ha_mcp_dev-8.5.0.dev2745}/src/ha_mcp/_vendor/websockets/legacy/exceptions.py +0 -0
- {ha_mcp_dev-8.5.0.dev2740 → ha_mcp_dev-8.5.0.dev2745}/src/ha_mcp/_vendor/websockets/legacy/framing.py +0 -0
- {ha_mcp_dev-8.5.0.dev2740 → ha_mcp_dev-8.5.0.dev2745}/src/ha_mcp/_vendor/websockets/legacy/handshake.py +0 -0
- {ha_mcp_dev-8.5.0.dev2740 → ha_mcp_dev-8.5.0.dev2745}/src/ha_mcp/_vendor/websockets/legacy/http.py +0 -0
- {ha_mcp_dev-8.5.0.dev2740 → ha_mcp_dev-8.5.0.dev2745}/src/ha_mcp/_vendor/websockets/legacy/protocol.py +0 -0
- {ha_mcp_dev-8.5.0.dev2740 → ha_mcp_dev-8.5.0.dev2745}/src/ha_mcp/_vendor/websockets/legacy/server.py +0 -0
- {ha_mcp_dev-8.5.0.dev2740 → ha_mcp_dev-8.5.0.dev2745}/src/ha_mcp/_vendor/websockets/protocol.py +0 -0
- {ha_mcp_dev-8.5.0.dev2740 → ha_mcp_dev-8.5.0.dev2745}/src/ha_mcp/_vendor/websockets/proxy.py +0 -0
- {ha_mcp_dev-8.5.0.dev2740 → ha_mcp_dev-8.5.0.dev2745}/src/ha_mcp/_vendor/websockets/py.typed +0 -0
- {ha_mcp_dev-8.5.0.dev2740 → ha_mcp_dev-8.5.0.dev2745}/src/ha_mcp/_vendor/websockets/server.py +0 -0
- {ha_mcp_dev-8.5.0.dev2740 → ha_mcp_dev-8.5.0.dev2745}/src/ha_mcp/_vendor/websockets/streams.py +0 -0
- {ha_mcp_dev-8.5.0.dev2740 → ha_mcp_dev-8.5.0.dev2745}/src/ha_mcp/_vendor/websockets/sync/__init__.py +0 -0
- {ha_mcp_dev-8.5.0.dev2740 → ha_mcp_dev-8.5.0.dev2745}/src/ha_mcp/_vendor/websockets/sync/client.py +0 -0
- {ha_mcp_dev-8.5.0.dev2740 → ha_mcp_dev-8.5.0.dev2745}/src/ha_mcp/_vendor/websockets/sync/connection.py +0 -0
- {ha_mcp_dev-8.5.0.dev2740 → ha_mcp_dev-8.5.0.dev2745}/src/ha_mcp/_vendor/websockets/sync/messages.py +0 -0
- {ha_mcp_dev-8.5.0.dev2740 → ha_mcp_dev-8.5.0.dev2745}/src/ha_mcp/_vendor/websockets/sync/router.py +0 -0
- {ha_mcp_dev-8.5.0.dev2740 → ha_mcp_dev-8.5.0.dev2745}/src/ha_mcp/_vendor/websockets/sync/server.py +0 -0
- {ha_mcp_dev-8.5.0.dev2740 → ha_mcp_dev-8.5.0.dev2745}/src/ha_mcp/_vendor/websockets/sync/utils.py +0 -0
- {ha_mcp_dev-8.5.0.dev2740 → ha_mcp_dev-8.5.0.dev2745}/src/ha_mcp/_vendor/websockets/trio/__init__.py +0 -0
- {ha_mcp_dev-8.5.0.dev2740 → ha_mcp_dev-8.5.0.dev2745}/src/ha_mcp/_vendor/websockets/trio/client.py +0 -0
- {ha_mcp_dev-8.5.0.dev2740 → ha_mcp_dev-8.5.0.dev2745}/src/ha_mcp/_vendor/websockets/trio/connection.py +0 -0
- {ha_mcp_dev-8.5.0.dev2740 → ha_mcp_dev-8.5.0.dev2745}/src/ha_mcp/_vendor/websockets/trio/messages.py +0 -0
- {ha_mcp_dev-8.5.0.dev2740 → ha_mcp_dev-8.5.0.dev2745}/src/ha_mcp/_vendor/websockets/trio/router.py +0 -0
- {ha_mcp_dev-8.5.0.dev2740 → ha_mcp_dev-8.5.0.dev2745}/src/ha_mcp/_vendor/websockets/trio/server.py +0 -0
- {ha_mcp_dev-8.5.0.dev2740 → ha_mcp_dev-8.5.0.dev2745}/src/ha_mcp/_vendor/websockets/trio/utils.py +0 -0
- {ha_mcp_dev-8.5.0.dev2740 → ha_mcp_dev-8.5.0.dev2745}/src/ha_mcp/_vendor/websockets/typing.py +0 -0
- {ha_mcp_dev-8.5.0.dev2740 → ha_mcp_dev-8.5.0.dev2745}/src/ha_mcp/_vendor/websockets/uri.py +0 -0
- {ha_mcp_dev-8.5.0.dev2740 → ha_mcp_dev-8.5.0.dev2745}/src/ha_mcp/_vendor/websockets/utils.py +0 -0
- {ha_mcp_dev-8.5.0.dev2740 → ha_mcp_dev-8.5.0.dev2745}/src/ha_mcp/_vendor/websockets/version.py +0 -0
- {ha_mcp_dev-8.5.0.dev2740 → ha_mcp_dev-8.5.0.dev2745}/src/ha_mcp/_version.py +0 -0
- {ha_mcp_dev-8.5.0.dev2740 → ha_mcp_dev-8.5.0.dev2745}/src/ha_mcp/auth/__init__.py +0 -0
- {ha_mcp_dev-8.5.0.dev2740 → ha_mcp_dev-8.5.0.dev2745}/src/ha_mcp/auth/consent_form.py +0 -0
- {ha_mcp_dev-8.5.0.dev2740 → ha_mcp_dev-8.5.0.dev2745}/src/ha_mcp/auth/oidc_compat.py +0 -0
- {ha_mcp_dev-8.5.0.dev2740 → ha_mcp_dev-8.5.0.dev2745}/src/ha_mcp/auth/provider.py +0 -0
- {ha_mcp_dev-8.5.0.dev2740 → ha_mcp_dev-8.5.0.dev2745}/src/ha_mcp/backup_manager.py +0 -0
- {ha_mcp_dev-8.5.0.dev2740 → ha_mcp_dev-8.5.0.dev2745}/src/ha_mcp/browser_landing.py +0 -0
- {ha_mcp_dev-8.5.0.dev2740 → ha_mcp_dev-8.5.0.dev2745}/src/ha_mcp/client/__init__.py +0 -0
- {ha_mcp_dev-8.5.0.dev2740 → ha_mcp_dev-8.5.0.dev2745}/src/ha_mcp/client/rest_client.py +0 -0
- {ha_mcp_dev-8.5.0.dev2740 → ha_mcp_dev-8.5.0.dev2745}/src/ha_mcp/client/supervisor_client.py +0 -0
- {ha_mcp_dev-8.5.0.dev2740 → ha_mcp_dev-8.5.0.dev2745}/src/ha_mcp/client/websocket_client.py +0 -0
- {ha_mcp_dev-8.5.0.dev2740 → ha_mcp_dev-8.5.0.dev2745}/src/ha_mcp/client/websocket_listener.py +0 -0
- {ha_mcp_dev-8.5.0.dev2740 → ha_mcp_dev-8.5.0.dev2745}/src/ha_mcp/config.py +0 -0
- {ha_mcp_dev-8.5.0.dev2740 → ha_mcp_dev-8.5.0.dev2745}/src/ha_mcp/dashboard_screenshot/__init__.py +0 -0
- {ha_mcp_dev-8.5.0.dev2740 → ha_mcp_dev-8.5.0.dev2745}/src/ha_mcp/dashboard_screenshot/capture.py +0 -0
- {ha_mcp_dev-8.5.0.dev2740 → ha_mcp_dev-8.5.0.dev2745}/src/ha_mcp/dashboard_screenshot/content.py +0 -0
- {ha_mcp_dev-8.5.0.dev2740 → ha_mcp_dev-8.5.0.dev2745}/src/ha_mcp/dashboard_screenshot/paths.py +0 -0
- {ha_mcp_dev-8.5.0.dev2740 → ha_mcp_dev-8.5.0.dev2745}/src/ha_mcp/dashboard_screenshot/provision.py +0 -0
- {ha_mcp_dev-8.5.0.dev2740 → ha_mcp_dev-8.5.0.dev2745}/src/ha_mcp/dashboard_screenshot/theme_guard.py +0 -0
- {ha_mcp_dev-8.5.0.dev2740 → ha_mcp_dev-8.5.0.dev2745}/src/ha_mcp/errors.py +0 -0
- {ha_mcp_dev-8.5.0.dev2740 → ha_mcp_dev-8.5.0.dev2745}/src/ha_mcp/ha_request_queue.py +0 -0
- {ha_mcp_dev-8.5.0.dev2740 → ha_mcp_dev-8.5.0.dev2745}/src/ha_mcp/hacs_auto_refresh.py +0 -0
- {ha_mcp_dev-8.5.0.dev2740 → ha_mcp_dev-8.5.0.dev2745}/src/ha_mcp/http_transport.py +0 -0
- {ha_mcp_dev-8.5.0.dev2740 → ha_mcp_dev-8.5.0.dev2745}/src/ha_mcp/llm_exposure.py +0 -0
- {ha_mcp_dev-8.5.0.dev2740 → ha_mcp_dev-8.5.0.dev2745}/src/ha_mcp/log_filters.py +0 -0
- {ha_mcp_dev-8.5.0.dev2740 → ha_mcp_dev-8.5.0.dev2745}/src/ha_mcp/policy/__init__.py +0 -0
- {ha_mcp_dev-8.5.0.dev2740 → ha_mcp_dev-8.5.0.dev2745}/src/ha_mcp/policy/approval_queue.py +0 -0
- {ha_mcp_dev-8.5.0.dev2740 → ha_mcp_dev-8.5.0.dev2745}/src/ha_mcp/policy/decision_pin.py +0 -0
- {ha_mcp_dev-8.5.0.dev2740 → ha_mcp_dev-8.5.0.dev2745}/src/ha_mcp/policy/decisions.py +0 -0
- {ha_mcp_dev-8.5.0.dev2740 → ha_mcp_dev-8.5.0.dev2745}/src/ha_mcp/policy/editing.py +0 -0
- {ha_mcp_dev-8.5.0.dev2740 → ha_mcp_dev-8.5.0.dev2745}/src/ha_mcp/policy/evaluator.py +0 -0
- {ha_mcp_dev-8.5.0.dev2740 → ha_mcp_dev-8.5.0.dev2745}/src/ha_mcp/policy/events.py +0 -0
- {ha_mcp_dev-8.5.0.dev2740 → ha_mcp_dev-8.5.0.dev2745}/src/ha_mcp/policy/handlers.py +0 -0
- {ha_mcp_dev-8.5.0.dev2740 → ha_mcp_dev-8.5.0.dev2745}/src/ha_mcp/policy/middleware.py +0 -0
- {ha_mcp_dev-8.5.0.dev2740 → ha_mcp_dev-8.5.0.dev2745}/src/ha_mcp/policy/model.py +0 -0
- {ha_mcp_dev-8.5.0.dev2740 → ha_mcp_dev-8.5.0.dev2745}/src/ha_mcp/policy/persistence.py +0 -0
- {ha_mcp_dev-8.5.0.dev2740 → ha_mcp_dev-8.5.0.dev2745}/src/ha_mcp/policy/value_sources.py +0 -0
- {ha_mcp_dev-8.5.0.dev2740 → ha_mcp_dev-8.5.0.dev2745}/src/ha_mcp/py.typed +0 -0
- {ha_mcp_dev-8.5.0.dev2740 → ha_mcp_dev-8.5.0.dev2745}/src/ha_mcp/read_only.py +0 -0
- {ha_mcp_dev-8.5.0.dev2740 → ha_mcp_dev-8.5.0.dev2745}/src/ha_mcp/redaction.py +0 -0
- {ha_mcp_dev-8.5.0.dev2740 → ha_mcp_dev-8.5.0.dev2745}/src/ha_mcp/renamed_tools.py +0 -0
- {ha_mcp_dev-8.5.0.dev2740 → ha_mcp_dev-8.5.0.dev2745}/src/ha_mcp/resources/skills-vendor/.claude/settings.json +0 -0
- {ha_mcp_dev-8.5.0.dev2740 → ha_mcp_dev-8.5.0.dev2745}/src/ha_mcp/resources/skills-vendor/.claude-plugin/marketplace.json +0 -0
- {ha_mcp_dev-8.5.0.dev2740 → ha_mcp_dev-8.5.0.dev2745}/src/ha_mcp/resources/skills-vendor/.claude-plugin/plugin.json +0 -0
- {ha_mcp_dev-8.5.0.dev2740 → ha_mcp_dev-8.5.0.dev2745}/src/ha_mcp/resources/skills-vendor/.github/ISSUE_TEMPLATE/skill-rca.md +0 -0
- {ha_mcp_dev-8.5.0.dev2740 → ha_mcp_dev-8.5.0.dev2745}/src/ha_mcp/resources/skills-vendor/.github/pull_request_template.md +0 -0
- {ha_mcp_dev-8.5.0.dev2740 → ha_mcp_dev-8.5.0.dev2745}/src/ha_mcp/resources/skills-vendor/AGENTS.md +0 -0
- {ha_mcp_dev-8.5.0.dev2740 → ha_mcp_dev-8.5.0.dev2745}/src/ha_mcp/resources/skills-vendor/CLAUDE.md +0 -0
- {ha_mcp_dev-8.5.0.dev2740 → ha_mcp_dev-8.5.0.dev2745}/src/ha_mcp/resources/skills-vendor/CONTRIBUTING.md +0 -0
- {ha_mcp_dev-8.5.0.dev2740 → ha_mcp_dev-8.5.0.dev2745}/src/ha_mcp/resources/skills-vendor/LICENSE +0 -0
- {ha_mcp_dev-8.5.0.dev2740 → ha_mcp_dev-8.5.0.dev2745}/src/ha_mcp/resources/skills-vendor/README.md +0 -0
- {ha_mcp_dev-8.5.0.dev2740 → ha_mcp_dev-8.5.0.dev2745}/src/ha_mcp/resources/skills-vendor/evals/area-target-over-entity-list/case.yaml +0 -0
- {ha_mcp_dev-8.5.0.dev2740 → ha_mcp_dev-8.5.0.dev2745}/src/ha_mcp/resources/skills-vendor/evals/arrive-home-automation/case.yaml +0 -0
- {ha_mcp_dev-8.5.0.dev2740 → ha_mcp_dev-8.5.0.dev2745}/src/ha_mcp/resources/skills-vendor/evals/assist-shortcut-card/case.yaml +0 -0
- {ha_mcp_dev-8.5.0.dev2740 → ha_mcp_dev-8.5.0.dev2745}/src/ha_mcp/resources/skills-vendor/evals/avg-temperature/case.yaml +0 -0
- {ha_mcp_dev-8.5.0.dev2740 → ha_mcp_dev-8.5.0.dev2745}/src/ha_mcp/resources/skills-vendor/evals/backup-deletion-confirmation/case.yaml +0 -0
- {ha_mcp_dev-8.5.0.dev2740 → ha_mcp_dev-8.5.0.dev2745}/src/ha_mcp/resources/skills-vendor/evals/blueprint-authoring/case.yaml +0 -0
- {ha_mcp_dev-8.5.0.dev2740 → ha_mcp_dev-8.5.0.dev2745}/src/ha_mcp/resources/skills-vendor/evals/button-event-entity/case.yaml +0 -0
- {ha_mcp_dev-8.5.0.dev2740 → ha_mcp_dev-8.5.0.dev2745}/src/ha_mcp/resources/skills-vendor/evals/device-id-trigger-migration/case.yaml +0 -0
- {ha_mcp_dev-8.5.0.dev2740 → ha_mcp_dev-8.5.0.dev2745}/src/ha_mcp/resources/skills-vendor/evals/helper-flow-fields-not-platform-yaml/case.yaml +0 -0
- {ha_mcp_dev-8.5.0.dev2740 → ha_mcp_dev-8.5.0.dev2745}/src/ha_mcp/resources/skills-vendor/evals/media-player-song/case.yaml +0 -0
- {ha_mcp_dev-8.5.0.dev2740 → ha_mcp_dev-8.5.0.dev2745}/src/ha_mcp/resources/skills-vendor/evals/motion-light-automation-mode/case.yaml +0 -0
- {ha_mcp_dev-8.5.0.dev2740 → ha_mcp_dev-8.5.0.dev2745}/src/ha_mcp/resources/skills-vendor/evals/rename-entity-impact-analysis/case.yaml +0 -0
- {ha_mcp_dev-8.5.0.dev2740 → ha_mcp_dev-8.5.0.dev2745}/src/ha_mcp/resources/skills-vendor/evals/template-attributes-yaml-exception/case.yaml +0 -0
- {ha_mcp_dev-8.5.0.dev2740 → ha_mcp_dev-8.5.0.dev2745}/src/ha_mcp/resources/skills-vendor/evals/timer-finished-automation/case.yaml +0 -0
- {ha_mcp_dev-8.5.0.dev2740 → ha_mcp_dev-8.5.0.dev2745}/src/ha_mcp/resources/skills-vendor/evals/vacuum-last-clean/case.yaml +0 -0
- {ha_mcp_dev-8.5.0.dev2740 → ha_mcp_dev-8.5.0.dev2745}/src/ha_mcp/resources/skills-vendor/scripts/check_eval_cases.py +0 -0
- {ha_mcp_dev-8.5.0.dev2740 → ha_mcp_dev-8.5.0.dev2745}/src/ha_mcp/resources/skills-vendor/skills/home-assistant-best-practices/SKILL.md +0 -0
- {ha_mcp_dev-8.5.0.dev2740 → ha_mcp_dev-8.5.0.dev2745}/src/ha_mcp/resources/skills-vendor/skills/home-assistant-best-practices/references/appdaemon.md +0 -0
- {ha_mcp_dev-8.5.0.dev2740 → ha_mcp_dev-8.5.0.dev2745}/src/ha_mcp/resources/skills-vendor/skills/home-assistant-best-practices/references/automation-patterns.md +0 -0
- {ha_mcp_dev-8.5.0.dev2740 → ha_mcp_dev-8.5.0.dev2745}/src/ha_mcp/resources/skills-vendor/skills/home-assistant-best-practices/references/backups.md +0 -0
- {ha_mcp_dev-8.5.0.dev2740 → ha_mcp_dev-8.5.0.dev2745}/src/ha_mcp/resources/skills-vendor/skills/home-assistant-best-practices/references/blueprint-guide.md +0 -0
- {ha_mcp_dev-8.5.0.dev2740 → ha_mcp_dev-8.5.0.dev2745}/src/ha_mcp/resources/skills-vendor/skills/home-assistant-best-practices/references/dashboard-cards.md +0 -0
- {ha_mcp_dev-8.5.0.dev2740 → ha_mcp_dev-8.5.0.dev2745}/src/ha_mcp/resources/skills-vendor/skills/home-assistant-best-practices/references/dashboard-guide.md +0 -0
- {ha_mcp_dev-8.5.0.dev2740 → ha_mcp_dev-8.5.0.dev2745}/src/ha_mcp/resources/skills-vendor/skills/home-assistant-best-practices/references/device-control.md +0 -0
- {ha_mcp_dev-8.5.0.dev2740 → ha_mcp_dev-8.5.0.dev2745}/src/ha_mcp/resources/skills-vendor/skills/home-assistant-best-practices/references/domain-docs.md +0 -0
- {ha_mcp_dev-8.5.0.dev2740 → ha_mcp_dev-8.5.0.dev2745}/src/ha_mcp/resources/skills-vendor/skills/home-assistant-best-practices/references/examples.yaml +0 -0
- {ha_mcp_dev-8.5.0.dev2740 → ha_mcp_dev-8.5.0.dev2745}/src/ha_mcp/resources/skills-vendor/skills/home-assistant-best-practices/references/helper-selection.md +0 -0
- {ha_mcp_dev-8.5.0.dev2740 → ha_mcp_dev-8.5.0.dev2745}/src/ha_mcp/resources/skills-vendor/skills/home-assistant-best-practices/references/safe-refactoring.md +0 -0
- {ha_mcp_dev-8.5.0.dev2740 → ha_mcp_dev-8.5.0.dev2745}/src/ha_mcp/resources/skills-vendor/skills/home-assistant-best-practices/references/scenes.md +0 -0
- {ha_mcp_dev-8.5.0.dev2740 → ha_mcp_dev-8.5.0.dev2745}/src/ha_mcp/resources/skills-vendor/skills/home-assistant-best-practices/references/template-guidelines.md +0 -0
- {ha_mcp_dev-8.5.0.dev2740 → ha_mcp_dev-8.5.0.dev2745}/src/ha_mcp/resources/skills-vendor/skills/home-assistant-best-practices/references/yaml-only-integrations.md +0 -0
- {ha_mcp_dev-8.5.0.dev2740 → ha_mcp_dev-8.5.0.dev2745}/src/ha_mcp/settings_ui/__init__.py +0 -0
- {ha_mcp_dev-8.5.0.dev2740 → ha_mcp_dev-8.5.0.dev2745}/src/ha_mcp/settings_ui/_handlers_advanced.py +0 -0
- {ha_mcp_dev-8.5.0.dev2740 → ha_mcp_dev-8.5.0.dev2745}/src/ha_mcp/settings_ui/_handlers_backups.py +0 -0
- {ha_mcp_dev-8.5.0.dev2740 → ha_mcp_dev-8.5.0.dev2745}/src/ha_mcp/settings_ui/_handlers_fs.py +0 -0
- {ha_mcp_dev-8.5.0.dev2740 → ha_mcp_dev-8.5.0.dev2745}/src/ha_mcp/settings_ui/_handlers_server.py +0 -0
- {ha_mcp_dev-8.5.0.dev2740 → ha_mcp_dev-8.5.0.dev2745}/src/ha_mcp/settings_ui/_handlers_theme.py +0 -0
- {ha_mcp_dev-8.5.0.dev2740 → ha_mcp_dev-8.5.0.dev2745}/src/ha_mcp/settings_ui/_handlers_tools.py +0 -0
- {ha_mcp_dev-8.5.0.dev2740 → ha_mcp_dev-8.5.0.dev2745}/src/ha_mcp/settings_ui/_i18n.py +0 -0
- {ha_mcp_dev-8.5.0.dev2740 → ha_mcp_dev-8.5.0.dev2745}/src/ha_mcp/settings_ui/_locale_policy.py +0 -0
- {ha_mcp_dev-8.5.0.dev2740 → ha_mcp_dev-8.5.0.dev2745}/src/ha_mcp/settings_ui/_persistence.py +0 -0
- {ha_mcp_dev-8.5.0.dev2740 → ha_mcp_dev-8.5.0.dev2745}/src/ha_mcp/settings_ui/_supervisor.py +0 -0
- {ha_mcp_dev-8.5.0.dev2740 → ha_mcp_dev-8.5.0.dev2745}/src/ha_mcp/settings_ui/_theme.py +0 -0
- {ha_mcp_dev-8.5.0.dev2740 → ha_mcp_dev-8.5.0.dev2745}/src/ha_mcp/settings_ui/_tools_meta.py +0 -0
- {ha_mcp_dev-8.5.0.dev2740 → ha_mcp_dev-8.5.0.dev2745}/src/ha_mcp/settings_ui/locales/README.md +0 -0
- {ha_mcp_dev-8.5.0.dev2740 → ha_mcp_dev-8.5.0.dev2745}/src/ha_mcp/settings_ui/locales/az.json +0 -0
- {ha_mcp_dev-8.5.0.dev2740 → ha_mcp_dev-8.5.0.dev2745}/src/ha_mcp/settings_ui/locales/cs.json +0 -0
- {ha_mcp_dev-8.5.0.dev2740 → ha_mcp_dev-8.5.0.dev2745}/src/ha_mcp/settings_ui/locales/de.json +0 -0
- {ha_mcp_dev-8.5.0.dev2740 → ha_mcp_dev-8.5.0.dev2745}/src/ha_mcp/settings_ui/locales/en.json +0 -0
- {ha_mcp_dev-8.5.0.dev2740 → ha_mcp_dev-8.5.0.dev2745}/src/ha_mcp/settings_ui/locales/eo.json +0 -0
- {ha_mcp_dev-8.5.0.dev2740 → ha_mcp_dev-8.5.0.dev2745}/src/ha_mcp/settings_ui/locales/es.json +0 -0
- {ha_mcp_dev-8.5.0.dev2740 → ha_mcp_dev-8.5.0.dev2745}/src/ha_mcp/settings_ui/locales/fr.json +0 -0
- {ha_mcp_dev-8.5.0.dev2740 → ha_mcp_dev-8.5.0.dev2745}/src/ha_mcp/settings_ui/locales/it.json +0 -0
- {ha_mcp_dev-8.5.0.dev2740 → ha_mcp_dev-8.5.0.dev2745}/src/ha_mcp/settings_ui/locales/ko.json +0 -0
- {ha_mcp_dev-8.5.0.dev2740 → ha_mcp_dev-8.5.0.dev2745}/src/ha_mcp/settings_ui/locales/nl.json +0 -0
- {ha_mcp_dev-8.5.0.dev2740 → ha_mcp_dev-8.5.0.dev2745}/src/ha_mcp/settings_ui/locales/pl.json +0 -0
- {ha_mcp_dev-8.5.0.dev2740 → ha_mcp_dev-8.5.0.dev2745}/src/ha_mcp/settings_ui/locales/ru.json +0 -0
- {ha_mcp_dev-8.5.0.dev2740 → ha_mcp_dev-8.5.0.dev2745}/src/ha_mcp/settings_ui/locales/sv.json +0 -0
- {ha_mcp_dev-8.5.0.dev2740 → ha_mcp_dev-8.5.0.dev2745}/src/ha_mcp/settings_ui/locales/tlh.json +0 -0
- {ha_mcp_dev-8.5.0.dev2740 → ha_mcp_dev-8.5.0.dev2745}/src/ha_mcp/settings_ui/locales/zh-Hans.json +0 -0
- {ha_mcp_dev-8.5.0.dev2740 → ha_mcp_dev-8.5.0.dev2745}/src/ha_mcp/settings_ui/locales/zh-Hant.json +0 -0
- {ha_mcp_dev-8.5.0.dev2740 → ha_mcp_dev-8.5.0.dev2745}/src/ha_mcp/settings_ui/settings.css +0 -0
- {ha_mcp_dev-8.5.0.dev2740 → ha_mcp_dev-8.5.0.dev2745}/src/ha_mcp/settings_ui/settings.html +0 -0
- {ha_mcp_dev-8.5.0.dev2740 → ha_mcp_dev-8.5.0.dev2745}/src/ha_mcp/settings_ui/settings.js +0 -0
- {ha_mcp_dev-8.5.0.dev2740 → ha_mcp_dev-8.5.0.dev2745}/src/ha_mcp/smoke_test.py +0 -0
- {ha_mcp_dev-8.5.0.dev2740 → ha_mcp_dev-8.5.0.dev2745}/src/ha_mcp/stdio_settings_sidecar.py +0 -0
- {ha_mcp_dev-8.5.0.dev2740 → ha_mcp_dev-8.5.0.dev2745}/src/ha_mcp/strict_bps.py +0 -0
- {ha_mcp_dev-8.5.0.dev2740 → ha_mcp_dev-8.5.0.dev2745}/src/ha_mcp/tool_dispatch.py +0 -0
- {ha_mcp_dev-8.5.0.dev2740 → ha_mcp_dev-8.5.0.dev2745}/src/ha_mcp/tools/__init__.py +0 -0
- {ha_mcp_dev-8.5.0.dev2740 → ha_mcp_dev-8.5.0.dev2745}/src/ha_mcp/tools/auto_backup.py +0 -0
- {ha_mcp_dev-8.5.0.dev2740 → ha_mcp_dev-8.5.0.dev2745}/src/ha_mcp/tools/best_practice_checker.py +0 -0
- {ha_mcp_dev-8.5.0.dev2740 → ha_mcp_dev-8.5.0.dev2745}/src/ha_mcp/tools/best_practice_result.py +0 -0
- {ha_mcp_dev-8.5.0.dev2740 → ha_mcp_dev-8.5.0.dev2745}/src/ha_mcp/tools/best_practice_variables.py +0 -0
- {ha_mcp_dev-8.5.0.dev2740 → ha_mcp_dev-8.5.0.dev2745}/src/ha_mcp/tools/blueprint_sources.py +0 -0
- {ha_mcp_dev-8.5.0.dev2740 → ha_mcp_dev-8.5.0.dev2745}/src/ha_mcp/tools/blueprint_substitute.py +0 -0
- {ha_mcp_dev-8.5.0.dev2740 → ha_mcp_dev-8.5.0.dev2745}/src/ha_mcp/tools/blueprint_write.py +0 -0
- {ha_mcp_dev-8.5.0.dev2740 → ha_mcp_dev-8.5.0.dev2745}/src/ha_mcp/tools/bulk_selector.py +0 -0
- {ha_mcp_dev-8.5.0.dev2740 → ha_mcp_dev-8.5.0.dev2745}/src/ha_mcp/tools/component_api.py +0 -0
- {ha_mcp_dev-8.5.0.dev2740 → ha_mcp_dev-8.5.0.dev2745}/src/ha_mcp/tools/component_config_entries.py +0 -0
- {ha_mcp_dev-8.5.0.dev2740 → ha_mcp_dev-8.5.0.dev2745}/src/ha_mcp/tools/component_config_reads.py +0 -0
- {ha_mcp_dev-8.5.0.dev2740 → ha_mcp_dev-8.5.0.dev2745}/src/ha_mcp/tools/component_dashboard_edit.py +0 -0
- {ha_mcp_dev-8.5.0.dev2740 → ha_mcp_dev-8.5.0.dev2745}/src/ha_mcp/tools/component_devices.py +0 -0
- {ha_mcp_dev-8.5.0.dev2740 → ha_mcp_dev-8.5.0.dev2745}/src/ha_mcp/tools/component_registries.py +0 -0
- {ha_mcp_dev-8.5.0.dev2740 → ha_mcp_dev-8.5.0.dev2745}/src/ha_mcp/tools/component_registry_lookup.py +0 -0
- {ha_mcp_dev-8.5.0.dev2740 → ha_mcp_dev-8.5.0.dev2745}/src/ha_mcp/tools/config_entry_flow.py +0 -0
- {ha_mcp_dev-8.5.0.dev2740 → ha_mcp_dev-8.5.0.dev2745}/src/ha_mcp/tools/config_entry_flow_form.py +0 -0
- {ha_mcp_dev-8.5.0.dev2740 → ha_mcp_dev-8.5.0.dev2745}/src/ha_mcp/tools/config_entry_flow_menu.py +0 -0
- {ha_mcp_dev-8.5.0.dev2740 → ha_mcp_dev-8.5.0.dev2745}/src/ha_mcp/tools/config_entry_flow_walker.py +0 -0
- {ha_mcp_dev-8.5.0.dev2740 → ha_mcp_dev-8.5.0.dev2745}/src/ha_mcp/tools/config_entry_identity.py +0 -0
- {ha_mcp_dev-8.5.0.dev2740 → ha_mcp_dev-8.5.0.dev2745}/src/ha_mcp/tools/config_entry_reconfigure.py +0 -0
- {ha_mcp_dev-8.5.0.dev2740 → ha_mcp_dev-8.5.0.dev2745}/src/ha_mcp/tools/config_entry_reload_watch.py +0 -0
- {ha_mcp_dev-8.5.0.dev2740 → ha_mcp_dev-8.5.0.dev2745}/src/ha_mcp/tools/dashboard_edit_errors.py +0 -0
- {ha_mcp_dev-8.5.0.dev2740 → ha_mcp_dev-8.5.0.dev2745}/src/ha_mcp/tools/device_control.py +0 -0
- {ha_mcp_dev-8.5.0.dev2740 → ha_mcp_dev-8.5.0.dev2745}/src/ha_mcp/tools/error_log_parsing.py +0 -0
- {ha_mcp_dev-8.5.0.dev2740 → ha_mcp_dev-8.5.0.dev2745}/src/ha_mcp/tools/hacs_registration.py +0 -0
- {ha_mcp_dev-8.5.0.dev2740 → ha_mcp_dev-8.5.0.dev2745}/src/ha_mcp/tools/helpers.py +0 -0
- {ha_mcp_dev-8.5.0.dev2740 → ha_mcp_dev-8.5.0.dev2745}/src/ha_mcp/tools/integration_reconfigure.py +0 -0
- {ha_mcp_dev-8.5.0.dev2740 → ha_mcp_dev-8.5.0.dev2745}/src/ha_mcp/tools/log_common.py +0 -0
- {ha_mcp_dev-8.5.0.dev2740 → ha_mcp_dev-8.5.0.dev2745}/src/ha_mcp/tools/log_sources.py +0 -0
- {ha_mcp_dev-8.5.0.dev2740 → ha_mcp_dev-8.5.0.dev2745}/src/ha_mcp/tools/log_sources_fault.py +0 -0
- {ha_mcp_dev-8.5.0.dev2740 → ha_mcp_dev-8.5.0.dev2745}/src/ha_mcp/tools/log_sources_supervisor.py +0 -0
- {ha_mcp_dev-8.5.0.dev2740 → ha_mcp_dev-8.5.0.dev2745}/src/ha_mcp/tools/radio/__init__.py +0 -0
- {ha_mcp_dev-8.5.0.dev2740 → ha_mcp_dev-8.5.0.dev2745}/src/ha_mcp/tools/radio/base.py +0 -0
- {ha_mcp_dev-8.5.0.dev2740 → ha_mcp_dev-8.5.0.dev2745}/src/ha_mcp/tools/radio/matter.py +0 -0
- {ha_mcp_dev-8.5.0.dev2740 → ha_mcp_dev-8.5.0.dev2745}/src/ha_mcp/tools/radio/thread.py +0 -0
- {ha_mcp_dev-8.5.0.dev2740 → ha_mcp_dev-8.5.0.dev2745}/src/ha_mcp/tools/radio/zigbee.py +0 -0
- {ha_mcp_dev-8.5.0.dev2740 → ha_mcp_dev-8.5.0.dev2745}/src/ha_mcp/tools/radio/zwave.py +0 -0
- {ha_mcp_dev-8.5.0.dev2740 → ha_mcp_dev-8.5.0.dev2745}/src/ha_mcp/tools/reference_validator.py +0 -0
- {ha_mcp_dev-8.5.0.dev2740 → ha_mcp_dev-8.5.0.dev2745}/src/ha_mcp/tools/registry.py +0 -0
- {ha_mcp_dev-8.5.0.dev2740 → ha_mcp_dev-8.5.0.dev2745}/src/ha_mcp/tools/renamed_tool_middleware.py +0 -0
- {ha_mcp_dev-8.5.0.dev2740 → ha_mcp_dev-8.5.0.dev2745}/src/ha_mcp/tools/scene_discovery.py +0 -0
- {ha_mcp_dev-8.5.0.dev2740 → ha_mcp_dev-8.5.0.dev2745}/src/ha_mcp/tools/smart_search/__init__.py +0 -0
- {ha_mcp_dev-8.5.0.dev2740 → ha_mcp_dev-8.5.0.dev2745}/src/ha_mcp/tools/smart_search/_base.py +0 -0
- {ha_mcp_dev-8.5.0.dev2740 → ha_mcp_dev-8.5.0.dev2745}/src/ha_mcp/tools/smart_search/_config.py +0 -0
- {ha_mcp_dev-8.5.0.dev2740 → ha_mcp_dev-8.5.0.dev2745}/src/ha_mcp/tools/smart_search/_deep.py +0 -0
- {ha_mcp_dev-8.5.0.dev2740 → ha_mcp_dev-8.5.0.dev2745}/src/ha_mcp/tools/smart_search/_entities.py +0 -0
- {ha_mcp_dev-8.5.0.dev2740 → ha_mcp_dev-8.5.0.dev2745}/src/ha_mcp/tools/smart_search/_fetch.py +0 -0
- {ha_mcp_dev-8.5.0.dev2740 → ha_mcp_dev-8.5.0.dev2745}/src/ha_mcp/tools/smart_search/_graph.py +0 -0
- {ha_mcp_dev-8.5.0.dev2740 → ha_mcp_dev-8.5.0.dev2745}/src/ha_mcp/tools/smart_search/_overview.py +0 -0
- {ha_mcp_dev-8.5.0.dev2740 → ha_mcp_dev-8.5.0.dev2745}/src/ha_mcp/tools/smart_search/_scenes.py +0 -0
- {ha_mcp_dev-8.5.0.dev2740 → ha_mcp_dev-8.5.0.dev2745}/src/ha_mcp/tools/smart_search/_scoring.py +0 -0
- {ha_mcp_dev-8.5.0.dev2740 → ha_mcp_dev-8.5.0.dev2745}/src/ha_mcp/tools/tool_search_hint_middleware.py +0 -0
- {ha_mcp_dev-8.5.0.dev2740 → ha_mcp_dev-8.5.0.dev2745}/src/ha_mcp/tools/validation_middleware.py +0 -0
- {ha_mcp_dev-8.5.0.dev2740 → ha_mcp_dev-8.5.0.dev2745}/src/ha_mcp/transforms/__init__.py +0 -0
- {ha_mcp_dev-8.5.0.dev2740 → ha_mcp_dev-8.5.0.dev2745}/src/ha_mcp/transforms/categorized_search.py +0 -0
- {ha_mcp_dev-8.5.0.dev2740 → ha_mcp_dev-8.5.0.dev2745}/src/ha_mcp/transforms/lite_docstrings.py +0 -0
- {ha_mcp_dev-8.5.0.dev2740 → ha_mcp_dev-8.5.0.dev2745}/src/ha_mcp/transforms/write_tool_note.py +0 -0
- {ha_mcp_dev-8.5.0.dev2740 → ha_mcp_dev-8.5.0.dev2745}/src/ha_mcp/transport_security.py +0 -0
- {ha_mcp_dev-8.5.0.dev2740 → ha_mcp_dev-8.5.0.dev2745}/src/ha_mcp/update_check.py +0 -0
- {ha_mcp_dev-8.5.0.dev2740 → ha_mcp_dev-8.5.0.dev2745}/src/ha_mcp/utils/__init__.py +0 -0
- {ha_mcp_dev-8.5.0.dev2740 → ha_mcp_dev-8.5.0.dev2745}/src/ha_mcp/utils/config_hash.py +0 -0
- {ha_mcp_dev-8.5.0.dev2740 → ha_mcp_dev-8.5.0.dev2745}/src/ha_mcp/utils/config_write_lock.py +0 -0
- {ha_mcp_dev-8.5.0.dev2740 → ha_mcp_dev-8.5.0.dev2745}/src/ha_mcp/utils/dashboard_patch.py +0 -0
- {ha_mcp_dev-8.5.0.dev2740 → ha_mcp_dev-8.5.0.dev2745}/src/ha_mcp/utils/data_paths.py +0 -0
- {ha_mcp_dev-8.5.0.dev2740 → ha_mcp_dev-8.5.0.dev2745}/src/ha_mcp/utils/device_registry_semantics.py +0 -0
- {ha_mcp_dev-8.5.0.dev2740 → ha_mcp_dev-8.5.0.dev2745}/src/ha_mcp/utils/domain_handlers.py +0 -0
- {ha_mcp_dev-8.5.0.dev2740 → ha_mcp_dev-8.5.0.dev2745}/src/ha_mcp/utils/entity_membership.py +0 -0
- {ha_mcp_dev-8.5.0.dev2740 → ha_mcp_dev-8.5.0.dev2745}/src/ha_mcp/utils/fuzzy_search.py +0 -0
- {ha_mcp_dev-8.5.0.dev2740 → ha_mcp_dev-8.5.0.dev2745}/src/ha_mcp/utils/kill_signal_diagnostics.py +0 -0
- {ha_mcp_dev-8.5.0.dev2740 → ha_mcp_dev-8.5.0.dev2745}/src/ha_mcp/utils/mcp_client_host.py +0 -0
- {ha_mcp_dev-8.5.0.dev2740 → ha_mcp_dev-8.5.0.dev2745}/src/ha_mcp/utils/operation_manager.py +0 -0
- {ha_mcp_dev-8.5.0.dev2740 → ha_mcp_dev-8.5.0.dev2745}/src/ha_mcp/utils/registry_update_lock.py +0 -0
- {ha_mcp_dev-8.5.0.dev2740 → ha_mcp_dev-8.5.0.dev2745}/src/ha_mcp/utils/skill_loader.py +0 -0
- {ha_mcp_dev-8.5.0.dev2740 → ha_mcp_dev-8.5.0.dev2745}/src/ha_mcp/utils/usage_logger.py +0 -0
- {ha_mcp_dev-8.5.0.dev2740 → ha_mcp_dev-8.5.0.dev2745}/src/ha_mcp/visibility/__init__.py +0 -0
- {ha_mcp_dev-8.5.0.dev2740 → ha_mcp_dev-8.5.0.dev2745}/src/ha_mcp/visibility/enforcement.py +0 -0
- {ha_mcp_dev-8.5.0.dev2740 → ha_mcp_dev-8.5.0.dev2745}/src/ha_mcp/visibility/model.py +0 -0
- {ha_mcp_dev-8.5.0.dev2740 → ha_mcp_dev-8.5.0.dev2745}/src/ha_mcp/visibility/persistence.py +0 -0
- {ha_mcp_dev-8.5.0.dev2740 → ha_mcp_dev-8.5.0.dev2745}/src/ha_mcp/visibility/resolver.py +0 -0
- {ha_mcp_dev-8.5.0.dev2740 → ha_mcp_dev-8.5.0.dev2745}/src/ha_mcp_dev.egg-info/SOURCES.txt +0 -0
- {ha_mcp_dev-8.5.0.dev2740 → ha_mcp_dev-8.5.0.dev2745}/src/ha_mcp_dev.egg-info/dependency_links.txt +0 -0
- {ha_mcp_dev-8.5.0.dev2740 → ha_mcp_dev-8.5.0.dev2745}/src/ha_mcp_dev.egg-info/entry_points.txt +0 -0
- {ha_mcp_dev-8.5.0.dev2740 → ha_mcp_dev-8.5.0.dev2745}/src/ha_mcp_dev.egg-info/requires.txt +0 -0
- {ha_mcp_dev-8.5.0.dev2740 → ha_mcp_dev-8.5.0.dev2745}/src/ha_mcp_dev.egg-info/top_level.txt +0 -0
- {ha_mcp_dev-8.5.0.dev2740 → ha_mcp_dev-8.5.0.dev2745}/tests/__init__.py +0 -0
- {ha_mcp_dev-8.5.0.dev2740 → ha_mcp_dev-8.5.0.dev2745}/tests/test_constants.py +0 -0
- {ha_mcp_dev-8.5.0.dev2740 → ha_mcp_dev-8.5.0.dev2745}/tests/test_env_manager.py +0 -0
|
@@ -4,7 +4,7 @@ build-backend = "setuptools.build_meta"
|
|
|
4
4
|
|
|
5
5
|
[project]
|
|
6
6
|
name = "ha-mcp-dev"
|
|
7
|
-
version = "8.5.0.
|
|
7
|
+
version = "8.5.0.dev2745"
|
|
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
|
|
@@ -662,11 +662,23 @@ class HomeAssistantSmartMCPServer:
|
|
|
662
662
|
"ha_config_set_automation": (
|
|
663
663
|
"create update modify edit automation triggers conditions actions "
|
|
664
664
|
"new automation write save take control blueprint detach "
|
|
665
|
-
"unlink standalone convert"
|
|
665
|
+
"unlink standalone convert enable disable turn on off run trigger now"
|
|
666
666
|
),
|
|
667
667
|
"ha_config_set_script": (
|
|
668
668
|
"create update modify edit script sequence actions new script write "
|
|
669
|
-
"save take control blueprint detach unlink standalone convert"
|
|
669
|
+
"save take control blueprint detach unlink standalone convert "
|
|
670
|
+
"run start stop execute"
|
|
671
|
+
),
|
|
672
|
+
"ha_config_set_scene": (
|
|
673
|
+
"create update modify edit scene entities snapshot activate apply turn on"
|
|
674
|
+
),
|
|
675
|
+
"ha_manage_updates": (
|
|
676
|
+
"update updates install skip firmware core os repair repairs issue "
|
|
677
|
+
"ignore dismiss unignore"
|
|
678
|
+
),
|
|
679
|
+
"ha_set_integration": (
|
|
680
|
+
"integration config entry enable disable add options reconfigure "
|
|
681
|
+
"log level debug logging"
|
|
670
682
|
),
|
|
671
683
|
"ha_config_set_yaml": (
|
|
672
684
|
"edit yaml configuration.yaml packages template sensor "
|
|
@@ -743,7 +755,9 @@ class HomeAssistantSmartMCPServer:
|
|
|
743
755
|
"to convert a blueprint-backed automation into an editable "
|
|
744
756
|
"standalone one (the UI's Take control action). Omit "
|
|
745
757
|
"`identifier` to create a new automation. Reusing an identifier targets "
|
|
746
|
-
"the same automation; changing its alias requires config_hash from a prior read
|
|
758
|
+
"the same automation; changing its alias requires config_hash from a prior read. "
|
|
759
|
+
"`enabled` turns it on or off and `run_actions` runs it now, with a "
|
|
760
|
+
"write or alone with `identifier`.\n\n"
|
|
747
761
|
"For schema details, examples, and native-vs-template "
|
|
748
762
|
"guidance, see ha_get_skill_guide or your locally "
|
|
749
763
|
"installed skills."
|
|
@@ -763,7 +777,8 @@ class HomeAssistantSmartMCPServer:
|
|
|
763
777
|
"`config_hash` from ha_config_get_script), or "
|
|
764
778
|
"`take_control_of_blueprint` to convert a blueprint-backed "
|
|
765
779
|
"script into an editable standalone one. `script_id` names "
|
|
766
|
-
"the script in every mode
|
|
780
|
+
"the script in every mode. `run` ('start' / 'stop'), used alone "
|
|
781
|
+
"with `script_id`, starts or stops the script.\n\n"
|
|
767
782
|
"For schema details and examples, see "
|
|
768
783
|
"ha_get_skill_guide or your locally installed skills."
|
|
769
784
|
),
|
|
@@ -782,7 +797,8 @@ class HomeAssistantSmartMCPServer:
|
|
|
782
797
|
"Create or update a Home Assistant scene.\n\n"
|
|
783
798
|
"Supports two modes: full `config` replacement, or surgical "
|
|
784
799
|
"`python_transform` on an existing scene (requires "
|
|
785
|
-
"`config_hash`). `scene_id` names the scene in both modes
|
|
800
|
+
"`config_hash`). `scene_id` names the scene in both modes. "
|
|
801
|
+
"`activate` activates the scene, with a write or alone.\n\n"
|
|
786
802
|
"For schema details and examples, see "
|
|
787
803
|
"ha_get_skill_guide or your locally installed skills."
|
|
788
804
|
),
|
|
@@ -846,8 +862,10 @@ class HomeAssistantSmartMCPServer:
|
|
|
846
862
|
"ha_get_skill_guide or your locally installed skills."
|
|
847
863
|
),
|
|
848
864
|
"ha_call_service": (
|
|
849
|
-
"
|
|
850
|
-
"
|
|
865
|
+
"Call any Home Assistant service or one-shot WebSocket command: "
|
|
866
|
+
"the catch-all escape hatch. Prefer a dedicated tool when one "
|
|
867
|
+
"covers the job (automations, scripts, scenes, apps, updates and "
|
|
868
|
+
"repairs, integration log levels). Calls `<domain>.<service>` "
|
|
851
869
|
"(e.g., light.turn_on, climate.set_temperature). Use "
|
|
852
870
|
"ha_search to find entity IDs and ha_get_state "
|
|
853
871
|
"to read current values before changing them.\n\n"
|
|
@@ -1718,17 +1718,15 @@ survives an agent's own mistakes.
|
|
|
1718
1718
|
bool,
|
|
1719
1719
|
Field(
|
|
1720
1720
|
default=False,
|
|
1721
|
-
description="(snapshot.restore) Include database in the restore
|
|
1721
|
+
description="(snapshot.restore) Include the database in the restore; otherwise "
|
|
1722
|
+
"config only.",
|
|
1722
1723
|
),
|
|
1723
1724
|
] = False,
|
|
1724
1725
|
confirm: Annotated[
|
|
1725
1726
|
bool,
|
|
1726
1727
|
Field(
|
|
1727
1728
|
default=False,
|
|
1728
|
-
description=(
|
|
1729
|
-
"(snapshot.delete) Must be True to confirm deletion — a "
|
|
1730
|
-
"safety measure against accidental calls."
|
|
1731
|
-
),
|
|
1729
|
+
description=("(snapshot.delete) Must be True to confirm deletion."),
|
|
1732
1730
|
),
|
|
1733
1731
|
] = False,
|
|
1734
1732
|
# edits scope params
|
{ha_mcp_dev-8.5.0.dev2740 → ha_mcp_dev-8.5.0.dev2745}/src/ha_mcp/tools/entity_registration.py
RENAMED
|
@@ -82,9 +82,11 @@ async def resolve_entity_id_after_write(
|
|
|
82
82
|
An empty registry read can precede asynchronous registration even inside
|
|
83
83
|
the component. Retry against one deadline, checking component availability
|
|
84
84
|
on every attempt. A positive budget includes in-flight lookups and sleeps;
|
|
85
|
-
zero requests one lookup without a time limit, for test fixtures
|
|
86
|
-
|
|
87
|
-
|
|
85
|
+
zero requests one lookup without a time limit, for test fixtures and for
|
|
86
|
+
callers that need an existing entity without waiting (a standalone script
|
|
87
|
+
run). Known API failures retain the best-effort fallback. Errors escaping
|
|
88
|
+
the component adapter propagate unless listed below; cancellation always
|
|
89
|
+
propagates.
|
|
88
90
|
``fallback_entity_id`` overrides the constructed ID on failure; registry
|
|
89
91
|
matching always uses the storage key.
|
|
90
92
|
|
|
@@ -1302,7 +1302,7 @@ def _validate_addon_access(
|
|
|
1302
1302
|
ErrorCode.SERVICE_CALL_FAILED,
|
|
1303
1303
|
f"App (add-on) '{addon_name}' is not running (state: {addon.get('state')})",
|
|
1304
1304
|
suggestions=[
|
|
1305
|
-
f"Start the app (add-on) first with:
|
|
1305
|
+
f"Start the app (add-on) first with: ha_manage_app(slug='{slug}', action='start')",
|
|
1306
1306
|
],
|
|
1307
1307
|
context={"slug": slug, "state": addon.get("state")},
|
|
1308
1308
|
)
|
|
@@ -3759,8 +3759,7 @@ def register_addon_tools(mcp: Any, client: HomeAssistantClient, **kwargs: Any) -
|
|
|
3759
3759
|
source: Annotated[
|
|
3760
3760
|
Literal["installed", "available"] | None,
|
|
3761
3761
|
Field(
|
|
3762
|
-
description="App (add-on) source
|
|
3763
|
-
"'available' for apps in the store that can be installed. "
|
|
3762
|
+
description="App (add-on) source. "
|
|
3764
3763
|
"With source='available', 'version' is the version you would "
|
|
3765
3764
|
"get by installing (Supervisor's version_latest) and "
|
|
3766
3765
|
"'version_installed' is the running one, null when the app is "
|
|
@@ -3772,7 +3771,7 @@ def register_addon_tools(mcp: Any, client: HomeAssistantClient, **kwargs: Any) -
|
|
|
3772
3771
|
slug: Annotated[
|
|
3773
3772
|
str | None,
|
|
3774
3773
|
Field(
|
|
3775
|
-
description="App (add-on) slug
|
|
3774
|
+
description="App (add-on) slug (e.g., '<prefix>_nodered'). "
|
|
3776
3775
|
"Slug prefixes vary by app repository — omit to list all apps "
|
|
3777
3776
|
"and discover the actual installed slug.",
|
|
3778
3777
|
default=None,
|
|
@@ -3806,8 +3805,7 @@ def register_addon_tools(mcp: Any, client: HomeAssistantClient, **kwargs: Any) -
|
|
|
3806
3805
|
``ha_manage_app``. Use ``slug`` for details, ``source="installed"`` for an
|
|
3807
3806
|
inventory, or ``source="available"`` for store discovery.
|
|
3808
3807
|
|
|
3809
|
-
Requires Home Assistant OS or Supervised.
|
|
3810
|
-
to installed-app listings.
|
|
3808
|
+
Requires Home Assistant OS or Supervised.
|
|
3811
3809
|
"""
|
|
3812
3810
|
return await tools.get_addon(
|
|
3813
3811
|
source=source,
|
|
@@ -3832,13 +3830,11 @@ def register_addon_tools(mcp: Any, client: HomeAssistantClient, **kwargs: Any) -
|
|
|
3832
3830
|
slug: Annotated[
|
|
3833
3831
|
str,
|
|
3834
3832
|
Field(
|
|
3835
|
-
description="App (add-on) slug (e.g., '<prefix>_nodered', '<prefix>_frigate'). "
|
|
3836
|
-
"
|
|
3837
|
-
"
|
|
3838
|
-
"
|
|
3839
|
-
"
|
|
3840
|
-
"'repository' instead and take no slug, and the store-wide "
|
|
3841
|
-
"action (action='check_updates'), which takes neither.",
|
|
3833
|
+
description="App (add-on) slug (e.g., '<prefix>_nodered', '<prefix>_frigate'). Slug"
|
|
3834
|
+
" prefixes vary by app repository — call ha_get_app() to discover the "
|
|
3835
|
+
"actual installed slug. Required except for action='add_repository' / "
|
|
3836
|
+
"'remove_repository' (which take 'repository' instead) and "
|
|
3837
|
+
"action='check_updates' (which takes neither).",
|
|
3842
3838
|
default="",
|
|
3843
3839
|
),
|
|
3844
3840
|
] = "",
|
|
@@ -3847,14 +3843,14 @@ def register_addon_tools(mcp: Any, client: HomeAssistantClient, **kwargs: Any) -
|
|
|
3847
3843
|
Field(
|
|
3848
3844
|
description="Proxy mode: API path relative to the app (add-on) root "
|
|
3849
3845
|
"(e.g., '/flows', '/api/events', '/api/stats'). "
|
|
3850
|
-
"Required for proxy mode
|
|
3846
|
+
"Required for proxy mode.",
|
|
3851
3847
|
default=None,
|
|
3852
3848
|
),
|
|
3853
3849
|
] = None,
|
|
3854
3850
|
method: Annotated[
|
|
3855
3851
|
str,
|
|
3856
3852
|
Field(
|
|
3857
|
-
description="Proxy mode only. HTTP method: GET, POST, PUT, DELETE, PATCH.
|
|
3853
|
+
description="Proxy mode only. HTTP method: GET, POST, PUT, DELETE, PATCH.",
|
|
3858
3854
|
default="GET",
|
|
3859
3855
|
),
|
|
3860
3856
|
] = "GET",
|
|
@@ -3868,25 +3864,25 @@ def register_addon_tools(mcp: Any, client: HomeAssistantClient, **kwargs: Any) -
|
|
|
3868
3864
|
debug: Annotated[
|
|
3869
3865
|
bool,
|
|
3870
3866
|
Field(
|
|
3871
|
-
description="Proxy mode only. Include diagnostic info (request URL, headers sent,
|
|
3867
|
+
description="Proxy mode only. Include diagnostic info (request URL, headers sent, "
|
|
3868
|
+
"response headers).",
|
|
3872
3869
|
default=False,
|
|
3873
3870
|
),
|
|
3874
3871
|
] = False,
|
|
3875
3872
|
port: Annotated[
|
|
3876
3873
|
int | None,
|
|
3877
3874
|
Field(
|
|
3878
|
-
description="Proxy mode only. Connect to this port instead of the Ingress port. "
|
|
3879
|
-
"
|
|
3880
|
-
"Node-RED, reject direct access unless their leave_front_door_open
|
|
3881
|
-
"enabled and the app is restarted
|
|
3882
|
-
"security-qualified ha_manage_app options command.",
|
|
3875
|
+
description="Proxy mode only. Connect to this port instead of the Ingress port. Use"
|
|
3876
|
+
" ha_get_app(slug='...') to find available ports. Some apps, including "
|
|
3877
|
+
"Node-RED, reject direct access unless their leave_front_door_open "
|
|
3878
|
+
"option is enabled and the app is restarted.",
|
|
3883
3879
|
default=None,
|
|
3884
3880
|
),
|
|
3885
3881
|
] = None,
|
|
3886
3882
|
offset: Annotated[
|
|
3887
3883
|
int,
|
|
3888
3884
|
Field(
|
|
3889
|
-
description="Proxy mode only. HTTP: skip this many items in a JSON array response.
|
|
3885
|
+
description="Proxy mode only. HTTP: skip this many items in a JSON array response.",
|
|
3890
3886
|
default=0,
|
|
3891
3887
|
),
|
|
3892
3888
|
] = 0,
|
|
@@ -3900,10 +3896,9 @@ def register_addon_tools(mcp: Any, client: HomeAssistantClient, **kwargs: Any) -
|
|
|
3900
3896
|
websocket: Annotated[
|
|
3901
3897
|
bool,
|
|
3902
3898
|
Field(
|
|
3903
|
-
description="Proxy mode only. Use WebSocket instead of HTTP for an app "
|
|
3904
|
-
"
|
|
3905
|
-
"responses; command names and body schemas are app/version-specific.
|
|
3906
|
-
"Default: false.",
|
|
3899
|
+
description="Proxy mode only. Use WebSocket instead of HTTP for an app (add-on) "
|
|
3900
|
+
"WebSocket API. Sends 'body' as the initial message and collects "
|
|
3901
|
+
"responses; command names and body schemas are app/version-specific.",
|
|
3907
3902
|
default=False,
|
|
3908
3903
|
),
|
|
3909
3904
|
] = False,
|
|
@@ -3911,9 +3906,9 @@ def register_addon_tools(mcp: Any, client: HomeAssistantClient, **kwargs: Any) -
|
|
|
3911
3906
|
bool,
|
|
3912
3907
|
Field(
|
|
3913
3908
|
description="Proxy mode only. WebSocket: True waits for the server to close a "
|
|
3914
|
-
"run-to-completion stream. False returns after the first response
|
|
3915
|
-
"for one-shot command/response or bounded capture on a
|
|
3916
|
-
"
|
|
3909
|
+
"run-to-completion stream. False returns after the first response "
|
|
3910
|
+
"batch; use for one-shot command/response or bounded capture on a "
|
|
3911
|
+
"channel that stays open.",
|
|
3917
3912
|
default=True,
|
|
3918
3913
|
),
|
|
3919
3914
|
] = True,
|
|
@@ -3921,37 +3916,37 @@ def register_addon_tools(mcp: Any, client: HomeAssistantClient, **kwargs: Any) -
|
|
|
3921
3916
|
int | None,
|
|
3922
3917
|
Field(
|
|
3923
3918
|
description="Proxy mode only. WebSocket: cap on messages collected from the wire, "
|
|
3924
|
-
"bounded by an internal safety ceiling. None = collect up to the
|
|
3925
|
-
"
|
|
3919
|
+
"bounded by an internal safety ceiling. None = collect up to the "
|
|
3920
|
+
"ceiling.",
|
|
3926
3921
|
default=None,
|
|
3927
3922
|
),
|
|
3928
3923
|
] = None,
|
|
3929
3924
|
message_offset: Annotated[
|
|
3930
3925
|
int,
|
|
3931
3926
|
Field(
|
|
3932
|
-
description="Proxy mode only. WebSocket: drop this many messages from the start of
|
|
3933
|
-
"collected list before returning.
|
|
3927
|
+
description="Proxy mode only. WebSocket: drop this many messages from the start of "
|
|
3928
|
+
"the collected list before returning.",
|
|
3934
3929
|
default=0,
|
|
3935
3930
|
),
|
|
3936
3931
|
] = 0,
|
|
3937
3932
|
summarize: Annotated[
|
|
3938
3933
|
bool,
|
|
3939
3934
|
Field(
|
|
3940
|
-
description="Proxy mode only. WebSocket: when True
|
|
3941
|
-
"
|
|
3942
|
-
"
|
|
3935
|
+
description="Proxy mode only. WebSocket: when True, collapse runs of non-signal "
|
|
3936
|
+
"messages (typically YAML config dumps) into short elision markers. Set"
|
|
3937
|
+
" to False to return the raw stream.",
|
|
3943
3938
|
default=True,
|
|
3944
3939
|
),
|
|
3945
3940
|
] = True,
|
|
3946
3941
|
python_transform: Annotated[
|
|
3947
3942
|
str | None,
|
|
3948
3943
|
Field(
|
|
3949
|
-
description="Proxy mode only. Sandboxed Python expression that post-processes the
|
|
3950
|
-
"Variable `response` is exposed — a list[dict | str] for
|
|
3951
|
-
"or dict/list/str for HTTP (parsed
|
|
3952
|
-
"(response.append(...)) or
|
|
3953
|
-
"Example: response = [m for m in
|
|
3954
|
-
"
|
|
3944
|
+
description="Proxy mode only. Sandboxed Python expression that post-processes the "
|
|
3945
|
+
"response. Variable `response` is exposed — a list[dict | str] for "
|
|
3946
|
+
"WebSocket (parsed JSON or raw text), or dict/list/str for HTTP (parsed"
|
|
3947
|
+
" body). Supports in-place mutation (response.append(...)) or "
|
|
3948
|
+
"reassignment (response = [...]). Example: response = [m for m in "
|
|
3949
|
+
"response if 'ERROR' in str(m)].",
|
|
3955
3950
|
default=None,
|
|
3956
3951
|
),
|
|
3957
3952
|
] = None,
|
|
@@ -4032,26 +4027,18 @@ def register_addon_tools(mcp: Any, client: HomeAssistantClient, **kwargs: Any) -
|
|
|
4032
4027
|
description="Lifecycle mode: run a Supervisor app (add-on) action. One of "
|
|
4033
4028
|
"'install', 'uninstall', 'start', 'stop', 'restart', 'rebuild', "
|
|
4034
4029
|
"'update'. 'install'/'update' require the app's repository to be "
|
|
4035
|
-
"registered (it appears in ha_get_app(source='available'))
|
|
4036
|
-
"
|
|
4037
|
-
"
|
|
4038
|
-
"
|
|
4039
|
-
"Store-wide mode: 'check_updates'
|
|
4040
|
-
"Supervisor re-scans its repositories
|
|
4041
|
-
"
|
|
4042
|
-
"'repository', refreshes available metadata only, and installs "
|
|
4043
|
-
"
|
|
4044
|
-
"
|
|
4045
|
-
"
|
|
4046
|
-
"
|
|
4047
|
-
"changed but whose version did not. Returns 'changed' and "
|
|
4048
|
-
"'updates_available', each null (not empty) if the store "
|
|
4049
|
-
"could not be read to measure it — check 'warnings'. "
|
|
4050
|
-
"When ha-mcp runs as an app, it can update other apps but cannot "
|
|
4051
|
-
"update its own running slug; update ha-mcp from the Home Assistant "
|
|
4052
|
-
"Apps UI. "
|
|
4053
|
-
"Mutually exclusive with path / config parameters / array_patch. "
|
|
4054
|
-
"HA OS / Supervised only.",
|
|
4030
|
+
"registered (it appears in ha_get_app(source='available')); 'rebuild' "
|
|
4031
|
+
"is for a local app whose source changed but whose version did not. "
|
|
4032
|
+
"Store-repository mode: 'add_repository' / 'remove_repository' register"
|
|
4033
|
+
" or unregister a custom app store repository — these use the "
|
|
4034
|
+
"'repository' param instead of 'slug'. Store-wide mode: 'check_updates'"
|
|
4035
|
+
" reloads the store so Supervisor re-scans its repositories (e.g. after"
|
|
4036
|
+
" editing a local app's config.yaml) — it takes neither 'slug' nor "
|
|
4037
|
+
"'repository', refreshes available metadata only, and installs nothing;"
|
|
4038
|
+
" follow with action='update' for a newer version, or action='rebuild' "
|
|
4039
|
+
"for a local app whose source changed without a version change. Returns"
|
|
4040
|
+
" 'changed' and 'updates_available', null when the store could not be "
|
|
4041
|
+
"read (see 'warnings').",
|
|
4055
4042
|
default=None,
|
|
4056
4043
|
),
|
|
4057
4044
|
] = None,
|
|
@@ -4071,24 +4058,24 @@ def register_addon_tools(mcp: Any, client: HomeAssistantClient, **kwargs: Any) -
|
|
|
4071
4058
|
"""Manage Home Assistant apps (add-ons) or proxy an app API.
|
|
4072
4059
|
|
|
4073
4060
|
For app inventory, status, and Supervisor metadata, call ``ha_get_app``
|
|
4074
|
-
first; use proxy mode here for documented app-specific read APIs
|
|
4075
|
-
|
|
4076
|
-
and use ``ha_get_skill_guide`` for complex Home Assistant workflows.
|
|
4061
|
+
first; use proxy mode here for documented app-specific read APIs, and
|
|
4062
|
+
do not infer private app API schemas.
|
|
4077
4063
|
|
|
4078
4064
|
Use exactly one mode: lifecycle/store action, configuration fields,
|
|
4079
4065
|
``path`` proxy, or ``path`` with ``array_patch``.
|
|
4080
4066
|
|
|
4081
|
-
Requires Home Assistant OS or Supervised.
|
|
4082
|
-
|
|
4083
|
-
|
|
4084
|
-
|
|
4085
|
-
Ingress: direct-port access requires
|
|
4086
|
-
require weakening the target app
|
|
4087
|
-
lifecycle, configuration, or repository
|
|
4088
|
-
verify durable state with ``ha_get_app``
|
|
4089
|
-
prove whether ``restart`` or ``rebuild``
|
|
4090
|
-
and logs and do not automatically replay
|
|
4091
|
-
write, query the target app's own read
|
|
4067
|
+
Requires Home Assistant OS or Supervised. When ha-mcp itself runs as an
|
|
4068
|
+
app it cannot update its own running slug; update ha-mcp from the Home
|
|
4069
|
+
Assistant Apps UI. ``options`` merges top-level keys and one nested
|
|
4070
|
+
mapping level; supply complete values for deeper nested mappings
|
|
4071
|
+
because they are replaced. Prefer Ingress: direct-port access requires
|
|
4072
|
+
a shared container network and may require weakening the target app
|
|
4073
|
+
authentication. If a Supervisor lifecycle, configuration, or repository
|
|
4074
|
+
write has an unknown outcome, verify durable state with ``ha_get_app``
|
|
4075
|
+
before retrying. That cannot prove whether ``restart`` or ``rebuild``
|
|
4076
|
+
ran; inspect Supervisor jobs and logs and do not automatically replay
|
|
4077
|
+
them. For a proxy or array-patch write, query the target app's own read
|
|
4078
|
+
API before retrying.
|
|
4092
4079
|
"""
|
|
4093
4080
|
return await tools.manage_addon(
|
|
4094
4081
|
slug=slug,
|
|
@@ -285,12 +285,10 @@ class AreaTools:
|
|
|
285
285
|
Field(
|
|
286
286
|
default=None,
|
|
287
287
|
description=(
|
|
288
|
-
"Return only the specified top-level response keys to reduce "
|
|
289
|
-
'
|
|
290
|
-
"
|
|
291
|
-
"
|
|
292
|
-
"unassigned_count, orphaned_count, floors, unassigned_areas, "
|
|
293
|
-
"orphaned_areas, message."
|
|
288
|
+
"Return only the specified top-level response keys to reduce response "
|
|
289
|
+
'size (e.g. ["floors"]). None = full response. Available keys: success,'
|
|
290
|
+
" floor_count, area_count, unassigned_count, orphaned_count, floors, "
|
|
291
|
+
"unassigned_areas, orphaned_areas, message."
|
|
294
292
|
),
|
|
295
293
|
),
|
|
296
294
|
] = None,
|
|
@@ -300,11 +298,11 @@ class AreaTools:
|
|
|
300
298
|
Field(
|
|
301
299
|
default=None,
|
|
302
300
|
description=(
|
|
303
|
-
"Project each area record (in floors[].areas, unassigned_areas, "
|
|
304
|
-
'
|
|
305
|
-
|
|
306
|
-
"
|
|
307
|
-
"
|
|
301
|
+
"Project each area record (in floors[].areas, unassigned_areas, and "
|
|
302
|
+
'orphaned_areas) to only the specified keys. E.g. ["area_id", "name"] '
|
|
303
|
+
"returns slim area records. None = full records. Unknown keys yield "
|
|
304
|
+
"empty records. Available keys: area_id, name, icon, floor_id, aliases,"
|
|
305
|
+
" picture, labels."
|
|
308
306
|
),
|
|
309
307
|
),
|
|
310
308
|
] = None,
|
|
@@ -312,7 +310,7 @@ class AreaTools:
|
|
|
312
310
|
"""
|
|
313
311
|
List floors sorted by level ascending, each with their assigned areas nested, plus areas without a floor.
|
|
314
312
|
|
|
315
|
-
Use for location-based reasoning where floor-to-area relationships matter, such as "which rooms are on the ground floor" or operations scoped to a level.
|
|
313
|
+
Use for location-based reasoning where floor-to-area relationships matter, such as "which rooms are on the ground floor" or operations scoped to a level.
|
|
316
314
|
|
|
317
315
|
Floors with level=None sort alongside level 0 (ground floor). Areas without a floor assignment appear in unassigned_areas; areas whose floor_id points to a non-existent floor appear in orphaned_areas. When the ha_mcp_tools component's registries capability is available, both registries come from a single in-process snapshot, so this classification is always consistent. Without it (legacy path), the two registries are fetched via independent WebSocket calls and a registry change between reads may transiently misclassify an area.
|
|
318
316
|
"""
|
|
@@ -755,21 +753,21 @@ class AreaTools:
|
|
|
755
753
|
id: Annotated[ # noqa: A002
|
|
756
754
|
str | None,
|
|
757
755
|
Field(
|
|
758
|
-
description="Existing area_id or floor_id to update (
|
|
756
|
+
description="Existing area_id or floor_id to update (use ha_list_floors_areas to find IDs)",
|
|
759
757
|
default=None,
|
|
760
758
|
),
|
|
761
759
|
] = None,
|
|
762
760
|
floor_id: Annotated[
|
|
763
761
|
str | None,
|
|
764
762
|
Field(
|
|
765
|
-
description="Floor assignment when kind='area' (use empty string to clear).
|
|
763
|
+
description="Floor assignment when kind='area' (use empty string to clear).",
|
|
766
764
|
default=None,
|
|
767
765
|
),
|
|
768
766
|
] = None,
|
|
769
767
|
level: Annotated[
|
|
770
768
|
int | None,
|
|
771
769
|
Field(
|
|
772
|
-
description="Numeric level when kind='floor' (0=ground, 1=first, -1=basement).
|
|
770
|
+
description="Numeric level when kind='floor' (0=ground, 1=first, -1=basement).",
|
|
773
771
|
default=None,
|
|
774
772
|
),
|
|
775
773
|
] = None,
|
|
@@ -791,7 +789,7 @@ class AreaTools:
|
|
|
791
789
|
picture: Annotated[
|
|
792
790
|
str | None,
|
|
793
791
|
Field(
|
|
794
|
-
description="Picture URL when kind='area' (empty string to remove).
|
|
792
|
+
description="Picture URL when kind='area' (empty string to remove).",
|
|
795
793
|
default=None,
|
|
796
794
|
),
|
|
797
795
|
] = None,
|
|
@@ -802,7 +800,7 @@ class AreaTools:
|
|
|
802
800
|
description=(
|
|
803
801
|
"Label IDs when kind='area' (replaces the area's label set; "
|
|
804
802
|
"empty list to clear). Omit to leave labels unchanged. "
|
|
805
|
-
"
|
|
803
|
+
"Floors have no labels."
|
|
806
804
|
),
|
|
807
805
|
default=None,
|
|
808
806
|
),
|
{ha_mcp_dev-8.5.0.dev2740 → ha_mcp_dev-8.5.0.dev2745}/src/ha_mcp/tools/tools_assist_pipeline.py
RENAMED
|
@@ -565,9 +565,7 @@ class AssistPipelineTools:
|
|
|
565
565
|
Field(
|
|
566
566
|
description=(
|
|
567
567
|
"Natural-language command to run through Assist. Required when "
|
|
568
|
-
"action='process'.
|
|
569
|
-
"built-in agent a sentence matching a conversation trigger "
|
|
570
|
-
"runs that automation."
|
|
568
|
+
"action='process'."
|
|
571
569
|
),
|
|
572
570
|
default=None,
|
|
573
571
|
),
|
|
@@ -695,8 +693,8 @@ class AssistPipelineTools:
|
|
|
695
693
|
bool,
|
|
696
694
|
Field(
|
|
697
695
|
description=(
|
|
698
|
-
"For create/update only, also set the resulting pipeline as "
|
|
699
|
-
"
|
|
696
|
+
"For create/update only, also set the resulting pipeline as preferred. "
|
|
697
|
+
"Ignored for other actions."
|
|
700
698
|
),
|
|
701
699
|
default=False,
|
|
702
700
|
),
|
|
@@ -719,53 +717,19 @@ class AssistPipelineTools:
|
|
|
719
717
|
this to test what Assist itself understands. When the built-in agent
|
|
720
718
|
answers, a matching conversation trigger runs its automation: that
|
|
721
719
|
agent checks its sentence triggers before it matches intents, so this
|
|
722
|
-
is not limited to intents. pipeline_id
|
|
723
|
-
|
|
724
|
-
agent directly. So with an agent other than the built-in one, neither
|
|
720
|
+
is not limited to intents. Even with pipeline_id, the sentence goes
|
|
721
|
+
to the agent directly. So with an agent other than the built-in one, neither
|
|
725
722
|
sentence triggers nor prefer_local_intents apply — a full pipeline run
|
|
726
723
|
is what adds those for other agents.
|
|
727
724
|
|
|
728
725
|
EXAMPLES:
|
|
729
|
-
-
|
|
730
|
-
-
|
|
731
|
-
-
|
|
732
|
-
|
|
733
|
-
|
|
734
|
-
|
|
735
|
-
|
|
736
|
-
- Create by cloning a specific pipeline: ha_manage_pipeline(
|
|
737
|
-
action="create",
|
|
738
|
-
base_pipeline_id="preferred",
|
|
739
|
-
name="Local Assist",
|
|
740
|
-
conversation_engine="conversation.local_llm",
|
|
741
|
-
)
|
|
742
|
-
- Update conversation agent and clear TTS voice: ha_manage_pipeline(
|
|
743
|
-
action="update",
|
|
744
|
-
pipeline_id="preferred",
|
|
745
|
-
conversation_engine="conversation.local_llm",
|
|
746
|
-
tts_voice="",
|
|
747
|
-
)
|
|
748
|
-
- Set preferred: ha_manage_pipeline(
|
|
749
|
-
action="set_preferred",
|
|
750
|
-
pipeline_id="preferred",
|
|
751
|
-
)
|
|
752
|
-
- Run a sentence: ha_manage_pipeline(
|
|
753
|
-
action="process",
|
|
754
|
-
sentence="turn on the kitchen light",
|
|
755
|
-
)
|
|
756
|
-
- Run it through one pipeline's agent: ha_manage_pipeline(
|
|
757
|
-
action="process",
|
|
758
|
-
sentence="turn on the kitchen light",
|
|
759
|
-
pipeline_id="preferred",
|
|
760
|
-
)
|
|
761
|
-
- Continue a conversation: ha_manage_pipeline(
|
|
762
|
-
action="process",
|
|
763
|
-
sentence="and the hallway?",
|
|
764
|
-
conversation_id="<id from the previous response>",
|
|
765
|
-
)
|
|
766
|
-
|
|
767
|
-
Empty string clears nullable STT/TTS/wake-word fields. Non-nullable
|
|
768
|
-
fields such as name, language, conversation_language, and
|
|
726
|
+
- Get the preferred pipeline: ha_manage_pipeline(action="get", pipeline_id="preferred")
|
|
727
|
+
- Create by cloning a pipeline: ha_manage_pipeline(action="create", base_pipeline_id="preferred", name="Local Assist", conversation_engine="conversation.local_llm")
|
|
728
|
+
- Update the agent and clear the TTS voice: ha_manage_pipeline(action="update", pipeline_id="preferred", conversation_engine="conversation.local_llm", tts_voice="")
|
|
729
|
+
- Run a sentence through one pipeline's agent: ha_manage_pipeline(action="process", sentence="turn on the kitchen light", pipeline_id="preferred")
|
|
730
|
+
- Continue a conversation: ha_manage_pipeline(action="process", sentence="and the hallway?", conversation_id="<id from the previous response>")
|
|
731
|
+
|
|
732
|
+
Non-nullable fields such as name, language, conversation_language, and
|
|
769
733
|
conversation_engine must be omitted or non-empty.
|
|
770
734
|
"""
|
|
771
735
|
try:
|