ha-mcp-dev 7.6.0.dev656__tar.gz → 7.6.0.dev658__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.dev656/src/ha_mcp_dev.egg-info → ha_mcp_dev-7.6.0.dev658}/PKG-INFO +1 -1
  2. {ha_mcp_dev-7.6.0.dev656 → ha_mcp_dev-7.6.0.dev658}/pyproject.toml +1 -1
  3. {ha_mcp_dev-7.6.0.dev656 → ha_mcp_dev-7.6.0.dev658}/src/ha_mcp/tools/tools_config_automations.py +28 -7
  4. {ha_mcp_dev-7.6.0.dev656 → ha_mcp_dev-7.6.0.dev658}/src/ha_mcp/tools/tools_config_scripts.py +4 -4
  5. {ha_mcp_dev-7.6.0.dev656 → ha_mcp_dev-7.6.0.dev658/src/ha_mcp_dev.egg-info}/PKG-INFO +1 -1
  6. {ha_mcp_dev-7.6.0.dev656 → ha_mcp_dev-7.6.0.dev658}/LICENSE +0 -0
  7. {ha_mcp_dev-7.6.0.dev656 → ha_mcp_dev-7.6.0.dev658}/MANIFEST.in +0 -0
  8. {ha_mcp_dev-7.6.0.dev656 → ha_mcp_dev-7.6.0.dev658}/README.md +0 -0
  9. {ha_mcp_dev-7.6.0.dev656 → ha_mcp_dev-7.6.0.dev658}/setup.cfg +0 -0
  10. {ha_mcp_dev-7.6.0.dev656 → ha_mcp_dev-7.6.0.dev658}/src/ha_mcp/__init__.py +0 -0
  11. {ha_mcp_dev-7.6.0.dev656 → ha_mcp_dev-7.6.0.dev658}/src/ha_mcp/__main__.py +0 -0
  12. {ha_mcp_dev-7.6.0.dev656 → ha_mcp_dev-7.6.0.dev658}/src/ha_mcp/_pypi_marker +0 -0
  13. {ha_mcp_dev-7.6.0.dev656 → ha_mcp_dev-7.6.0.dev658}/src/ha_mcp/_version.py +0 -0
  14. {ha_mcp_dev-7.6.0.dev656 → ha_mcp_dev-7.6.0.dev658}/src/ha_mcp/auth/__init__.py +0 -0
  15. {ha_mcp_dev-7.6.0.dev656 → ha_mcp_dev-7.6.0.dev658}/src/ha_mcp/auth/consent_form.py +0 -0
  16. {ha_mcp_dev-7.6.0.dev656 → ha_mcp_dev-7.6.0.dev658}/src/ha_mcp/auth/provider.py +0 -0
  17. {ha_mcp_dev-7.6.0.dev656 → ha_mcp_dev-7.6.0.dev658}/src/ha_mcp/backup_manager.py +0 -0
  18. {ha_mcp_dev-7.6.0.dev656 → ha_mcp_dev-7.6.0.dev658}/src/ha_mcp/client/__init__.py +0 -0
  19. {ha_mcp_dev-7.6.0.dev656 → ha_mcp_dev-7.6.0.dev658}/src/ha_mcp/client/rest_client.py +0 -0
  20. {ha_mcp_dev-7.6.0.dev656 → ha_mcp_dev-7.6.0.dev658}/src/ha_mcp/client/supervisor_client.py +0 -0
  21. {ha_mcp_dev-7.6.0.dev656 → ha_mcp_dev-7.6.0.dev658}/src/ha_mcp/client/websocket_client.py +0 -0
  22. {ha_mcp_dev-7.6.0.dev656 → ha_mcp_dev-7.6.0.dev658}/src/ha_mcp/client/websocket_listener.py +0 -0
  23. {ha_mcp_dev-7.6.0.dev656 → ha_mcp_dev-7.6.0.dev658}/src/ha_mcp/config.py +0 -0
  24. {ha_mcp_dev-7.6.0.dev656 → ha_mcp_dev-7.6.0.dev658}/src/ha_mcp/dashboard_screenshot/__init__.py +0 -0
  25. {ha_mcp_dev-7.6.0.dev656 → ha_mcp_dev-7.6.0.dev658}/src/ha_mcp/dashboard_screenshot/capture.py +0 -0
  26. {ha_mcp_dev-7.6.0.dev656 → ha_mcp_dev-7.6.0.dev658}/src/ha_mcp/dashboard_screenshot/provision.py +0 -0
  27. {ha_mcp_dev-7.6.0.dev656 → ha_mcp_dev-7.6.0.dev658}/src/ha_mcp/errors.py +0 -0
  28. {ha_mcp_dev-7.6.0.dev656 → ha_mcp_dev-7.6.0.dev658}/src/ha_mcp/policy/__init__.py +0 -0
  29. {ha_mcp_dev-7.6.0.dev656 → ha_mcp_dev-7.6.0.dev658}/src/ha_mcp/policy/approval_queue.py +0 -0
  30. {ha_mcp_dev-7.6.0.dev656 → ha_mcp_dev-7.6.0.dev658}/src/ha_mcp/policy/evaluator.py +0 -0
  31. {ha_mcp_dev-7.6.0.dev656 → ha_mcp_dev-7.6.0.dev658}/src/ha_mcp/policy/handlers.py +0 -0
  32. {ha_mcp_dev-7.6.0.dev656 → ha_mcp_dev-7.6.0.dev658}/src/ha_mcp/policy/middleware.py +0 -0
  33. {ha_mcp_dev-7.6.0.dev656 → ha_mcp_dev-7.6.0.dev658}/src/ha_mcp/policy/model.py +0 -0
  34. {ha_mcp_dev-7.6.0.dev656 → ha_mcp_dev-7.6.0.dev658}/src/ha_mcp/policy/persistence.py +0 -0
  35. {ha_mcp_dev-7.6.0.dev656 → ha_mcp_dev-7.6.0.dev658}/src/ha_mcp/policy/value_sources.py +0 -0
  36. {ha_mcp_dev-7.6.0.dev656 → ha_mcp_dev-7.6.0.dev658}/src/ha_mcp/py.typed +0 -0
  37. {ha_mcp_dev-7.6.0.dev656 → ha_mcp_dev-7.6.0.dev658}/src/ha_mcp/resources/skills-vendor/.claude/settings.json +0 -0
  38. {ha_mcp_dev-7.6.0.dev656 → ha_mcp_dev-7.6.0.dev658}/src/ha_mcp/resources/skills-vendor/.claude-plugin/marketplace.json +0 -0
  39. {ha_mcp_dev-7.6.0.dev656 → ha_mcp_dev-7.6.0.dev658}/src/ha_mcp/resources/skills-vendor/.claude-plugin/plugin.json +0 -0
  40. {ha_mcp_dev-7.6.0.dev656 → ha_mcp_dev-7.6.0.dev658}/src/ha_mcp/resources/skills-vendor/.github/ISSUE_TEMPLATE/skill-rca.md +0 -0
  41. {ha_mcp_dev-7.6.0.dev656 → ha_mcp_dev-7.6.0.dev658}/src/ha_mcp/resources/skills-vendor/.github/pull_request_template.md +0 -0
  42. {ha_mcp_dev-7.6.0.dev656 → ha_mcp_dev-7.6.0.dev658}/src/ha_mcp/resources/skills-vendor/AGENTS.md +0 -0
  43. {ha_mcp_dev-7.6.0.dev656 → ha_mcp_dev-7.6.0.dev658}/src/ha_mcp/resources/skills-vendor/CLAUDE.md +0 -0
  44. {ha_mcp_dev-7.6.0.dev656 → ha_mcp_dev-7.6.0.dev658}/src/ha_mcp/resources/skills-vendor/CONTRIBUTING.md +0 -0
  45. {ha_mcp_dev-7.6.0.dev656 → ha_mcp_dev-7.6.0.dev658}/src/ha_mcp/resources/skills-vendor/LICENSE +0 -0
  46. {ha_mcp_dev-7.6.0.dev656 → ha_mcp_dev-7.6.0.dev658}/src/ha_mcp/resources/skills-vendor/README.md +0 -0
  47. {ha_mcp_dev-7.6.0.dev656 → ha_mcp_dev-7.6.0.dev658}/src/ha_mcp/resources/skills-vendor/skills/home-assistant-best-practices/SKILL.md +0 -0
  48. {ha_mcp_dev-7.6.0.dev656 → ha_mcp_dev-7.6.0.dev658}/src/ha_mcp/resources/skills-vendor/skills/home-assistant-best-practices/evals/evals.json +0 -0
  49. {ha_mcp_dev-7.6.0.dev656 → ha_mcp_dev-7.6.0.dev658}/src/ha_mcp/resources/skills-vendor/skills/home-assistant-best-practices/references/automation-patterns.md +0 -0
  50. {ha_mcp_dev-7.6.0.dev656 → ha_mcp_dev-7.6.0.dev658}/src/ha_mcp/resources/skills-vendor/skills/home-assistant-best-practices/references/dashboard-cards.md +0 -0
  51. {ha_mcp_dev-7.6.0.dev656 → ha_mcp_dev-7.6.0.dev658}/src/ha_mcp/resources/skills-vendor/skills/home-assistant-best-practices/references/dashboard-guide.md +0 -0
  52. {ha_mcp_dev-7.6.0.dev656 → ha_mcp_dev-7.6.0.dev658}/src/ha_mcp/resources/skills-vendor/skills/home-assistant-best-practices/references/device-control.md +0 -0
  53. {ha_mcp_dev-7.6.0.dev656 → ha_mcp_dev-7.6.0.dev658}/src/ha_mcp/resources/skills-vendor/skills/home-assistant-best-practices/references/domain-docs.md +0 -0
  54. {ha_mcp_dev-7.6.0.dev656 → ha_mcp_dev-7.6.0.dev658}/src/ha_mcp/resources/skills-vendor/skills/home-assistant-best-practices/references/examples.yaml +0 -0
  55. {ha_mcp_dev-7.6.0.dev656 → ha_mcp_dev-7.6.0.dev658}/src/ha_mcp/resources/skills-vendor/skills/home-assistant-best-practices/references/helper-selection.md +0 -0
  56. {ha_mcp_dev-7.6.0.dev656 → ha_mcp_dev-7.6.0.dev658}/src/ha_mcp/resources/skills-vendor/skills/home-assistant-best-practices/references/safe-refactoring.md +0 -0
  57. {ha_mcp_dev-7.6.0.dev656 → ha_mcp_dev-7.6.0.dev658}/src/ha_mcp/resources/skills-vendor/skills/home-assistant-best-practices/references/template-guidelines.md +0 -0
  58. {ha_mcp_dev-7.6.0.dev656 → ha_mcp_dev-7.6.0.dev658}/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.dev656 → ha_mcp_dev-7.6.0.dev658}/src/ha_mcp/server.py +0 -0
  60. {ha_mcp_dev-7.6.0.dev656 → ha_mcp_dev-7.6.0.dev658}/src/ha_mcp/settings.css +0 -0
  61. {ha_mcp_dev-7.6.0.dev656 → ha_mcp_dev-7.6.0.dev658}/src/ha_mcp/settings.js +0 -0
  62. {ha_mcp_dev-7.6.0.dev656 → ha_mcp_dev-7.6.0.dev658}/src/ha_mcp/settings_ui.py +0 -0
  63. {ha_mcp_dev-7.6.0.dev656 → ha_mcp_dev-7.6.0.dev658}/src/ha_mcp/smoke_test.py +0 -0
  64. {ha_mcp_dev-7.6.0.dev656 → ha_mcp_dev-7.6.0.dev658}/src/ha_mcp/stdio_settings_sidecar.py +0 -0
  65. {ha_mcp_dev-7.6.0.dev656 → ha_mcp_dev-7.6.0.dev658}/src/ha_mcp/tools/__init__.py +0 -0
  66. {ha_mcp_dev-7.6.0.dev656 → ha_mcp_dev-7.6.0.dev658}/src/ha_mcp/tools/auto_backup.py +0 -0
  67. {ha_mcp_dev-7.6.0.dev656 → ha_mcp_dev-7.6.0.dev658}/src/ha_mcp/tools/backup.py +0 -0
  68. {ha_mcp_dev-7.6.0.dev656 → ha_mcp_dev-7.6.0.dev658}/src/ha_mcp/tools/best_practice_checker.py +0 -0
  69. {ha_mcp_dev-7.6.0.dev656 → ha_mcp_dev-7.6.0.dev658}/src/ha_mcp/tools/device_control.py +0 -0
  70. {ha_mcp_dev-7.6.0.dev656 → ha_mcp_dev-7.6.0.dev658}/src/ha_mcp/tools/enhanced.py +0 -0
  71. {ha_mcp_dev-7.6.0.dev656 → ha_mcp_dev-7.6.0.dev658}/src/ha_mcp/tools/helpers.py +0 -0
  72. {ha_mcp_dev-7.6.0.dev656 → ha_mcp_dev-7.6.0.dev658}/src/ha_mcp/tools/reference_validator.py +0 -0
  73. {ha_mcp_dev-7.6.0.dev656 → ha_mcp_dev-7.6.0.dev658}/src/ha_mcp/tools/registry.py +0 -0
  74. {ha_mcp_dev-7.6.0.dev656 → ha_mcp_dev-7.6.0.dev658}/src/ha_mcp/tools/smart_search/__init__.py +0 -0
  75. {ha_mcp_dev-7.6.0.dev656 → ha_mcp_dev-7.6.0.dev658}/src/ha_mcp/tools/smart_search/_base.py +0 -0
  76. {ha_mcp_dev-7.6.0.dev656 → ha_mcp_dev-7.6.0.dev658}/src/ha_mcp/tools/smart_search/_config.py +0 -0
  77. {ha_mcp_dev-7.6.0.dev656 → ha_mcp_dev-7.6.0.dev658}/src/ha_mcp/tools/smart_search/_deep.py +0 -0
  78. {ha_mcp_dev-7.6.0.dev656 → ha_mcp_dev-7.6.0.dev658}/src/ha_mcp/tools/smart_search/_entities.py +0 -0
  79. {ha_mcp_dev-7.6.0.dev656 → ha_mcp_dev-7.6.0.dev658}/src/ha_mcp/tools/smart_search/_fetch.py +0 -0
  80. {ha_mcp_dev-7.6.0.dev656 → ha_mcp_dev-7.6.0.dev658}/src/ha_mcp/tools/smart_search/_overview.py +0 -0
  81. {ha_mcp_dev-7.6.0.dev656 → ha_mcp_dev-7.6.0.dev658}/src/ha_mcp/tools/smart_search/_scenes.py +0 -0
  82. {ha_mcp_dev-7.6.0.dev656 → ha_mcp_dev-7.6.0.dev658}/src/ha_mcp/tools/smart_search/_scoring.py +0 -0
  83. {ha_mcp_dev-7.6.0.dev656 → ha_mcp_dev-7.6.0.dev658}/src/ha_mcp/tools/tools_addons.py +0 -0
  84. {ha_mcp_dev-7.6.0.dev656 → ha_mcp_dev-7.6.0.dev658}/src/ha_mcp/tools/tools_areas.py +0 -0
  85. {ha_mcp_dev-7.6.0.dev656 → ha_mcp_dev-7.6.0.dev658}/src/ha_mcp/tools/tools_blueprints.py +0 -0
  86. {ha_mcp_dev-7.6.0.dev656 → ha_mcp_dev-7.6.0.dev658}/src/ha_mcp/tools/tools_bug_report.py +0 -0
  87. {ha_mcp_dev-7.6.0.dev656 → ha_mcp_dev-7.6.0.dev658}/src/ha_mcp/tools/tools_calendar.py +0 -0
  88. {ha_mcp_dev-7.6.0.dev656 → ha_mcp_dev-7.6.0.dev658}/src/ha_mcp/tools/tools_camera.py +0 -0
  89. {ha_mcp_dev-7.6.0.dev656 → ha_mcp_dev-7.6.0.dev658}/src/ha_mcp/tools/tools_categories.py +0 -0
  90. {ha_mcp_dev-7.6.0.dev656 → ha_mcp_dev-7.6.0.dev658}/src/ha_mcp/tools/tools_code.py +0 -0
  91. {ha_mcp_dev-7.6.0.dev656 → ha_mcp_dev-7.6.0.dev658}/src/ha_mcp/tools/tools_config_dashboards.py +0 -0
  92. {ha_mcp_dev-7.6.0.dev656 → ha_mcp_dev-7.6.0.dev658}/src/ha_mcp/tools/tools_config_entry_flow.py +0 -0
  93. {ha_mcp_dev-7.6.0.dev656 → ha_mcp_dev-7.6.0.dev658}/src/ha_mcp/tools/tools_config_helpers.py +0 -0
  94. {ha_mcp_dev-7.6.0.dev656 → ha_mcp_dev-7.6.0.dev658}/src/ha_mcp/tools/tools_config_scenes.py +0 -0
  95. {ha_mcp_dev-7.6.0.dev656 → ha_mcp_dev-7.6.0.dev658}/src/ha_mcp/tools/tools_dashboard_screenshot.py +0 -0
  96. {ha_mcp_dev-7.6.0.dev656 → ha_mcp_dev-7.6.0.dev658}/src/ha_mcp/tools/tools_energy.py +0 -0
  97. {ha_mcp_dev-7.6.0.dev656 → ha_mcp_dev-7.6.0.dev658}/src/ha_mcp/tools/tools_entities.py +0 -0
  98. {ha_mcp_dev-7.6.0.dev656 → ha_mcp_dev-7.6.0.dev658}/src/ha_mcp/tools/tools_filesystem.py +0 -0
  99. {ha_mcp_dev-7.6.0.dev656 → ha_mcp_dev-7.6.0.dev658}/src/ha_mcp/tools/tools_groups.py +0 -0
  100. {ha_mcp_dev-7.6.0.dev656 → ha_mcp_dev-7.6.0.dev658}/src/ha_mcp/tools/tools_hacs.py +0 -0
  101. {ha_mcp_dev-7.6.0.dev656 → ha_mcp_dev-7.6.0.dev658}/src/ha_mcp/tools/tools_history.py +0 -0
  102. {ha_mcp_dev-7.6.0.dev656 → ha_mcp_dev-7.6.0.dev658}/src/ha_mcp/tools/tools_integrations.py +0 -0
  103. {ha_mcp_dev-7.6.0.dev656 → ha_mcp_dev-7.6.0.dev658}/src/ha_mcp/tools/tools_labels.py +0 -0
  104. {ha_mcp_dev-7.6.0.dev656 → ha_mcp_dev-7.6.0.dev658}/src/ha_mcp/tools/tools_mcp_component.py +0 -0
  105. {ha_mcp_dev-7.6.0.dev656 → ha_mcp_dev-7.6.0.dev658}/src/ha_mcp/tools/tools_registry.py +0 -0
  106. {ha_mcp_dev-7.6.0.dev656 → ha_mcp_dev-7.6.0.dev658}/src/ha_mcp/tools/tools_resources.py +0 -0
  107. {ha_mcp_dev-7.6.0.dev656 → ha_mcp_dev-7.6.0.dev658}/src/ha_mcp/tools/tools_search.py +0 -0
  108. {ha_mcp_dev-7.6.0.dev656 → ha_mcp_dev-7.6.0.dev658}/src/ha_mcp/tools/tools_service.py +0 -0
  109. {ha_mcp_dev-7.6.0.dev656 → ha_mcp_dev-7.6.0.dev658}/src/ha_mcp/tools/tools_services.py +0 -0
  110. {ha_mcp_dev-7.6.0.dev656 → ha_mcp_dev-7.6.0.dev658}/src/ha_mcp/tools/tools_system.py +0 -0
  111. {ha_mcp_dev-7.6.0.dev656 → ha_mcp_dev-7.6.0.dev658}/src/ha_mcp/tools/tools_todo.py +0 -0
  112. {ha_mcp_dev-7.6.0.dev656 → ha_mcp_dev-7.6.0.dev658}/src/ha_mcp/tools/tools_traces.py +0 -0
  113. {ha_mcp_dev-7.6.0.dev656 → ha_mcp_dev-7.6.0.dev658}/src/ha_mcp/tools/tools_updates.py +0 -0
  114. {ha_mcp_dev-7.6.0.dev656 → ha_mcp_dev-7.6.0.dev658}/src/ha_mcp/tools/tools_utility.py +0 -0
  115. {ha_mcp_dev-7.6.0.dev656 → ha_mcp_dev-7.6.0.dev658}/src/ha_mcp/tools/tools_voice_assistant.py +0 -0
  116. {ha_mcp_dev-7.6.0.dev656 → ha_mcp_dev-7.6.0.dev658}/src/ha_mcp/tools/tools_yaml_config.py +0 -0
  117. {ha_mcp_dev-7.6.0.dev656 → ha_mcp_dev-7.6.0.dev658}/src/ha_mcp/tools/tools_zones.py +0 -0
  118. {ha_mcp_dev-7.6.0.dev656 → ha_mcp_dev-7.6.0.dev658}/src/ha_mcp/tools/util_helpers.py +0 -0
  119. {ha_mcp_dev-7.6.0.dev656 → ha_mcp_dev-7.6.0.dev658}/src/ha_mcp/tools/validation_middleware.py +0 -0
  120. {ha_mcp_dev-7.6.0.dev656 → ha_mcp_dev-7.6.0.dev658}/src/ha_mcp/transforms/__init__.py +0 -0
  121. {ha_mcp_dev-7.6.0.dev656 → ha_mcp_dev-7.6.0.dev658}/src/ha_mcp/transforms/categorized_search.py +0 -0
  122. {ha_mcp_dev-7.6.0.dev656 → ha_mcp_dev-7.6.0.dev658}/src/ha_mcp/transforms/lite_docstrings.py +0 -0
  123. {ha_mcp_dev-7.6.0.dev656 → ha_mcp_dev-7.6.0.dev658}/src/ha_mcp/utils/__init__.py +0 -0
  124. {ha_mcp_dev-7.6.0.dev656 → ha_mcp_dev-7.6.0.dev658}/src/ha_mcp/utils/config_hash.py +0 -0
  125. {ha_mcp_dev-7.6.0.dev656 → ha_mcp_dev-7.6.0.dev658}/src/ha_mcp/utils/data_paths.py +0 -0
  126. {ha_mcp_dev-7.6.0.dev656 → ha_mcp_dev-7.6.0.dev658}/src/ha_mcp/utils/domain_handlers.py +0 -0
  127. {ha_mcp_dev-7.6.0.dev656 → ha_mcp_dev-7.6.0.dev658}/src/ha_mcp/utils/fuzzy_search.py +0 -0
  128. {ha_mcp_dev-7.6.0.dev656 → ha_mcp_dev-7.6.0.dev658}/src/ha_mcp/utils/kill_signal_diagnostics.py +0 -0
  129. {ha_mcp_dev-7.6.0.dev656 → ha_mcp_dev-7.6.0.dev658}/src/ha_mcp/utils/operation_manager.py +0 -0
  130. {ha_mcp_dev-7.6.0.dev656 → ha_mcp_dev-7.6.0.dev658}/src/ha_mcp/utils/python_sandbox.py +0 -0
  131. {ha_mcp_dev-7.6.0.dev656 → ha_mcp_dev-7.6.0.dev658}/src/ha_mcp/utils/skill_loader.py +0 -0
  132. {ha_mcp_dev-7.6.0.dev656 → ha_mcp_dev-7.6.0.dev658}/src/ha_mcp/utils/usage_logger.py +0 -0
  133. {ha_mcp_dev-7.6.0.dev656 → ha_mcp_dev-7.6.0.dev658}/src/ha_mcp_dev.egg-info/SOURCES.txt +0 -0
  134. {ha_mcp_dev-7.6.0.dev656 → ha_mcp_dev-7.6.0.dev658}/src/ha_mcp_dev.egg-info/dependency_links.txt +0 -0
  135. {ha_mcp_dev-7.6.0.dev656 → ha_mcp_dev-7.6.0.dev658}/src/ha_mcp_dev.egg-info/entry_points.txt +0 -0
  136. {ha_mcp_dev-7.6.0.dev656 → ha_mcp_dev-7.6.0.dev658}/src/ha_mcp_dev.egg-info/requires.txt +0 -0
  137. {ha_mcp_dev-7.6.0.dev656 → ha_mcp_dev-7.6.0.dev658}/src/ha_mcp_dev.egg-info/top_level.txt +0 -0
  138. {ha_mcp_dev-7.6.0.dev656 → ha_mcp_dev-7.6.0.dev658}/tests/__init__.py +0 -0
  139. {ha_mcp_dev-7.6.0.dev656 → ha_mcp_dev-7.6.0.dev658}/tests/test_constants.py +0 -0
  140. {ha_mcp_dev-7.6.0.dev656 → ha_mcp_dev-7.6.0.dev658}/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.dev656
3
+ Version: 7.6.0.dev658
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.dev656"
7
+ version = "7.6.0.dev658"
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"
@@ -566,7 +566,7 @@ class AutomationConfigTools:
566
566
  "alias": "Morning Lights",
567
567
  "description": "Turn on bedroom lights at 7 AM to help wake up",
568
568
  "trigger": [{"platform": "time", "at": "07:00:00"}],
569
- "action": [{"service": "light.turn_on", "target": {"area_id": "bedroom"}}]
569
+ "action": [{"action": "light.turn_on", "target": {"area_id": "bedroom"}}]
570
570
  })
571
571
 
572
572
  Motion-activated lighting — `for:` on the off-transition replaces action-delay:
@@ -583,9 +583,9 @@ class AutomationConfigTools:
583
583
  {"condition": "trigger", "id": "motion_on"},
584
584
  {"condition": "sun", "after": "sunset"}
585
585
  ],
586
- "sequence": [{"service": "light.turn_on", "target": {"entity_id": "light.hallway"}}]},
586
+ "sequence": [{"action": "light.turn_on", "target": {"entity_id": "light.hallway"}}]},
587
587
  {"conditions": [{"condition": "trigger", "id": "motion_off"}],
588
- "sequence": [{"service": "light.turn_off", "target": {"entity_id": "light.hallway"}}]}
588
+ "sequence": [{"action": "light.turn_off", "target": {"entity_id": "light.hallway"}}]}
589
589
  ]}
590
590
  ]
591
591
  })
@@ -597,8 +597,8 @@ class AutomationConfigTools:
597
597
  "alias": "Updated Morning Routine",
598
598
  "trigger": [{"platform": "time", "at": "06:30:00"}],
599
599
  "action": [
600
- {"service": "light.turn_on", "target": {"area_id": "bedroom"}},
601
- {"service": "climate.set_temperature", "target": {"entity_id": "climate.bedroom"}, "data": {"temperature": 22}}
600
+ {"action": "light.turn_on", "target": {"area_id": "bedroom"}},
601
+ {"action": "climate.set_temperature", "target": {"entity_id": "climate.bedroom"}, "data": {"temperature": 22}}
602
602
  ]
603
603
  }
604
604
  )
@@ -636,7 +636,7 @@ class AutomationConfigTools:
636
636
 
637
637
  TRIGGER TYPES: time, time_pattern, sun, state, numeric_state, event, device, zone, template, and more
638
638
  CONDITION TYPES: state, numeric_state, time, sun, template, device, zone, and more
639
- ACTION TYPES: service calls, delays, wait_for_trigger, wait_template, if/then/else, choose, repeat, parallel
639
+ ACTION TYPES: action calls, delays, wait_for_trigger, wait_template, if/then/else, choose, repeat, parallel
640
640
 
