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.
Files changed (735) hide show
  1. {ha_mcp_dev-8.5.0.dev2740/src/ha_mcp_dev.egg-info → ha_mcp_dev-8.5.0.dev2745}/PKG-INFO +1 -1
  2. {ha_mcp_dev-8.5.0.dev2740 → ha_mcp_dev-8.5.0.dev2745}/pyproject.toml +1 -1
  3. {ha_mcp_dev-8.5.0.dev2740 → ha_mcp_dev-8.5.0.dev2745}/src/ha_mcp/server.py +25 -7
  4. {ha_mcp_dev-8.5.0.dev2740 → ha_mcp_dev-8.5.0.dev2745}/src/ha_mcp/tools/backup.py +3 -5
  5. {ha_mcp_dev-8.5.0.dev2740 → ha_mcp_dev-8.5.0.dev2745}/src/ha_mcp/tools/entity_registration.py +5 -3
  6. {ha_mcp_dev-8.5.0.dev2740 → ha_mcp_dev-8.5.0.dev2745}/src/ha_mcp/tools/tools_addons.py +63 -76
  7. {ha_mcp_dev-8.5.0.dev2740 → ha_mcp_dev-8.5.0.dev2745}/src/ha_mcp/tools/tools_areas.py +15 -17
  8. {ha_mcp_dev-8.5.0.dev2740 → ha_mcp_dev-8.5.0.dev2745}/src/ha_mcp/tools/tools_assist_pipeline.py +12 -48
  9. {ha_mcp_dev-8.5.0.dev2740 → ha_mcp_dev-8.5.0.dev2745}/src/ha_mcp/tools/tools_blueprints.py +20 -39
  10. {ha_mcp_dev-8.5.0.dev2740 → ha_mcp_dev-8.5.0.dev2745}/src/ha_mcp/tools/tools_bug_report.py +29 -53
  11. {ha_mcp_dev-8.5.0.dev2740 → ha_mcp_dev-8.5.0.dev2745}/src/ha_mcp/tools/tools_calendar.py +28 -131
  12. {ha_mcp_dev-8.5.0.dev2740 → ha_mcp_dev-8.5.0.dev2745}/src/ha_mcp/tools/tools_camera.py +21 -42
  13. {ha_mcp_dev-8.5.0.dev2740 → ha_mcp_dev-8.5.0.dev2745}/src/ha_mcp/tools/tools_categories.py +4 -12
  14. {ha_mcp_dev-8.5.0.dev2740 → ha_mcp_dev-8.5.0.dev2745}/src/ha_mcp/tools/tools_code.py +44 -51
  15. {ha_mcp_dev-8.5.0.dev2740 → ha_mcp_dev-8.5.0.dev2745}/src/ha_mcp/tools/tools_config_automations.py +252 -306
  16. {ha_mcp_dev-8.5.0.dev2740 → ha_mcp_dev-8.5.0.dev2745}/src/ha_mcp/tools/tools_config_dashboards.py +78 -207
  17. {ha_mcp_dev-8.5.0.dev2740 → ha_mcp_dev-8.5.0.dev2745}/src/ha_mcp/tools/tools_config_helpers.py +71 -138
  18. {ha_mcp_dev-8.5.0.dev2740 → ha_mcp_dev-8.5.0.dev2745}/src/ha_mcp/tools/tools_config_scenes.py +184 -51
  19. {ha_mcp_dev-8.5.0.dev2740 → ha_mcp_dev-8.5.0.dev2745}/src/ha_mcp/tools/tools_config_scripts.py +173 -189
  20. {ha_mcp_dev-8.5.0.dev2740 → ha_mcp_dev-8.5.0.dev2745}/src/ha_mcp/tools/tools_dashboard_screenshot.py +6 -13
  21. {ha_mcp_dev-8.5.0.dev2740 → ha_mcp_dev-8.5.0.dev2745}/src/ha_mcp/tools/tools_dev.py +9 -30
  22. {ha_mcp_dev-8.5.0.dev2740 → ha_mcp_dev-8.5.0.dev2745}/src/ha_mcp/tools/tools_energy.py +47 -93
  23. {ha_mcp_dev-8.5.0.dev2740 → ha_mcp_dev-8.5.0.dev2745}/src/ha_mcp/tools/tools_entities.py +77 -144
  24. {ha_mcp_dev-8.5.0.dev2740 → ha_mcp_dev-8.5.0.dev2745}/src/ha_mcp/tools/tools_filesystem.py +40 -147
  25. {ha_mcp_dev-8.5.0.dev2740 → ha_mcp_dev-8.5.0.dev2745}/src/ha_mcp/tools/tools_groups.py +19 -34
  26. {ha_mcp_dev-8.5.0.dev2740 → ha_mcp_dev-8.5.0.dev2745}/src/ha_mcp/tools/tools_hacs.py +6 -13
  27. {ha_mcp_dev-8.5.0.dev2740 → ha_mcp_dev-8.5.0.dev2745}/src/ha_mcp/tools/tools_history.py +40 -61
  28. {ha_mcp_dev-8.5.0.dev2740 → ha_mcp_dev-8.5.0.dev2745}/src/ha_mcp/tools/tools_integrations.py +241 -222
  29. {ha_mcp_dev-8.5.0.dev2740 → ha_mcp_dev-8.5.0.dev2745}/src/ha_mcp/tools/tools_labels.py +9 -20
  30. {ha_mcp_dev-8.5.0.dev2740 → ha_mcp_dev-8.5.0.dev2745}/src/ha_mcp/tools/tools_logs.py +109 -83
  31. {ha_mcp_dev-8.5.0.dev2740 → ha_mcp_dev-8.5.0.dev2745}/src/ha_mcp/tools/tools_radio.py +8 -7
  32. {ha_mcp_dev-8.5.0.dev2740 → ha_mcp_dev-8.5.0.dev2745}/src/ha_mcp/tools/tools_registry.py +7 -12
  33. {ha_mcp_dev-8.5.0.dev2740 → ha_mcp_dev-8.5.0.dev2745}/src/ha_mcp/tools/tools_resources.py +41 -108
  34. {ha_mcp_dev-8.5.0.dev2740 → ha_mcp_dev-8.5.0.dev2745}/src/ha_mcp/tools/tools_search.py +81 -137
  35. {ha_mcp_dev-8.5.0.dev2740 → ha_mcp_dev-8.5.0.dev2745}/src/ha_mcp/tools/tools_security_policy.py +2 -5
  36. {ha_mcp_dev-8.5.0.dev2740 → ha_mcp_dev-8.5.0.dev2745}/src/ha_mcp/tools/tools_service.py +66 -104
  37. {ha_mcp_dev-8.5.0.dev2740 → ha_mcp_dev-8.5.0.dev2745}/src/ha_mcp/tools/tools_services.py +24 -38
  38. {ha_mcp_dev-8.5.0.dev2740 → ha_mcp_dev-8.5.0.dev2745}/src/ha_mcp/tools/tools_system.py +149 -169
  39. {ha_mcp_dev-8.5.0.dev2740 → ha_mcp_dev-8.5.0.dev2745}/src/ha_mcp/tools/tools_themes.py +10 -16
  40. {ha_mcp_dev-8.5.0.dev2740 → ha_mcp_dev-8.5.0.dev2745}/src/ha_mcp/tools/tools_todo.py +20 -70
  41. {ha_mcp_dev-8.5.0.dev2740 → ha_mcp_dev-8.5.0.dev2745}/src/ha_mcp/tools/tools_traces.py +24 -56
  42. {ha_mcp_dev-8.5.0.dev2740 → ha_mcp_dev-8.5.0.dev2745}/src/ha_mcp/tools/tools_updates.py +131 -30
  43. {ha_mcp_dev-8.5.0.dev2740 → ha_mcp_dev-8.5.0.dev2745}/src/ha_mcp/tools/tools_utility.py +26 -73
  44. {ha_mcp_dev-8.5.0.dev2740 → ha_mcp_dev-8.5.0.dev2745}/src/ha_mcp/tools/tools_voice_assistant.py +12 -18
  45. {ha_mcp_dev-8.5.0.dev2740 → ha_mcp_dev-8.5.0.dev2745}/src/ha_mcp/tools/tools_yaml_config.py +24 -54
  46. {ha_mcp_dev-8.5.0.dev2740 → ha_mcp_dev-8.5.0.dev2745}/src/ha_mcp/tools/tools_yaml_read.py +1 -2
  47. {ha_mcp_dev-8.5.0.dev2740 → ha_mcp_dev-8.5.0.dev2745}/src/ha_mcp/tools/tools_zones.py +15 -26
  48. {ha_mcp_dev-8.5.0.dev2740 → ha_mcp_dev-8.5.0.dev2745}/src/ha_mcp/tools/util_helpers.py +35 -13
  49. {ha_mcp_dev-8.5.0.dev2740 → ha_mcp_dev-8.5.0.dev2745}/src/ha_mcp/transforms/component_search.py +3 -6
  50. {ha_mcp_dev-8.5.0.dev2740 → ha_mcp_dev-8.5.0.dev2745}/src/ha_mcp/utils/python_sandbox.py +0 -9
  51. {ha_mcp_dev-8.5.0.dev2740 → ha_mcp_dev-8.5.0.dev2745/src/ha_mcp_dev.egg-info}/PKG-INFO +1 -1
  52. {ha_mcp_dev-8.5.0.dev2740 → ha_mcp_dev-8.5.0.dev2745}/LICENSE +0 -0
  53. {ha_mcp_dev-8.5.0.dev2740 → ha_mcp_dev-8.5.0.dev2745}/MANIFEST.in +0 -0
  54. {ha_mcp_dev-8.5.0.dev2740 → ha_mcp_dev-8.5.0.dev2745}/README.md +0 -0
  55. {ha_mcp_dev-8.5.0.dev2740 → ha_mcp_dev-8.5.0.dev2745}/setup.cfg +0 -0
  56. {ha_mcp_dev-8.5.0.dev2740 → ha_mcp_dev-8.5.0.dev2745}/src/ha_mcp/__init__.py +0 -0
  57. {ha_mcp_dev-8.5.0.dev2740 → ha_mcp_dev-8.5.0.dev2745}/src/ha_mcp/__main__.py +0 -0
  58. {ha_mcp_dev-8.5.0.dev2740 → ha_mcp_dev-8.5.0.dev2745}/src/ha_mcp/_pypi_marker +0 -0
  59. {ha_mcp_dev-8.5.0.dev2740 → ha_mcp_dev-8.5.0.dev2745}/src/ha_mcp/_rich_compat.py +0 -0
  60. {ha_mcp_dev-8.5.0.dev2740 → ha_mcp_dev-8.5.0.dev2745}/src/ha_mcp/_vendor/__init__.py +0 -0
  61. {ha_mcp_dev-8.5.0.dev2740 → ha_mcp_dev-8.5.0.dev2745}/src/ha_mcp/_vendor/fastmcp/LICENSE +0 -0
  62. {ha_mcp_dev-8.5.0.dev2740 → ha_mcp_dev-8.5.0.dev2745}/src/ha_mcp/_vendor/fastmcp/MANIFEST.sha256 +0 -0
  63. {ha_mcp_dev-8.5.0.dev2740 → ha_mcp_dev-8.5.0.dev2745}/src/ha_mcp/_vendor/fastmcp/REQUIRES.txt +0 -0
  64. {ha_mcp_dev-8.5.0.dev2740 → ha_mcp_dev-8.5.0.dev2745}/src/ha_mcp/_vendor/fastmcp/VENDORED +0 -0
  65. {ha_mcp_dev-8.5.0.dev2740 → ha_mcp_dev-8.5.0.dev2745}/src/ha_mcp/_vendor/fastmcp/__init__.py +0 -0
  66. {ha_mcp_dev-8.5.0.dev2740 → ha_mcp_dev-8.5.0.dev2745}/src/ha_mcp/_vendor/fastmcp/_compat.py +0 -0
  67. {ha_mcp_dev-8.5.0.dev2740 → ha_mcp_dev-8.5.0.dev2745}/src/ha_mcp/_vendor/fastmcp/_install_hints.py +0 -0
  68. {ha_mcp_dev-8.5.0.dev2740 → ha_mcp_dev-8.5.0.dev2745}/src/ha_mcp/_vendor/fastmcp/_warnings.py +0 -0
  69. {ha_mcp_dev-8.5.0.dev2740 → ha_mcp_dev-8.5.0.dev2745}/src/ha_mcp/_vendor/fastmcp/apps/__init__.py +0 -0
  70. {ha_mcp_dev-8.5.0.dev2740 → ha_mcp_dev-8.5.0.dev2745}/src/ha_mcp/_vendor/fastmcp/apps/app.py +0 -0
  71. {ha_mcp_dev-8.5.0.dev2740 → ha_mcp_dev-8.5.0.dev2745}/src/ha_mcp/_vendor/fastmcp/apps/approval.py +0 -0
  72. {ha_mcp_dev-8.5.0.dev2740 → ha_mcp_dev-8.5.0.dev2745}/src/ha_mcp/_vendor/fastmcp/apps/choice.py +0 -0
  73. {ha_mcp_dev-8.5.0.dev2740 → ha_mcp_dev-8.5.0.dev2745}/src/ha_mcp/_vendor/fastmcp/apps/config.py +0 -0
  74. {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
  75. {ha_mcp_dev-8.5.0.dev2740 → ha_mcp_dev-8.5.0.dev2745}/src/ha_mcp/_vendor/fastmcp/apps/form.py +0 -0
  76. {ha_mcp_dev-8.5.0.dev2740 → ha_mcp_dev-8.5.0.dev2745}/src/ha_mcp/_vendor/fastmcp/apps/generative.py +0 -0
  77. {ha_mcp_dev-8.5.0.dev2740 → ha_mcp_dev-8.5.0.dev2745}/src/ha_mcp/_vendor/fastmcp/cli/__init__.py +0 -0
  78. {ha_mcp_dev-8.5.0.dev2740 → ha_mcp_dev-8.5.0.dev2745}/src/ha_mcp/_vendor/fastmcp/cli/__main__.py +0 -0
  79. {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
  80. {ha_mcp_dev-8.5.0.dev2740 → ha_mcp_dev-8.5.0.dev2745}/src/ha_mcp/_vendor/fastmcp/cli/auth.py +0 -0
  81. {ha_mcp_dev-8.5.0.dev2740 → ha_mcp_dev-8.5.0.dev2745}/src/ha_mcp/_vendor/fastmcp/cli/cimd.py +0 -0
  82. {ha_mcp_dev-8.5.0.dev2740 → ha_mcp_dev-8.5.0.dev2745}/src/ha_mcp/_vendor/fastmcp/cli/cli.py +0 -0
  83. {ha_mcp_dev-8.5.0.dev2740 → ha_mcp_dev-8.5.0.dev2745}/src/ha_mcp/_vendor/fastmcp/cli/client.py +0 -0
  84. {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
  85. {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
  86. {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
  87. {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
  88. {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
  89. {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
  90. {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
  91. {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
  92. {ha_mcp_dev-8.5.0.dev2740 → ha_mcp_dev-8.5.0.dev2745}/src/ha_mcp/_vendor/fastmcp/cli/discovery.py +0 -0
  93. {ha_mcp_dev-8.5.0.dev2740 → ha_mcp_dev-8.5.0.dev2745}/src/ha_mcp/_vendor/fastmcp/cli/generate.py +0 -0
  94. {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
  95. {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
  96. {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
  97. {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
  98. {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
  99. {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
  100. {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
  101. {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
  102. {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
  103. {ha_mcp_dev-8.5.0.dev2740 → ha_mcp_dev-8.5.0.dev2745}/src/ha_mcp/_vendor/fastmcp/cli/run.py +0 -0
  104. {ha_mcp_dev-8.5.0.dev2740 → ha_mcp_dev-8.5.0.dev2745}/src/ha_mcp/_vendor/fastmcp/client/__init__.py +0 -0
  105. {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
  106. {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
  107. {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
  108. {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
  109. {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
  110. {ha_mcp_dev-8.5.0.dev2740 → ha_mcp_dev-8.5.0.dev2745}/src/ha_mcp/_vendor/fastmcp/client/caching.py +0 -0
  111. {ha_mcp_dev-8.5.0.dev2740 → ha_mcp_dev-8.5.0.dev2745}/src/ha_mcp/_vendor/fastmcp/client/client.py +0 -0
  112. {ha_mcp_dev-8.5.0.dev2740 → ha_mcp_dev-8.5.0.dev2745}/src/ha_mcp/_vendor/fastmcp/client/dependencies.py +0 -0
  113. {ha_mcp_dev-8.5.0.dev2740 → ha_mcp_dev-8.5.0.dev2745}/src/ha_mcp/_vendor/fastmcp/client/elicitation.py +0 -0
  114. {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
  115. {ha_mcp_dev-8.5.0.dev2740 → ha_mcp_dev-8.5.0.dev2745}/src/ha_mcp/_vendor/fastmcp/client/group.py +0 -0
  116. {ha_mcp_dev-8.5.0.dev2740 → ha_mcp_dev-8.5.0.dev2745}/src/ha_mcp/_vendor/fastmcp/client/logging.py +0 -0
  117. {ha_mcp_dev-8.5.0.dev2740 → ha_mcp_dev-8.5.0.dev2745}/src/ha_mcp/_vendor/fastmcp/client/messages.py +0 -0
  118. {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
  119. {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
  120. {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
  121. {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
  122. {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
  123. {ha_mcp_dev-8.5.0.dev2740 → ha_mcp_dev-8.5.0.dev2745}/src/ha_mcp/_vendor/fastmcp/client/progress.py +0 -0
  124. {ha_mcp_dev-8.5.0.dev2740 → ha_mcp_dev-8.5.0.dev2745}/src/ha_mcp/_vendor/fastmcp/client/roots.py +0 -0
  125. {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
  126. {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
  127. {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
  128. {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
  129. {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
  130. {ha_mcp_dev-8.5.0.dev2740 → ha_mcp_dev-8.5.0.dev2745}/src/ha_mcp/_vendor/fastmcp/client/telemetry.py +0 -0
  131. {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
  132. {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
  133. {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
  134. {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
  135. {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
  136. {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
  137. {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
  138. {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
  139. {ha_mcp_dev-8.5.0.dev2740 → ha_mcp_dev-8.5.0.dev2745}/src/ha_mcp/_vendor/fastmcp/contrib/README.md +0 -0
  140. {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
  141. {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
  142. {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
  143. {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
  144. {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
  145. {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
  146. {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
  147. {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
  148. {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
  149. {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
  150. {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
  151. {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
  152. {ha_mcp_dev-8.5.0.dev2740 → ha_mcp_dev-8.5.0.dev2745}/src/ha_mcp/_vendor/fastmcp/decorators.py +0 -0
  153. {ha_mcp_dev-8.5.0.dev2740 → ha_mcp_dev-8.5.0.dev2745}/src/ha_mcp/_vendor/fastmcp/dependencies.py +0 -0
  154. {ha_mcp_dev-8.5.0.dev2740 → ha_mcp_dev-8.5.0.dev2745}/src/ha_mcp/_vendor/fastmcp/exceptions.py +0 -0
  155. {ha_mcp_dev-8.5.0.dev2740 → ha_mcp_dev-8.5.0.dev2745}/src/ha_mcp/_vendor/fastmcp/experimental/__init__.py +0 -0
  156. {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
  157. {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
  158. {ha_mcp_dev-8.5.0.dev2740 → ha_mcp_dev-8.5.0.dev2745}/src/ha_mcp/_vendor/fastmcp/mcp_config.py +0 -0
  159. {ha_mcp_dev-8.5.0.dev2740 → ha_mcp_dev-8.5.0.dev2745}/src/ha_mcp/_vendor/fastmcp/prompts/__init__.py +0 -0
  160. {ha_mcp_dev-8.5.0.dev2740 → ha_mcp_dev-8.5.0.dev2745}/src/ha_mcp/_vendor/fastmcp/prompts/base.py +0 -0
  161. {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
  162. {ha_mcp_dev-8.5.0.dev2740 → ha_mcp_dev-8.5.0.dev2745}/src/ha_mcp/_vendor/fastmcp/py.typed +0 -0
  163. {ha_mcp_dev-8.5.0.dev2740 → ha_mcp_dev-8.5.0.dev2745}/src/ha_mcp/_vendor/fastmcp/resources/__init__.py +0 -0
  164. {ha_mcp_dev-8.5.0.dev2740 → ha_mcp_dev-8.5.0.dev2745}/src/ha_mcp/_vendor/fastmcp/resources/base.py +0 -0
  165. {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
  166. {ha_mcp_dev-8.5.0.dev2740 → ha_mcp_dev-8.5.0.dev2745}/src/ha_mcp/_vendor/fastmcp/resources/security.py +0 -0
  167. {ha_mcp_dev-8.5.0.dev2740 → ha_mcp_dev-8.5.0.dev2745}/src/ha_mcp/_vendor/fastmcp/resources/template.py +0 -0
  168. {ha_mcp_dev-8.5.0.dev2740 → ha_mcp_dev-8.5.0.dev2745}/src/ha_mcp/_vendor/fastmcp/resources/types.py +0 -0
  169. {ha_mcp_dev-8.5.0.dev2740 → ha_mcp_dev-8.5.0.dev2745}/src/ha_mcp/_vendor/fastmcp/server/__init__.py +0 -0
  170. {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
  171. {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
  172. {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
  173. {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
  174. {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
  175. {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
  176. {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
  177. {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
  178. {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
  179. {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
  180. {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
  181. {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
  182. {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
  183. {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
  184. {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
  185. {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
  186. {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
  187. {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
  188. {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
  189. {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
  190. {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
  191. {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
  192. {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
  193. {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
  194. {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
  195. {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
  196. {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
  197. {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
  198. {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
  199. {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
  200. {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
  201. {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
  202. {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
  203. {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
  204. {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
  205. {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
  206. {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
  207. {ha_mcp_dev-8.5.0.dev2740 → ha_mcp_dev-8.5.0.dev2745}/src/ha_mcp/_vendor/fastmcp/server/caching.py +0 -0
  208. {ha_mcp_dev-8.5.0.dev2740 → ha_mcp_dev-8.5.0.dev2745}/src/ha_mcp/_vendor/fastmcp/server/completions.py +0 -0
  209. {ha_mcp_dev-8.5.0.dev2740 → ha_mcp_dev-8.5.0.dev2745}/src/ha_mcp/_vendor/fastmcp/server/context.py +0 -0
  210. {ha_mcp_dev-8.5.0.dev2740 → ha_mcp_dev-8.5.0.dev2745}/src/ha_mcp/_vendor/fastmcp/server/dependencies.py +0 -0
  211. {ha_mcp_dev-8.5.0.dev2740 → ha_mcp_dev-8.5.0.dev2745}/src/ha_mcp/_vendor/fastmcp/server/elicitation.py +0 -0
  212. {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
  213. {ha_mcp_dev-8.5.0.dev2740 → ha_mcp_dev-8.5.0.dev2745}/src/ha_mcp/_vendor/fastmcp/server/extensions.py +0 -0
  214. {ha_mcp_dev-8.5.0.dev2740 → ha_mcp_dev-8.5.0.dev2745}/src/ha_mcp/_vendor/fastmcp/server/http.py +0 -0
  215. {ha_mcp_dev-8.5.0.dev2740 → ha_mcp_dev-8.5.0.dev2745}/src/ha_mcp/_vendor/fastmcp/server/lifespan.py +0 -0
  216. {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
  217. {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
  218. {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
  219. {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
  220. {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
  221. {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
  222. {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
  223. {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
  224. {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
  225. {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
  226. {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
  227. {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
  228. {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
  229. {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
  230. {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
  231. {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
  232. {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
  233. {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
  234. {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
  235. {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
  236. {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
  237. {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
  238. {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
  239. {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
  240. {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
  241. {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
  242. {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
  243. {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
  244. {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
  245. {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
  246. {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
  247. {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
  248. {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
  249. {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
  250. {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
  251. {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
  252. {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
  253. {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
  254. {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
  255. {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
  256. {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
  257. {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
  258. {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
  259. {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
  260. {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
  261. {ha_mcp_dev-8.5.0.dev2740 → ha_mcp_dev-8.5.0.dev2745}/src/ha_mcp/_vendor/fastmcp/server/server.py +0 -0
  262. {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
  263. {ha_mcp_dev-8.5.0.dev2740 → ha_mcp_dev-8.5.0.dev2745}/src/ha_mcp/_vendor/fastmcp/server/sessions.py +0 -0
  264. {ha_mcp_dev-8.5.0.dev2740 → ha_mcp_dev-8.5.0.dev2745}/src/ha_mcp/_vendor/fastmcp/server/telemetry.py +0 -0
  265. {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
  266. {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
  267. {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
  268. {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
  269. {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
  270. {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
  271. {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
  272. {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
  273. {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
  274. {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
  275. {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
  276. {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
  277. {ha_mcp_dev-8.5.0.dev2740 → ha_mcp_dev-8.5.0.dev2745}/src/ha_mcp/_vendor/fastmcp/settings.py +0 -0
  278. {ha_mcp_dev-8.5.0.dev2740 → ha_mcp_dev-8.5.0.dev2745}/src/ha_mcp/_vendor/fastmcp/telemetry.py +0 -0
  279. {ha_mcp_dev-8.5.0.dev2740 → ha_mcp_dev-8.5.0.dev2745}/src/ha_mcp/_vendor/fastmcp/tools/__init__.py +0 -0
  280. {ha_mcp_dev-8.5.0.dev2740 → ha_mcp_dev-8.5.0.dev2745}/src/ha_mcp/_vendor/fastmcp/tools/base.py +0 -0
  281. {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
  282. {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
  283. {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
  284. {ha_mcp_dev-8.5.0.dev2740 → ha_mcp_dev-8.5.0.dev2745}/src/ha_mcp/_vendor/fastmcp/types.py +0 -0
  285. {ha_mcp_dev-8.5.0.dev2740 → ha_mcp_dev-8.5.0.dev2745}/src/ha_mcp/_vendor/fastmcp/utilities/__init__.py +0 -0
  286. {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
  287. {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
  288. {ha_mcp_dev-8.5.0.dev2740 → ha_mcp_dev-8.5.0.dev2745}/src/ha_mcp/_vendor/fastmcp/utilities/auth.py +0 -0
  289. {ha_mcp_dev-8.5.0.dev2740 → ha_mcp_dev-8.5.0.dev2745}/src/ha_mcp/_vendor/fastmcp/utilities/authorization.py +0 -0
  290. {ha_mcp_dev-8.5.0.dev2740 → ha_mcp_dev-8.5.0.dev2745}/src/ha_mcp/_vendor/fastmcp/utilities/cli.py +0 -0
  291. {ha_mcp_dev-8.5.0.dev2740 → ha_mcp_dev-8.5.0.dev2745}/src/ha_mcp/_vendor/fastmcp/utilities/components.py +0 -0
  292. {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
  293. {ha_mcp_dev-8.5.0.dev2740 → ha_mcp_dev-8.5.0.dev2745}/src/ha_mcp/_vendor/fastmcp/utilities/exceptions.py +0 -0
  294. {ha_mcp_dev-8.5.0.dev2740 → ha_mcp_dev-8.5.0.dev2745}/src/ha_mcp/_vendor/fastmcp/utilities/http.py +0 -0
  295. {ha_mcp_dev-8.5.0.dev2740 → ha_mcp_dev-8.5.0.dev2745}/src/ha_mcp/_vendor/fastmcp/utilities/inspect.py +0 -0
  296. {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
  297. {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
  298. {ha_mcp_dev-8.5.0.dev2740 → ha_mcp_dev-8.5.0.dev2745}/src/ha_mcp/_vendor/fastmcp/utilities/lifespan.py +0 -0
  299. {ha_mcp_dev-8.5.0.dev2740 → ha_mcp_dev-8.5.0.dev2745}/src/ha_mcp/_vendor/fastmcp/utilities/logging.py +0 -0
  300. {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
  301. {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
  302. {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
  303. {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
  304. {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
  305. {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
  306. {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
  307. {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
  308. {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
  309. {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
  310. {ha_mcp_dev-8.5.0.dev2740 → ha_mcp_dev-8.5.0.dev2745}/src/ha_mcp/_vendor/fastmcp/utilities/mime.py +0 -0
  311. {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
  312. {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
  313. {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
  314. {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
  315. {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
  316. {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
  317. {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
  318. {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
  319. {ha_mcp_dev-8.5.0.dev2740 → ha_mcp_dev-8.5.0.dev2745}/src/ha_mcp/_vendor/fastmcp/utilities/pagination.py +0 -0
  320. {ha_mcp_dev-8.5.0.dev2740 → ha_mcp_dev-8.5.0.dev2745}/src/ha_mcp/_vendor/fastmcp/utilities/prefab.py +0 -0
  321. {ha_mcp_dev-8.5.0.dev2740 → ha_mcp_dev-8.5.0.dev2745}/src/ha_mcp/_vendor/fastmcp/utilities/skills.py +0 -0
  322. {ha_mcp_dev-8.5.0.dev2740 → ha_mcp_dev-8.5.0.dev2745}/src/ha_mcp/_vendor/fastmcp/utilities/tasks.py +0 -0
  323. {ha_mcp_dev-8.5.0.dev2740 → ha_mcp_dev-8.5.0.dev2745}/src/ha_mcp/_vendor/fastmcp/utilities/tests.py +0 -0
  324. {ha_mcp_dev-8.5.0.dev2740 → ha_mcp_dev-8.5.0.dev2745}/src/ha_mcp/_vendor/fastmcp/utilities/timeout.py +0 -0
  325. {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
  326. {ha_mcp_dev-8.5.0.dev2740 → ha_mcp_dev-8.5.0.dev2745}/src/ha_mcp/_vendor/fastmcp/utilities/types.py +0 -0
  327. {ha_mcp_dev-8.5.0.dev2740 → ha_mcp_dev-8.5.0.dev2745}/src/ha_mcp/_vendor/fastmcp/utilities/ui.py +0 -0
  328. {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
  329. {ha_mcp_dev-8.5.0.dev2740 → ha_mcp_dev-8.5.0.dev2745}/src/ha_mcp/_vendor/fastmcp/utilities/versions.py +0 -0
  330. {ha_mcp_dev-8.5.0.dev2740 → ha_mcp_dev-8.5.0.dev2745}/src/ha_mcp/_vendor/mcp/LICENSE +0 -0
  331. {ha_mcp_dev-8.5.0.dev2740 → ha_mcp_dev-8.5.0.dev2745}/src/ha_mcp/_vendor/mcp/MANIFEST.sha256 +0 -0
  332. {ha_mcp_dev-8.5.0.dev2740 → ha_mcp_dev-8.5.0.dev2745}/src/ha_mcp/_vendor/mcp/REQUIRES.txt +0 -0
  333. {ha_mcp_dev-8.5.0.dev2740 → ha_mcp_dev-8.5.0.dev2745}/src/ha_mcp/_vendor/mcp/VENDORED +0 -0
  334. {ha_mcp_dev-8.5.0.dev2740 → ha_mcp_dev-8.5.0.dev2745}/src/ha_mcp/_vendor/mcp/__init__.py +0 -0
  335. {ha_mcp_dev-8.5.0.dev2740 → ha_mcp_dev-8.5.0.dev2745}/src/ha_mcp/_vendor/mcp/cli/__init__.py +0 -0
  336. {ha_mcp_dev-8.5.0.dev2740 → ha_mcp_dev-8.5.0.dev2745}/src/ha_mcp/_vendor/mcp/cli/claude.py +0 -0
  337. {ha_mcp_dev-8.5.0.dev2740 → ha_mcp_dev-8.5.0.dev2745}/src/ha_mcp/_vendor/mcp/cli/cli.py +0 -0
  338. {ha_mcp_dev-8.5.0.dev2740 → ha_mcp_dev-8.5.0.dev2745}/src/ha_mcp/_vendor/mcp/client/__init__.py +0 -0
  339. {ha_mcp_dev-8.5.0.dev2740 → ha_mcp_dev-8.5.0.dev2745}/src/ha_mcp/_vendor/mcp/client/__main__.py +0 -0
  340. {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
  341. {ha_mcp_dev-8.5.0.dev2740 → ha_mcp_dev-8.5.0.dev2745}/src/ha_mcp/_vendor/mcp/client/_memory.py +0 -0
  342. {ha_mcp_dev-8.5.0.dev2740 → ha_mcp_dev-8.5.0.dev2745}/src/ha_mcp/_vendor/mcp/client/_probe.py +0 -0
  343. {ha_mcp_dev-8.5.0.dev2740 → ha_mcp_dev-8.5.0.dev2745}/src/ha_mcp/_vendor/mcp/client/_transport.py +0 -0
  344. {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
  345. {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
  346. {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
  347. {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
  348. {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
  349. {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
  350. {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
  351. {ha_mcp_dev-8.5.0.dev2740 → ha_mcp_dev-8.5.0.dev2745}/src/ha_mcp/_vendor/mcp/client/caching.py +0 -0
  352. {ha_mcp_dev-8.5.0.dev2740 → ha_mcp_dev-8.5.0.dev2745}/src/ha_mcp/_vendor/mcp/client/client.py +0 -0
  353. {ha_mcp_dev-8.5.0.dev2740 → ha_mcp_dev-8.5.0.dev2745}/src/ha_mcp/_vendor/mcp/client/context.py +0 -0
  354. {ha_mcp_dev-8.5.0.dev2740 → ha_mcp_dev-8.5.0.dev2745}/src/ha_mcp/_vendor/mcp/client/extension.py +0 -0
  355. {ha_mcp_dev-8.5.0.dev2740 → ha_mcp_dev-8.5.0.dev2745}/src/ha_mcp/_vendor/mcp/client/session.py +0 -0
  356. {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
  357. {ha_mcp_dev-8.5.0.dev2740 → ha_mcp_dev-8.5.0.dev2745}/src/ha_mcp/_vendor/mcp/client/sse.py +0 -0
  358. {ha_mcp_dev-8.5.0.dev2740 → ha_mcp_dev-8.5.0.dev2745}/src/ha_mcp/_vendor/mcp/client/stdio.py +0 -0
  359. {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
  360. {ha_mcp_dev-8.5.0.dev2740 → ha_mcp_dev-8.5.0.dev2745}/src/ha_mcp/_vendor/mcp/client/subscriptions.py +0 -0
  361. {ha_mcp_dev-8.5.0.dev2740 → ha_mcp_dev-8.5.0.dev2745}/src/ha_mcp/_vendor/mcp/os/__init__.py +0 -0
  362. {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
  363. {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
  364. {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
  365. {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
  366. {ha_mcp_dev-8.5.0.dev2740 → ha_mcp_dev-8.5.0.dev2745}/src/ha_mcp/_vendor/mcp/py.typed +0 -0
  367. {ha_mcp_dev-8.5.0.dev2740 → ha_mcp_dev-8.5.0.dev2745}/src/ha_mcp/_vendor/mcp/server/__init__.py +0 -0
  368. {ha_mcp_dev-8.5.0.dev2740 → ha_mcp_dev-8.5.0.dev2745}/src/ha_mcp/_vendor/mcp/server/__main__.py +0 -0
  369. {ha_mcp_dev-8.5.0.dev2740 → ha_mcp_dev-8.5.0.dev2745}/src/ha_mcp/_vendor/mcp/server/_otel.py +0 -0
  370. {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
  371. {ha_mcp_dev-8.5.0.dev2740 → ha_mcp_dev-8.5.0.dev2745}/src/ha_mcp/_vendor/mcp/server/apps.py +0 -0
  372. {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
  373. {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
  374. {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
  375. {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
  376. {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
  377. {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
  378. {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
  379. {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
  380. {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
  381. {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
  382. {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
  383. {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
  384. {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
  385. {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
  386. {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
  387. {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
  388. {ha_mcp_dev-8.5.0.dev2740 → ha_mcp_dev-8.5.0.dev2745}/src/ha_mcp/_vendor/mcp/server/caching.py +0 -0
  389. {ha_mcp_dev-8.5.0.dev2740 → ha_mcp_dev-8.5.0.dev2745}/src/ha_mcp/_vendor/mcp/server/connection.py +0 -0
  390. {ha_mcp_dev-8.5.0.dev2740 → ha_mcp_dev-8.5.0.dev2745}/src/ha_mcp/_vendor/mcp/server/context.py +0 -0
  391. {ha_mcp_dev-8.5.0.dev2740 → ha_mcp_dev-8.5.0.dev2745}/src/ha_mcp/_vendor/mcp/server/elicitation.py +0 -0
  392. {ha_mcp_dev-8.5.0.dev2740 → ha_mcp_dev-8.5.0.dev2745}/src/ha_mcp/_vendor/mcp/server/extension.py +0 -0
  393. {ha_mcp_dev-8.5.0.dev2740 → ha_mcp_dev-8.5.0.dev2745}/src/ha_mcp/_vendor/mcp/server/fastmcp.py +0 -0
  394. {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
  395. {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
  396. {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
  397. {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
  398. {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
  399. {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
  400. {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
  401. {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
  402. {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
  403. {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
  404. {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
  405. {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
  406. {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
  407. {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
  408. {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
  409. {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
  410. {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
  411. {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
  412. {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
  413. {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
  414. {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
  415. {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
  416. {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
  417. {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
  418. {ha_mcp_dev-8.5.0.dev2740 → ha_mcp_dev-8.5.0.dev2745}/src/ha_mcp/_vendor/mcp/server/models.py +0 -0
  419. {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
  420. {ha_mcp_dev-8.5.0.dev2740 → ha_mcp_dev-8.5.0.dev2745}/src/ha_mcp/_vendor/mcp/server/runner.py +0 -0
  421. {ha_mcp_dev-8.5.0.dev2740 → ha_mcp_dev-8.5.0.dev2745}/src/ha_mcp/_vendor/mcp/server/session.py +0 -0
  422. {ha_mcp_dev-8.5.0.dev2740 → ha_mcp_dev-8.5.0.dev2745}/src/ha_mcp/_vendor/mcp/server/sse.py +0 -0
  423. {ha_mcp_dev-8.5.0.dev2740 → ha_mcp_dev-8.5.0.dev2745}/src/ha_mcp/_vendor/mcp/server/stdio.py +0 -0
  424. {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
  425. {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
  426. {ha_mcp_dev-8.5.0.dev2740 → ha_mcp_dev-8.5.0.dev2745}/src/ha_mcp/_vendor/mcp/server/subscriptions.py +0 -0
  427. {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
  428. {ha_mcp_dev-8.5.0.dev2740 → ha_mcp_dev-8.5.0.dev2745}/src/ha_mcp/_vendor/mcp/server/validation.py +0 -0
  429. {ha_mcp_dev-8.5.0.dev2740 → ha_mcp_dev-8.5.0.dev2745}/src/ha_mcp/_vendor/mcp/shared/__init__.py +0 -0
  430. {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
  431. {ha_mcp_dev-8.5.0.dev2740 → ha_mcp_dev-8.5.0.dev2745}/src/ha_mcp/_vendor/mcp/shared/_compat.py +0 -0
  432. {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
  433. {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
  434. {ha_mcp_dev-8.5.0.dev2740 → ha_mcp_dev-8.5.0.dev2745}/src/ha_mcp/_vendor/mcp/shared/_otel.py +0 -0
  435. {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
  436. {ha_mcp_dev-8.5.0.dev2740 → ha_mcp_dev-8.5.0.dev2745}/src/ha_mcp/_vendor/mcp/shared/auth.py +0 -0
  437. {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
  438. {ha_mcp_dev-8.5.0.dev2740 → ha_mcp_dev-8.5.0.dev2745}/src/ha_mcp/_vendor/mcp/shared/context.py +0 -0
  439. {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
  440. {ha_mcp_dev-8.5.0.dev2740 → ha_mcp_dev-8.5.0.dev2745}/src/ha_mcp/_vendor/mcp/shared/dispatcher.py +0 -0
  441. {ha_mcp_dev-8.5.0.dev2740 → ha_mcp_dev-8.5.0.dev2745}/src/ha_mcp/_vendor/mcp/shared/exceptions.py +0 -0
  442. {ha_mcp_dev-8.5.0.dev2740 → ha_mcp_dev-8.5.0.dev2745}/src/ha_mcp/_vendor/mcp/shared/extension.py +0 -0
  443. {ha_mcp_dev-8.5.0.dev2740 → ha_mcp_dev-8.5.0.dev2745}/src/ha_mcp/_vendor/mcp/shared/inbound.py +0 -0
  444. {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
  445. {ha_mcp_dev-8.5.0.dev2740 → ha_mcp_dev-8.5.0.dev2745}/src/ha_mcp/_vendor/mcp/shared/memory.py +0 -0
  446. {ha_mcp_dev-8.5.0.dev2740 → ha_mcp_dev-8.5.0.dev2745}/src/ha_mcp/_vendor/mcp/shared/message.py +0 -0
  447. {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
  448. {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
  449. {ha_mcp_dev-8.5.0.dev2740 → ha_mcp_dev-8.5.0.dev2745}/src/ha_mcp/_vendor/mcp/shared/peer.py +0 -0
  450. {ha_mcp_dev-8.5.0.dev2740 → ha_mcp_dev-8.5.0.dev2745}/src/ha_mcp/_vendor/mcp/shared/subscriptions.py +0 -0
  451. {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
  452. {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
  453. {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
  454. {ha_mcp_dev-8.5.0.dev2740 → ha_mcp_dev-8.5.0.dev2745}/src/ha_mcp/_vendor/mcp/types/__init__.py +0 -0
  455. {ha_mcp_dev-8.5.0.dev2740 → ha_mcp_dev-8.5.0.dev2745}/src/ha_mcp/_vendor/mcp/types/jsonrpc.py +0 -0
  456. {ha_mcp_dev-8.5.0.dev2740 → ha_mcp_dev-8.5.0.dev2745}/src/ha_mcp/_vendor/mcp/types/methods.py +0 -0
  457. {ha_mcp_dev-8.5.0.dev2740 → ha_mcp_dev-8.5.0.dev2745}/src/ha_mcp/_vendor/mcp/types/version.py +0 -0
  458. {ha_mcp_dev-8.5.0.dev2740 → ha_mcp_dev-8.5.0.dev2745}/src/ha_mcp/_vendor/mcp_types/LICENSE +0 -0
  459. {ha_mcp_dev-8.5.0.dev2740 → ha_mcp_dev-8.5.0.dev2745}/src/ha_mcp/_vendor/mcp_types/MANIFEST.sha256 +0 -0
  460. {ha_mcp_dev-8.5.0.dev2740 → ha_mcp_dev-8.5.0.dev2745}/src/ha_mcp/_vendor/mcp_types/REQUIRES.txt +0 -0
  461. {ha_mcp_dev-8.5.0.dev2740 → ha_mcp_dev-8.5.0.dev2745}/src/ha_mcp/_vendor/mcp_types/VENDORED +0 -0
  462. {ha_mcp_dev-8.5.0.dev2740 → ha_mcp_dev-8.5.0.dev2745}/src/ha_mcp/_vendor/mcp_types/__init__.py +0 -0
  463. {ha_mcp_dev-8.5.0.dev2740 → ha_mcp_dev-8.5.0.dev2745}/src/ha_mcp/_vendor/mcp_types/_types.py +0 -0
  464. {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
  465. {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
  466. {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
  467. {ha_mcp_dev-8.5.0.dev2740 → ha_mcp_dev-8.5.0.dev2745}/src/ha_mcp/_vendor/mcp_types/jsonrpc.py +0 -0
  468. {ha_mcp_dev-8.5.0.dev2740 → ha_mcp_dev-8.5.0.dev2745}/src/ha_mcp/_vendor/mcp_types/methods.py +0 -0
  469. {ha_mcp_dev-8.5.0.dev2740 → ha_mcp_dev-8.5.0.dev2745}/src/ha_mcp/_vendor/mcp_types/py.typed +0 -0
  470. {ha_mcp_dev-8.5.0.dev2740 → ha_mcp_dev-8.5.0.dev2745}/src/ha_mcp/_vendor/mcp_types/version.py +0 -0
  471. {ha_mcp_dev-8.5.0.dev2740 → ha_mcp_dev-8.5.0.dev2745}/src/ha_mcp/_vendor/requirements.txt +0 -0
  472. {ha_mcp_dev-8.5.0.dev2740 → ha_mcp_dev-8.5.0.dev2745}/src/ha_mcp/_vendor/websockets/LICENSE +0 -0
  473. {ha_mcp_dev-8.5.0.dev2740 → ha_mcp_dev-8.5.0.dev2745}/src/ha_mcp/_vendor/websockets/MANIFEST.sha256 +0 -0
  474. {ha_mcp_dev-8.5.0.dev2740 → ha_mcp_dev-8.5.0.dev2745}/src/ha_mcp/_vendor/websockets/VENDORED +0 -0
  475. {ha_mcp_dev-8.5.0.dev2740 → ha_mcp_dev-8.5.0.dev2745}/src/ha_mcp/_vendor/websockets/__init__.py +0 -0
  476. {ha_mcp_dev-8.5.0.dev2740 → ha_mcp_dev-8.5.0.dev2745}/src/ha_mcp/_vendor/websockets/__main__.py +0 -0
  477. {ha_mcp_dev-8.5.0.dev2740 → ha_mcp_dev-8.5.0.dev2745}/src/ha_mcp/_vendor/websockets/asyncio/__init__.py +0 -0
  478. {ha_mcp_dev-8.5.0.dev2740 → ha_mcp_dev-8.5.0.dev2745}/src/ha_mcp/_vendor/websockets/asyncio/client.py +0 -0
  479. {ha_mcp_dev-8.5.0.dev2740 → ha_mcp_dev-8.5.0.dev2745}/src/ha_mcp/_vendor/websockets/asyncio/connection.py +0 -0
  480. {ha_mcp_dev-8.5.0.dev2740 → ha_mcp_dev-8.5.0.dev2745}/src/ha_mcp/_vendor/websockets/asyncio/messages.py +0 -0
  481. {ha_mcp_dev-8.5.0.dev2740 → ha_mcp_dev-8.5.0.dev2745}/src/ha_mcp/_vendor/websockets/asyncio/router.py +0 -0
  482. {ha_mcp_dev-8.5.0.dev2740 → ha_mcp_dev-8.5.0.dev2745}/src/ha_mcp/_vendor/websockets/asyncio/server.py +0 -0
  483. {ha_mcp_dev-8.5.0.dev2740 → ha_mcp_dev-8.5.0.dev2745}/src/ha_mcp/_vendor/websockets/auth.py +0 -0
  484. {ha_mcp_dev-8.5.0.dev2740 → ha_mcp_dev-8.5.0.dev2745}/src/ha_mcp/_vendor/websockets/cli.py +0 -0
  485. {ha_mcp_dev-8.5.0.dev2740 → ha_mcp_dev-8.5.0.dev2745}/src/ha_mcp/_vendor/websockets/client.py +0 -0
  486. {ha_mcp_dev-8.5.0.dev2740 → ha_mcp_dev-8.5.0.dev2745}/src/ha_mcp/_vendor/websockets/connection.py +0 -0
  487. {ha_mcp_dev-8.5.0.dev2740 → ha_mcp_dev-8.5.0.dev2745}/src/ha_mcp/_vendor/websockets/datastructures.py +0 -0
  488. {ha_mcp_dev-8.5.0.dev2740 → ha_mcp_dev-8.5.0.dev2745}/src/ha_mcp/_vendor/websockets/exceptions.py +0 -0
  489. {ha_mcp_dev-8.5.0.dev2740 → ha_mcp_dev-8.5.0.dev2745}/src/ha_mcp/_vendor/websockets/extensions/__init__.py +0 -0
  490. {ha_mcp_dev-8.5.0.dev2740 → ha_mcp_dev-8.5.0.dev2745}/src/ha_mcp/_vendor/websockets/extensions/base.py +0 -0
  491. {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
  492. {ha_mcp_dev-8.5.0.dev2740 → ha_mcp_dev-8.5.0.dev2745}/src/ha_mcp/_vendor/websockets/frames.py +0 -0
  493. {ha_mcp_dev-8.5.0.dev2740 → ha_mcp_dev-8.5.0.dev2745}/src/ha_mcp/_vendor/websockets/headers.py +0 -0
  494. {ha_mcp_dev-8.5.0.dev2740 → ha_mcp_dev-8.5.0.dev2745}/src/ha_mcp/_vendor/websockets/http11.py +0 -0
  495. {ha_mcp_dev-8.5.0.dev2740 → ha_mcp_dev-8.5.0.dev2745}/src/ha_mcp/_vendor/websockets/imports.py +0 -0
  496. {ha_mcp_dev-8.5.0.dev2740 → ha_mcp_dev-8.5.0.dev2745}/src/ha_mcp/_vendor/websockets/legacy/__init__.py +0 -0
  497. {ha_mcp_dev-8.5.0.dev2740 → ha_mcp_dev-8.5.0.dev2745}/src/ha_mcp/_vendor/websockets/legacy/auth.py +0 -0
  498. {ha_mcp_dev-8.5.0.dev2740 → ha_mcp_dev-8.5.0.dev2745}/src/ha_mcp/_vendor/websockets/legacy/client.py +0 -0
  499. {ha_mcp_dev-8.5.0.dev2740 → ha_mcp_dev-8.5.0.dev2745}/src/ha_mcp/_vendor/websockets/legacy/exceptions.py +0 -0
  500. {ha_mcp_dev-8.5.0.dev2740 → ha_mcp_dev-8.5.0.dev2745}/src/ha_mcp/_vendor/websockets/legacy/framing.py +0 -0
  501. {ha_mcp_dev-8.5.0.dev2740 → ha_mcp_dev-8.5.0.dev2745}/src/ha_mcp/_vendor/websockets/legacy/handshake.py +0 -0
  502. {ha_mcp_dev-8.5.0.dev2740 → ha_mcp_dev-8.5.0.dev2745}/src/ha_mcp/_vendor/websockets/legacy/http.py +0 -0
  503. {ha_mcp_dev-8.5.0.dev2740 → ha_mcp_dev-8.5.0.dev2745}/src/ha_mcp/_vendor/websockets/legacy/protocol.py +0 -0
  504. {ha_mcp_dev-8.5.0.dev2740 → ha_mcp_dev-8.5.0.dev2745}/src/ha_mcp/_vendor/websockets/legacy/server.py +0 -0
  505. {ha_mcp_dev-8.5.0.dev2740 → ha_mcp_dev-8.5.0.dev2745}/src/ha_mcp/_vendor/websockets/protocol.py +0 -0
  506. {ha_mcp_dev-8.5.0.dev2740 → ha_mcp_dev-8.5.0.dev2745}/src/ha_mcp/_vendor/websockets/proxy.py +0 -0
  507. {ha_mcp_dev-8.5.0.dev2740 → ha_mcp_dev-8.5.0.dev2745}/src/ha_mcp/_vendor/websockets/py.typed +0 -0
  508. {ha_mcp_dev-8.5.0.dev2740 → ha_mcp_dev-8.5.0.dev2745}/src/ha_mcp/_vendor/websockets/server.py +0 -0
  509. {ha_mcp_dev-8.5.0.dev2740 → ha_mcp_dev-8.5.0.dev2745}/src/ha_mcp/_vendor/websockets/streams.py +0 -0
  510. {ha_mcp_dev-8.5.0.dev2740 → ha_mcp_dev-8.5.0.dev2745}/src/ha_mcp/_vendor/websockets/sync/__init__.py +0 -0
  511. {ha_mcp_dev-8.5.0.dev2740 → ha_mcp_dev-8.5.0.dev2745}/src/ha_mcp/_vendor/websockets/sync/client.py +0 -0
  512. {ha_mcp_dev-8.5.0.dev2740 → ha_mcp_dev-8.5.0.dev2745}/src/ha_mcp/_vendor/websockets/sync/connection.py +0 -0
  513. {ha_mcp_dev-8.5.0.dev2740 → ha_mcp_dev-8.5.0.dev2745}/src/ha_mcp/_vendor/websockets/sync/messages.py +0 -0
  514. {ha_mcp_dev-8.5.0.dev2740 → ha_mcp_dev-8.5.0.dev2745}/src/ha_mcp/_vendor/websockets/sync/router.py +0 -0
  515. {ha_mcp_dev-8.5.0.dev2740 → ha_mcp_dev-8.5.0.dev2745}/src/ha_mcp/_vendor/websockets/sync/server.py +0 -0
  516. {ha_mcp_dev-8.5.0.dev2740 → ha_mcp_dev-8.5.0.dev2745}/src/ha_mcp/_vendor/websockets/sync/utils.py +0 -0
  517. {ha_mcp_dev-8.5.0.dev2740 → ha_mcp_dev-8.5.0.dev2745}/src/ha_mcp/_vendor/websockets/trio/__init__.py +0 -0
  518. {ha_mcp_dev-8.5.0.dev2740 → ha_mcp_dev-8.5.0.dev2745}/src/ha_mcp/_vendor/websockets/trio/client.py +0 -0
  519. {ha_mcp_dev-8.5.0.dev2740 → ha_mcp_dev-8.5.0.dev2745}/src/ha_mcp/_vendor/websockets/trio/connection.py +0 -0
  520. {ha_mcp_dev-8.5.0.dev2740 → ha_mcp_dev-8.5.0.dev2745}/src/ha_mcp/_vendor/websockets/trio/messages.py +0 -0
  521. {ha_mcp_dev-8.5.0.dev2740 → ha_mcp_dev-8.5.0.dev2745}/src/ha_mcp/_vendor/websockets/trio/router.py +0 -0
  522. {ha_mcp_dev-8.5.0.dev2740 → ha_mcp_dev-8.5.0.dev2745}/src/ha_mcp/_vendor/websockets/trio/server.py +0 -0
  523. {ha_mcp_dev-8.5.0.dev2740 → ha_mcp_dev-8.5.0.dev2745}/src/ha_mcp/_vendor/websockets/trio/utils.py +0 -0
  524. {ha_mcp_dev-8.5.0.dev2740 → ha_mcp_dev-8.5.0.dev2745}/src/ha_mcp/_vendor/websockets/typing.py +0 -0
  525. {ha_mcp_dev-8.5.0.dev2740 → ha_mcp_dev-8.5.0.dev2745}/src/ha_mcp/_vendor/websockets/uri.py +0 -0
  526. {ha_mcp_dev-8.5.0.dev2740 → ha_mcp_dev-8.5.0.dev2745}/src/ha_mcp/_vendor/websockets/utils.py +0 -0
  527. {ha_mcp_dev-8.5.0.dev2740 → ha_mcp_dev-8.5.0.dev2745}/src/ha_mcp/_vendor/websockets/version.py +0 -0
  528. {ha_mcp_dev-8.5.0.dev2740 → ha_mcp_dev-8.5.0.dev2745}/src/ha_mcp/_version.py +0 -0
  529. {ha_mcp_dev-8.5.0.dev2740 → ha_mcp_dev-8.5.0.dev2745}/src/ha_mcp/auth/__init__.py +0 -0
  530. {ha_mcp_dev-8.5.0.dev2740 → ha_mcp_dev-8.5.0.dev2745}/src/ha_mcp/auth/consent_form.py +0 -0
  531. {ha_mcp_dev-8.5.0.dev2740 → ha_mcp_dev-8.5.0.dev2745}/src/ha_mcp/auth/oidc_compat.py +0 -0
  532. {ha_mcp_dev-8.5.0.dev2740 → ha_mcp_dev-8.5.0.dev2745}/src/ha_mcp/auth/provider.py +0 -0
  533. {ha_mcp_dev-8.5.0.dev2740 → ha_mcp_dev-8.5.0.dev2745}/src/ha_mcp/backup_manager.py +0 -0
  534. {ha_mcp_dev-8.5.0.dev2740 → ha_mcp_dev-8.5.0.dev2745}/src/ha_mcp/browser_landing.py +0 -0
  535. {ha_mcp_dev-8.5.0.dev2740 → ha_mcp_dev-8.5.0.dev2745}/src/ha_mcp/client/__init__.py +0 -0
  536. {ha_mcp_dev-8.5.0.dev2740 → ha_mcp_dev-8.5.0.dev2745}/src/ha_mcp/client/rest_client.py +0 -0
  537. {ha_mcp_dev-8.5.0.dev2740 → ha_mcp_dev-8.5.0.dev2745}/src/ha_mcp/client/supervisor_client.py +0 -0
  538. {ha_mcp_dev-8.5.0.dev2740 → ha_mcp_dev-8.5.0.dev2745}/src/ha_mcp/client/websocket_client.py +0 -0
  539. {ha_mcp_dev-8.5.0.dev2740 → ha_mcp_dev-8.5.0.dev2745}/src/ha_mcp/client/websocket_listener.py +0 -0
  540. {ha_mcp_dev-8.5.0.dev2740 → ha_mcp_dev-8.5.0.dev2745}/src/ha_mcp/config.py +0 -0
  541. {ha_mcp_dev-8.5.0.dev2740 → ha_mcp_dev-8.5.0.dev2745}/src/ha_mcp/dashboard_screenshot/__init__.py +0 -0
  542. {ha_mcp_dev-8.5.0.dev2740 → ha_mcp_dev-8.5.0.dev2745}/src/ha_mcp/dashboard_screenshot/capture.py +0 -0
  543. {ha_mcp_dev-8.5.0.dev2740 → ha_mcp_dev-8.5.0.dev2745}/src/ha_mcp/dashboard_screenshot/content.py +0 -0
  544. {ha_mcp_dev-8.5.0.dev2740 → ha_mcp_dev-8.5.0.dev2745}/src/ha_mcp/dashboard_screenshot/paths.py +0 -0
  545. {ha_mcp_dev-8.5.0.dev2740 → ha_mcp_dev-8.5.0.dev2745}/src/ha_mcp/dashboard_screenshot/provision.py +0 -0
  546. {ha_mcp_dev-8.5.0.dev2740 → ha_mcp_dev-8.5.0.dev2745}/src/ha_mcp/dashboard_screenshot/theme_guard.py +0 -0
  547. {ha_mcp_dev-8.5.0.dev2740 → ha_mcp_dev-8.5.0.dev2745}/src/ha_mcp/errors.py +0 -0
  548. {ha_mcp_dev-8.5.0.dev2740 → ha_mcp_dev-8.5.0.dev2745}/src/ha_mcp/ha_request_queue.py +0 -0
  549. {ha_mcp_dev-8.5.0.dev2740 → ha_mcp_dev-8.5.0.dev2745}/src/ha_mcp/hacs_auto_refresh.py +0 -0
  550. {ha_mcp_dev-8.5.0.dev2740 → ha_mcp_dev-8.5.0.dev2745}/src/ha_mcp/http_transport.py +0 -0
  551. {ha_mcp_dev-8.5.0.dev2740 → ha_mcp_dev-8.5.0.dev2745}/src/ha_mcp/llm_exposure.py +0 -0
  552. {ha_mcp_dev-8.5.0.dev2740 → ha_mcp_dev-8.5.0.dev2745}/src/ha_mcp/log_filters.py +0 -0
  553. {ha_mcp_dev-8.5.0.dev2740 → ha_mcp_dev-8.5.0.dev2745}/src/ha_mcp/policy/__init__.py +0 -0
  554. {ha_mcp_dev-8.5.0.dev2740 → ha_mcp_dev-8.5.0.dev2745}/src/ha_mcp/policy/approval_queue.py +0 -0
  555. {ha_mcp_dev-8.5.0.dev2740 → ha_mcp_dev-8.5.0.dev2745}/src/ha_mcp/policy/decision_pin.py +0 -0
  556. {ha_mcp_dev-8.5.0.dev2740 → ha_mcp_dev-8.5.0.dev2745}/src/ha_mcp/policy/decisions.py +0 -0
  557. {ha_mcp_dev-8.5.0.dev2740 → ha_mcp_dev-8.5.0.dev2745}/src/ha_mcp/policy/editing.py +0 -0
  558. {ha_mcp_dev-8.5.0.dev2740 → ha_mcp_dev-8.5.0.dev2745}/src/ha_mcp/policy/evaluator.py +0 -0
  559. {ha_mcp_dev-8.5.0.dev2740 → ha_mcp_dev-8.5.0.dev2745}/src/ha_mcp/policy/events.py +0 -0
  560. {ha_mcp_dev-8.5.0.dev2740 → ha_mcp_dev-8.5.0.dev2745}/src/ha_mcp/policy/handlers.py +0 -0
  561. {ha_mcp_dev-8.5.0.dev2740 → ha_mcp_dev-8.5.0.dev2745}/src/ha_mcp/policy/middleware.py +0 -0
  562. {ha_mcp_dev-8.5.0.dev2740 → ha_mcp_dev-8.5.0.dev2745}/src/ha_mcp/policy/model.py +0 -0
  563. {ha_mcp_dev-8.5.0.dev2740 → ha_mcp_dev-8.5.0.dev2745}/src/ha_mcp/policy/persistence.py +0 -0
  564. {ha_mcp_dev-8.5.0.dev2740 → ha_mcp_dev-8.5.0.dev2745}/src/ha_mcp/policy/value_sources.py +0 -0
  565. {ha_mcp_dev-8.5.0.dev2740 → ha_mcp_dev-8.5.0.dev2745}/src/ha_mcp/py.typed +0 -0
  566. {ha_mcp_dev-8.5.0.dev2740 → ha_mcp_dev-8.5.0.dev2745}/src/ha_mcp/read_only.py +0 -0
  567. {ha_mcp_dev-8.5.0.dev2740 → ha_mcp_dev-8.5.0.dev2745}/src/ha_mcp/redaction.py +0 -0
  568. {ha_mcp_dev-8.5.0.dev2740 → ha_mcp_dev-8.5.0.dev2745}/src/ha_mcp/renamed_tools.py +0 -0
  569. {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
  570. {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
  571. {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
  572. {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
  573. {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
  574. {ha_mcp_dev-8.5.0.dev2740 → ha_mcp_dev-8.5.0.dev2745}/src/ha_mcp/resources/skills-vendor/AGENTS.md +0 -0
  575. {ha_mcp_dev-8.5.0.dev2740 → ha_mcp_dev-8.5.0.dev2745}/src/ha_mcp/resources/skills-vendor/CLAUDE.md +0 -0
  576. {ha_mcp_dev-8.5.0.dev2740 → ha_mcp_dev-8.5.0.dev2745}/src/ha_mcp/resources/skills-vendor/CONTRIBUTING.md +0 -0
  577. {ha_mcp_dev-8.5.0.dev2740 → ha_mcp_dev-8.5.0.dev2745}/src/ha_mcp/resources/skills-vendor/LICENSE +0 -0
  578. {ha_mcp_dev-8.5.0.dev2740 → ha_mcp_dev-8.5.0.dev2745}/src/ha_mcp/resources/skills-vendor/README.md +0 -0
  579. {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
  580. {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
  581. {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
  582. {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
  583. {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
  584. {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
  585. {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
  586. {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
  587. {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
  588. {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
  589. {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
  590. {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
  591. {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
  592. {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
  593. {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
  594. {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
  595. {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
  596. {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
  597. {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
  598. {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
  599. {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
  600. {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
  601. {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
  602. {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
  603. {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
  604. {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
  605. {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
  606. {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
  607. {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
  608. {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
  609. {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
  610. {ha_mcp_dev-8.5.0.dev2740 → ha_mcp_dev-8.5.0.dev2745}/src/ha_mcp/settings_ui/__init__.py +0 -0
  611. {ha_mcp_dev-8.5.0.dev2740 → ha_mcp_dev-8.5.0.dev2745}/src/ha_mcp/settings_ui/_handlers_advanced.py +0 -0
  612. {ha_mcp_dev-8.5.0.dev2740 → ha_mcp_dev-8.5.0.dev2745}/src/ha_mcp/settings_ui/_handlers_backups.py +0 -0
  613. {ha_mcp_dev-8.5.0.dev2740 → ha_mcp_dev-8.5.0.dev2745}/src/ha_mcp/settings_ui/_handlers_fs.py +0 -0
  614. {ha_mcp_dev-8.5.0.dev2740 → ha_mcp_dev-8.5.0.dev2745}/src/ha_mcp/settings_ui/_handlers_server.py +0 -0
  615. {ha_mcp_dev-8.5.0.dev2740 → ha_mcp_dev-8.5.0.dev2745}/src/ha_mcp/settings_ui/_handlers_theme.py +0 -0
  616. {ha_mcp_dev-8.5.0.dev2740 → ha_mcp_dev-8.5.0.dev2745}/src/ha_mcp/settings_ui/_handlers_tools.py +0 -0
  617. {ha_mcp_dev-8.5.0.dev2740 → ha_mcp_dev-8.5.0.dev2745}/src/ha_mcp/settings_ui/_i18n.py +0 -0
  618. {ha_mcp_dev-8.5.0.dev2740 → ha_mcp_dev-8.5.0.dev2745}/src/ha_mcp/settings_ui/_locale_policy.py +0 -0
  619. {ha_mcp_dev-8.5.0.dev2740 → ha_mcp_dev-8.5.0.dev2745}/src/ha_mcp/settings_ui/_persistence.py +0 -0
  620. {ha_mcp_dev-8.5.0.dev2740 → ha_mcp_dev-8.5.0.dev2745}/src/ha_mcp/settings_ui/_supervisor.py +0 -0
  621. {ha_mcp_dev-8.5.0.dev2740 → ha_mcp_dev-8.5.0.dev2745}/src/ha_mcp/settings_ui/_theme.py +0 -0
  622. {ha_mcp_dev-8.5.0.dev2740 → ha_mcp_dev-8.5.0.dev2745}/src/ha_mcp/settings_ui/_tools_meta.py +0 -0
  623. {ha_mcp_dev-8.5.0.dev2740 → ha_mcp_dev-8.5.0.dev2745}/src/ha_mcp/settings_ui/locales/README.md +0 -0
  624. {ha_mcp_dev-8.5.0.dev2740 → ha_mcp_dev-8.5.0.dev2745}/src/ha_mcp/settings_ui/locales/az.json +0 -0
  625. {ha_mcp_dev-8.5.0.dev2740 → ha_mcp_dev-8.5.0.dev2745}/src/ha_mcp/settings_ui/locales/cs.json +0 -0
  626. {ha_mcp_dev-8.5.0.dev2740 → ha_mcp_dev-8.5.0.dev2745}/src/ha_mcp/settings_ui/locales/de.json +0 -0
  627. {ha_mcp_dev-8.5.0.dev2740 → ha_mcp_dev-8.5.0.dev2745}/src/ha_mcp/settings_ui/locales/en.json +0 -0
  628. {ha_mcp_dev-8.5.0.dev2740 → ha_mcp_dev-8.5.0.dev2745}/src/ha_mcp/settings_ui/locales/eo.json +0 -0
  629. {ha_mcp_dev-8.5.0.dev2740 → ha_mcp_dev-8.5.0.dev2745}/src/ha_mcp/settings_ui/locales/es.json +0 -0
  630. {ha_mcp_dev-8.5.0.dev2740 → ha_mcp_dev-8.5.0.dev2745}/src/ha_mcp/settings_ui/locales/fr.json +0 -0
  631. {ha_mcp_dev-8.5.0.dev2740 → ha_mcp_dev-8.5.0.dev2745}/src/ha_mcp/settings_ui/locales/it.json +0 -0
  632. {ha_mcp_dev-8.5.0.dev2740 → ha_mcp_dev-8.5.0.dev2745}/src/ha_mcp/settings_ui/locales/ko.json +0 -0
  633. {ha_mcp_dev-8.5.0.dev2740 → ha_mcp_dev-8.5.0.dev2745}/src/ha_mcp/settings_ui/locales/nl.json +0 -0
  634. {ha_mcp_dev-8.5.0.dev2740 → ha_mcp_dev-8.5.0.dev2745}/src/ha_mcp/settings_ui/locales/pl.json +0 -0
  635. {ha_mcp_dev-8.5.0.dev2740 → ha_mcp_dev-8.5.0.dev2745}/src/ha_mcp/settings_ui/locales/ru.json +0 -0
  636. {ha_mcp_dev-8.5.0.dev2740 → ha_mcp_dev-8.5.0.dev2745}/src/ha_mcp/settings_ui/locales/sv.json +0 -0
  637. {ha_mcp_dev-8.5.0.dev2740 → ha_mcp_dev-8.5.0.dev2745}/src/ha_mcp/settings_ui/locales/tlh.json +0 -0
  638. {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
  639. {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
  640. {ha_mcp_dev-8.5.0.dev2740 → ha_mcp_dev-8.5.0.dev2745}/src/ha_mcp/settings_ui/settings.css +0 -0
  641. {ha_mcp_dev-8.5.0.dev2740 → ha_mcp_dev-8.5.0.dev2745}/src/ha_mcp/settings_ui/settings.html +0 -0
  642. {ha_mcp_dev-8.5.0.dev2740 → ha_mcp_dev-8.5.0.dev2745}/src/ha_mcp/settings_ui/settings.js +0 -0
  643. {ha_mcp_dev-8.5.0.dev2740 → ha_mcp_dev-8.5.0.dev2745}/src/ha_mcp/smoke_test.py +0 -0
  644. {ha_mcp_dev-8.5.0.dev2740 → ha_mcp_dev-8.5.0.dev2745}/src/ha_mcp/stdio_settings_sidecar.py +0 -0
  645. {ha_mcp_dev-8.5.0.dev2740 → ha_mcp_dev-8.5.0.dev2745}/src/ha_mcp/strict_bps.py +0 -0
  646. {ha_mcp_dev-8.5.0.dev2740 → ha_mcp_dev-8.5.0.dev2745}/src/ha_mcp/tool_dispatch.py +0 -0
  647. {ha_mcp_dev-8.5.0.dev2740 → ha_mcp_dev-8.5.0.dev2745}/src/ha_mcp/tools/__init__.py +0 -0
  648. {ha_mcp_dev-8.5.0.dev2740 → ha_mcp_dev-8.5.0.dev2745}/src/ha_mcp/tools/auto_backup.py +0 -0
  649. {ha_mcp_dev-8.5.0.dev2740 → ha_mcp_dev-8.5.0.dev2745}/src/ha_mcp/tools/best_practice_checker.py +0 -0
  650. {ha_mcp_dev-8.5.0.dev2740 → ha_mcp_dev-8.5.0.dev2745}/src/ha_mcp/tools/best_practice_result.py +0 -0
  651. {ha_mcp_dev-8.5.0.dev2740 → ha_mcp_dev-8.5.0.dev2745}/src/ha_mcp/tools/best_practice_variables.py +0 -0
  652. {ha_mcp_dev-8.5.0.dev2740 → ha_mcp_dev-8.5.0.dev2745}/src/ha_mcp/tools/blueprint_sources.py +0 -0
  653. {ha_mcp_dev-8.5.0.dev2740 → ha_mcp_dev-8.5.0.dev2745}/src/ha_mcp/tools/blueprint_substitute.py +0 -0
  654. {ha_mcp_dev-8.5.0.dev2740 → ha_mcp_dev-8.5.0.dev2745}/src/ha_mcp/tools/blueprint_write.py +0 -0
  655. {ha_mcp_dev-8.5.0.dev2740 → ha_mcp_dev-8.5.0.dev2745}/src/ha_mcp/tools/bulk_selector.py +0 -0
  656. {ha_mcp_dev-8.5.0.dev2740 → ha_mcp_dev-8.5.0.dev2745}/src/ha_mcp/tools/component_api.py +0 -0
  657. {ha_mcp_dev-8.5.0.dev2740 → ha_mcp_dev-8.5.0.dev2745}/src/ha_mcp/tools/component_config_entries.py +0 -0
  658. {ha_mcp_dev-8.5.0.dev2740 → ha_mcp_dev-8.5.0.dev2745}/src/ha_mcp/tools/component_config_reads.py +0 -0
  659. {ha_mcp_dev-8.5.0.dev2740 → ha_mcp_dev-8.5.0.dev2745}/src/ha_mcp/tools/component_dashboard_edit.py +0 -0
  660. {ha_mcp_dev-8.5.0.dev2740 → ha_mcp_dev-8.5.0.dev2745}/src/ha_mcp/tools/component_devices.py +0 -0
  661. {ha_mcp_dev-8.5.0.dev2740 → ha_mcp_dev-8.5.0.dev2745}/src/ha_mcp/tools/component_registries.py +0 -0
  662. {ha_mcp_dev-8.5.0.dev2740 → ha_mcp_dev-8.5.0.dev2745}/src/ha_mcp/tools/component_registry_lookup.py +0 -0
  663. {ha_mcp_dev-8.5.0.dev2740 → ha_mcp_dev-8.5.0.dev2745}/src/ha_mcp/tools/config_entry_flow.py +0 -0
  664. {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
  665. {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
  666. {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
  667. {ha_mcp_dev-8.5.0.dev2740 → ha_mcp_dev-8.5.0.dev2745}/src/ha_mcp/tools/config_entry_identity.py +0 -0
  668. {ha_mcp_dev-8.5.0.dev2740 → ha_mcp_dev-8.5.0.dev2745}/src/ha_mcp/tools/config_entry_reconfigure.py +0 -0
  669. {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
  670. {ha_mcp_dev-8.5.0.dev2740 → ha_mcp_dev-8.5.0.dev2745}/src/ha_mcp/tools/dashboard_edit_errors.py +0 -0
  671. {ha_mcp_dev-8.5.0.dev2740 → ha_mcp_dev-8.5.0.dev2745}/src/ha_mcp/tools/device_control.py +0 -0
  672. {ha_mcp_dev-8.5.0.dev2740 → ha_mcp_dev-8.5.0.dev2745}/src/ha_mcp/tools/error_log_parsing.py +0 -0
  673. {ha_mcp_dev-8.5.0.dev2740 → ha_mcp_dev-8.5.0.dev2745}/src/ha_mcp/tools/hacs_registration.py +0 -0
  674. {ha_mcp_dev-8.5.0.dev2740 → ha_mcp_dev-8.5.0.dev2745}/src/ha_mcp/tools/helpers.py +0 -0
  675. {ha_mcp_dev-8.5.0.dev2740 → ha_mcp_dev-8.5.0.dev2745}/src/ha_mcp/tools/integration_reconfigure.py +0 -0
  676. {ha_mcp_dev-8.5.0.dev2740 → ha_mcp_dev-8.5.0.dev2745}/src/ha_mcp/tools/log_common.py +0 -0
  677. {ha_mcp_dev-8.5.0.dev2740 → ha_mcp_dev-8.5.0.dev2745}/src/ha_mcp/tools/log_sources.py +0 -0
  678. {ha_mcp_dev-8.5.0.dev2740 → ha_mcp_dev-8.5.0.dev2745}/src/ha_mcp/tools/log_sources_fault.py +0 -0
  679. {ha_mcp_dev-8.5.0.dev2740 → ha_mcp_dev-8.5.0.dev2745}/src/ha_mcp/tools/log_sources_supervisor.py +0 -0
  680. {ha_mcp_dev-8.5.0.dev2740 → ha_mcp_dev-8.5.0.dev2745}/src/ha_mcp/tools/radio/__init__.py +0 -0
  681. {ha_mcp_dev-8.5.0.dev2740 → ha_mcp_dev-8.5.0.dev2745}/src/ha_mcp/tools/radio/base.py +0 -0
  682. {ha_mcp_dev-8.5.0.dev2740 → ha_mcp_dev-8.5.0.dev2745}/src/ha_mcp/tools/radio/matter.py +0 -0
  683. {ha_mcp_dev-8.5.0.dev2740 → ha_mcp_dev-8.5.0.dev2745}/src/ha_mcp/tools/radio/thread.py +0 -0
  684. {ha_mcp_dev-8.5.0.dev2740 → ha_mcp_dev-8.5.0.dev2745}/src/ha_mcp/tools/radio/zigbee.py +0 -0
  685. {ha_mcp_dev-8.5.0.dev2740 → ha_mcp_dev-8.5.0.dev2745}/src/ha_mcp/tools/radio/zwave.py +0 -0
  686. {ha_mcp_dev-8.5.0.dev2740 → ha_mcp_dev-8.5.0.dev2745}/src/ha_mcp/tools/reference_validator.py +0 -0
  687. {ha_mcp_dev-8.5.0.dev2740 → ha_mcp_dev-8.5.0.dev2745}/src/ha_mcp/tools/registry.py +0 -0
  688. {ha_mcp_dev-8.5.0.dev2740 → ha_mcp_dev-8.5.0.dev2745}/src/ha_mcp/tools/renamed_tool_middleware.py +0 -0
  689. {ha_mcp_dev-8.5.0.dev2740 → ha_mcp_dev-8.5.0.dev2745}/src/ha_mcp/tools/scene_discovery.py +0 -0
  690. {ha_mcp_dev-8.5.0.dev2740 → ha_mcp_dev-8.5.0.dev2745}/src/ha_mcp/tools/smart_search/__init__.py +0 -0
  691. {ha_mcp_dev-8.5.0.dev2740 → ha_mcp_dev-8.5.0.dev2745}/src/ha_mcp/tools/smart_search/_base.py +0 -0
  692. {ha_mcp_dev-8.5.0.dev2740 → ha_mcp_dev-8.5.0.dev2745}/src/ha_mcp/tools/smart_search/_config.py +0 -0
  693. {ha_mcp_dev-8.5.0.dev2740 → ha_mcp_dev-8.5.0.dev2745}/src/ha_mcp/tools/smart_search/_deep.py +0 -0
  694. {ha_mcp_dev-8.5.0.dev2740 → ha_mcp_dev-8.5.0.dev2745}/src/ha_mcp/tools/smart_search/_entities.py +0 -0
  695. {ha_mcp_dev-8.5.0.dev2740 → ha_mcp_dev-8.5.0.dev2745}/src/ha_mcp/tools/smart_search/_fetch.py +0 -0
  696. {ha_mcp_dev-8.5.0.dev2740 → ha_mcp_dev-8.5.0.dev2745}/src/ha_mcp/tools/smart_search/_graph.py +0 -0
  697. {ha_mcp_dev-8.5.0.dev2740 → ha_mcp_dev-8.5.0.dev2745}/src/ha_mcp/tools/smart_search/_overview.py +0 -0
  698. {ha_mcp_dev-8.5.0.dev2740 → ha_mcp_dev-8.5.0.dev2745}/src/ha_mcp/tools/smart_search/_scenes.py +0 -0
  699. {ha_mcp_dev-8.5.0.dev2740 → ha_mcp_dev-8.5.0.dev2745}/src/ha_mcp/tools/smart_search/_scoring.py +0 -0
  700. {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
  701. {ha_mcp_dev-8.5.0.dev2740 → ha_mcp_dev-8.5.0.dev2745}/src/ha_mcp/tools/validation_middleware.py +0 -0
  702. {ha_mcp_dev-8.5.0.dev2740 → ha_mcp_dev-8.5.0.dev2745}/src/ha_mcp/transforms/__init__.py +0 -0
  703. {ha_mcp_dev-8.5.0.dev2740 → ha_mcp_dev-8.5.0.dev2745}/src/ha_mcp/transforms/categorized_search.py +0 -0
  704. {ha_mcp_dev-8.5.0.dev2740 → ha_mcp_dev-8.5.0.dev2745}/src/ha_mcp/transforms/lite_docstrings.py +0 -0
  705. {ha_mcp_dev-8.5.0.dev2740 → ha_mcp_dev-8.5.0.dev2745}/src/ha_mcp/transforms/write_tool_note.py +0 -0
  706. {ha_mcp_dev-8.5.0.dev2740 → ha_mcp_dev-8.5.0.dev2745}/src/ha_mcp/transport_security.py +0 -0
  707. {ha_mcp_dev-8.5.0.dev2740 → ha_mcp_dev-8.5.0.dev2745}/src/ha_mcp/update_check.py +0 -0
  708. {ha_mcp_dev-8.5.0.dev2740 → ha_mcp_dev-8.5.0.dev2745}/src/ha_mcp/utils/__init__.py +0 -0
  709. {ha_mcp_dev-8.5.0.dev2740 → ha_mcp_dev-8.5.0.dev2745}/src/ha_mcp/utils/config_hash.py +0 -0
  710. {ha_mcp_dev-8.5.0.dev2740 → ha_mcp_dev-8.5.0.dev2745}/src/ha_mcp/utils/config_write_lock.py +0 -0
  711. {ha_mcp_dev-8.5.0.dev2740 → ha_mcp_dev-8.5.0.dev2745}/src/ha_mcp/utils/dashboard_patch.py +0 -0
  712. {ha_mcp_dev-8.5.0.dev2740 → ha_mcp_dev-8.5.0.dev2745}/src/ha_mcp/utils/data_paths.py +0 -0
  713. {ha_mcp_dev-8.5.0.dev2740 → ha_mcp_dev-8.5.0.dev2745}/src/ha_mcp/utils/device_registry_semantics.py +0 -0
  714. {ha_mcp_dev-8.5.0.dev2740 → ha_mcp_dev-8.5.0.dev2745}/src/ha_mcp/utils/domain_handlers.py +0 -0
  715. {ha_mcp_dev-8.5.0.dev2740 → ha_mcp_dev-8.5.0.dev2745}/src/ha_mcp/utils/entity_membership.py +0 -0
  716. {ha_mcp_dev-8.5.0.dev2740 → ha_mcp_dev-8.5.0.dev2745}/src/ha_mcp/utils/fuzzy_search.py +0 -0
  717. {ha_mcp_dev-8.5.0.dev2740 → ha_mcp_dev-8.5.0.dev2745}/src/ha_mcp/utils/kill_signal_diagnostics.py +0 -0
  718. {ha_mcp_dev-8.5.0.dev2740 → ha_mcp_dev-8.5.0.dev2745}/src/ha_mcp/utils/mcp_client_host.py +0 -0
  719. {ha_mcp_dev-8.5.0.dev2740 → ha_mcp_dev-8.5.0.dev2745}/src/ha_mcp/utils/operation_manager.py +0 -0
  720. {ha_mcp_dev-8.5.0.dev2740 → ha_mcp_dev-8.5.0.dev2745}/src/ha_mcp/utils/registry_update_lock.py +0 -0
  721. {ha_mcp_dev-8.5.0.dev2740 → ha_mcp_dev-8.5.0.dev2745}/src/ha_mcp/utils/skill_loader.py +0 -0
  722. {ha_mcp_dev-8.5.0.dev2740 → ha_mcp_dev-8.5.0.dev2745}/src/ha_mcp/utils/usage_logger.py +0 -0
  723. {ha_mcp_dev-8.5.0.dev2740 → ha_mcp_dev-8.5.0.dev2745}/src/ha_mcp/visibility/__init__.py +0 -0
  724. {ha_mcp_dev-8.5.0.dev2740 → ha_mcp_dev-8.5.0.dev2745}/src/ha_mcp/visibility/enforcement.py +0 -0
  725. {ha_mcp_dev-8.5.0.dev2740 → ha_mcp_dev-8.5.0.dev2745}/src/ha_mcp/visibility/model.py +0 -0
  726. {ha_mcp_dev-8.5.0.dev2740 → ha_mcp_dev-8.5.0.dev2745}/src/ha_mcp/visibility/persistence.py +0 -0
  727. {ha_mcp_dev-8.5.0.dev2740 → ha_mcp_dev-8.5.0.dev2745}/src/ha_mcp/visibility/resolver.py +0 -0
  728. {ha_mcp_dev-8.5.0.dev2740 → ha_mcp_dev-8.5.0.dev2745}/src/ha_mcp_dev.egg-info/SOURCES.txt +0 -0
  729. {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
  730. {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
  731. {ha_mcp_dev-8.5.0.dev2740 → ha_mcp_dev-8.5.0.dev2745}/src/ha_mcp_dev.egg-info/requires.txt +0 -0
  732. {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
  733. {ha_mcp_dev-8.5.0.dev2740 → ha_mcp_dev-8.5.0.dev2745}/tests/__init__.py +0 -0
  734. {ha_mcp_dev-8.5.0.dev2740 → ha_mcp_dev-8.5.0.dev2745}/tests/test_constants.py +0 -0
  735. {ha_mcp_dev-8.5.0.dev2740 → ha_mcp_dev-8.5.0.dev2745}/tests/test_env_manager.py +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: ha-mcp-dev
3
- Version: 8.5.0.dev2740
3
+ Version: 8.5.0.dev2745
4
4
  Summary: Home Assistant MCP Server - Complete control of Home Assistant through MCP
5
5
  Author-email: Julien <github@qc-h.net>
6
6
  License: MIT
@@ -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.dev2740"
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.\n\n"
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.\n\n"
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.\n\n"
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
- "Execute a Home Assistant service to control entities or "
850
- "trigger automations. Calls `<domain>.<service>` "
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. Default false (config-only).",
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
@@ -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. Known
86
- API failures retain the best-effort fallback. Errors escaping the component
87
- adapter propagate unless listed below; cancellation always propagates.
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: ha_call_service('hassio', 'addon_start', {{'addon': '{slug}'}})",
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: 'installed' (default) for currently installed apps, "
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 for detailed info (e.g., '<prefix>_nodered'). "
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. ``include_stats`` applies only
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
- "Slug prefixes vary by app repository — call ha_get_app() "
3837
- "to discover the actual installed slug. Required for every mode "
3838
- "except the store-repository actions "
3839
- "(action='add_repository'/'remove_repository'), which use "
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; mutually exclusive with config parameters.",
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. Defaults to GET.",
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, response headers). Default: false.",
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
- "Use ha_get_app(slug='...') to find available ports. Some apps, including "
3880
- "Node-RED, reject direct access unless their leave_front_door_open option is "
3881
- "enabled and the app is restarted; related errors include an actionable, "
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. Default: 0.",
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
- "(add-on) WebSocket API. Sends 'body' as the initial message and collects "
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 batch; use "
3915
- "for one-shot command/response or bounded capture on a channel that stays "
3916
- "open. Default: true.",
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 ceiling. "
3925
- "Lower to save tokens on noisy streams (e.g., message_limit=50 for a quick health check).",
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 the "
3933
- "collected list before returning. Useful for paginating past known-noisy headers. Default: 0.",
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 (default), collapse runs of "
3941
- "non-signal messages (typically YAML config dumps) into short elision markers. "
3942
- "Set to False to return the raw stream.",
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 response. "
3950
- "Variable `response` is exposed — a list[dict | str] for WebSocket (parsed JSON or raw text), "
3951
- "or dict/list/str for HTTP (parsed body). Supports in-place mutation "
3952
- "(response.append(...)) or reassignment (response = [...]). "
3953
- "Example: response = [m for m in response if 'ERROR' in str(m)]. "
3954
- "Post-processing only — does not provide optimistic-locking write semantics.",
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
- "Store-repository mode: 'add_repository' / 'remove_repository' "
4037
- "register or unregister a custom app store repository — these "
4038
- "use the 'repository' param instead of 'slug'. "
4039
- "Store-wide mode: 'check_updates' reloads the store so "
4040
- "Supervisor re-scans its repositories, mirroring the Apps UI "
4041
- "'Check for updates' item — it takes neither 'slug' nor "
4042
- "'repository', refreshes available metadata only, and installs "
4043
- "nothing. Use it to pick up an edited local app's config.yaml "
4044
- "on demand instead of waiting for Supervisor's own reload "
4045
- "(every 3h). Follow with action='update' to install a new "
4046
- "version, or action='rebuild' for a local app whose source "
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
- Do not infer private app API schemas; consult version-matched app docs,
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. ``options`` merges top-level
4082
- keys and one nested mapping level; supply complete values for deeper nested
4083
- mappings because they are replaced. A non-empty ``network`` replaces the
4084
- full port override map. Prefer
4085
- Ingress: direct-port access requires a shared container network and may
4086
- require weakening the target app authentication. If a Supervisor
4087
- lifecycle, configuration, or repository write has an unknown outcome,
4088
- verify durable state with ``ha_get_app`` before retrying. That cannot
4089
- prove whether ``restart`` or ``rebuild`` ran; inspect Supervisor jobs
4090
- and logs and do not automatically replay them. For a proxy or array-patch
4091
- write, query the target app's own read API before retrying.
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
- 'response size (e.g. ["floors"]). '
290
- "None = full response (default). "
291
- "Available keys: success, floor_count, area_count, "
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
- 'and orphaned_areas) to only the specified keys. E.g. ["area_id", '
305
- '"name"] returns slim area records. None = full records (default). '
306
- "Unknown keys yield empty records. Available keys: area_id, name, "
307
- "icon, floor_id, aliases, picture, labels."
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. Optionally project the response with fields= (top-level keys) or area_fields= (per-area-record keys, applied uniformly across nested, unassigned, and orphaned buckets).
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 (omit to create a new entry; use ha_list_floors_areas to find IDs)",
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). Only valid when kind='area'.",
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). Only valid when kind='floor'.",
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). Only valid when kind='area'.",
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
- "Only valid when kind='area' — floors have no labels."
803
+ "Floors have no labels."
806
804
  ),
807
805
  default=None,
808
806
  ),
@@ -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'. A matched intent executes, and with the "
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
- "preferred with an extra websocket call. Ignored for other actions."
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 borrows a pipeline's
723
- conversation agent and language, but the sentence still goes to the
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
- - List pipelines: ha_manage_pipeline(action="list")
730
- - Get one pipeline: ha_manage_pipeline(action="get", pipeline_id="preferred")
731
- - Create by cloning preferred: ha_manage_pipeline(
732
- action="create",
733
- name="Local Assist",
734
- conversation_engine="conversation.local_llm",
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: