ha-mcp-dev 8.0.0.dev2238__tar.gz → 8.1.0.dev2245__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 (198) hide show
  1. {ha_mcp_dev-8.0.0.dev2238/src/ha_mcp_dev.egg-info → ha_mcp_dev-8.1.0.dev2245}/PKG-INFO +1 -1
  2. {ha_mcp_dev-8.0.0.dev2238 → ha_mcp_dev-8.1.0.dev2245}/pyproject.toml +1 -1
  3. {ha_mcp_dev-8.0.0.dev2238 → ha_mcp_dev-8.1.0.dev2245}/src/ha_mcp/settings_ui/locales/README.md +37 -8
  4. {ha_mcp_dev-8.0.0.dev2238 → ha_mcp_dev-8.1.0.dev2245/src/ha_mcp_dev.egg-info}/PKG-INFO +1 -1
  5. {ha_mcp_dev-8.0.0.dev2238 → ha_mcp_dev-8.1.0.dev2245}/LICENSE +0 -0
  6. {ha_mcp_dev-8.0.0.dev2238 → ha_mcp_dev-8.1.0.dev2245}/MANIFEST.in +0 -0
  7. {ha_mcp_dev-8.0.0.dev2238 → ha_mcp_dev-8.1.0.dev2245}/README.md +0 -0
  8. {ha_mcp_dev-8.0.0.dev2238 → ha_mcp_dev-8.1.0.dev2245}/setup.cfg +0 -0
  9. {ha_mcp_dev-8.0.0.dev2238 → ha_mcp_dev-8.1.0.dev2245}/src/ha_mcp/__init__.py +0 -0
  10. {ha_mcp_dev-8.0.0.dev2238 → ha_mcp_dev-8.1.0.dev2245}/src/ha_mcp/__main__.py +0 -0
  11. {ha_mcp_dev-8.0.0.dev2238 → ha_mcp_dev-8.1.0.dev2245}/src/ha_mcp/_pypi_marker +0 -0
  12. {ha_mcp_dev-8.0.0.dev2238 → ha_mcp_dev-8.1.0.dev2245}/src/ha_mcp/_version.py +0 -0
  13. {ha_mcp_dev-8.0.0.dev2238 → ha_mcp_dev-8.1.0.dev2245}/src/ha_mcp/auth/__init__.py +0 -0
  14. {ha_mcp_dev-8.0.0.dev2238 → ha_mcp_dev-8.1.0.dev2245}/src/ha_mcp/auth/consent_form.py +0 -0
  15. {ha_mcp_dev-8.0.0.dev2238 → ha_mcp_dev-8.1.0.dev2245}/src/ha_mcp/auth/provider.py +0 -0
  16. {ha_mcp_dev-8.0.0.dev2238 → ha_mcp_dev-8.1.0.dev2245}/src/ha_mcp/backup_manager.py +0 -0
  17. {ha_mcp_dev-8.0.0.dev2238 → ha_mcp_dev-8.1.0.dev2245}/src/ha_mcp/browser_landing.py +0 -0
  18. {ha_mcp_dev-8.0.0.dev2238 → ha_mcp_dev-8.1.0.dev2245}/src/ha_mcp/client/__init__.py +0 -0
  19. {ha_mcp_dev-8.0.0.dev2238 → ha_mcp_dev-8.1.0.dev2245}/src/ha_mcp/client/rest_client.py +0 -0
  20. {ha_mcp_dev-8.0.0.dev2238 → ha_mcp_dev-8.1.0.dev2245}/src/ha_mcp/client/supervisor_client.py +0 -0
  21. {ha_mcp_dev-8.0.0.dev2238 → ha_mcp_dev-8.1.0.dev2245}/src/ha_mcp/client/websocket_client.py +0 -0
  22. {ha_mcp_dev-8.0.0.dev2238 → ha_mcp_dev-8.1.0.dev2245}/src/ha_mcp/client/websocket_listener.py +0 -0
  23. {ha_mcp_dev-8.0.0.dev2238 → ha_mcp_dev-8.1.0.dev2245}/src/ha_mcp/config.py +0 -0
  24. {ha_mcp_dev-8.0.0.dev2238 → ha_mcp_dev-8.1.0.dev2245}/src/ha_mcp/dashboard_screenshot/__init__.py +0 -0
  25. {ha_mcp_dev-8.0.0.dev2238 → ha_mcp_dev-8.1.0.dev2245}/src/ha_mcp/dashboard_screenshot/capture.py +0 -0
  26. {ha_mcp_dev-8.0.0.dev2238 → ha_mcp_dev-8.1.0.dev2245}/src/ha_mcp/dashboard_screenshot/content.py +0 -0
  27. {ha_mcp_dev-8.0.0.dev2238 → ha_mcp_dev-8.1.0.dev2245}/src/ha_mcp/dashboard_screenshot/paths.py +0 -0
  28. {ha_mcp_dev-8.0.0.dev2238 → ha_mcp_dev-8.1.0.dev2245}/src/ha_mcp/dashboard_screenshot/provision.py +0 -0
  29. {ha_mcp_dev-8.0.0.dev2238 → ha_mcp_dev-8.1.0.dev2245}/src/ha_mcp/dashboard_screenshot/theme_guard.py +0 -0
  30. {ha_mcp_dev-8.0.0.dev2238 → ha_mcp_dev-8.1.0.dev2245}/src/ha_mcp/errors.py +0 -0
  31. {ha_mcp_dev-8.0.0.dev2238 → ha_mcp_dev-8.1.0.dev2245}/src/ha_mcp/llm_exposure.py +0 -0
  32. {ha_mcp_dev-8.0.0.dev2238 → ha_mcp_dev-8.1.0.dev2245}/src/ha_mcp/policy/__init__.py +0 -0
  33. {ha_mcp_dev-8.0.0.dev2238 → ha_mcp_dev-8.1.0.dev2245}/src/ha_mcp/policy/approval_queue.py +0 -0
  34. {ha_mcp_dev-8.0.0.dev2238 → ha_mcp_dev-8.1.0.dev2245}/src/ha_mcp/policy/evaluator.py +0 -0
  35. {ha_mcp_dev-8.0.0.dev2238 → ha_mcp_dev-8.1.0.dev2245}/src/ha_mcp/policy/handlers.py +0 -0
  36. {ha_mcp_dev-8.0.0.dev2238 → ha_mcp_dev-8.1.0.dev2245}/src/ha_mcp/policy/middleware.py +0 -0
  37. {ha_mcp_dev-8.0.0.dev2238 → ha_mcp_dev-8.1.0.dev2245}/src/ha_mcp/policy/model.py +0 -0
  38. {ha_mcp_dev-8.0.0.dev2238 → ha_mcp_dev-8.1.0.dev2245}/src/ha_mcp/policy/persistence.py +0 -0
  39. {ha_mcp_dev-8.0.0.dev2238 → ha_mcp_dev-8.1.0.dev2245}/src/ha_mcp/policy/value_sources.py +0 -0
  40. {ha_mcp_dev-8.0.0.dev2238 → ha_mcp_dev-8.1.0.dev2245}/src/ha_mcp/py.typed +0 -0
  41. {ha_mcp_dev-8.0.0.dev2238 → ha_mcp_dev-8.1.0.dev2245}/src/ha_mcp/read_only.py +0 -0
  42. {ha_mcp_dev-8.0.0.dev2238 → ha_mcp_dev-8.1.0.dev2245}/src/ha_mcp/resources/skills-vendor/.claude/settings.json +0 -0
  43. {ha_mcp_dev-8.0.0.dev2238 → ha_mcp_dev-8.1.0.dev2245}/src/ha_mcp/resources/skills-vendor/.claude-plugin/marketplace.json +0 -0
  44. {ha_mcp_dev-8.0.0.dev2238 → ha_mcp_dev-8.1.0.dev2245}/src/ha_mcp/resources/skills-vendor/.claude-plugin/plugin.json +0 -0
  45. {ha_mcp_dev-8.0.0.dev2238 → ha_mcp_dev-8.1.0.dev2245}/src/ha_mcp/resources/skills-vendor/.github/ISSUE_TEMPLATE/skill-rca.md +0 -0
  46. {ha_mcp_dev-8.0.0.dev2238 → ha_mcp_dev-8.1.0.dev2245}/src/ha_mcp/resources/skills-vendor/.github/pull_request_template.md +0 -0
  47. {ha_mcp_dev-8.0.0.dev2238 → ha_mcp_dev-8.1.0.dev2245}/src/ha_mcp/resources/skills-vendor/AGENTS.md +0 -0
  48. {ha_mcp_dev-8.0.0.dev2238 → ha_mcp_dev-8.1.0.dev2245}/src/ha_mcp/resources/skills-vendor/CLAUDE.md +0 -0
  49. {ha_mcp_dev-8.0.0.dev2238 → ha_mcp_dev-8.1.0.dev2245}/src/ha_mcp/resources/skills-vendor/CONTRIBUTING.md +0 -0
  50. {ha_mcp_dev-8.0.0.dev2238 → ha_mcp_dev-8.1.0.dev2245}/src/ha_mcp/resources/skills-vendor/LICENSE +0 -0
  51. {ha_mcp_dev-8.0.0.dev2238 → ha_mcp_dev-8.1.0.dev2245}/src/ha_mcp/resources/skills-vendor/README.md +0 -0
  52. {ha_mcp_dev-8.0.0.dev2238 → ha_mcp_dev-8.1.0.dev2245}/src/ha_mcp/resources/skills-vendor/skills/home-assistant-best-practices/SKILL.md +0 -0
  53. {ha_mcp_dev-8.0.0.dev2238 → ha_mcp_dev-8.1.0.dev2245}/src/ha_mcp/resources/skills-vendor/skills/home-assistant-best-practices/evals/evals.json +0 -0
  54. {ha_mcp_dev-8.0.0.dev2238 → ha_mcp_dev-8.1.0.dev2245}/src/ha_mcp/resources/skills-vendor/skills/home-assistant-best-practices/references/appdaemon.md +0 -0
  55. {ha_mcp_dev-8.0.0.dev2238 → ha_mcp_dev-8.1.0.dev2245}/src/ha_mcp/resources/skills-vendor/skills/home-assistant-best-practices/references/automation-patterns.md +0 -0
  56. {ha_mcp_dev-8.0.0.dev2238 → ha_mcp_dev-8.1.0.dev2245}/src/ha_mcp/resources/skills-vendor/skills/home-assistant-best-practices/references/blueprint-guide.md +0 -0
  57. {ha_mcp_dev-8.0.0.dev2238 → ha_mcp_dev-8.1.0.dev2245}/src/ha_mcp/resources/skills-vendor/skills/home-assistant-best-practices/references/dashboard-cards.md +0 -0
  58. {ha_mcp_dev-8.0.0.dev2238 → ha_mcp_dev-8.1.0.dev2245}/src/ha_mcp/resources/skills-vendor/skills/home-assistant-best-practices/references/dashboard-guide.md +0 -0
  59. {ha_mcp_dev-8.0.0.dev2238 → ha_mcp_dev-8.1.0.dev2245}/src/ha_mcp/resources/skills-vendor/skills/home-assistant-best-practices/references/device-control.md +0 -0
  60. {ha_mcp_dev-8.0.0.dev2238 → ha_mcp_dev-8.1.0.dev2245}/src/ha_mcp/resources/skills-vendor/skills/home-assistant-best-practices/references/domain-docs.md +0 -0
  61. {ha_mcp_dev-8.0.0.dev2238 → ha_mcp_dev-8.1.0.dev2245}/src/ha_mcp/resources/skills-vendor/skills/home-assistant-best-practices/references/examples.yaml +0 -0
  62. {ha_mcp_dev-8.0.0.dev2238 → ha_mcp_dev-8.1.0.dev2245}/src/ha_mcp/resources/skills-vendor/skills/home-assistant-best-practices/references/helper-selection.md +0 -0
  63. {ha_mcp_dev-8.0.0.dev2238 → ha_mcp_dev-8.1.0.dev2245}/src/ha_mcp/resources/skills-vendor/skills/home-assistant-best-practices/references/safe-refactoring.md +0 -0
  64. {ha_mcp_dev-8.0.0.dev2238 → ha_mcp_dev-8.1.0.dev2245}/src/ha_mcp/resources/skills-vendor/skills/home-assistant-best-practices/references/scenes.md +0 -0
  65. {ha_mcp_dev-8.0.0.dev2238 → ha_mcp_dev-8.1.0.dev2245}/src/ha_mcp/resources/skills-vendor/skills/home-assistant-best-practices/references/template-guidelines.md +0 -0
  66. {ha_mcp_dev-8.0.0.dev2238 → ha_mcp_dev-8.1.0.dev2245}/src/ha_mcp/resources/skills-vendor/skills/home-assistant-best-practices/references/yaml-only-integrations.md +0 -0
  67. {ha_mcp_dev-8.0.0.dev2238 → ha_mcp_dev-8.1.0.dev2245}/src/ha_mcp/server.py +0 -0
  68. {ha_mcp_dev-8.0.0.dev2238 → ha_mcp_dev-8.1.0.dev2245}/src/ha_mcp/settings_ui/__init__.py +0 -0
  69. {ha_mcp_dev-8.0.0.dev2238 → ha_mcp_dev-8.1.0.dev2245}/src/ha_mcp/settings_ui/_handlers_advanced.py +0 -0
  70. {ha_mcp_dev-8.0.0.dev2238 → ha_mcp_dev-8.1.0.dev2245}/src/ha_mcp/settings_ui/_handlers_backups.py +0 -0
  71. {ha_mcp_dev-8.0.0.dev2238 → ha_mcp_dev-8.1.0.dev2245}/src/ha_mcp/settings_ui/_handlers_fs.py +0 -0
  72. {ha_mcp_dev-8.0.0.dev2238 → ha_mcp_dev-8.1.0.dev2245}/src/ha_mcp/settings_ui/_handlers_server.py +0 -0
  73. {ha_mcp_dev-8.0.0.dev2238 → ha_mcp_dev-8.1.0.dev2245}/src/ha_mcp/settings_ui/_handlers_theme.py +0 -0
  74. {ha_mcp_dev-8.0.0.dev2238 → ha_mcp_dev-8.1.0.dev2245}/src/ha_mcp/settings_ui/_handlers_tools.py +0 -0
  75. {ha_mcp_dev-8.0.0.dev2238 → ha_mcp_dev-8.1.0.dev2245}/src/ha_mcp/settings_ui/_i18n.py +0 -0
  76. {ha_mcp_dev-8.0.0.dev2238 → ha_mcp_dev-8.1.0.dev2245}/src/ha_mcp/settings_ui/_persistence.py +0 -0
  77. {ha_mcp_dev-8.0.0.dev2238 → ha_mcp_dev-8.1.0.dev2245}/src/ha_mcp/settings_ui/_supervisor.py +0 -0
  78. {ha_mcp_dev-8.0.0.dev2238 → ha_mcp_dev-8.1.0.dev2245}/src/ha_mcp/settings_ui/_theme.py +0 -0
  79. {ha_mcp_dev-8.0.0.dev2238 → ha_mcp_dev-8.1.0.dev2245}/src/ha_mcp/settings_ui/_tools_meta.py +0 -0
  80. {ha_mcp_dev-8.0.0.dev2238 → ha_mcp_dev-8.1.0.dev2245}/src/ha_mcp/settings_ui/locales/de.json +0 -0
  81. {ha_mcp_dev-8.0.0.dev2238 → ha_mcp_dev-8.1.0.dev2245}/src/ha_mcp/settings_ui/locales/en.json +0 -0
  82. {ha_mcp_dev-8.0.0.dev2238 → ha_mcp_dev-8.1.0.dev2245}/src/ha_mcp/settings_ui/locales/es.json +0 -0
  83. {ha_mcp_dev-8.0.0.dev2238 → ha_mcp_dev-8.1.0.dev2245}/src/ha_mcp/settings_ui/locales/fr.json +0 -0
  84. {ha_mcp_dev-8.0.0.dev2238 → ha_mcp_dev-8.1.0.dev2245}/src/ha_mcp/settings_ui/locales/it.json +0 -0
  85. {ha_mcp_dev-8.0.0.dev2238 → ha_mcp_dev-8.1.0.dev2245}/src/ha_mcp/settings_ui/locales/ru.json +0 -0
  86. {ha_mcp_dev-8.0.0.dev2238 → ha_mcp_dev-8.1.0.dev2245}/src/ha_mcp/settings_ui/locales/zh-Hans.json +0 -0
  87. {ha_mcp_dev-8.0.0.dev2238 → ha_mcp_dev-8.1.0.dev2245}/src/ha_mcp/settings_ui/settings.css +0 -0
  88. {ha_mcp_dev-8.0.0.dev2238 → ha_mcp_dev-8.1.0.dev2245}/src/ha_mcp/settings_ui/settings.html +0 -0
  89. {ha_mcp_dev-8.0.0.dev2238 → ha_mcp_dev-8.1.0.dev2245}/src/ha_mcp/settings_ui/settings.js +0 -0
  90. {ha_mcp_dev-8.0.0.dev2238 → ha_mcp_dev-8.1.0.dev2245}/src/ha_mcp/smoke_test.py +0 -0
  91. {ha_mcp_dev-8.0.0.dev2238 → ha_mcp_dev-8.1.0.dev2245}/src/ha_mcp/stdio_settings_sidecar.py +0 -0
  92. {ha_mcp_dev-8.0.0.dev2238 → ha_mcp_dev-8.1.0.dev2245}/src/ha_mcp/strict_bps.py +0 -0
  93. {ha_mcp_dev-8.0.0.dev2238 → ha_mcp_dev-8.1.0.dev2245}/src/ha_mcp/tools/__init__.py +0 -0
  94. {ha_mcp_dev-8.0.0.dev2238 → ha_mcp_dev-8.1.0.dev2245}/src/ha_mcp/tools/auto_backup.py +0 -0
  95. {ha_mcp_dev-8.0.0.dev2238 → ha_mcp_dev-8.1.0.dev2245}/src/ha_mcp/tools/backup.py +0 -0
  96. {ha_mcp_dev-8.0.0.dev2238 → ha_mcp_dev-8.1.0.dev2245}/src/ha_mcp/tools/best_practice_checker.py +0 -0
  97. {ha_mcp_dev-8.0.0.dev2238 → ha_mcp_dev-8.1.0.dev2245}/src/ha_mcp/tools/best_practice_result.py +0 -0
  98. {ha_mcp_dev-8.0.0.dev2238 → ha_mcp_dev-8.1.0.dev2245}/src/ha_mcp/tools/best_practice_variables.py +0 -0
  99. {ha_mcp_dev-8.0.0.dev2238 → ha_mcp_dev-8.1.0.dev2245}/src/ha_mcp/tools/component_api.py +0 -0
  100. {ha_mcp_dev-8.0.0.dev2238 → ha_mcp_dev-8.1.0.dev2245}/src/ha_mcp/tools/component_config_reads.py +0 -0
  101. {ha_mcp_dev-8.0.0.dev2238 → ha_mcp_dev-8.1.0.dev2245}/src/ha_mcp/tools/component_devices.py +0 -0
  102. {ha_mcp_dev-8.0.0.dev2238 → ha_mcp_dev-8.1.0.dev2245}/src/ha_mcp/tools/component_registries.py +0 -0
  103. {ha_mcp_dev-8.0.0.dev2238 → ha_mcp_dev-8.1.0.dev2245}/src/ha_mcp/tools/component_registry_lookup.py +0 -0
  104. {ha_mcp_dev-8.0.0.dev2238 → ha_mcp_dev-8.1.0.dev2245}/src/ha_mcp/tools/config_entry_flow.py +0 -0
  105. {ha_mcp_dev-8.0.0.dev2238 → ha_mcp_dev-8.1.0.dev2245}/src/ha_mcp/tools/config_entry_flow_form.py +0 -0
  106. {ha_mcp_dev-8.0.0.dev2238 → ha_mcp_dev-8.1.0.dev2245}/src/ha_mcp/tools/config_entry_flow_menu.py +0 -0
  107. {ha_mcp_dev-8.0.0.dev2238 → ha_mcp_dev-8.1.0.dev2245}/src/ha_mcp/tools/config_entry_flow_walker.py +0 -0
  108. {ha_mcp_dev-8.0.0.dev2238 → ha_mcp_dev-8.1.0.dev2245}/src/ha_mcp/tools/device_control.py +0 -0
  109. {ha_mcp_dev-8.0.0.dev2238 → ha_mcp_dev-8.1.0.dev2245}/src/ha_mcp/tools/hacs_registration.py +0 -0
  110. {ha_mcp_dev-8.0.0.dev2238 → ha_mcp_dev-8.1.0.dev2245}/src/ha_mcp/tools/helpers.py +0 -0
  111. {ha_mcp_dev-8.0.0.dev2238 → ha_mcp_dev-8.1.0.dev2245}/src/ha_mcp/tools/radio/__init__.py +0 -0
  112. {ha_mcp_dev-8.0.0.dev2238 → ha_mcp_dev-8.1.0.dev2245}/src/ha_mcp/tools/radio/base.py +0 -0
  113. {ha_mcp_dev-8.0.0.dev2238 → ha_mcp_dev-8.1.0.dev2245}/src/ha_mcp/tools/radio/matter.py +0 -0
  114. {ha_mcp_dev-8.0.0.dev2238 → ha_mcp_dev-8.1.0.dev2245}/src/ha_mcp/tools/radio/thread.py +0 -0
  115. {ha_mcp_dev-8.0.0.dev2238 → ha_mcp_dev-8.1.0.dev2245}/src/ha_mcp/tools/radio/zigbee.py +0 -0
  116. {ha_mcp_dev-8.0.0.dev2238 → ha_mcp_dev-8.1.0.dev2245}/src/ha_mcp/tools/radio/zwave.py +0 -0
  117. {ha_mcp_dev-8.0.0.dev2238 → ha_mcp_dev-8.1.0.dev2245}/src/ha_mcp/tools/reference_validator.py +0 -0
  118. {ha_mcp_dev-8.0.0.dev2238 → ha_mcp_dev-8.1.0.dev2245}/src/ha_mcp/tools/registry.py +0 -0
  119. {ha_mcp_dev-8.0.0.dev2238 → ha_mcp_dev-8.1.0.dev2245}/src/ha_mcp/tools/smart_search/__init__.py +0 -0
  120. {ha_mcp_dev-8.0.0.dev2238 → ha_mcp_dev-8.1.0.dev2245}/src/ha_mcp/tools/smart_search/_base.py +0 -0
  121. {ha_mcp_dev-8.0.0.dev2238 → ha_mcp_dev-8.1.0.dev2245}/src/ha_mcp/tools/smart_search/_config.py +0 -0
  122. {ha_mcp_dev-8.0.0.dev2238 → ha_mcp_dev-8.1.0.dev2245}/src/ha_mcp/tools/smart_search/_deep.py +0 -0
  123. {ha_mcp_dev-8.0.0.dev2238 → ha_mcp_dev-8.1.0.dev2245}/src/ha_mcp/tools/smart_search/_entities.py +0 -0
  124. {ha_mcp_dev-8.0.0.dev2238 → ha_mcp_dev-8.1.0.dev2245}/src/ha_mcp/tools/smart_search/_fetch.py +0 -0
  125. {ha_mcp_dev-8.0.0.dev2238 → ha_mcp_dev-8.1.0.dev2245}/src/ha_mcp/tools/smart_search/_overview.py +0 -0
  126. {ha_mcp_dev-8.0.0.dev2238 → ha_mcp_dev-8.1.0.dev2245}/src/ha_mcp/tools/smart_search/_scenes.py +0 -0
  127. {ha_mcp_dev-8.0.0.dev2238 → ha_mcp_dev-8.1.0.dev2245}/src/ha_mcp/tools/smart_search/_scoring.py +0 -0
  128. {ha_mcp_dev-8.0.0.dev2238 → ha_mcp_dev-8.1.0.dev2245}/src/ha_mcp/tools/tool_search_hint_middleware.py +0 -0
  129. {ha_mcp_dev-8.0.0.dev2238 → ha_mcp_dev-8.1.0.dev2245}/src/ha_mcp/tools/tools_addons.py +0 -0
  130. {ha_mcp_dev-8.0.0.dev2238 → ha_mcp_dev-8.1.0.dev2245}/src/ha_mcp/tools/tools_areas.py +0 -0
  131. {ha_mcp_dev-8.0.0.dev2238 → ha_mcp_dev-8.1.0.dev2245}/src/ha_mcp/tools/tools_blueprints.py +0 -0
  132. {ha_mcp_dev-8.0.0.dev2238 → ha_mcp_dev-8.1.0.dev2245}/src/ha_mcp/tools/tools_bug_report.py +0 -0
  133. {ha_mcp_dev-8.0.0.dev2238 → ha_mcp_dev-8.1.0.dev2245}/src/ha_mcp/tools/tools_calendar.py +0 -0
  134. {ha_mcp_dev-8.0.0.dev2238 → ha_mcp_dev-8.1.0.dev2245}/src/ha_mcp/tools/tools_camera.py +0 -0
  135. {ha_mcp_dev-8.0.0.dev2238 → ha_mcp_dev-8.1.0.dev2245}/src/ha_mcp/tools/tools_categories.py +0 -0
  136. {ha_mcp_dev-8.0.0.dev2238 → ha_mcp_dev-8.1.0.dev2245}/src/ha_mcp/tools/tools_code.py +0 -0
  137. {ha_mcp_dev-8.0.0.dev2238 → ha_mcp_dev-8.1.0.dev2245}/src/ha_mcp/tools/tools_config_automations.py +0 -0
  138. {ha_mcp_dev-8.0.0.dev2238 → ha_mcp_dev-8.1.0.dev2245}/src/ha_mcp/tools/tools_config_dashboards.py +0 -0
  139. {ha_mcp_dev-8.0.0.dev2238 → ha_mcp_dev-8.1.0.dev2245}/src/ha_mcp/tools/tools_config_helpers.py +0 -0
  140. {ha_mcp_dev-8.0.0.dev2238 → ha_mcp_dev-8.1.0.dev2245}/src/ha_mcp/tools/tools_config_scenes.py +0 -0
  141. {ha_mcp_dev-8.0.0.dev2238 → ha_mcp_dev-8.1.0.dev2245}/src/ha_mcp/tools/tools_config_scripts.py +0 -0
  142. {ha_mcp_dev-8.0.0.dev2238 → ha_mcp_dev-8.1.0.dev2245}/src/ha_mcp/tools/tools_dashboard_screenshot.py +0 -0
  143. {ha_mcp_dev-8.0.0.dev2238 → ha_mcp_dev-8.1.0.dev2245}/src/ha_mcp/tools/tools_dev.py +0 -0
  144. {ha_mcp_dev-8.0.0.dev2238 → ha_mcp_dev-8.1.0.dev2245}/src/ha_mcp/tools/tools_energy.py +0 -0
  145. {ha_mcp_dev-8.0.0.dev2238 → ha_mcp_dev-8.1.0.dev2245}/src/ha_mcp/tools/tools_entities.py +0 -0
  146. {ha_mcp_dev-8.0.0.dev2238 → ha_mcp_dev-8.1.0.dev2245}/src/ha_mcp/tools/tools_filesystem.py +0 -0
  147. {ha_mcp_dev-8.0.0.dev2238 → ha_mcp_dev-8.1.0.dev2245}/src/ha_mcp/tools/tools_groups.py +0 -0
  148. {ha_mcp_dev-8.0.0.dev2238 → ha_mcp_dev-8.1.0.dev2245}/src/ha_mcp/tools/tools_hacs.py +0 -0
  149. {ha_mcp_dev-8.0.0.dev2238 → ha_mcp_dev-8.1.0.dev2245}/src/ha_mcp/tools/tools_history.py +0 -0
  150. {ha_mcp_dev-8.0.0.dev2238 → ha_mcp_dev-8.1.0.dev2245}/src/ha_mcp/tools/tools_integrations.py +0 -0
  151. {ha_mcp_dev-8.0.0.dev2238 → ha_mcp_dev-8.1.0.dev2245}/src/ha_mcp/tools/tools_labels.py +0 -0
  152. {ha_mcp_dev-8.0.0.dev2238 → ha_mcp_dev-8.1.0.dev2245}/src/ha_mcp/tools/tools_radio.py +0 -0
  153. {ha_mcp_dev-8.0.0.dev2238 → ha_mcp_dev-8.1.0.dev2245}/src/ha_mcp/tools/tools_registry.py +0 -0
  154. {ha_mcp_dev-8.0.0.dev2238 → ha_mcp_dev-8.1.0.dev2245}/src/ha_mcp/tools/tools_resources.py +0 -0
  155. {ha_mcp_dev-8.0.0.dev2238 → ha_mcp_dev-8.1.0.dev2245}/src/ha_mcp/tools/tools_search.py +0 -0
  156. {ha_mcp_dev-8.0.0.dev2238 → ha_mcp_dev-8.1.0.dev2245}/src/ha_mcp/tools/tools_service.py +0 -0
  157. {ha_mcp_dev-8.0.0.dev2238 → ha_mcp_dev-8.1.0.dev2245}/src/ha_mcp/tools/tools_services.py +0 -0
  158. {ha_mcp_dev-8.0.0.dev2238 → ha_mcp_dev-8.1.0.dev2245}/src/ha_mcp/tools/tools_system.py +0 -0
  159. {ha_mcp_dev-8.0.0.dev2238 → ha_mcp_dev-8.1.0.dev2245}/src/ha_mcp/tools/tools_themes.py +0 -0
  160. {ha_mcp_dev-8.0.0.dev2238 → ha_mcp_dev-8.1.0.dev2245}/src/ha_mcp/tools/tools_todo.py +0 -0
  161. {ha_mcp_dev-8.0.0.dev2238 → ha_mcp_dev-8.1.0.dev2245}/src/ha_mcp/tools/tools_traces.py +0 -0
  162. {ha_mcp_dev-8.0.0.dev2238 → ha_mcp_dev-8.1.0.dev2245}/src/ha_mcp/tools/tools_updates.py +0 -0
  163. {ha_mcp_dev-8.0.0.dev2238 → ha_mcp_dev-8.1.0.dev2245}/src/ha_mcp/tools/tools_utility.py +0 -0
  164. {ha_mcp_dev-8.0.0.dev2238 → ha_mcp_dev-8.1.0.dev2245}/src/ha_mcp/tools/tools_voice_assistant.py +0 -0
  165. {ha_mcp_dev-8.0.0.dev2238 → ha_mcp_dev-8.1.0.dev2245}/src/ha_mcp/tools/tools_yaml_config.py +0 -0
  166. {ha_mcp_dev-8.0.0.dev2238 → ha_mcp_dev-8.1.0.dev2245}/src/ha_mcp/tools/tools_yaml_read.py +0 -0
  167. {ha_mcp_dev-8.0.0.dev2238 → ha_mcp_dev-8.1.0.dev2245}/src/ha_mcp/tools/tools_zones.py +0 -0
  168. {ha_mcp_dev-8.0.0.dev2238 → ha_mcp_dev-8.1.0.dev2245}/src/ha_mcp/tools/util_helpers.py +0 -0
  169. {ha_mcp_dev-8.0.0.dev2238 → ha_mcp_dev-8.1.0.dev2245}/src/ha_mcp/tools/validation_middleware.py +0 -0
  170. {ha_mcp_dev-8.0.0.dev2238 → ha_mcp_dev-8.1.0.dev2245}/src/ha_mcp/transforms/__init__.py +0 -0
  171. {ha_mcp_dev-8.0.0.dev2238 → ha_mcp_dev-8.1.0.dev2245}/src/ha_mcp/transforms/categorized_search.py +0 -0
  172. {ha_mcp_dev-8.0.0.dev2238 → ha_mcp_dev-8.1.0.dev2245}/src/ha_mcp/transforms/lite_docstrings.py +0 -0
  173. {ha_mcp_dev-8.0.0.dev2238 → ha_mcp_dev-8.1.0.dev2245}/src/ha_mcp/transport_security.py +0 -0
  174. {ha_mcp_dev-8.0.0.dev2238 → ha_mcp_dev-8.1.0.dev2245}/src/ha_mcp/update_check.py +0 -0
  175. {ha_mcp_dev-8.0.0.dev2238 → ha_mcp_dev-8.1.0.dev2245}/src/ha_mcp/utils/__init__.py +0 -0
  176. {ha_mcp_dev-8.0.0.dev2238 → ha_mcp_dev-8.1.0.dev2245}/src/ha_mcp/utils/config_hash.py +0 -0
  177. {ha_mcp_dev-8.0.0.dev2238 → ha_mcp_dev-8.1.0.dev2245}/src/ha_mcp/utils/config_write_lock.py +0 -0
  178. {ha_mcp_dev-8.0.0.dev2238 → ha_mcp_dev-8.1.0.dev2245}/src/ha_mcp/utils/data_paths.py +0 -0
  179. {ha_mcp_dev-8.0.0.dev2238 → ha_mcp_dev-8.1.0.dev2245}/src/ha_mcp/utils/domain_handlers.py +0 -0
  180. {ha_mcp_dev-8.0.0.dev2238 → ha_mcp_dev-8.1.0.dev2245}/src/ha_mcp/utils/fuzzy_search.py +0 -0
  181. {ha_mcp_dev-8.0.0.dev2238 → ha_mcp_dev-8.1.0.dev2245}/src/ha_mcp/utils/kill_signal_diagnostics.py +0 -0
  182. {ha_mcp_dev-8.0.0.dev2238 → ha_mcp_dev-8.1.0.dev2245}/src/ha_mcp/utils/operation_manager.py +0 -0
  183. {ha_mcp_dev-8.0.0.dev2238 → ha_mcp_dev-8.1.0.dev2245}/src/ha_mcp/utils/python_sandbox.py +0 -0
  184. {ha_mcp_dev-8.0.0.dev2238 → ha_mcp_dev-8.1.0.dev2245}/src/ha_mcp/utils/skill_loader.py +0 -0
  185. {ha_mcp_dev-8.0.0.dev2238 → ha_mcp_dev-8.1.0.dev2245}/src/ha_mcp/utils/usage_logger.py +0 -0
  186. {ha_mcp_dev-8.0.0.dev2238 → ha_mcp_dev-8.1.0.dev2245}/src/ha_mcp/visibility/__init__.py +0 -0
  187. {ha_mcp_dev-8.0.0.dev2238 → ha_mcp_dev-8.1.0.dev2245}/src/ha_mcp/visibility/enforcement.py +0 -0
  188. {ha_mcp_dev-8.0.0.dev2238 → ha_mcp_dev-8.1.0.dev2245}/src/ha_mcp/visibility/model.py +0 -0
  189. {ha_mcp_dev-8.0.0.dev2238 → ha_mcp_dev-8.1.0.dev2245}/src/ha_mcp/visibility/persistence.py +0 -0
  190. {ha_mcp_dev-8.0.0.dev2238 → ha_mcp_dev-8.1.0.dev2245}/src/ha_mcp/visibility/resolver.py +0 -0
  191. {ha_mcp_dev-8.0.0.dev2238 → ha_mcp_dev-8.1.0.dev2245}/src/ha_mcp_dev.egg-info/SOURCES.txt +0 -0
  192. {ha_mcp_dev-8.0.0.dev2238 → ha_mcp_dev-8.1.0.dev2245}/src/ha_mcp_dev.egg-info/dependency_links.txt +0 -0
  193. {ha_mcp_dev-8.0.0.dev2238 → ha_mcp_dev-8.1.0.dev2245}/src/ha_mcp_dev.egg-info/entry_points.txt +0 -0
  194. {ha_mcp_dev-8.0.0.dev2238 → ha_mcp_dev-8.1.0.dev2245}/src/ha_mcp_dev.egg-info/requires.txt +0 -0
  195. {ha_mcp_dev-8.0.0.dev2238 → ha_mcp_dev-8.1.0.dev2245}/src/ha_mcp_dev.egg-info/top_level.txt +0 -0
  196. {ha_mcp_dev-8.0.0.dev2238 → ha_mcp_dev-8.1.0.dev2245}/tests/__init__.py +0 -0
  197. {ha_mcp_dev-8.0.0.dev2238 → ha_mcp_dev-8.1.0.dev2245}/tests/test_constants.py +0 -0
  198. {ha_mcp_dev-8.0.0.dev2238 → ha_mcp_dev-8.1.0.dev2245}/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.0.0.dev2238
3
+ Version: 8.1.0.dev2245
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.0.0.dev2238"
7
+ version = "8.1.0.dev2245"
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
@@ -24,10 +24,12 @@ Home Assistant language code names every file:
24
24
  - `homeassistant-addon/translations/<code>.yaml` (generated)
25
25
  - `homeassistant-addon-dev/translations/<code>.yaml` (generated)
26
26
 
27
- Add the two authored catalogs — this one may start as a `meta`-only stub
28
- (`native_name`, `dir`) — then run `python scripts/generate_locales.py` and
29
- merge: the post-merge `locale-sync.yml` workflow machine-fills every string
30
- over its next daily runs. To fill them in your own PR instead, run
27
+ Add the two authored catalogs, then run `python scripts/generate_locales.py`
28
+ and merge: the post-merge `locale-sync.yml` workflow machine-fills every string
29
+ over its next daily runs. The component catalog may start as an empty object;
30
+ this one needs `meta` (`native_name`, `dir`) plus the handful of `messages`
31
+ keys the ungated checks below demand — a `meta`-only catalog is red in PR CI.
32
+ To fill them in your own PR instead, run
31
33
  `scripts/translate_locales.py` yourself and review its output like any
32
34
  other diff. Also add the new code to the locale list in the repository-root
33
35
  `AGENTS.md`
@@ -71,9 +73,36 @@ import, so the failure names the file but arrives as a broken test module:
71
73
 
72
74
  ## What CI checks
73
75
 
74
- In PR CI (`tests/src/unit/test_locale_parity.py`, ungated):
76
+ In PR CI (ungated — `tests/src/unit/test_locale_parity.py` unless another file
77
+ is named):
75
78
 
76
79
  - Every surface carries the same set of language codes.
80
+ - Every decided `Decision` outcome (all but `pending`) and every
81
+ `PredicateOp` operator has a word in every catalog, non-blank — and in every
82
+ catalog but `en.json` not still spelled the way the backend does
83
+ (`test_every_decided_outcome_has_a_catalog_word`,
84
+ `test_every_predicate_operator_has_a_catalog_word` in
85
+ `tests/src/unit/test_settings_ui_i18n.py`). These words render inside
86
+ otherwise translated sentences, and the page payload merges English
87
+ underneath, so a missing key shows English's own word rather than reading as
88
+ a gap — and the bare enum literal where English lacks the key too. That is
89
+ why they are owed at once rather than left to the sync.
90
+ - `policies.pending.already_decided`, the sentence one of those `Decision`
91
+ words is interpolated into. `TestAlreadyDecidedCopy` in
92
+ `tests/src/unit/test_settings_ui_js_behavior.py` drives the real 409 handler
93
+ under every non-English catalog and compares the whole rendered alert, so
94
+ carrying the word without its host sentence fails on the missing key. Whole
95
+ sentence rather than containment is deliberate: a host that falls back to
96
+ English still reads as an English clause around a translated word.
97
+ **These JS behaviour tests skip unless `tests/js/` has its npm dependencies
98
+ installed** (`npm install` there) — locally they are silent, in CI they are
99
+ not.
100
+ - At least one translated key whose English addresses the reader in the
101
+ second person, so `scripts/translate_locales.py` can show the engine
102
+ how this catalog addresses its reader
103
+ (`test_every_shipped_catalog_gets_reader_addressing_samples` in
104
+ `tests/src/unit/test_translate_locales.py`). Without one the pipeline
105
+ translates the rest of the catalog with no register to imitate.
77
106
  - The generated files (both add-on YAMLs, `FEATURE_META`) are byte-exact
78
107
  generator output (`test_derived_catalogs_match_the_canonical_store`); run
79
108
  `python scripts/generate_locales.py` after touching any `addon.*`,
@@ -82,9 +111,9 @@ In PR CI (`tests/src/unit/test_locale_parity.py`, ungated):
82
111
  matches the baseline — a hand edit that drops a placeholder fails the PR
83
112
  that makes it; a translation awaiting a machine rewrite is excluded.
84
113
 
85
- In the post-merge `locale-sync.yml` workflow only (the same test file, gated
86
- behind `LOCALE_COMPLETENESS_CHECKS=1` — a PR that changes English merges
87
- without these, and the daily sync owes them afterwards):
114
+ In the post-merge `locale-sync.yml` workflow only (the same files, gated behind
115
+ `LOCALE_COMPLETENESS_CHECKS=1` — a PR that changes English merges without
116
+ these, and the daily sync owes them afterwards):
88
117
 
89
118
  - `tool_groups` and `tools` name exactly the renderable groups and tools.
90
119
  - At most 5% of this catalog's `messages`, and 5% of its `tools` texts, may be
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: ha-mcp-dev
3
- Version: 8.0.0.dev2238
3
+ Version: 8.1.0.dev2245
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