641
641
  For comprehensive automation documentation with all trigger/condition/action types and advanced examples:
642
642
  - Use: ha_get_skill_guide
@@ -747,13 +747,34 @@ class AutomationConfigTools:
747
747
  and e.status_code == 404
748
748
  ):
749
749
  await self._raise_automation_not_found(identifier)
750
+ error_text = str(e)
750
751
  suggestions = [
751
752
  "Check automation configuration format",
752
753
  "Ensure required fields: alias, trigger, action",
753
754
  "Use entity_id format: automation.morning_routine or unique_id",
754
755
  "Use ha_search_entities(domain_filter='automation') to find automations",
755
- "Use ha_get_skill_guide for help",
756
+ "Use ha_get_skill_guide for automation examples",
756
757
  ]
758
+ if isinstance(e, HomeAssistantAPIError):
759
+ if "'service'" in error_text and "not allowed" in error_text:
760
+ suggestions.insert(
761
+ 0,
762
+ "Use 'action:' not 'service:' for service calls in action steps "
763
+ "(renamed in HA 2024.8).",
764
+ )
765
+ elif "unexpected keyword argument" in error_text.lower():
766
+ suggestions.insert(
767
+ 0,
768
+ "An action step contains a field that belongs at the automation root "
769
+ "(e.g. alias, trigger, condition). Each action step should only contain "
770
+ "action/target/data/delay/choose/if/repeat/parallel keys.",
771
+ )
772
+ elif "'variables'" in error_text and "dictionary" in error_text:
773
+ suggestions.insert(
774
+ 0,
775
+ "variables must be a dict mapping names to values, "
776
+ 'e.g. {"variables": {"my_var": 42}}',
777
+ )
757
778
  if bp_warnings:
