ha-mcp-dev 7.6.0.dev669__tar.gz → 7.6.0.dev671__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 (140) hide show
  1. {ha_mcp_dev-7.6.0.dev669/src/ha_mcp_dev.egg-info → ha_mcp_dev-7.6.0.dev671}/PKG-INFO +1 -1
  2. {ha_mcp_dev-7.6.0.dev669 → ha_mcp_dev-7.6.0.dev671}/pyproject.toml +1 -1
  3. {ha_mcp_dev-7.6.0.dev669 → ha_mcp_dev-7.6.0.dev671}/src/ha_mcp/tools/tools_hacs.py +18 -1
  4. {ha_mcp_dev-7.6.0.dev669 → ha_mcp_dev-7.6.0.dev671}/src/ha_mcp/tools/tools_service.py +7 -1
  5. {ha_mcp_dev-7.6.0.dev669 → ha_mcp_dev-7.6.0.dev671/src/ha_mcp_dev.egg-info}/PKG-INFO +1 -1
  6. {ha_mcp_dev-7.6.0.dev669 → ha_mcp_dev-7.6.0.dev671}/LICENSE +0 -0
  7. {ha_mcp_dev-7.6.0.dev669 → ha_mcp_dev-7.6.0.dev671}/MANIFEST.in +0 -0
  8. {ha_mcp_dev-7.6.0.dev669 → ha_mcp_dev-7.6.0.dev671}/README.md +0 -0
  9. {ha_mcp_dev-7.6.0.dev669 → ha_mcp_dev-7.6.0.dev671}/setup.cfg +0 -0
  10. {ha_mcp_dev-7.6.0.dev669 → ha_mcp_dev-7.6.0.dev671}/src/ha_mcp/__init__.py +0 -0
  11. {ha_mcp_dev-7.6.0.dev669 → ha_mcp_dev-7.6.0.dev671}/src/ha_mcp/__main__.py +0 -0
  12. {ha_mcp_dev-7.6.0.dev669 → ha_mcp_dev-7.6.0.dev671}/src/ha_mcp/_pypi_marker +0 -0
  13. {ha_mcp_dev-7.6.0.dev669 → ha_mcp_dev-7.6.0.dev671}/src/ha_mcp/_version.py +0 -0
  14. {ha_mcp_dev-7.6.0.dev669 → ha_mcp_dev-7.6.0.dev671}/src/ha_mcp/auth/__init__.py +0 -0
  15. {ha_mcp_dev-7.6.0.dev669 → ha_mcp_dev-7.6.0.dev671}/src/ha_mcp/auth/consent_form.py +0 -0
  16. {ha_mcp_dev-7.6.0.dev669 → ha_mcp_dev-7.6.0.dev671}/src/ha_mcp/auth/provider.py +0 -0
  17. {ha_mcp_dev-7.6.0.dev669 → ha_mcp_dev-7.6.0.dev671}/src/ha_mcp/backup_manager.py +0 -0
  18. {ha_mcp_dev-7.6.0.dev669 → ha_mcp_dev-7.6.0.dev671}/src/ha_mcp/client/__init__.py +0 -0
  19. {ha_mcp_dev-7.6.0.dev669 → ha_mcp_dev-7.6.0.dev671}/src/ha_mcp/client/rest_client.py +0 -0
  20. {ha_mcp_dev-7.6.0.dev669 → ha_mcp_dev-7.6.0.dev671}/src/ha_mcp/client/supervisor_client.py +0 -0
  21. {ha_mcp_dev-7.6.0.dev669 → ha_mcp_dev-7.6.0.dev671}/src/ha_mcp/client/websocket_client.py +0 -0
  22. {ha_mcp_dev-7.6.0.dev669 → ha_mcp_dev-7.6.0.dev671}/src/ha_mcp/client/websocket_listener.py +0 -0
  23. {ha_mcp_dev-7.6.0.dev669 → ha_mcp_dev-7.6.0.dev671}/src/ha_mcp/config.py +0 -0
  24. {ha_mcp_dev-7.6.0.dev669 → ha_mcp_dev-7.6.0.dev671}/src/ha_mcp/dashboard_screenshot/__init__.py +0 -0
  25. {ha_mcp_dev-7.6.0.dev669 → ha_mcp_dev-7.6.0.dev671}/src/ha_mcp/dashboard_screenshot/capture.py +0 -0
  26. {ha_mcp_dev-7.6.0.dev669 → ha_mcp_dev-7.6.0.dev671}/src/ha_mcp/dashboard_screenshot/provision.py +0 -0
  27. {ha_mcp_dev-7.6.0.dev669 → ha_mcp_dev-7.6.0.dev671}/src/ha_mcp/errors.py +0 -0
  28. {ha_mcp_dev-7.6.0.dev669 → ha_mcp_dev-7.6.0.dev671}/src/ha_mcp/policy/__init__.py +0 -0
  29. {ha_mcp_dev-7.6.0.dev669 → ha_mcp_dev-7.6.0.dev671}/src/ha_mcp/policy/approval_queue.py +0 -0
  30. {ha_mcp_dev-7.6.0.dev669 → ha_mcp_dev-7.6.0.dev671}/src/ha_mcp/policy/evaluator.py +0 -0
  31. {ha_mcp_dev-7.6.0.dev669 → ha_mcp_dev-7.6.0.dev671}/src/ha_mcp/policy/handlers.py +0 -0
  32. {ha_mcp_dev-7.6.0.dev669 → ha_mcp_dev-7.6.0.dev671}/src/ha_mcp/policy/middleware.py +0 -0
  33. {ha_mcp_dev-7.6.0.dev669 → ha_mcp_dev-7.6.0.dev671}/src/ha_mcp/policy/model.py +0 -0
  34. {ha_mcp_dev-7.6.0.dev669 → ha_mcp_dev-7.6.0.dev671}/src/ha_mcp/policy/persistence.py +0 -0
  35. {ha_mcp_dev-7.6.0.dev669 → ha_mcp_dev-7.6.0.dev671}/src/ha_mcp/policy/value_sources.py +0 -0
  36. {ha_mcp_dev-7.6.0.dev669 → ha_mcp_dev-7.6.0.dev671}/src/ha_mcp/py.typed +0 -0
  37. {ha_mcp_dev-7.6.0.dev669 → ha_mcp_dev-7.6.0.dev671}/src/ha_mcp/resources/skills-vendor/.claude/settings.json +0 -0
  38. {ha_mcp_dev-7.6.0.dev669 → ha_mcp_dev-7.6.0.dev671}/src/ha_mcp/resources/skills-vendor/.claude-plugin/marketplace.json +0 -0
  39. {ha_mcp_dev-7.6.0.dev669 → ha_mcp_dev-7.6.0.dev671}/src/ha_mcp/resources/skills-vendor/.claude-plugin/plugin.json +0 -0
  40. {ha_mcp_dev-7.6.0.dev669 → ha_mcp_dev-7.6.0.dev671}/src/ha_mcp/resources/skills-vendor/.github/ISSUE_TEMPLATE/skill-rca.md +0 -0
  41. {ha_mcp_dev-7.6.0.dev669 → ha_mcp_dev-7.6.0.dev671}/src/ha_mcp/resources/skills-vendor/.github/pull_request_template.md +0 -0
  42. {ha_mcp_dev-7.6.0.dev669 → ha_mcp_dev-7.6.0.dev671}/src/ha_mcp/resources/skills-vendor/AGENTS.md +0 -0
  43. {ha_mcp_dev-7.6.0.dev669 → ha_mcp_dev-7.6.0.dev671}/src/ha_mcp/resources/skills-vendor/CLAUDE.md +0 -0
  44. {ha_mcp_dev-7.6.0.dev669 → ha_mcp_dev-7.6.0.dev671}/src/ha_mcp/resources/skills-vendor/CONTRIBUTING.md +0 -0
  45. {ha_mcp_dev-7.6.0.dev669 → ha_mcp_dev-7.6.0.dev671}/src/ha_mcp/resources/skills-vendor/LICENSE +0 -0
  46. {ha_mcp_dev-7.6.0.dev669 → ha_mcp_dev-7.6.0.dev671}/src/ha_mcp/resources/skills-vendor/README.md +0 -0
  47. {ha_mcp_dev-7.6.0.dev669 → ha_mcp_dev-7.6.0.dev671}/src/ha_mcp/resources/skills-vendor/skills/home-assistant-best-practices/SKILL.md +0 -0
  48. {ha_mcp_dev-7.6.0.dev669 → ha_mcp_dev-7.6.0.dev671}/src/ha_mcp/resources/skills-vendor/skills/home-assistant-best-practices/evals/evals.json +0 -0
  49. {ha_mcp_dev-7.6.0.dev669 → ha_mcp_dev-7.6.0.dev671}/src/ha_mcp/resources/skills-vendor/skills/home-assistant-best-practices/references/automation-patterns.md +0 -0
  50. {ha_mcp_dev-7.6.0.dev669 → ha_mcp_dev-7.6.0.dev671}/src/ha_mcp/resources/skills-vendor/skills/home-assistant-best-practices/references/dashboard-cards.md +0 -0
  51. {ha_mcp_dev-7.6.0.dev669 → ha_mcp_dev-7.6.0.dev671}/src/ha_mcp/resources/skills-vendor/skills/home-assistant-best-practices/references/dashboard-guide.md +0 -0
  52. {ha_mcp_dev-7.6.0.dev669 → ha_mcp_dev-7.6.0.dev671}/src/ha_mcp/resources/skills-vendor/skills/home-assistant-best-practices/references/device-control.md +0 -0
  53. {ha_mcp_dev-7.6.0.dev669 → ha_mcp_dev-7.6.0.dev671}/src/ha_mcp/resources/skills-vendor/skills/home-assistant-best-practices/references/domain-docs.md +0 -0
  54. {ha_mcp_dev-7.6.0.dev669 → ha_mcp_dev-7.6.0.dev671}/src/ha_mcp/resources/skills-vendor/skills/home-assistant-best-practices/references/examples.yaml +0 -0
  55. {ha_mcp_dev-7.6.0.dev669 → ha_mcp_dev-7.6.0.dev671}/src/ha_mcp/resources/skills-vendor/skills/home-assistant-best-practices/references/helper-selection.md +0 -0
  56. {ha_mcp_dev-7.6.0.dev669 → ha_mcp_dev-7.6.0.dev671}/src/ha_mcp/resources/skills-vendor/skills/home-assistant-best-practices/references/safe-refactoring.md +0 -0
  57. {ha_mcp_dev-7.6.0.dev669 → ha_mcp_dev-7.6.0.dev671}/src/ha_mcp/resources/skills-vendor/skills/home-assistant-best-practices/references/template-guidelines.md +0 -0
  58. {ha_mcp_dev-7.6.0.dev669 → ha_mcp_dev-7.6.0.dev671}/src/ha_mcp/resources/skills-vendor/skills/home-assistant-best-practices/references/yaml-only-integrations.md +0 -0
  59. {ha_mcp_dev-7.6.0.dev669 → ha_mcp_dev-7.6.0.dev671}/src/ha_mcp/server.py +0 -0
  60. {ha_mcp_dev-7.6.0.dev669 → ha_mcp_dev-7.6.0.dev671}/src/ha_mcp/settings.css +0 -0
  61. {ha_mcp_dev-7.6.0.dev669 → ha_mcp_dev-7.6.0.dev671}/src/ha_mcp/settings.js +0 -0
  62. {ha_mcp_dev-7.6.0.dev669 → ha_mcp_dev-7.6.0.dev671}/src/ha_mcp/settings_ui.py +0 -0
  63. {ha_mcp_dev-7.6.0.dev669 → ha_mcp_dev-7.6.0.dev671}/src/ha_mcp/smoke_test.py +0 -0
  64. {ha_mcp_dev-7.6.0.dev669 → ha_mcp_dev-7.6.0.dev671}/src/ha_mcp/stdio_settings_sidecar.py +0 -0
  65. {ha_mcp_dev-7.6.0.dev669 → ha_mcp_dev-7.6.0.dev671}/src/ha_mcp/tools/__init__.py +0 -0
  66. {ha_mcp_dev-7.6.0.dev669 → ha_mcp_dev-7.6.0.dev671}/src/ha_mcp/tools/auto_backup.py +0 -0
  67. {ha_mcp_dev-7.6.0.dev669 → ha_mcp_dev-7.6.0.dev671}/src/ha_mcp/tools/backup.py +0 -0
  68. {ha_mcp_dev-7.6.0.dev669 → ha_mcp_dev-7.6.0.dev671}/src/ha_mcp/tools/best_practice_checker.py +0 -0
  69. {ha_mcp_dev-7.6.0.dev669 → ha_mcp_dev-7.6.0.dev671}/src/ha_mcp/tools/device_control.py +0 -0
  70. {ha_mcp_dev-7.6.0.dev669 → ha_mcp_dev-7.6.0.dev671}/src/ha_mcp/tools/enhanced.py +0 -0
  71. {ha_mcp_dev-7.6.0.dev669 → ha_mcp_dev-7.6.0.dev671}/src/ha_mcp/tools/helpers.py +0 -0
  72. {ha_mcp_dev-7.6.0.dev669 → ha_mcp_dev-7.6.0.dev671}/src/ha_mcp/tools/reference_validator.py +0 -0
  73. {ha_mcp_dev-7.6.0.dev669 → ha_mcp_dev-7.6.0.dev671}/src/ha_mcp/tools/registry.py +0 -0
  74. {ha_mcp_dev-7.6.0.dev669 → ha_mcp_dev-7.6.0.dev671}/src/ha_mcp/tools/smart_search/__init__.py +0 -0
  75. {ha_mcp_dev-7.6.0.dev669 → ha_mcp_dev-7.6.0.dev671}/src/ha_mcp/tools/smart_search/_base.py +0 -0
  76. {ha_mcp_dev-7.6.0.dev669 → ha_mcp_dev-7.6.0.dev671}/src/ha_mcp/tools/smart_search/_config.py +0 -0
  77. {ha_mcp_dev-7.6.0.dev669 → ha_mcp_dev-7.6.0.dev671}/src/ha_mcp/tools/smart_search/_deep.py +0 -0
  78. {ha_mcp_dev-7.6.0.dev669 → ha_mcp_dev-7.6.0.dev671}/src/ha_mcp/tools/smart_search/_entities.py +0 -0
  79. {ha_mcp_dev-7.6.0.dev669 → ha_mcp_dev-7.6.0.dev671}/src/ha_mcp/tools/smart_search/_fetch.py +0 -0
  80. {ha_mcp_dev-7.6.0.dev669 → ha_mcp_dev-7.6.0.dev671}/src/ha_mcp/tools/smart_search/_overview.py +0 -0
  81. {ha_mcp_dev-7.6.0.dev669 → ha_mcp_dev-7.6.0.dev671}/src/ha_mcp/tools/smart_search/_scenes.py +0 -0
  82. {ha_mcp_dev-7.6.0.dev669 → ha_mcp_dev-7.6.0.dev671}/src/ha_mcp/tools/smart_search/_scoring.py +0 -0
  83. {ha_mcp_dev-7.6.0.dev669 → ha_mcp_dev-7.6.0.dev671}/src/ha_mcp/tools/tools_addons.py +0 -0
  84. {ha_mcp_dev-7.6.0.dev669 → ha_mcp_dev-7.6.0.dev671}/src/ha_mcp/tools/tools_areas.py +0 -0
  85. {ha_mcp_dev-7.6.0.dev669 → ha_mcp_dev-7.6.0.dev671}/src/ha_mcp/tools/tools_blueprints.py +0 -0
  86. {ha_mcp_dev-7.6.0.dev669 → ha_mcp_dev-7.6.0.dev671}/src/ha_mcp/tools/tools_bug_report.py +0 -0
  87. {ha_mcp_dev-7.6.0.dev669 → ha_mcp_dev-7.6.0.dev671}/src/ha_mcp/tools/tools_calendar.py +0 -0
  88. {ha_mcp_dev-7.6.0.dev669 → ha_mcp_dev-7.6.0.dev671}/src/ha_mcp/tools/tools_camera.py +0 -0
  89. {ha_mcp_dev-7.6.0.dev669 → ha_mcp_dev-7.6.0.dev671}/src/ha_mcp/tools/tools_categories.py +0 -0
  90. {ha_mcp_dev-7.6.0.dev669 → ha_mcp_dev-7.6.0.dev671}/src/ha_mcp/tools/tools_code.py +0 -0
  91. {ha_mcp_dev-7.6.0.dev669 → ha_mcp_dev-7.6.0.dev671}/src/ha_mcp/tools/tools_config_automations.py +0 -0
  92. {ha_mcp_dev-7.6.0.dev669 → ha_mcp_dev-7.6.0.dev671}/src/ha_mcp/tools/tools_config_dashboards.py +0 -0
  93. {ha_mcp_dev-7.6.0.dev669 → ha_mcp_dev-7.6.0.dev671}/src/ha_mcp/tools/tools_config_entry_flow.py +0 -0
  94. {ha_mcp_dev-7.6.0.dev669 → ha_mcp_dev-7.6.0.dev671}/src/ha_mcp/tools/tools_config_helpers.py +0 -0
  95. {ha_mcp_dev-7.6.0.dev669 → ha_mcp_dev-7.6.0.dev671}/src/ha_mcp/tools/tools_config_scenes.py +0 -0
  96. {ha_mcp_dev-7.6.0.dev669 → ha_mcp_dev-7.6.0.dev671}/src/ha_mcp/tools/tools_config_scripts.py +0 -0
  97. {ha_mcp_dev-7.6.0.dev669 → ha_mcp_dev-7.6.0.dev671}/src/ha_mcp/tools/tools_dashboard_screenshot.py +0 -0
  98. {ha_mcp_dev-7.6.0.dev669 → ha_mcp_dev-7.6.0.dev671}/src/ha_mcp/tools/tools_energy.py +0 -0
  99. {ha_mcp_dev-7.6.0.dev669 → ha_mcp_dev-7.6.0.dev671}/src/ha_mcp/tools/tools_entities.py +0 -0
  100. {ha_mcp_dev-7.6.0.dev669 → ha_mcp_dev-7.6.0.dev671}/src/ha_mcp/tools/tools_filesystem.py +0 -0
  101. {ha_mcp_dev-7.6.0.dev669 → ha_mcp_dev-7.6.0.dev671}/src/ha_mcp/tools/tools_groups.py +0 -0
  102. {ha_mcp_dev-7.6.0.dev669 → ha_mcp_dev-7.6.0.dev671}/src/ha_mcp/tools/tools_history.py +0 -0
  103. {ha_mcp_dev-7.6.0.dev669 → ha_mcp_dev-7.6.0.dev671}/src/ha_mcp/tools/tools_integrations.py +0 -0
  104. {ha_mcp_dev-7.6.0.dev669 → ha_mcp_dev-7.6.0.dev671}/src/ha_mcp/tools/tools_labels.py +0 -0
  105. {ha_mcp_dev-7.6.0.dev669 → ha_mcp_dev-7.6.0.dev671}/src/ha_mcp/tools/tools_mcp_component.py +0 -0
  106. {ha_mcp_dev-7.6.0.dev669 → ha_mcp_dev-7.6.0.dev671}/src/ha_mcp/tools/tools_registry.py +0 -0
  107. {ha_mcp_dev-7.6.0.dev669 → ha_mcp_dev-7.6.0.dev671}/src/ha_mcp/tools/tools_resources.py +0 -0
  108. {ha_mcp_dev-7.6.0.dev669 → ha_mcp_dev-7.6.0.dev671}/src/ha_mcp/tools/tools_search.py +0 -0
  109. {ha_mcp_dev-7.6.0.dev669 → ha_mcp_dev-7.6.0.dev671}/src/ha_mcp/tools/tools_services.py +0 -0
  110. {ha_mcp_dev-7.6.0.dev669 → ha_mcp_dev-7.6.0.dev671}/src/ha_mcp/tools/tools_system.py +0 -0
  111. {ha_mcp_dev-7.6.0.dev669 → ha_mcp_dev-7.6.0.dev671}/src/ha_mcp/tools/tools_todo.py +0 -0
  112. {ha_mcp_dev-7.6.0.dev669 → ha_mcp_dev-7.6.0.dev671}/src/ha_mcp/tools/tools_traces.py +0 -0
  113. {ha_mcp_dev-7.6.0.dev669 → ha_mcp_dev-7.6.0.dev671}/src/ha_mcp/tools/tools_updates.py +0 -0
  114. {ha_mcp_dev-7.6.0.dev669 → ha_mcp_dev-7.6.0.dev671}/src/ha_mcp/tools/tools_utility.py +0 -0
  115. {ha_mcp_dev-7.6.0.dev669 → ha_mcp_dev-7.6.0.dev671}/src/ha_mcp/tools/tools_voice_assistant.py +0 -0
  116. {ha_mcp_dev-7.6.0.dev669 → ha_mcp_dev-7.6.0.dev671}/src/ha_mcp/tools/tools_yaml_config.py +0 -0
  117. {ha_mcp_dev-7.6.0.dev669 → ha_mcp_dev-7.6.0.dev671}/src/ha_mcp/tools/tools_zones.py +0 -0
  118. {ha_mcp_dev-7.6.0.dev669 → ha_mcp_dev-7.6.0.dev671}/src/ha_mcp/tools/util_helpers.py +0 -0
  119. {ha_mcp_dev-7.6.0.dev669 → ha_mcp_dev-7.6.0.dev671}/src/ha_mcp/tools/validation_middleware.py +0 -0
  120. {ha_mcp_dev-7.6.0.dev669 → ha_mcp_dev-7.6.0.dev671}/src/ha_mcp/transforms/__init__.py +0 -0
  121. {ha_mcp_dev-7.6.0.dev669 → ha_mcp_dev-7.6.0.dev671}/src/ha_mcp/transforms/categorized_search.py +0 -0
  122. {ha_mcp_dev-7.6.0.dev669 → ha_mcp_dev-7.6.0.dev671}/src/ha_mcp/transforms/lite_docstrings.py +0 -0
  123. {ha_mcp_dev-7.6.0.dev669 → ha_mcp_dev-7.6.0.dev671}/src/ha_mcp/utils/__init__.py +0 -0
  124. {ha_mcp_dev-7.6.0.dev669 → ha_mcp_dev-7.6.0.dev671}/src/ha_mcp/utils/config_hash.py +0 -0
  125. {ha_mcp_dev-7.6.0.dev669 → ha_mcp_dev-7.6.0.dev671}/src/ha_mcp/utils/data_paths.py +0 -0
  126. {ha_mcp_dev-7.6.0.dev669 → ha_mcp_dev-7.6.0.dev671}/src/ha_mcp/utils/domain_handlers.py +0 -0
  127. {ha_mcp_dev-7.6.0.dev669 → ha_mcp_dev-7.6.0.dev671}/src/ha_mcp/utils/fuzzy_search.py +0 -0
  128. {ha_mcp_dev-7.6.0.dev669 → ha_mcp_dev-7.6.0.dev671}/src/ha_mcp/utils/kill_signal_diagnostics.py +0 -0
  129. {ha_mcp_dev-7.6.0.dev669 → ha_mcp_dev-7.6.0.dev671}/src/ha_mcp/utils/operation_manager.py +0 -0
  130. {ha_mcp_dev-7.6.0.dev669 → ha_mcp_dev-7.6.0.dev671}/src/ha_mcp/utils/python_sandbox.py +0 -0
  131. {ha_mcp_dev-7.6.0.dev669 → ha_mcp_dev-7.6.0.dev671}/src/ha_mcp/utils/skill_loader.py +0 -0
  132. {ha_mcp_dev-7.6.0.dev669 → ha_mcp_dev-7.6.0.dev671}/src/ha_mcp/utils/usage_logger.py +0 -0
  133. {ha_mcp_dev-7.6.0.dev669 → ha_mcp_dev-7.6.0.dev671}/src/ha_mcp_dev.egg-info/SOURCES.txt +0 -0
  134. {ha_mcp_dev-7.6.0.dev669 → ha_mcp_dev-7.6.0.dev671}/src/ha_mcp_dev.egg-info/dependency_links.txt +0 -0
  135. {ha_mcp_dev-7.6.0.dev669 → ha_mcp_dev-7.6.0.dev671}/src/ha_mcp_dev.egg-info/entry_points.txt +0 -0
  136. {ha_mcp_dev-7.6.0.dev669 → ha_mcp_dev-7.6.0.dev671}/src/ha_mcp_dev.egg-info/requires.txt +0 -0
  137. {ha_mcp_dev-7.6.0.dev669 → ha_mcp_dev-7.6.0.dev671}/src/ha_mcp_dev.egg-info/top_level.txt +0 -0
  138. {ha_mcp_dev-7.6.0.dev669 → ha_mcp_dev-7.6.0.dev671}/tests/__init__.py +0 -0
  139. {ha_mcp_dev-7.6.0.dev669 → ha_mcp_dev-7.6.0.dev671}/tests/test_constants.py +0 -0
  140. {ha_mcp_dev-7.6.0.dev669 → ha_mcp_dev-7.6.0.dev671}/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: 7.6.0.dev669
3
+ Version: 7.6.0.dev671
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 = "7.6.0.dev669"
7
+ version = "7.6.0.dev671"
8
8
  description = "Home Assistant MCP Server - Complete control of Home Assistant through MCP"
9
9
  readme = "README.md"
10
10
  requires-python = ">=3.13,<3.14"
@@ -704,6 +704,21 @@ HACS_REPO_BACKSTOP_POLL_INTERVAL = 5.0
704
704
  # 30 s resolve budget does not apply here.
705
705
  HACS_ADD_REGISTRATION_TIMEOUT = 10.0
706
706
 
707
+ # Wall-clock budget for ``_resolve_hacs_repo_id`` (the ``owner/repo`` lookup
708
+ # behind read-only ``ha_get_hacs_info(action="info")`` and
709
+ # ``ha_manage_hacs(action="download")``). Unlike ``ha_install_mcp_tools`` —
710
+ # which adds a repo and then waits the full ``HACS_REPO_REGISTRATION_TIMEOUT``
711
+ # for that fresh registration to land — a plain info/download lookup targets a
712
+ # repo that should ALREADY be in HACS's index: default repos always are, and
713
+ # ``add_repository`` blocks until registration is confirmed before returning.
714
+ # So the post-subscribe sample resolves an existing repo instantly, and the
715
+ # dispatch-signal wait only ever burns wall-clock when the repo is genuinely
716
+ # absent. The old 30 s budget made every not-found lookup a 30 s stall (the
717
+ # dominant cost in the HAOS E2E suite per #1515); 10 s still leaves event-driven
718
+ # headroom for the rare mid-registration race while failing a genuinely-missing
719
+ # lookup ~3x faster.
720
+ HACS_RESOLVE_REGISTRATION_TIMEOUT = 10.0
721
+
707
722
 
708
723
  async def _find_repo_in_list_by_full_name(
709
724
  ws_client: Any, full_name_lower: str
@@ -919,7 +934,9 @@ async def _resolve_hacs_repo_id(ws_client: Any, repository_id: str) -> tuple[str
919
934
  if "/" not in repository_id:
920
935
  return repository_id, repository_id
921
936
 
922
- repo = await wait_for_repo_registration(ws_client, repository_id)
937
+ repo = await wait_for_repo_registration(
938
+ ws_client, repository_id, timeout=HACS_RESOLVE_REGISTRATION_TIMEOUT
939
+ )
923
940
 
924
941
  if repo is not None:
925
942
  return str(repo.get("id")), repo.get("name") or repository_id
@@ -93,10 +93,16 @@ _STATE_CHANGING_SERVICES = {
93
93
  "media_stop",
94
94
  }
95
95
 
96
- # Domains where service calls don't produce entity state changes
96
+ # Domains where a service call does not move the TARGET entity's own primary
97
+ # state to a value the verifier can wait for. ``scene`` belongs here with
98
+ # ``automation``/``script``: activating a scene changes the member entities,
99
+ # but the scene entity's own state is a last-activated timestamp that never
100
+ # becomes "on"/"off" — so waiting for ``turn_on`` -> "on" always times out and
101
+ # only appends a spurious "could not be verified" warning (~10s wasted).
97
102
  _NON_STATE_CHANGING_DOMAINS = {
98
103
  "automation",
99
104
  "script",
105
+ "scene",
100
106
  "homeassistant",
101
107
  "notify",
102
108
  "tts",
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: ha-mcp-dev
3
- Version: 7.6.0.dev669
3
+ Version: 7.6.0.dev671
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