758
779
  suggestions.append(
759
780
  "Config had best-practice issues that may be related: "
@@ -512,9 +512,9 @@ class ConfigScriptTools:
512
512
  Create service call script:
513
513
  ha_config_set_script(script_id="blink_light", config={
514
514
  "sequence": [
515
- {"service": "light.turn_on", "target": {"entity_id": "light.living_room"}},
515
+ {"action": "light.turn_on", "target": {"entity_id": "light.living_room"}},
516
516
  {"delay": {"seconds": 2}},
517
- {"service": "light.turn_off", "target": {"entity_id": "light.living_room"}}
517
+ {"action": "light.turn_off", "target": {"entity_id": "light.living_room"}}
518
518
  ],
519
519
  "alias": "Light Blink",
520
520
  "mode": "single"
@@ -547,8 +547,8 @@ class ConfigScriptTools:
547
547
  Update script:
548
548
  ha_config_set_script(script_id="morning_routine", config={
549
549
  "sequence": [
550
- {"service": "light.turn_on", "target": {"area_id": "bedroom"}},
551
- {"service": "climate.set_temperature", "target": {"entity_id": "climate.bedroom"}, "data": {"temperature": 22}}
550
+ {"action": "light.turn_on", "target": {"area_id": "bedroom"}},
551
+ {"action": "climate.set_temperature", "target": {"entity_id": "climate.bedroom"}, "data": {"temperature": 22}}
552
552
  ],
553
553
  "alias": "Updated Morning Routine"
554
554
  })
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: ha-mcp-dev
3
- Version: 7.6.0.dev656
3
+ Version: 7.6.0.dev658
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