ha-mcp-dev 8.5.0.dev2731__tar.gz → 8.5.0.dev2732__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.dev2731/src/ha_mcp_dev.egg-info → ha_mcp_dev-8.5.0.dev2732}/PKG-INFO +1 -1
  2. {ha_mcp_dev-8.5.0.dev2731 → ha_mcp_dev-8.5.0.dev2732}/pyproject.toml +1 -1
  3. {ha_mcp_dev-8.5.0.dev2731 → ha_mcp_dev-8.5.0.dev2732}/src/ha_mcp/settings_ui/locales/az.json +19 -1
  4. {ha_mcp_dev-8.5.0.dev2731 → ha_mcp_dev-8.5.0.dev2732}/src/ha_mcp/settings_ui/locales/cs.json +19 -1
  5. {ha_mcp_dev-8.5.0.dev2731 → ha_mcp_dev-8.5.0.dev2732}/src/ha_mcp/settings_ui/locales/de.json +19 -1
  6. {ha_mcp_dev-8.5.0.dev2731 → ha_mcp_dev-8.5.0.dev2732}/src/ha_mcp/settings_ui/locales/eo.json +19 -1
  7. {ha_mcp_dev-8.5.0.dev2731 → ha_mcp_dev-8.5.0.dev2732}/src/ha_mcp/settings_ui/locales/es.json +19 -1
  8. {ha_mcp_dev-8.5.0.dev2731 → ha_mcp_dev-8.5.0.dev2732}/src/ha_mcp/settings_ui/locales/fr.json +19 -1
  9. {ha_mcp_dev-8.5.0.dev2731 → ha_mcp_dev-8.5.0.dev2732}/src/ha_mcp/settings_ui/locales/it.json +19 -1
  10. {ha_mcp_dev-8.5.0.dev2731 → ha_mcp_dev-8.5.0.dev2732}/src/ha_mcp/settings_ui/locales/ko.json +19 -1
  11. {ha_mcp_dev-8.5.0.dev2731 → ha_mcp_dev-8.5.0.dev2732}/src/ha_mcp/settings_ui/locales/nl.json +19 -1
  12. {ha_mcp_dev-8.5.0.dev2731 → ha_mcp_dev-8.5.0.dev2732}/src/ha_mcp/settings_ui/locales/pl.json +19 -1
  13. {ha_mcp_dev-8.5.0.dev2731 → ha_mcp_dev-8.5.0.dev2732}/src/ha_mcp/settings_ui/locales/ru.json +19 -1
  14. {ha_mcp_dev-8.5.0.dev2731 → ha_mcp_dev-8.5.0.dev2732}/src/ha_mcp/settings_ui/locales/sv.json +19 -1
  15. {ha_mcp_dev-8.5.0.dev2731 → ha_mcp_dev-8.5.0.dev2732}/src/ha_mcp/settings_ui/locales/zh-Hans.json +19 -1
  16. {ha_mcp_dev-8.5.0.dev2731 → ha_mcp_dev-8.5.0.dev2732}/src/ha_mcp/settings_ui/locales/zh-Hant.json +19 -1
  17. {ha_mcp_dev-8.5.0.dev2731 → ha_mcp_dev-8.5.0.dev2732/src/ha_mcp_dev.egg-info}/PKG-INFO +1 -1
  18. {ha_mcp_dev-8.5.0.dev2731 → ha_mcp_dev-8.5.0.dev2732}/LICENSE +0 -0
  19. {ha_mcp_dev-8.5.0.dev2731 → ha_mcp_dev-8.5.0.dev2732}/MANIFEST.in +0 -0
  20. {ha_mcp_dev-8.5.0.dev2731 → ha_mcp_dev-8.5.0.dev2732}/README.md +0 -0
  21. {ha_mcp_dev-8.5.0.dev2731 → ha_mcp_dev-8.5.0.dev2732}/setup.cfg +0 -0
  22. {ha_mcp_dev-8.5.0.dev2731 → ha_mcp_dev-8.5.0.dev2732}/src/ha_mcp/__init__.py +0 -0
  23. {ha_mcp_dev-8.5.0.dev2731 → ha_mcp_dev-8.5.0.dev2732}/src/ha_mcp/__main__.py +0 -0
  24. {ha_mcp_dev-8.5.0.dev2731 → ha_mcp_dev-8.5.0.dev2732}/src/ha_mcp/_pypi_marker +0 -0
  25. {ha_mcp_dev-8.5.0.dev2731 → ha_mcp_dev-8.5.0.dev2732}/src/ha_mcp/_rich_compat.py +0 -0
  26. {ha_mcp_dev-8.5.0.dev2731 → ha_mcp_dev-8.5.0.dev2732}/src/ha_mcp/_vendor/__init__.py +0 -0
  27. {ha_mcp_dev-8.5.0.dev2731 → ha_mcp_dev-8.5.0.dev2732}/src/ha_mcp/_vendor/fastmcp/LICENSE +0 -0
  28. {ha_mcp_dev-8.5.0.dev2731 → ha_mcp_dev-8.5.0.dev2732}/src/ha_mcp/_vendor/fastmcp/MANIFEST.sha256 +0 -0
  29. {ha_mcp_dev-8.5.0.dev2731 → ha_mcp_dev-8.5.0.dev2732}/src/ha_mcp/_vendor/fastmcp/REQUIRES.txt +0 -0
  30. {ha_mcp_dev-8.5.0.dev2731 → ha_mcp_dev-8.5.0.dev2732}/src/ha_mcp/_vendor/fastmcp/VENDORED +0 -0
  31. {ha_mcp_dev-8.5.0.dev2731 → ha_mcp_dev-8.5.0.dev2732}/src/ha_mcp/_vendor/fastmcp/__init__.py +0 -0
  32. {ha_mcp_dev-8.5.0.dev2731 → ha_mcp_dev-8.5.0.dev2732}/src/ha_mcp/_vendor/fastmcp/_compat.py +0 -0
  33. {ha_mcp_dev-8.5.0.dev2731 → ha_mcp_dev-8.5.0.dev2732}/src/ha_mcp/_vendor/fastmcp/_install_hints.py +0 -0
  34. {ha_mcp_dev-8.5.0.dev2731 → ha_mcp_dev-8.5.0.dev2732}/src/ha_mcp/_vendor/fastmcp/_warnings.py +0 -0
  35. {ha_mcp_dev-8.5.0.dev2731 → ha_mcp_dev-8.5.0.dev2732}/src/ha_mcp/_vendor/fastmcp/apps/__init__.py +0 -0
  36. {ha_mcp_dev-8.5.0.dev2731 → ha_mcp_dev-8.5.0.dev2732}/src/ha_mcp/_vendor/fastmcp/apps/app.py +0 -0
  37. {ha_mcp_dev-8.5.0.dev2731 → ha_mcp_dev-8.5.0.dev2732}/src/ha_mcp/_vendor/fastmcp/apps/approval.py +0 -0
  38. {ha_mcp_dev-8.5.0.dev2731 → ha_mcp_dev-8.5.0.dev2732}/src/ha_mcp/_vendor/fastmcp/apps/choice.py +0 -0
  39. {ha_mcp_dev-8.5.0.dev2731 → ha_mcp_dev-8.5.0.dev2732}/src/ha_mcp/_vendor/fastmcp/apps/config.py +0 -0
  40. {ha_mcp_dev-8.5.0.dev2731 → ha_mcp_dev-8.5.0.dev2732}/src/ha_mcp/_vendor/fastmcp/apps/file_upload.py +0 -0
  41. {ha_mcp_dev-8.5.0.dev2731 → ha_mcp_dev-8.5.0.dev2732}/src/ha_mcp/_vendor/fastmcp/apps/form.py +0 -0
  42. {ha_mcp_dev-8.5.0.dev2731 → ha_mcp_dev-8.5.0.dev2732}/src/ha_mcp/_vendor/fastmcp/apps/generative.py +0 -0
  43. {ha_mcp_dev-8.5.0.dev2731 → ha_mcp_dev-8.5.0.dev2732}/src/ha_mcp/_vendor/fastmcp/cli/__init__.py +0 -0
  44. {ha_mcp_dev-8.5.0.dev2731 → ha_mcp_dev-8.5.0.dev2732}/src/ha_mcp/_vendor/fastmcp/cli/__main__.py +0 -0
  45. {ha_mcp_dev-8.5.0.dev2731 → ha_mcp_dev-8.5.0.dev2732}/src/ha_mcp/_vendor/fastmcp/cli/apps_dev.py +0 -0
  46. {ha_mcp_dev-8.5.0.dev2731 → ha_mcp_dev-8.5.0.dev2732}/src/ha_mcp/_vendor/fastmcp/cli/auth.py +0 -0
  47. {ha_mcp_dev-8.5.0.dev2731 → ha_mcp_dev-8.5.0.dev2732}/src/ha_mcp/_vendor/fastmcp/cli/cimd.py +0 -0
  48. {ha_mcp_dev-8.5.0.dev2731 → ha_mcp_dev-8.5.0.dev2732}/src/ha_mcp/_vendor/fastmcp/cli/cli.py +0 -0
  49. {ha_mcp_dev-8.5.0.dev2731 → ha_mcp_dev-8.5.0.dev2732}/src/ha_mcp/_vendor/fastmcp/cli/client.py +0 -0
  50. {ha_mcp_dev-8.5.0.dev2731 → ha_mcp_dev-8.5.0.dev2732}/src/ha_mcp/_vendor/fastmcp/cli/deploy/__init__.py +0 -0
  51. {ha_mcp_dev-8.5.0.dev2731 → ha_mcp_dev-8.5.0.dev2732}/src/ha_mcp/_vendor/fastmcp/cli/deploy/authentication.py +0 -0
  52. {ha_mcp_dev-8.5.0.dev2731 → ha_mcp_dev-8.5.0.dev2732}/src/ha_mcp/_vendor/fastmcp/cli/deploy/command.py +0 -0
  53. {ha_mcp_dev-8.5.0.dev2731 → ha_mcp_dev-8.5.0.dev2732}/src/ha_mcp/_vendor/fastmcp/cli/deploy/configuration.py +0 -0
  54. {ha_mcp_dev-8.5.0.dev2731 → ha_mcp_dev-8.5.0.dev2732}/src/ha_mcp/_vendor/fastmcp/cli/deploy/credentials.py +0 -0
  55. {ha_mcp_dev-8.5.0.dev2731 → ha_mcp_dev-8.5.0.dev2732}/src/ha_mcp/_vendor/fastmcp/cli/deploy/horizon_client.py +0 -0
  56. {ha_mcp_dev-8.5.0.dev2731 → ha_mcp_dev-8.5.0.dev2732}/src/ha_mcp/_vendor/fastmcp/cli/deploy/output.py +0 -0
  57. {ha_mcp_dev-8.5.0.dev2731 → ha_mcp_dev-8.5.0.dev2732}/src/ha_mcp/_vendor/fastmcp/cli/deploy/state.py +0 -0
  58. {ha_mcp_dev-8.5.0.dev2731 → ha_mcp_dev-8.5.0.dev2732}/src/ha_mcp/_vendor/fastmcp/cli/discovery.py +0 -0
  59. {ha_mcp_dev-8.5.0.dev2731 → ha_mcp_dev-8.5.0.dev2732}/src/ha_mcp/_vendor/fastmcp/cli/generate.py +0 -0
  60. {ha_mcp_dev-8.5.0.dev2731 → ha_mcp_dev-8.5.0.dev2732}/src/ha_mcp/_vendor/fastmcp/cli/install/__init__.py +0 -0
  61. {ha_mcp_dev-8.5.0.dev2731 → ha_mcp_dev-8.5.0.dev2732}/src/ha_mcp/_vendor/fastmcp/cli/install/claude_code.py +0 -0
  62. {ha_mcp_dev-8.5.0.dev2731 → ha_mcp_dev-8.5.0.dev2732}/src/ha_mcp/_vendor/fastmcp/cli/install/claude_desktop.py +0 -0
  63. {ha_mcp_dev-8.5.0.dev2731 → ha_mcp_dev-8.5.0.dev2732}/src/ha_mcp/_vendor/fastmcp/cli/install/cursor.py +0 -0
  64. {ha_mcp_dev-8.5.0.dev2731 → ha_mcp_dev-8.5.0.dev2732}/src/ha_mcp/_vendor/fastmcp/cli/install/gemini_cli.py +0 -0
  65. {ha_mcp_dev-8.5.0.dev2731 → ha_mcp_dev-8.5.0.dev2732}/src/ha_mcp/_vendor/fastmcp/cli/install/goose.py +0 -0
  66. {ha_mcp_dev-8.5.0.dev2731 → ha_mcp_dev-8.5.0.dev2732}/src/ha_mcp/_vendor/fastmcp/cli/install/mcp_json.py +0 -0
  67. {ha_mcp_dev-8.5.0.dev2731 → ha_mcp_dev-8.5.0.dev2732}/src/ha_mcp/_vendor/fastmcp/cli/install/shared.py +0 -0
  68. {ha_mcp_dev-8.5.0.dev2731 → ha_mcp_dev-8.5.0.dev2732}/src/ha_mcp/_vendor/fastmcp/cli/install/stdio.py +0 -0
  69. {ha_mcp_dev-8.5.0.dev2731 → ha_mcp_dev-8.5.0.dev2732}/src/ha_mcp/_vendor/fastmcp/cli/run.py +0 -0
  70. {ha_mcp_dev-8.5.0.dev2731 → ha_mcp_dev-8.5.0.dev2732}/src/ha_mcp/_vendor/fastmcp/client/__init__.py +0 -0
  71. {ha_mcp_dev-8.5.0.dev2731 → ha_mcp_dev-8.5.0.dev2732}/src/ha_mcp/_vendor/fastmcp/client/_sdk_context_shim.py +0 -0
  72. {ha_mcp_dev-8.5.0.dev2731 → ha_mcp_dev-8.5.0.dev2732}/src/ha_mcp/_vendor/fastmcp/client/auth/__init__.py +0 -0
  73. {ha_mcp_dev-8.5.0.dev2731 → ha_mcp_dev-8.5.0.dev2732}/src/ha_mcp/_vendor/fastmcp/client/auth/bearer.py +0 -0
  74. {ha_mcp_dev-8.5.0.dev2731 → ha_mcp_dev-8.5.0.dev2732}/src/ha_mcp/_vendor/fastmcp/client/auth/client_credentials.py +0 -0
  75. {ha_mcp_dev-8.5.0.dev2731 → ha_mcp_dev-8.5.0.dev2732}/src/ha_mcp/_vendor/fastmcp/client/auth/oauth.py +0 -0
  76. {ha_mcp_dev-8.5.0.dev2731 → ha_mcp_dev-8.5.0.dev2732}/src/ha_mcp/_vendor/fastmcp/client/caching.py +0 -0
  77. {ha_mcp_dev-8.5.0.dev2731 → ha_mcp_dev-8.5.0.dev2732}/src/ha_mcp/_vendor/fastmcp/client/client.py +0 -0
  78. {ha_mcp_dev-8.5.0.dev2731 → ha_mcp_dev-8.5.0.dev2732}/src/ha_mcp/_vendor/fastmcp/client/dependencies.py +0 -0
  79. {ha_mcp_dev-8.5.0.dev2731 → ha_mcp_dev-8.5.0.dev2732}/src/ha_mcp/_vendor/fastmcp/client/elicitation.py +0 -0
  80. {ha_mcp_dev-8.5.0.dev2731 → ha_mcp_dev-8.5.0.dev2732}/src/ha_mcp/_vendor/fastmcp/client/extension_hooks.py +0 -0
  81. {ha_mcp_dev-8.5.0.dev2731 → ha_mcp_dev-8.5.0.dev2732}/src/ha_mcp/_vendor/fastmcp/client/group.py +0 -0
  82. {ha_mcp_dev-8.5.0.dev2731 → ha_mcp_dev-8.5.0.dev2732}/src/ha_mcp/_vendor/fastmcp/client/logging.py +0 -0
  83. {ha_mcp_dev-8.5.0.dev2731 → ha_mcp_dev-8.5.0.dev2732}/src/ha_mcp/_vendor/fastmcp/client/messages.py +0 -0
  84. {ha_mcp_dev-8.5.0.dev2731 → ha_mcp_dev-8.5.0.dev2732}/src/ha_mcp/_vendor/fastmcp/client/mixins/__init__.py +0 -0
  85. {ha_mcp_dev-8.5.0.dev2731 → ha_mcp_dev-8.5.0.dev2732}/src/ha_mcp/_vendor/fastmcp/client/mixins/prompts.py +0 -0
  86. {ha_mcp_dev-8.5.0.dev2731 → ha_mcp_dev-8.5.0.dev2732}/src/ha_mcp/_vendor/fastmcp/client/mixins/resources.py +0 -0
  87. {ha_mcp_dev-8.5.0.dev2731 → ha_mcp_dev-8.5.0.dev2732}/src/ha_mcp/_vendor/fastmcp/client/mixins/tools.py +0 -0
  88. {ha_mcp_dev-8.5.0.dev2731 → ha_mcp_dev-8.5.0.dev2732}/src/ha_mcp/_vendor/fastmcp/client/oauth_callback.py +0 -0
  89. {ha_mcp_dev-8.5.0.dev2731 → ha_mcp_dev-8.5.0.dev2732}/src/ha_mcp/_vendor/fastmcp/client/progress.py +0 -0
  90. {ha_mcp_dev-8.5.0.dev2731 → ha_mcp_dev-8.5.0.dev2732}/src/ha_mcp/_vendor/fastmcp/client/roots.py +0 -0
  91. {ha_mcp_dev-8.5.0.dev2731 → ha_mcp_dev-8.5.0.dev2732}/src/ha_mcp/_vendor/fastmcp/client/sampling/__init__.py +0 -0
  92. {ha_mcp_dev-8.5.0.dev2731 → ha_mcp_dev-8.5.0.dev2732}/src/ha_mcp/_vendor/fastmcp/client/sampling/handlers/__init__.py +0 -0
  93. {ha_mcp_dev-8.5.0.dev2731 → ha_mcp_dev-8.5.0.dev2732}/src/ha_mcp/_vendor/fastmcp/client/sampling/handlers/anthropic.py +0 -0
  94. {ha_mcp_dev-8.5.0.dev2731 → ha_mcp_dev-8.5.0.dev2732}/src/ha_mcp/_vendor/fastmcp/client/sampling/handlers/google_genai.py +0 -0
  95. {ha_mcp_dev-8.5.0.dev2731 → ha_mcp_dev-8.5.0.dev2732}/src/ha_mcp/_vendor/fastmcp/client/sampling/handlers/openai.py +0 -0
  96. {ha_mcp_dev-8.5.0.dev2731 → ha_mcp_dev-8.5.0.dev2732}/src/ha_mcp/_vendor/fastmcp/client/telemetry.py +0 -0
  97. {ha_mcp_dev-8.5.0.dev2731 → ha_mcp_dev-8.5.0.dev2732}/src/ha_mcp/_vendor/fastmcp/client/transports/__init__.py +0 -0
  98. {ha_mcp_dev-8.5.0.dev2731 → ha_mcp_dev-8.5.0.dev2732}/src/ha_mcp/_vendor/fastmcp/client/transports/base.py +0 -0
  99. {ha_mcp_dev-8.5.0.dev2731 → ha_mcp_dev-8.5.0.dev2732}/src/ha_mcp/_vendor/fastmcp/client/transports/config.py +0 -0
  100. {ha_mcp_dev-8.5.0.dev2731 → ha_mcp_dev-8.5.0.dev2732}/src/ha_mcp/_vendor/fastmcp/client/transports/http.py +0 -0
  101. {ha_mcp_dev-8.5.0.dev2731 → ha_mcp_dev-8.5.0.dev2732}/src/ha_mcp/_vendor/fastmcp/client/transports/inference.py +0 -0
  102. {ha_mcp_dev-8.5.0.dev2731 → ha_mcp_dev-8.5.0.dev2732}/src/ha_mcp/_vendor/fastmcp/client/transports/memory.py +0 -0
  103. {ha_mcp_dev-8.5.0.dev2731 → ha_mcp_dev-8.5.0.dev2732}/src/ha_mcp/_vendor/fastmcp/client/transports/sse.py +0 -0
  104. {ha_mcp_dev-8.5.0.dev2731 → ha_mcp_dev-8.5.0.dev2732}/src/ha_mcp/_vendor/fastmcp/client/transports/stdio.py +0 -0
  105. {ha_mcp_dev-8.5.0.dev2731 → ha_mcp_dev-8.5.0.dev2732}/src/ha_mcp/_vendor/fastmcp/contrib/README.md +0 -0
  106. {ha_mcp_dev-8.5.0.dev2731 → ha_mcp_dev-8.5.0.dev2732}/src/ha_mcp/_vendor/fastmcp/contrib/bulk_tool_caller/README.md +0 -0
  107. {ha_mcp_dev-8.5.0.dev2731 → ha_mcp_dev-8.5.0.dev2732}/src/ha_mcp/_vendor/fastmcp/contrib/bulk_tool_caller/__init__.py +0 -0
  108. {ha_mcp_dev-8.5.0.dev2731 → ha_mcp_dev-8.5.0.dev2732}/src/ha_mcp/_vendor/fastmcp/contrib/bulk_tool_caller/bulk_tool_caller.py +0 -0
  109. {ha_mcp_dev-8.5.0.dev2731 → ha_mcp_dev-8.5.0.dev2732}/src/ha_mcp/_vendor/fastmcp/contrib/bulk_tool_caller/example.py +0 -0
  110. {ha_mcp_dev-8.5.0.dev2731 → ha_mcp_dev-8.5.0.dev2732}/src/ha_mcp/_vendor/fastmcp/contrib/component_manager/README.md +0 -0
  111. {ha_mcp_dev-8.5.0.dev2731 → ha_mcp_dev-8.5.0.dev2732}/src/ha_mcp/_vendor/fastmcp/contrib/component_manager/__init__.py +0 -0
  112. {ha_mcp_dev-8.5.0.dev2731 → ha_mcp_dev-8.5.0.dev2732}/src/ha_mcp/_vendor/fastmcp/contrib/component_manager/component_manager.py +0 -0
  113. {ha_mcp_dev-8.5.0.dev2731 → ha_mcp_dev-8.5.0.dev2732}/src/ha_mcp/_vendor/fastmcp/contrib/component_manager/example.py +0 -0
  114. {ha_mcp_dev-8.5.0.dev2731 → ha_mcp_dev-8.5.0.dev2732}/src/ha_mcp/_vendor/fastmcp/contrib/mcp_mixin/README.md +0 -0
  115. {ha_mcp_dev-8.5.0.dev2731 → ha_mcp_dev-8.5.0.dev2732}/src/ha_mcp/_vendor/fastmcp/contrib/mcp_mixin/__init__.py +0 -0
  116. {ha_mcp_dev-8.5.0.dev2731 → ha_mcp_dev-8.5.0.dev2732}/src/ha_mcp/_vendor/fastmcp/contrib/mcp_mixin/example.py +0 -0
  117. {ha_mcp_dev-8.5.0.dev2731 → ha_mcp_dev-8.5.0.dev2732}/src/ha_mcp/_vendor/fastmcp/contrib/mcp_mixin/mcp_mixin.py +0 -0
  118. {ha_mcp_dev-8.5.0.dev2731 → ha_mcp_dev-8.5.0.dev2732}/src/ha_mcp/_vendor/fastmcp/decorators.py +0 -0
  119. {ha_mcp_dev-8.5.0.dev2731 → ha_mcp_dev-8.5.0.dev2732}/src/ha_mcp/_vendor/fastmcp/dependencies.py +0 -0
  120. {ha_mcp_dev-8.5.0.dev2731 → ha_mcp_dev-8.5.0.dev2732}/src/ha_mcp/_vendor/fastmcp/exceptions.py +0 -0
  121. {ha_mcp_dev-8.5.0.dev2731 → ha_mcp_dev-8.5.0.dev2732}/src/ha_mcp/_vendor/fastmcp/experimental/__init__.py +0 -0
  122. {ha_mcp_dev-8.5.0.dev2731 → ha_mcp_dev-8.5.0.dev2732}/src/ha_mcp/_vendor/fastmcp/experimental/transforms/__init__.py +0 -0
  123. {ha_mcp_dev-8.5.0.dev2731 → ha_mcp_dev-8.5.0.dev2732}/src/ha_mcp/_vendor/fastmcp/experimental/transforms/code_mode.py +0 -0
  124. {ha_mcp_dev-8.5.0.dev2731 → ha_mcp_dev-8.5.0.dev2732}/src/ha_mcp/_vendor/fastmcp/mcp_config.py +0 -0
  125. {ha_mcp_dev-8.5.0.dev2731 → ha_mcp_dev-8.5.0.dev2732}/src/ha_mcp/_vendor/fastmcp/prompts/__init__.py +0 -0
  126. {ha_mcp_dev-8.5.0.dev2731 → ha_mcp_dev-8.5.0.dev2732}/src/ha_mcp/_vendor/fastmcp/prompts/base.py +0 -0
  127. {ha_mcp_dev-8.5.0.dev2731 → ha_mcp_dev-8.5.0.dev2732}/src/ha_mcp/_vendor/fastmcp/prompts/function_prompt.py +0 -0
  128. {ha_mcp_dev-8.5.0.dev2731 → ha_mcp_dev-8.5.0.dev2732}/src/ha_mcp/_vendor/fastmcp/py.typed +0 -0
  129. {ha_mcp_dev-8.5.0.dev2731 → ha_mcp_dev-8.5.0.dev2732}/src/ha_mcp/_vendor/fastmcp/resources/__init__.py +0 -0
  130. {ha_mcp_dev-8.5.0.dev2731 → ha_mcp_dev-8.5.0.dev2732}/src/ha_mcp/_vendor/fastmcp/resources/base.py +0 -0
  131. {ha_mcp_dev-8.5.0.dev2731 → ha_mcp_dev-8.5.0.dev2732}/src/ha_mcp/_vendor/fastmcp/resources/function_resource.py +0 -0
  132. {ha_mcp_dev-8.5.0.dev2731 → ha_mcp_dev-8.5.0.dev2732}/src/ha_mcp/_vendor/fastmcp/resources/security.py +0 -0
  133. {ha_mcp_dev-8.5.0.dev2731 → ha_mcp_dev-8.5.0.dev2732}/src/ha_mcp/_vendor/fastmcp/resources/template.py +0 -0
  134. {ha_mcp_dev-8.5.0.dev2731 → ha_mcp_dev-8.5.0.dev2732}/src/ha_mcp/_vendor/fastmcp/resources/types.py +0 -0
  135. {ha_mcp_dev-8.5.0.dev2731 → ha_mcp_dev-8.5.0.dev2732}/src/ha_mcp/_vendor/fastmcp/server/__init__.py +0 -0
  136. {ha_mcp_dev-8.5.0.dev2731 → ha_mcp_dev-8.5.0.dev2732}/src/ha_mcp/_vendor/fastmcp/server/auth/__init__.py +0 -0
  137. {ha_mcp_dev-8.5.0.dev2731 → ha_mcp_dev-8.5.0.dev2732}/src/ha_mcp/_vendor/fastmcp/server/auth/auth.py +0 -0
  138. {ha_mcp_dev-8.5.0.dev2731 → ha_mcp_dev-8.5.0.dev2732}/src/ha_mcp/_vendor/fastmcp/server/auth/cimd.py +0 -0
  139. {ha_mcp_dev-8.5.0.dev2731 → ha_mcp_dev-8.5.0.dev2732}/src/ha_mcp/_vendor/fastmcp/server/auth/handlers/__init__.py +0 -0
  140. {ha_mcp_dev-8.5.0.dev2731 → ha_mcp_dev-8.5.0.dev2732}/src/ha_mcp/_vendor/fastmcp/server/auth/handlers/authorize.py +0 -0
  141. {ha_mcp_dev-8.5.0.dev2731 → ha_mcp_dev-8.5.0.dev2732}/src/ha_mcp/_vendor/fastmcp/server/auth/identity_assertion.py +0 -0
  142. {ha_mcp_dev-8.5.0.dev2731 → ha_mcp_dev-8.5.0.dev2732}/src/ha_mcp/_vendor/fastmcp/server/auth/jwt_issuer.py +0 -0
  143. {ha_mcp_dev-8.5.0.dev2731 → ha_mcp_dev-8.5.0.dev2732}/src/ha_mcp/_vendor/fastmcp/server/auth/middleware.py +0 -0
  144. {ha_mcp_dev-8.5.0.dev2731 → ha_mcp_dev-8.5.0.dev2732}/src/ha_mcp/_vendor/fastmcp/server/auth/oauth_proxy/__init__.py +0 -0
  145. {ha_mcp_dev-8.5.0.dev2731 → ha_mcp_dev-8.5.0.dev2732}/src/ha_mcp/_vendor/fastmcp/server/auth/oauth_proxy/consent.py +0 -0
  146. {ha_mcp_dev-8.5.0.dev2731 → ha_mcp_dev-8.5.0.dev2732}/src/ha_mcp/_vendor/fastmcp/server/auth/oauth_proxy/models.py +0 -0
  147. {ha_mcp_dev-8.5.0.dev2731 → ha_mcp_dev-8.5.0.dev2732}/src/ha_mcp/_vendor/fastmcp/server/auth/oauth_proxy/proxy.py +0 -0
  148. {ha_mcp_dev-8.5.0.dev2731 → ha_mcp_dev-8.5.0.dev2732}/src/ha_mcp/_vendor/fastmcp/server/auth/oauth_proxy/ui.py +0 -0
  149. {ha_mcp_dev-8.5.0.dev2731 → ha_mcp_dev-8.5.0.dev2732}/src/ha_mcp/_vendor/fastmcp/server/auth/oauth_proxy/upstream.py +0 -0
  150. {ha_mcp_dev-8.5.0.dev2731 → ha_mcp_dev-8.5.0.dev2732}/src/ha_mcp/_vendor/fastmcp/server/auth/oidc_proxy.py +0 -0
  151. {ha_mcp_dev-8.5.0.dev2731 → ha_mcp_dev-8.5.0.dev2732}/src/ha_mcp/_vendor/fastmcp/server/auth/providers/__init__.py +0 -0
  152. {ha_mcp_dev-8.5.0.dev2731 → ha_mcp_dev-8.5.0.dev2732}/src/ha_mcp/_vendor/fastmcp/server/auth/providers/auth0.py +0 -0
  153. {ha_mcp_dev-8.5.0.dev2731 → ha_mcp_dev-8.5.0.dev2732}/src/ha_mcp/_vendor/fastmcp/server/auth/providers/aws.py +0 -0
  154. {ha_mcp_dev-8.5.0.dev2731 → ha_mcp_dev-8.5.0.dev2732}/src/ha_mcp/_vendor/fastmcp/server/auth/providers/azure.py +0 -0
  155. {ha_mcp_dev-8.5.0.dev2731 → ha_mcp_dev-8.5.0.dev2732}/src/ha_mcp/_vendor/fastmcp/server/auth/providers/clerk.py +0 -0
  156. {ha_mcp_dev-8.5.0.dev2731 → ha_mcp_dev-8.5.0.dev2732}/src/ha_mcp/_vendor/fastmcp/server/auth/providers/debug.py +0 -0
  157. {ha_mcp_dev-8.5.0.dev2731 → ha_mcp_dev-8.5.0.dev2732}/src/ha_mcp/_vendor/fastmcp/server/auth/providers/descope.py +0 -0
  158. {ha_mcp_dev-8.5.0.dev2731 → ha_mcp_dev-8.5.0.dev2732}/src/ha_mcp/_vendor/fastmcp/server/auth/providers/discord.py +0 -0
  159. {ha_mcp_dev-8.5.0.dev2731 → ha_mcp_dev-8.5.0.dev2732}/src/ha_mcp/_vendor/fastmcp/server/auth/providers/github.py +0 -0
  160. {ha_mcp_dev-8.5.0.dev2731 → ha_mcp_dev-8.5.0.dev2732}/src/ha_mcp/_vendor/fastmcp/server/auth/providers/google.py +0 -0
  161. {ha_mcp_dev-8.5.0.dev2731 → ha_mcp_dev-8.5.0.dev2732}/src/ha_mcp/_vendor/fastmcp/server/auth/providers/huggingface.py +0 -0
  162. {ha_mcp_dev-8.5.0.dev2731 → ha_mcp_dev-8.5.0.dev2732}/src/ha_mcp/_vendor/fastmcp/server/auth/providers/in_memory.py +0 -0
  163. {ha_mcp_dev-8.5.0.dev2731 → ha_mcp_dev-8.5.0.dev2732}/src/ha_mcp/_vendor/fastmcp/server/auth/providers/introspection.py +0 -0
  164. {ha_mcp_dev-8.5.0.dev2731 → ha_mcp_dev-8.5.0.dev2732}/src/ha_mcp/_vendor/fastmcp/server/auth/providers/jwt.py +0 -0
  165. {ha_mcp_dev-8.5.0.dev2731 → ha_mcp_dev-8.5.0.dev2732}/src/ha_mcp/_vendor/fastmcp/server/auth/providers/keycloak.py +0 -0
  166. {ha_mcp_dev-8.5.0.dev2731 → ha_mcp_dev-8.5.0.dev2732}/src/ha_mcp/_vendor/fastmcp/server/auth/providers/oci.py +0 -0
  167. {ha_mcp_dev-8.5.0.dev2731 → ha_mcp_dev-8.5.0.dev2732}/src/ha_mcp/_vendor/fastmcp/server/auth/providers/propelauth.py +0 -0
  168. {ha_mcp_dev-8.5.0.dev2731 → ha_mcp_dev-8.5.0.dev2732}/src/ha_mcp/_vendor/fastmcp/server/auth/providers/scalekit.py +0 -0
  169. {ha_mcp_dev-8.5.0.dev2731 → ha_mcp_dev-8.5.0.dev2732}/src/ha_mcp/_vendor/fastmcp/server/auth/providers/supabase.py +0 -0
  170. {ha_mcp_dev-8.5.0.dev2731 → ha_mcp_dev-8.5.0.dev2732}/src/ha_mcp/_vendor/fastmcp/server/auth/providers/workos.py +0 -0
  171. {ha_mcp_dev-8.5.0.dev2731 → ha_mcp_dev-8.5.0.dev2732}/src/ha_mcp/_vendor/fastmcp/server/auth/redirect_validation.py +0 -0
  172. {ha_mcp_dev-8.5.0.dev2731 → ha_mcp_dev-8.5.0.dev2732}/src/ha_mcp/_vendor/fastmcp/server/auth/ssrf.py +0 -0
  173. {ha_mcp_dev-8.5.0.dev2731 → ha_mcp_dev-8.5.0.dev2732}/src/ha_mcp/_vendor/fastmcp/server/caching.py +0 -0
  174. {ha_mcp_dev-8.5.0.dev2731 → ha_mcp_dev-8.5.0.dev2732}/src/ha_mcp/_vendor/fastmcp/server/completions.py +0 -0
  175. {ha_mcp_dev-8.5.0.dev2731 → ha_mcp_dev-8.5.0.dev2732}/src/ha_mcp/_vendor/fastmcp/server/context.py +0 -0
  176. {ha_mcp_dev-8.5.0.dev2731 → ha_mcp_dev-8.5.0.dev2732}/src/ha_mcp/_vendor/fastmcp/server/dependencies.py +0 -0
  177. {ha_mcp_dev-8.5.0.dev2731 → ha_mcp_dev-8.5.0.dev2732}/src/ha_mcp/_vendor/fastmcp/server/elicitation.py +0 -0
  178. {ha_mcp_dev-8.5.0.dev2731 → ha_mcp_dev-8.5.0.dev2732}/src/ha_mcp/_vendor/fastmcp/server/event_store.py +0 -0
  179. {ha_mcp_dev-8.5.0.dev2731 → ha_mcp_dev-8.5.0.dev2732}/src/ha_mcp/_vendor/fastmcp/server/extensions.py +0 -0
  180. {ha_mcp_dev-8.5.0.dev2731 → ha_mcp_dev-8.5.0.dev2732}/src/ha_mcp/_vendor/fastmcp/server/http.py +0 -0
  181. {ha_mcp_dev-8.5.0.dev2731 → ha_mcp_dev-8.5.0.dev2732}/src/ha_mcp/_vendor/fastmcp/server/lifespan.py +0 -0
  182. {ha_mcp_dev-8.5.0.dev2731 → ha_mcp_dev-8.5.0.dev2732}/src/ha_mcp/_vendor/fastmcp/server/low_level.py +0 -0
  183. {ha_mcp_dev-8.5.0.dev2731 → ha_mcp_dev-8.5.0.dev2732}/src/ha_mcp/_vendor/fastmcp/server/middleware/__init__.py +0 -0
  184. {ha_mcp_dev-8.5.0.dev2731 → ha_mcp_dev-8.5.0.dev2732}/src/ha_mcp/_vendor/fastmcp/server/middleware/authorization.py +0 -0
  185. {ha_mcp_dev-8.5.0.dev2731 → ha_mcp_dev-8.5.0.dev2732}/src/ha_mcp/_vendor/fastmcp/server/middleware/caching.py +0 -0
  186. {ha_mcp_dev-8.5.0.dev2731 → ha_mcp_dev-8.5.0.dev2732}/src/ha_mcp/_vendor/fastmcp/server/middleware/dereference.py +0 -0
  187. {ha_mcp_dev-8.5.0.dev2731 → ha_mcp_dev-8.5.0.dev2732}/src/ha_mcp/_vendor/fastmcp/server/middleware/error_handling.py +0 -0
  188. {ha_mcp_dev-8.5.0.dev2731 → ha_mcp_dev-8.5.0.dev2732}/src/ha_mcp/_vendor/fastmcp/server/middleware/logging.py +0 -0
  189. {ha_mcp_dev-8.5.0.dev2731 → ha_mcp_dev-8.5.0.dev2732}/src/ha_mcp/_vendor/fastmcp/server/middleware/middleware.py +0 -0
  190. {ha_mcp_dev-8.5.0.dev2731 → ha_mcp_dev-8.5.0.dev2732}/src/ha_mcp/_vendor/fastmcp/server/middleware/ping.py +0 -0
  191. {ha_mcp_dev-8.5.0.dev2731 → ha_mcp_dev-8.5.0.dev2732}/src/ha_mcp/_vendor/fastmcp/server/middleware/rate_limiting.py +0 -0
  192. {ha_mcp_dev-8.5.0.dev2731 → ha_mcp_dev-8.5.0.dev2732}/src/ha_mcp/_vendor/fastmcp/server/middleware/response_limiting.py +0 -0
  193. {ha_mcp_dev-8.5.0.dev2731 → ha_mcp_dev-8.5.0.dev2732}/src/ha_mcp/_vendor/fastmcp/server/middleware/timing.py +0 -0
  194. {ha_mcp_dev-8.5.0.dev2731 → ha_mcp_dev-8.5.0.dev2732}/src/ha_mcp/_vendor/fastmcp/server/middleware/tool_injection.py +0 -0
  195. {ha_mcp_dev-8.5.0.dev2731 → ha_mcp_dev-8.5.0.dev2732}/src/ha_mcp/_vendor/fastmcp/server/mixins/__init__.py +0 -0
  196. {ha_mcp_dev-8.5.0.dev2731 → ha_mcp_dev-8.5.0.dev2732}/src/ha_mcp/_vendor/fastmcp/server/mixins/lifespan.py +0 -0
  197. {ha_mcp_dev-8.5.0.dev2731 → ha_mcp_dev-8.5.0.dev2732}/src/ha_mcp/_vendor/fastmcp/server/mixins/mcp_operations.py +0 -0
  198. {ha_mcp_dev-8.5.0.dev2731 → ha_mcp_dev-8.5.0.dev2732}/src/ha_mcp/_vendor/fastmcp/server/mixins/transport.py +0 -0
  199. {ha_mcp_dev-8.5.0.dev2731 → ha_mcp_dev-8.5.0.dev2732}/src/ha_mcp/_vendor/fastmcp/server/providers/__init__.py +0 -0
  200. {ha_mcp_dev-8.5.0.dev2731 → ha_mcp_dev-8.5.0.dev2732}/src/ha_mcp/_vendor/fastmcp/server/providers/addressing.py +0 -0
  201. {ha_mcp_dev-8.5.0.dev2731 → ha_mcp_dev-8.5.0.dev2732}/src/ha_mcp/_vendor/fastmcp/server/providers/aggregate.py +0 -0
  202. {ha_mcp_dev-8.5.0.dev2731 → ha_mcp_dev-8.5.0.dev2732}/src/ha_mcp/_vendor/fastmcp/server/providers/base.py +0 -0
  203. {ha_mcp_dev-8.5.0.dev2731 → ha_mcp_dev-8.5.0.dev2732}/src/ha_mcp/_vendor/fastmcp/server/providers/fastmcp_provider.py +0 -0
  204. {ha_mcp_dev-8.5.0.dev2731 → ha_mcp_dev-8.5.0.dev2732}/src/ha_mcp/_vendor/fastmcp/server/providers/filesystem.py +0 -0
  205. {ha_mcp_dev-8.5.0.dev2731 → ha_mcp_dev-8.5.0.dev2732}/src/ha_mcp/_vendor/fastmcp/server/providers/filesystem_discovery.py +0 -0
  206. {ha_mcp_dev-8.5.0.dev2731 → ha_mcp_dev-8.5.0.dev2732}/src/ha_mcp/_vendor/fastmcp/server/providers/local_provider/__init__.py +0 -0
  207. {ha_mcp_dev-8.5.0.dev2731 → ha_mcp_dev-8.5.0.dev2732}/src/ha_mcp/_vendor/fastmcp/server/providers/local_provider/decorators/__init__.py +0 -0
  208. {ha_mcp_dev-8.5.0.dev2731 → ha_mcp_dev-8.5.0.dev2732}/src/ha_mcp/_vendor/fastmcp/server/providers/local_provider/decorators/prompts.py +0 -0
  209. {ha_mcp_dev-8.5.0.dev2731 → ha_mcp_dev-8.5.0.dev2732}/src/ha_mcp/_vendor/fastmcp/server/providers/local_provider/decorators/resources.py +0 -0
  210. {ha_mcp_dev-8.5.0.dev2731 → ha_mcp_dev-8.5.0.dev2732}/src/ha_mcp/_vendor/fastmcp/server/providers/local_provider/decorators/tools.py +0 -0
  211. {ha_mcp_dev-8.5.0.dev2731 → ha_mcp_dev-8.5.0.dev2732}/src/ha_mcp/_vendor/fastmcp/server/providers/local_provider/local_provider.py +0 -0
  212. {ha_mcp_dev-8.5.0.dev2731 → ha_mcp_dev-8.5.0.dev2732}/src/ha_mcp/_vendor/fastmcp/server/providers/openapi/README.md +0 -0
  213. {ha_mcp_dev-8.5.0.dev2731 → ha_mcp_dev-8.5.0.dev2732}/src/ha_mcp/_vendor/fastmcp/server/providers/openapi/__init__.py +0 -0
  214. {ha_mcp_dev-8.5.0.dev2731 → ha_mcp_dev-8.5.0.dev2732}/src/ha_mcp/_vendor/fastmcp/server/providers/openapi/components.py +0 -0
  215. {ha_mcp_dev-8.5.0.dev2731 → ha_mcp_dev-8.5.0.dev2732}/src/ha_mcp/_vendor/fastmcp/server/providers/openapi/provider.py +0 -0
  216. {ha_mcp_dev-8.5.0.dev2731 → ha_mcp_dev-8.5.0.dev2732}/src/ha_mcp/_vendor/fastmcp/server/providers/openapi/routing.py +0 -0
  217. {ha_mcp_dev-8.5.0.dev2731 → ha_mcp_dev-8.5.0.dev2732}/src/ha_mcp/_vendor/fastmcp/server/providers/prefab_payload.py +0 -0
  218. {ha_mcp_dev-8.5.0.dev2731 → ha_mcp_dev-8.5.0.dev2732}/src/ha_mcp/_vendor/fastmcp/server/providers/prefab_synthesis.py +0 -0
  219. {ha_mcp_dev-8.5.0.dev2731 → ha_mcp_dev-8.5.0.dev2732}/src/ha_mcp/_vendor/fastmcp/server/providers/proxy.py +0 -0
  220. {ha_mcp_dev-8.5.0.dev2731 → ha_mcp_dev-8.5.0.dev2732}/src/ha_mcp/_vendor/fastmcp/server/providers/skills/__init__.py +0 -0
  221. {ha_mcp_dev-8.5.0.dev2731 → ha_mcp_dev-8.5.0.dev2732}/src/ha_mcp/_vendor/fastmcp/server/providers/skills/_common.py +0 -0
  222. {ha_mcp_dev-8.5.0.dev2731 → ha_mcp_dev-8.5.0.dev2732}/src/ha_mcp/_vendor/fastmcp/server/providers/skills/claude_provider.py +0 -0
  223. {ha_mcp_dev-8.5.0.dev2731 → ha_mcp_dev-8.5.0.dev2732}/src/ha_mcp/_vendor/fastmcp/server/providers/skills/directory_provider.py +0 -0
  224. {ha_mcp_dev-8.5.0.dev2731 → ha_mcp_dev-8.5.0.dev2732}/src/ha_mcp/_vendor/fastmcp/server/providers/skills/skill_provider.py +0 -0
  225. {ha_mcp_dev-8.5.0.dev2731 → ha_mcp_dev-8.5.0.dev2732}/src/ha_mcp/_vendor/fastmcp/server/providers/skills/vendor_providers.py +0 -0
  226. {ha_mcp_dev-8.5.0.dev2731 → ha_mcp_dev-8.5.0.dev2732}/src/ha_mcp/_vendor/fastmcp/server/providers/wrapped_provider.py +0 -0
  227. {ha_mcp_dev-8.5.0.dev2731 → ha_mcp_dev-8.5.0.dev2732}/src/ha_mcp/_vendor/fastmcp/server/server.py +0 -0
  228. {ha_mcp_dev-8.5.0.dev2731 → ha_mcp_dev-8.5.0.dev2732}/src/ha_mcp/_vendor/fastmcp/server/session_scoped_event_store.py +0 -0
  229. {ha_mcp_dev-8.5.0.dev2731 → ha_mcp_dev-8.5.0.dev2732}/src/ha_mcp/_vendor/fastmcp/server/sessions.py +0 -0
  230. {ha_mcp_dev-8.5.0.dev2731 → ha_mcp_dev-8.5.0.dev2732}/src/ha_mcp/_vendor/fastmcp/server/telemetry.py +0 -0
  231. {ha_mcp_dev-8.5.0.dev2731 → ha_mcp_dev-8.5.0.dev2732}/src/ha_mcp/_vendor/fastmcp/server/transforms/__init__.py +0 -0
  232. {ha_mcp_dev-8.5.0.dev2731 → ha_mcp_dev-8.5.0.dev2732}/src/ha_mcp/_vendor/fastmcp/server/transforms/catalog.py +0 -0
  233. {ha_mcp_dev-8.5.0.dev2731 → ha_mcp_dev-8.5.0.dev2732}/src/ha_mcp/_vendor/fastmcp/server/transforms/namespace.py +0 -0
  234. {ha_mcp_dev-8.5.0.dev2731 → ha_mcp_dev-8.5.0.dev2732}/src/ha_mcp/_vendor/fastmcp/server/transforms/prompts_as_tools.py +0 -0
  235. {ha_mcp_dev-8.5.0.dev2731 → ha_mcp_dev-8.5.0.dev2732}/src/ha_mcp/_vendor/fastmcp/server/transforms/resources_as_tools.py +0 -0
  236. {ha_mcp_dev-8.5.0.dev2731 → ha_mcp_dev-8.5.0.dev2732}/src/ha_mcp/_vendor/fastmcp/server/transforms/search/__init__.py +0 -0
  237. {ha_mcp_dev-8.5.0.dev2731 → ha_mcp_dev-8.5.0.dev2732}/src/ha_mcp/_vendor/fastmcp/server/transforms/search/base.py +0 -0
  238. {ha_mcp_dev-8.5.0.dev2731 → ha_mcp_dev-8.5.0.dev2732}/src/ha_mcp/_vendor/fastmcp/server/transforms/search/bm25.py +0 -0
  239. {ha_mcp_dev-8.5.0.dev2731 → ha_mcp_dev-8.5.0.dev2732}/src/ha_mcp/_vendor/fastmcp/server/transforms/search/regex.py +0 -0
  240. {ha_mcp_dev-8.5.0.dev2731 → ha_mcp_dev-8.5.0.dev2732}/src/ha_mcp/_vendor/fastmcp/server/transforms/tool_transform.py +0 -0
  241. {ha_mcp_dev-8.5.0.dev2731 → ha_mcp_dev-8.5.0.dev2732}/src/ha_mcp/_vendor/fastmcp/server/transforms/version_filter.py +0 -0
  242. {ha_mcp_dev-8.5.0.dev2731 → ha_mcp_dev-8.5.0.dev2732}/src/ha_mcp/_vendor/fastmcp/server/transforms/visibility.py +0 -0
  243. {ha_mcp_dev-8.5.0.dev2731 → ha_mcp_dev-8.5.0.dev2732}/src/ha_mcp/_vendor/fastmcp/settings.py +0 -0
  244. {ha_mcp_dev-8.5.0.dev2731 → ha_mcp_dev-8.5.0.dev2732}/src/ha_mcp/_vendor/fastmcp/telemetry.py +0 -0
  245. {ha_mcp_dev-8.5.0.dev2731 → ha_mcp_dev-8.5.0.dev2732}/src/ha_mcp/_vendor/fastmcp/tools/__init__.py +0 -0
  246. {ha_mcp_dev-8.5.0.dev2731 → ha_mcp_dev-8.5.0.dev2732}/src/ha_mcp/_vendor/fastmcp/tools/base.py +0 -0
  247. {ha_mcp_dev-8.5.0.dev2731 → ha_mcp_dev-8.5.0.dev2732}/src/ha_mcp/_vendor/fastmcp/tools/function_parsing.py +0 -0
  248. {ha_mcp_dev-8.5.0.dev2731 → ha_mcp_dev-8.5.0.dev2732}/src/ha_mcp/_vendor/fastmcp/tools/function_tool.py +0 -0
  249. {ha_mcp_dev-8.5.0.dev2731 → ha_mcp_dev-8.5.0.dev2732}/src/ha_mcp/_vendor/fastmcp/tools/tool_transform.py +0 -0
  250. {ha_mcp_dev-8.5.0.dev2731 → ha_mcp_dev-8.5.0.dev2732}/src/ha_mcp/_vendor/fastmcp/types.py +0 -0
  251. {ha_mcp_dev-8.5.0.dev2731 → ha_mcp_dev-8.5.0.dev2732}/src/ha_mcp/_vendor/fastmcp/utilities/__init__.py +0 -0
  252. {ha_mcp_dev-8.5.0.dev2731 → ha_mcp_dev-8.5.0.dev2732}/src/ha_mcp/_vendor/fastmcp/utilities/asgi_transport.py +0 -0
  253. {ha_mcp_dev-8.5.0.dev2731 → ha_mcp_dev-8.5.0.dev2732}/src/ha_mcp/_vendor/fastmcp/utilities/async_utils.py +0 -0
  254. {ha_mcp_dev-8.5.0.dev2731 → ha_mcp_dev-8.5.0.dev2732}/src/ha_mcp/_vendor/fastmcp/utilities/auth.py +0 -0
  255. {ha_mcp_dev-8.5.0.dev2731 → ha_mcp_dev-8.5.0.dev2732}/src/ha_mcp/_vendor/fastmcp/utilities/authorization.py +0 -0
  256. {ha_mcp_dev-8.5.0.dev2731 → ha_mcp_dev-8.5.0.dev2732}/src/ha_mcp/_vendor/fastmcp/utilities/cli.py +0 -0
  257. {ha_mcp_dev-8.5.0.dev2731 → ha_mcp_dev-8.5.0.dev2732}/src/ha_mcp/_vendor/fastmcp/utilities/components.py +0 -0
  258. {ha_mcp_dev-8.5.0.dev2731 → ha_mcp_dev-8.5.0.dev2732}/src/ha_mcp/_vendor/fastmcp/utilities/docstring_parsing.py +0 -0
  259. {ha_mcp_dev-8.5.0.dev2731 → ha_mcp_dev-8.5.0.dev2732}/src/ha_mcp/_vendor/fastmcp/utilities/exceptions.py +0 -0
  260. {ha_mcp_dev-8.5.0.dev2731 → ha_mcp_dev-8.5.0.dev2732}/src/ha_mcp/_vendor/fastmcp/utilities/http.py +0 -0
  261. {ha_mcp_dev-8.5.0.dev2731 → ha_mcp_dev-8.5.0.dev2732}/src/ha_mcp/_vendor/fastmcp/utilities/inspect.py +0 -0
  262. {ha_mcp_dev-8.5.0.dev2731 → ha_mcp_dev-8.5.0.dev2732}/src/ha_mcp/_vendor/fastmcp/utilities/json_schema.py +0 -0
  263. {ha_mcp_dev-8.5.0.dev2731 → ha_mcp_dev-8.5.0.dev2732}/src/ha_mcp/_vendor/fastmcp/utilities/json_schema_type.py +0 -0
  264. {ha_mcp_dev-8.5.0.dev2731 → ha_mcp_dev-8.5.0.dev2732}/src/ha_mcp/_vendor/fastmcp/utilities/lifespan.py +0 -0
  265. {ha_mcp_dev-8.5.0.dev2731 → ha_mcp_dev-8.5.0.dev2732}/src/ha_mcp/_vendor/fastmcp/utilities/logging.py +0 -0
  266. {ha_mcp_dev-8.5.0.dev2731 → ha_mcp_dev-8.5.0.dev2732}/src/ha_mcp/_vendor/fastmcp/utilities/mcp_server_config/__init__.py +0 -0
  267. {ha_mcp_dev-8.5.0.dev2731 → ha_mcp_dev-8.5.0.dev2732}/src/ha_mcp/_vendor/fastmcp/utilities/mcp_server_config/v1/__init__.py +0 -0
  268. {ha_mcp_dev-8.5.0.dev2731 → ha_mcp_dev-8.5.0.dev2732}/src/ha_mcp/_vendor/fastmcp/utilities/mcp_server_config/v1/environments/__init__.py +0 -0
  269. {ha_mcp_dev-8.5.0.dev2731 → ha_mcp_dev-8.5.0.dev2732}/src/ha_mcp/_vendor/fastmcp/utilities/mcp_server_config/v1/environments/base.py +0 -0
  270. {ha_mcp_dev-8.5.0.dev2731 → ha_mcp_dev-8.5.0.dev2732}/src/ha_mcp/_vendor/fastmcp/utilities/mcp_server_config/v1/environments/uv.py +0 -0
  271. {ha_mcp_dev-8.5.0.dev2731 → ha_mcp_dev-8.5.0.dev2732}/src/ha_mcp/_vendor/fastmcp/utilities/mcp_server_config/v1/mcp_server_config.py +0 -0
  272. {ha_mcp_dev-8.5.0.dev2731 → ha_mcp_dev-8.5.0.dev2732}/src/ha_mcp/_vendor/fastmcp/utilities/mcp_server_config/v1/schema.json +0 -0
  273. {ha_mcp_dev-8.5.0.dev2731 → ha_mcp_dev-8.5.0.dev2732}/src/ha_mcp/_vendor/fastmcp/utilities/mcp_server_config/v1/sources/__init__.py +0 -0
  274. {ha_mcp_dev-8.5.0.dev2731 → ha_mcp_dev-8.5.0.dev2732}/src/ha_mcp/_vendor/fastmcp/utilities/mcp_server_config/v1/sources/base.py +0 -0
  275. {ha_mcp_dev-8.5.0.dev2731 → ha_mcp_dev-8.5.0.dev2732}/src/ha_mcp/_vendor/fastmcp/utilities/mcp_server_config/v1/sources/filesystem.py +0 -0
  276. {ha_mcp_dev-8.5.0.dev2731 → ha_mcp_dev-8.5.0.dev2732}/src/ha_mcp/_vendor/fastmcp/utilities/mime.py +0 -0
  277. {ha_mcp_dev-8.5.0.dev2731 → ha_mcp_dev-8.5.0.dev2732}/src/ha_mcp/_vendor/fastmcp/utilities/openapi/README.md +0 -0
  278. {ha_mcp_dev-8.5.0.dev2731 → ha_mcp_dev-8.5.0.dev2732}/src/ha_mcp/_vendor/fastmcp/utilities/openapi/__init__.py +0 -0
  279. {ha_mcp_dev-8.5.0.dev2731 → ha_mcp_dev-8.5.0.dev2732}/src/ha_mcp/_vendor/fastmcp/utilities/openapi/director.py +0 -0
  280. {ha_mcp_dev-8.5.0.dev2731 → ha_mcp_dev-8.5.0.dev2732}/src/ha_mcp/_vendor/fastmcp/utilities/openapi/formatters.py +0 -0
  281. {ha_mcp_dev-8.5.0.dev2731 → ha_mcp_dev-8.5.0.dev2732}/src/ha_mcp/_vendor/fastmcp/utilities/openapi/json_schema_converter.py +0 -0
  282. {ha_mcp_dev-8.5.0.dev2731 → ha_mcp_dev-8.5.0.dev2732}/src/ha_mcp/_vendor/fastmcp/utilities/openapi/models.py +0 -0
  283. {ha_mcp_dev-8.5.0.dev2731 → ha_mcp_dev-8.5.0.dev2732}/src/ha_mcp/_vendor/fastmcp/utilities/openapi/parser.py +0 -0
  284. {ha_mcp_dev-8.5.0.dev2731 → ha_mcp_dev-8.5.0.dev2732}/src/ha_mcp/_vendor/fastmcp/utilities/openapi/schemas.py +0 -0
  285. {ha_mcp_dev-8.5.0.dev2731 → ha_mcp_dev-8.5.0.dev2732}/src/ha_mcp/_vendor/fastmcp/utilities/pagination.py +0 -0
  286. {ha_mcp_dev-8.5.0.dev2731 → ha_mcp_dev-8.5.0.dev2732}/src/ha_mcp/_vendor/fastmcp/utilities/prefab.py +0 -0
  287. {ha_mcp_dev-8.5.0.dev2731 → ha_mcp_dev-8.5.0.dev2732}/src/ha_mcp/_vendor/fastmcp/utilities/skills.py +0 -0
  288. {ha_mcp_dev-8.5.0.dev2731 → ha_mcp_dev-8.5.0.dev2732}/src/ha_mcp/_vendor/fastmcp/utilities/tasks.py +0 -0
  289. {ha_mcp_dev-8.5.0.dev2731 → ha_mcp_dev-8.5.0.dev2732}/src/ha_mcp/_vendor/fastmcp/utilities/tests.py +0 -0
  290. {ha_mcp_dev-8.5.0.dev2731 → ha_mcp_dev-8.5.0.dev2732}/src/ha_mcp/_vendor/fastmcp/utilities/timeout.py +0 -0
  291. {ha_mcp_dev-8.5.0.dev2731 → ha_mcp_dev-8.5.0.dev2732}/src/ha_mcp/_vendor/fastmcp/utilities/token_cache.py +0 -0
  292. {ha_mcp_dev-8.5.0.dev2731 → ha_mcp_dev-8.5.0.dev2732}/src/ha_mcp/_vendor/fastmcp/utilities/types.py +0 -0
  293. {ha_mcp_dev-8.5.0.dev2731 → ha_mcp_dev-8.5.0.dev2732}/src/ha_mcp/_vendor/fastmcp/utilities/ui.py +0 -0
  294. {ha_mcp_dev-8.5.0.dev2731 → ha_mcp_dev-8.5.0.dev2732}/src/ha_mcp/_vendor/fastmcp/utilities/version_check.py +0 -0
  295. {ha_mcp_dev-8.5.0.dev2731 → ha_mcp_dev-8.5.0.dev2732}/src/ha_mcp/_vendor/fastmcp/utilities/versions.py +0 -0
  296. {ha_mcp_dev-8.5.0.dev2731 → ha_mcp_dev-8.5.0.dev2732}/src/ha_mcp/_vendor/mcp/LICENSE +0 -0
  297. {ha_mcp_dev-8.5.0.dev2731 → ha_mcp_dev-8.5.0.dev2732}/src/ha_mcp/_vendor/mcp/MANIFEST.sha256 +0 -0
  298. {ha_mcp_dev-8.5.0.dev2731 → ha_mcp_dev-8.5.0.dev2732}/src/ha_mcp/_vendor/mcp/REQUIRES.txt +0 -0
  299. {ha_mcp_dev-8.5.0.dev2731 → ha_mcp_dev-8.5.0.dev2732}/src/ha_mcp/_vendor/mcp/VENDORED +0 -0
  300. {ha_mcp_dev-8.5.0.dev2731 → ha_mcp_dev-8.5.0.dev2732}/src/ha_mcp/_vendor/mcp/__init__.py +0 -0
  301. {ha_mcp_dev-8.5.0.dev2731 → ha_mcp_dev-8.5.0.dev2732}/src/ha_mcp/_vendor/mcp/cli/__init__.py +0 -0
  302. {ha_mcp_dev-8.5.0.dev2731 → ha_mcp_dev-8.5.0.dev2732}/src/ha_mcp/_vendor/mcp/cli/claude.py +0 -0
  303. {ha_mcp_dev-8.5.0.dev2731 → ha_mcp_dev-8.5.0.dev2732}/src/ha_mcp/_vendor/mcp/cli/cli.py +0 -0
  304. {ha_mcp_dev-8.5.0.dev2731 → ha_mcp_dev-8.5.0.dev2732}/src/ha_mcp/_vendor/mcp/client/__init__.py +0 -0
  305. {ha_mcp_dev-8.5.0.dev2731 → ha_mcp_dev-8.5.0.dev2732}/src/ha_mcp/_vendor/mcp/client/__main__.py +0 -0
  306. {ha_mcp_dev-8.5.0.dev2731 → ha_mcp_dev-8.5.0.dev2732}/src/ha_mcp/_vendor/mcp/client/_input_required.py +0 -0
  307. {ha_mcp_dev-8.5.0.dev2731 → ha_mcp_dev-8.5.0.dev2732}/src/ha_mcp/_vendor/mcp/client/_memory.py +0 -0
  308. {ha_mcp_dev-8.5.0.dev2731 → ha_mcp_dev-8.5.0.dev2732}/src/ha_mcp/_vendor/mcp/client/_probe.py +0 -0
  309. {ha_mcp_dev-8.5.0.dev2731 → ha_mcp_dev-8.5.0.dev2732}/src/ha_mcp/_vendor/mcp/client/_transport.py +0 -0
  310. {ha_mcp_dev-8.5.0.dev2731 → ha_mcp_dev-8.5.0.dev2732}/src/ha_mcp/_vendor/mcp/client/auth/__init__.py +0 -0
  311. {ha_mcp_dev-8.5.0.dev2731 → ha_mcp_dev-8.5.0.dev2732}/src/ha_mcp/_vendor/mcp/client/auth/exceptions.py +0 -0
  312. {ha_mcp_dev-8.5.0.dev2731 → ha_mcp_dev-8.5.0.dev2732}/src/ha_mcp/_vendor/mcp/client/auth/extensions/__init__.py +0 -0
  313. {ha_mcp_dev-8.5.0.dev2731 → ha_mcp_dev-8.5.0.dev2732}/src/ha_mcp/_vendor/mcp/client/auth/extensions/client_credentials.py +0 -0
  314. {ha_mcp_dev-8.5.0.dev2731 → ha_mcp_dev-8.5.0.dev2732}/src/ha_mcp/_vendor/mcp/client/auth/extensions/identity_assertion.py +0 -0
  315. {ha_mcp_dev-8.5.0.dev2731 → ha_mcp_dev-8.5.0.dev2732}/src/ha_mcp/_vendor/mcp/client/auth/oauth2.py +0 -0
  316. {ha_mcp_dev-8.5.0.dev2731 → ha_mcp_dev-8.5.0.dev2732}/src/ha_mcp/_vendor/mcp/client/auth/utils.py +0 -0
  317. {ha_mcp_dev-8.5.0.dev2731 → ha_mcp_dev-8.5.0.dev2732}/src/ha_mcp/_vendor/mcp/client/caching.py +0 -0
  318. {ha_mcp_dev-8.5.0.dev2731 → ha_mcp_dev-8.5.0.dev2732}/src/ha_mcp/_vendor/mcp/client/client.py +0 -0
  319. {ha_mcp_dev-8.5.0.dev2731 → ha_mcp_dev-8.5.0.dev2732}/src/ha_mcp/_vendor/mcp/client/context.py +0 -0
  320. {ha_mcp_dev-8.5.0.dev2731 → ha_mcp_dev-8.5.0.dev2732}/src/ha_mcp/_vendor/mcp/client/extension.py +0 -0
  321. {ha_mcp_dev-8.5.0.dev2731 → ha_mcp_dev-8.5.0.dev2732}/src/ha_mcp/_vendor/mcp/client/session.py +0 -0
  322. {ha_mcp_dev-8.5.0.dev2731 → ha_mcp_dev-8.5.0.dev2732}/src/ha_mcp/_vendor/mcp/client/session_group.py +0 -0
  323. {ha_mcp_dev-8.5.0.dev2731 → ha_mcp_dev-8.5.0.dev2732}/src/ha_mcp/_vendor/mcp/client/sse.py +0 -0
  324. {ha_mcp_dev-8.5.0.dev2731 → ha_mcp_dev-8.5.0.dev2732}/src/ha_mcp/_vendor/mcp/client/stdio.py +0 -0
  325. {ha_mcp_dev-8.5.0.dev2731 → ha_mcp_dev-8.5.0.dev2732}/src/ha_mcp/_vendor/mcp/client/streamable_http.py +0 -0
  326. {ha_mcp_dev-8.5.0.dev2731 → ha_mcp_dev-8.5.0.dev2732}/src/ha_mcp/_vendor/mcp/client/subscriptions.py +0 -0
  327. {ha_mcp_dev-8.5.0.dev2731 → ha_mcp_dev-8.5.0.dev2732}/src/ha_mcp/_vendor/mcp/os/__init__.py +0 -0
  328. {ha_mcp_dev-8.5.0.dev2731 → ha_mcp_dev-8.5.0.dev2732}/src/ha_mcp/_vendor/mcp/os/posix/__init__.py +0 -0
  329. {ha_mcp_dev-8.5.0.dev2731 → ha_mcp_dev-8.5.0.dev2732}/src/ha_mcp/_vendor/mcp/os/posix/utilities.py +0 -0
  330. {ha_mcp_dev-8.5.0.dev2731 → ha_mcp_dev-8.5.0.dev2732}/src/ha_mcp/_vendor/mcp/os/win32/__init__.py +0 -0
  331. {ha_mcp_dev-8.5.0.dev2731 → ha_mcp_dev-8.5.0.dev2732}/src/ha_mcp/_vendor/mcp/os/win32/utilities.py +0 -0
  332. {ha_mcp_dev-8.5.0.dev2731 → ha_mcp_dev-8.5.0.dev2732}/src/ha_mcp/_vendor/mcp/py.typed +0 -0
  333. {ha_mcp_dev-8.5.0.dev2731 → ha_mcp_dev-8.5.0.dev2732}/src/ha_mcp/_vendor/mcp/server/__init__.py +0 -0
  334. {ha_mcp_dev-8.5.0.dev2731 → ha_mcp_dev-8.5.0.dev2732}/src/ha_mcp/_vendor/mcp/server/__main__.py +0 -0
  335. {ha_mcp_dev-8.5.0.dev2731 → ha_mcp_dev-8.5.0.dev2732}/src/ha_mcp/_vendor/mcp/server/_otel.py +0 -0
  336. {ha_mcp_dev-8.5.0.dev2731 → ha_mcp_dev-8.5.0.dev2732}/src/ha_mcp/_vendor/mcp/server/_streamable_http_modern.py +0 -0
  337. {ha_mcp_dev-8.5.0.dev2731 → ha_mcp_dev-8.5.0.dev2732}/src/ha_mcp/_vendor/mcp/server/apps.py +0 -0
  338. {ha_mcp_dev-8.5.0.dev2731 → ha_mcp_dev-8.5.0.dev2732}/src/ha_mcp/_vendor/mcp/server/auth/__init__.py +0 -0
  339. {ha_mcp_dev-8.5.0.dev2731 → ha_mcp_dev-8.5.0.dev2732}/src/ha_mcp/_vendor/mcp/server/auth/errors.py +0 -0
  340. {ha_mcp_dev-8.5.0.dev2731 → ha_mcp_dev-8.5.0.dev2732}/src/ha_mcp/_vendor/mcp/server/auth/handlers/__init__.py +0 -0
  341. {ha_mcp_dev-8.5.0.dev2731 → ha_mcp_dev-8.5.0.dev2732}/src/ha_mcp/_vendor/mcp/server/auth/handlers/authorize.py +0 -0
  342. {ha_mcp_dev-8.5.0.dev2731 → ha_mcp_dev-8.5.0.dev2732}/src/ha_mcp/_vendor/mcp/server/auth/handlers/metadata.py +0 -0
  343. {ha_mcp_dev-8.5.0.dev2731 → ha_mcp_dev-8.5.0.dev2732}/src/ha_mcp/_vendor/mcp/server/auth/handlers/register.py +0 -0
  344. {ha_mcp_dev-8.5.0.dev2731 → ha_mcp_dev-8.5.0.dev2732}/src/ha_mcp/_vendor/mcp/server/auth/handlers/revoke.py +0 -0
  345. {ha_mcp_dev-8.5.0.dev2731 → ha_mcp_dev-8.5.0.dev2732}/src/ha_mcp/_vendor/mcp/server/auth/handlers/token.py +0 -0
  346. {ha_mcp_dev-8.5.0.dev2731 → ha_mcp_dev-8.5.0.dev2732}/src/ha_mcp/_vendor/mcp/server/auth/json_response.py +0 -0
  347. {ha_mcp_dev-8.5.0.dev2731 → ha_mcp_dev-8.5.0.dev2732}/src/ha_mcp/_vendor/mcp/server/auth/middleware/__init__.py +0 -0
  348. {ha_mcp_dev-8.5.0.dev2731 → ha_mcp_dev-8.5.0.dev2732}/src/ha_mcp/_vendor/mcp/server/auth/middleware/auth_context.py +0 -0
  349. {ha_mcp_dev-8.5.0.dev2731 → ha_mcp_dev-8.5.0.dev2732}/src/ha_mcp/_vendor/mcp/server/auth/middleware/bearer_auth.py +0 -0
  350. {ha_mcp_dev-8.5.0.dev2731 → ha_mcp_dev-8.5.0.dev2732}/src/ha_mcp/_vendor/mcp/server/auth/middleware/client_auth.py +0 -0
  351. {ha_mcp_dev-8.5.0.dev2731 → ha_mcp_dev-8.5.0.dev2732}/src/ha_mcp/_vendor/mcp/server/auth/provider.py +0 -0
  352. {ha_mcp_dev-8.5.0.dev2731 → ha_mcp_dev-8.5.0.dev2732}/src/ha_mcp/_vendor/mcp/server/auth/routes.py +0 -0
  353. {ha_mcp_dev-8.5.0.dev2731 → ha_mcp_dev-8.5.0.dev2732}/src/ha_mcp/_vendor/mcp/server/auth/settings.py +0 -0
  354. {ha_mcp_dev-8.5.0.dev2731 → ha_mcp_dev-8.5.0.dev2732}/src/ha_mcp/_vendor/mcp/server/caching.py +0 -0
  355. {ha_mcp_dev-8.5.0.dev2731 → ha_mcp_dev-8.5.0.dev2732}/src/ha_mcp/_vendor/mcp/server/connection.py +0 -0
  356. {ha_mcp_dev-8.5.0.dev2731 → ha_mcp_dev-8.5.0.dev2732}/src/ha_mcp/_vendor/mcp/server/context.py +0 -0
  357. {ha_mcp_dev-8.5.0.dev2731 → ha_mcp_dev-8.5.0.dev2732}/src/ha_mcp/_vendor/mcp/server/elicitation.py +0 -0
  358. {ha_mcp_dev-8.5.0.dev2731 → ha_mcp_dev-8.5.0.dev2732}/src/ha_mcp/_vendor/mcp/server/extension.py +0 -0
  359. {ha_mcp_dev-8.5.0.dev2731 → ha_mcp_dev-8.5.0.dev2732}/src/ha_mcp/_vendor/mcp/server/fastmcp.py +0 -0
  360. {ha_mcp_dev-8.5.0.dev2731 → ha_mcp_dev-8.5.0.dev2732}/src/ha_mcp/_vendor/mcp/server/lowlevel/__init__.py +0 -0
  361. {ha_mcp_dev-8.5.0.dev2731 → ha_mcp_dev-8.5.0.dev2732}/src/ha_mcp/_vendor/mcp/server/lowlevel/helper_types.py +0 -0
  362. {ha_mcp_dev-8.5.0.dev2731 → ha_mcp_dev-8.5.0.dev2732}/src/ha_mcp/_vendor/mcp/server/lowlevel/server.py +0 -0
  363. {ha_mcp_dev-8.5.0.dev2731 → ha_mcp_dev-8.5.0.dev2732}/src/ha_mcp/_vendor/mcp/server/mcpserver/__init__.py +0 -0
  364. {ha_mcp_dev-8.5.0.dev2731 → ha_mcp_dev-8.5.0.dev2732}/src/ha_mcp/_vendor/mcp/server/mcpserver/context.py +0 -0
  365. {ha_mcp_dev-8.5.0.dev2731 → ha_mcp_dev-8.5.0.dev2732}/src/ha_mcp/_vendor/mcp/server/mcpserver/exceptions.py +0 -0
  366. {ha_mcp_dev-8.5.0.dev2731 → ha_mcp_dev-8.5.0.dev2732}/src/ha_mcp/_vendor/mcp/server/mcpserver/prompts/__init__.py +0 -0
  367. {ha_mcp_dev-8.5.0.dev2731 → ha_mcp_dev-8.5.0.dev2732}/src/ha_mcp/_vendor/mcp/server/mcpserver/prompts/base.py +0 -0
  368. {ha_mcp_dev-8.5.0.dev2731 → ha_mcp_dev-8.5.0.dev2732}/src/ha_mcp/_vendor/mcp/server/mcpserver/prompts/manager.py +0 -0
  369. {ha_mcp_dev-8.5.0.dev2731 → ha_mcp_dev-8.5.0.dev2732}/src/ha_mcp/_vendor/mcp/server/mcpserver/resolve.py +0 -0
  370. {ha_mcp_dev-8.5.0.dev2731 → ha_mcp_dev-8.5.0.dev2732}/src/ha_mcp/_vendor/mcp/server/mcpserver/resources/__init__.py +0 -0
  371. {ha_mcp_dev-8.5.0.dev2731 → ha_mcp_dev-8.5.0.dev2732}/src/ha_mcp/_vendor/mcp/server/mcpserver/resources/base.py +0 -0
  372. {ha_mcp_dev-8.5.0.dev2731 → ha_mcp_dev-8.5.0.dev2732}/src/ha_mcp/_vendor/mcp/server/mcpserver/resources/resource_manager.py +0 -0
  373. {ha_mcp_dev-8.5.0.dev2731 → ha_mcp_dev-8.5.0.dev2732}/src/ha_mcp/_vendor/mcp/server/mcpserver/resources/templates.py +0 -0
  374. {ha_mcp_dev-8.5.0.dev2731 → ha_mcp_dev-8.5.0.dev2732}/src/ha_mcp/_vendor/mcp/server/mcpserver/resources/types.py +0 -0
  375. {ha_mcp_dev-8.5.0.dev2731 → ha_mcp_dev-8.5.0.dev2732}/src/ha_mcp/_vendor/mcp/server/mcpserver/server.py +0 -0
  376. {ha_mcp_dev-8.5.0.dev2731 → ha_mcp_dev-8.5.0.dev2732}/src/ha_mcp/_vendor/mcp/server/mcpserver/tools/__init__.py +0 -0
  377. {ha_mcp_dev-8.5.0.dev2731 → ha_mcp_dev-8.5.0.dev2732}/src/ha_mcp/_vendor/mcp/server/mcpserver/tools/base.py +0 -0
  378. {ha_mcp_dev-8.5.0.dev2731 → ha_mcp_dev-8.5.0.dev2732}/src/ha_mcp/_vendor/mcp/server/mcpserver/tools/tool_manager.py +0 -0
  379. {ha_mcp_dev-8.5.0.dev2731 → ha_mcp_dev-8.5.0.dev2732}/src/ha_mcp/_vendor/mcp/server/mcpserver/utilities/__init__.py +0 -0
  380. {ha_mcp_dev-8.5.0.dev2731 → ha_mcp_dev-8.5.0.dev2732}/src/ha_mcp/_vendor/mcp/server/mcpserver/utilities/context_injection.py +0 -0
  381. {ha_mcp_dev-8.5.0.dev2731 → ha_mcp_dev-8.5.0.dev2732}/src/ha_mcp/_vendor/mcp/server/mcpserver/utilities/func_metadata.py +0 -0
  382. {ha_mcp_dev-8.5.0.dev2731 → ha_mcp_dev-8.5.0.dev2732}/src/ha_mcp/_vendor/mcp/server/mcpserver/utilities/logging.py +0 -0
  383. {ha_mcp_dev-8.5.0.dev2731 → ha_mcp_dev-8.5.0.dev2732}/src/ha_mcp/_vendor/mcp/server/mcpserver/utilities/types.py +0 -0
  384. {ha_mcp_dev-8.5.0.dev2731 → ha_mcp_dev-8.5.0.dev2732}/src/ha_mcp/_vendor/mcp/server/models.py +0 -0
  385. {ha_mcp_dev-8.5.0.dev2731 → ha_mcp_dev-8.5.0.dev2732}/src/ha_mcp/_vendor/mcp/server/request_state.py +0 -0
  386. {ha_mcp_dev-8.5.0.dev2731 → ha_mcp_dev-8.5.0.dev2732}/src/ha_mcp/_vendor/mcp/server/runner.py +0 -0
  387. {ha_mcp_dev-8.5.0.dev2731 → ha_mcp_dev-8.5.0.dev2732}/src/ha_mcp/_vendor/mcp/server/session.py +0 -0
  388. {ha_mcp_dev-8.5.0.dev2731 → ha_mcp_dev-8.5.0.dev2732}/src/ha_mcp/_vendor/mcp/server/sse.py +0 -0
  389. {ha_mcp_dev-8.5.0.dev2731 → ha_mcp_dev-8.5.0.dev2732}/src/ha_mcp/_vendor/mcp/server/stdio.py +0 -0
  390. {ha_mcp_dev-8.5.0.dev2731 → ha_mcp_dev-8.5.0.dev2732}/src/ha_mcp/_vendor/mcp/server/streamable_http.py +0 -0
  391. {ha_mcp_dev-8.5.0.dev2731 → ha_mcp_dev-8.5.0.dev2732}/src/ha_mcp/_vendor/mcp/server/streamable_http_manager.py +0 -0
  392. {ha_mcp_dev-8.5.0.dev2731 → ha_mcp_dev-8.5.0.dev2732}/src/ha_mcp/_vendor/mcp/server/subscriptions.py +0 -0
  393. {ha_mcp_dev-8.5.0.dev2731 → ha_mcp_dev-8.5.0.dev2732}/src/ha_mcp/_vendor/mcp/server/transport_security.py +0 -0
  394. {ha_mcp_dev-8.5.0.dev2731 → ha_mcp_dev-8.5.0.dev2732}/src/ha_mcp/_vendor/mcp/server/validation.py +0 -0
  395. {ha_mcp_dev-8.5.0.dev2731 → ha_mcp_dev-8.5.0.dev2732}/src/ha_mcp/_vendor/mcp/shared/__init__.py +0 -0
  396. {ha_mcp_dev-8.5.0.dev2731 → ha_mcp_dev-8.5.0.dev2732}/src/ha_mcp/_vendor/mcp/shared/_callable_inspection.py +0 -0
  397. {ha_mcp_dev-8.5.0.dev2731 → ha_mcp_dev-8.5.0.dev2732}/src/ha_mcp/_vendor/mcp/shared/_compat.py +0 -0
  398. {ha_mcp_dev-8.5.0.dev2731 → ha_mcp_dev-8.5.0.dev2732}/src/ha_mcp/_vendor/mcp/shared/_context_streams.py +0 -0
  399. {ha_mcp_dev-8.5.0.dev2731 → ha_mcp_dev-8.5.0.dev2732}/src/ha_mcp/_vendor/mcp/shared/_httpx_utils.py +0 -0
  400. {ha_mcp_dev-8.5.0.dev2731 → ha_mcp_dev-8.5.0.dev2732}/src/ha_mcp/_vendor/mcp/shared/_otel.py +0 -0
  401. {ha_mcp_dev-8.5.0.dev2731 → ha_mcp_dev-8.5.0.dev2732}/src/ha_mcp/_vendor/mcp/shared/_stream_protocols.py +0 -0
  402. {ha_mcp_dev-8.5.0.dev2731 → ha_mcp_dev-8.5.0.dev2732}/src/ha_mcp/_vendor/mcp/shared/auth.py +0 -0
  403. {ha_mcp_dev-8.5.0.dev2731 → ha_mcp_dev-8.5.0.dev2732}/src/ha_mcp/_vendor/mcp/shared/auth_utils.py +0 -0
  404. {ha_mcp_dev-8.5.0.dev2731 → ha_mcp_dev-8.5.0.dev2732}/src/ha_mcp/_vendor/mcp/shared/context.py +0 -0
  405. {ha_mcp_dev-8.5.0.dev2731 → ha_mcp_dev-8.5.0.dev2732}/src/ha_mcp/_vendor/mcp/shared/direct_dispatcher.py +0 -0
  406. {ha_mcp_dev-8.5.0.dev2731 → ha_mcp_dev-8.5.0.dev2732}/src/ha_mcp/_vendor/mcp/shared/dispatcher.py +0 -0
  407. {ha_mcp_dev-8.5.0.dev2731 → ha_mcp_dev-8.5.0.dev2732}/src/ha_mcp/_vendor/mcp/shared/exceptions.py +0 -0
  408. {ha_mcp_dev-8.5.0.dev2731 → ha_mcp_dev-8.5.0.dev2732}/src/ha_mcp/_vendor/mcp/shared/extension.py +0 -0
  409. {ha_mcp_dev-8.5.0.dev2731 → ha_mcp_dev-8.5.0.dev2732}/src/ha_mcp/_vendor/mcp/shared/inbound.py +0 -0
  410. {ha_mcp_dev-8.5.0.dev2731 → ha_mcp_dev-8.5.0.dev2732}/src/ha_mcp/_vendor/mcp/shared/jsonrpc_dispatcher.py +0 -0
  411. {ha_mcp_dev-8.5.0.dev2731 → ha_mcp_dev-8.5.0.dev2732}/src/ha_mcp/_vendor/mcp/shared/memory.py +0 -0
  412. {ha_mcp_dev-8.5.0.dev2731 → ha_mcp_dev-8.5.0.dev2732}/src/ha_mcp/_vendor/mcp/shared/message.py +0 -0
  413. {ha_mcp_dev-8.5.0.dev2731 → ha_mcp_dev-8.5.0.dev2732}/src/ha_mcp/_vendor/mcp/shared/metadata_utils.py +0 -0
  414. {ha_mcp_dev-8.5.0.dev2731 → ha_mcp_dev-8.5.0.dev2732}/src/ha_mcp/_vendor/mcp/shared/path_security.py +0 -0
  415. {ha_mcp_dev-8.5.0.dev2731 → ha_mcp_dev-8.5.0.dev2732}/src/ha_mcp/_vendor/mcp/shared/peer.py +0 -0
  416. {ha_mcp_dev-8.5.0.dev2731 → ha_mcp_dev-8.5.0.dev2732}/src/ha_mcp/_vendor/mcp/shared/subscriptions.py +0 -0
  417. {ha_mcp_dev-8.5.0.dev2731 → ha_mcp_dev-8.5.0.dev2732}/src/ha_mcp/_vendor/mcp/shared/tool_name_validation.py +0 -0
  418. {ha_mcp_dev-8.5.0.dev2731 → ha_mcp_dev-8.5.0.dev2732}/src/ha_mcp/_vendor/mcp/shared/transport_context.py +0 -0
  419. {ha_mcp_dev-8.5.0.dev2731 → ha_mcp_dev-8.5.0.dev2732}/src/ha_mcp/_vendor/mcp/shared/uri_template.py +0 -0
  420. {ha_mcp_dev-8.5.0.dev2731 → ha_mcp_dev-8.5.0.dev2732}/src/ha_mcp/_vendor/mcp/types/__init__.py +0 -0
  421. {ha_mcp_dev-8.5.0.dev2731 → ha_mcp_dev-8.5.0.dev2732}/src/ha_mcp/_vendor/mcp/types/jsonrpc.py +0 -0
  422. {ha_mcp_dev-8.5.0.dev2731 → ha_mcp_dev-8.5.0.dev2732}/src/ha_mcp/_vendor/mcp/types/methods.py +0 -0
  423. {ha_mcp_dev-8.5.0.dev2731 → ha_mcp_dev-8.5.0.dev2732}/src/ha_mcp/_vendor/mcp/types/version.py +0 -0
  424. {ha_mcp_dev-8.5.0.dev2731 → ha_mcp_dev-8.5.0.dev2732}/src/ha_mcp/_vendor/mcp_types/LICENSE +0 -0
  425. {ha_mcp_dev-8.5.0.dev2731 → ha_mcp_dev-8.5.0.dev2732}/src/ha_mcp/_vendor/mcp_types/MANIFEST.sha256 +0 -0
  426. {ha_mcp_dev-8.5.0.dev2731 → ha_mcp_dev-8.5.0.dev2732}/src/ha_mcp/_vendor/mcp_types/REQUIRES.txt +0 -0
  427. {ha_mcp_dev-8.5.0.dev2731 → ha_mcp_dev-8.5.0.dev2732}/src/ha_mcp/_vendor/mcp_types/VENDORED +0 -0
  428. {ha_mcp_dev-8.5.0.dev2731 → ha_mcp_dev-8.5.0.dev2732}/src/ha_mcp/_vendor/mcp_types/__init__.py +0 -0
  429. {ha_mcp_dev-8.5.0.dev2731 → ha_mcp_dev-8.5.0.dev2732}/src/ha_mcp/_vendor/mcp_types/_types.py +0 -0
  430. {ha_mcp_dev-8.5.0.dev2731 → ha_mcp_dev-8.5.0.dev2732}/src/ha_mcp/_vendor/mcp_types/_v2025_11_25/__init__.py +0 -0
  431. {ha_mcp_dev-8.5.0.dev2731 → ha_mcp_dev-8.5.0.dev2732}/src/ha_mcp/_vendor/mcp_types/_v2026_07_28/__init__.py +0 -0
  432. {ha_mcp_dev-8.5.0.dev2731 → ha_mcp_dev-8.5.0.dev2732}/src/ha_mcp/_vendor/mcp_types/_wire_base.py +0 -0
  433. {ha_mcp_dev-8.5.0.dev2731 → ha_mcp_dev-8.5.0.dev2732}/src/ha_mcp/_vendor/mcp_types/jsonrpc.py +0 -0
  434. {ha_mcp_dev-8.5.0.dev2731 → ha_mcp_dev-8.5.0.dev2732}/src/ha_mcp/_vendor/mcp_types/methods.py +0 -0
  435. {ha_mcp_dev-8.5.0.dev2731 → ha_mcp_dev-8.5.0.dev2732}/src/ha_mcp/_vendor/mcp_types/py.typed +0 -0
  436. {ha_mcp_dev-8.5.0.dev2731 → ha_mcp_dev-8.5.0.dev2732}/src/ha_mcp/_vendor/mcp_types/version.py +0 -0
  437. {ha_mcp_dev-8.5.0.dev2731 → ha_mcp_dev-8.5.0.dev2732}/src/ha_mcp/_vendor/requirements.txt +0 -0
  438. {ha_mcp_dev-8.5.0.dev2731 → ha_mcp_dev-8.5.0.dev2732}/src/ha_mcp/_vendor/websockets/LICENSE +0 -0
  439. {ha_mcp_dev-8.5.0.dev2731 → ha_mcp_dev-8.5.0.dev2732}/src/ha_mcp/_vendor/websockets/MANIFEST.sha256 +0 -0
  440. {ha_mcp_dev-8.5.0.dev2731 → ha_mcp_dev-8.5.0.dev2732}/src/ha_mcp/_vendor/websockets/VENDORED +0 -0
  441. {ha_mcp_dev-8.5.0.dev2731 → ha_mcp_dev-8.5.0.dev2732}/src/ha_mcp/_vendor/websockets/__init__.py +0 -0
  442. {ha_mcp_dev-8.5.0.dev2731 → ha_mcp_dev-8.5.0.dev2732}/src/ha_mcp/_vendor/websockets/__main__.py +0 -0
  443. {ha_mcp_dev-8.5.0.dev2731 → ha_mcp_dev-8.5.0.dev2732}/src/ha_mcp/_vendor/websockets/asyncio/__init__.py +0 -0
  444. {ha_mcp_dev-8.5.0.dev2731 → ha_mcp_dev-8.5.0.dev2732}/src/ha_mcp/_vendor/websockets/asyncio/client.py +0 -0
  445. {ha_mcp_dev-8.5.0.dev2731 → ha_mcp_dev-8.5.0.dev2732}/src/ha_mcp/_vendor/websockets/asyncio/connection.py +0 -0
  446. {ha_mcp_dev-8.5.0.dev2731 → ha_mcp_dev-8.5.0.dev2732}/src/ha_mcp/_vendor/websockets/asyncio/messages.py +0 -0
  447. {ha_mcp_dev-8.5.0.dev2731 → ha_mcp_dev-8.5.0.dev2732}/src/ha_mcp/_vendor/websockets/asyncio/router.py +0 -0
  448. {ha_mcp_dev-8.5.0.dev2731 → ha_mcp_dev-8.5.0.dev2732}/src/ha_mcp/_vendor/websockets/asyncio/server.py +0 -0
  449. {ha_mcp_dev-8.5.0.dev2731 → ha_mcp_dev-8.5.0.dev2732}/src/ha_mcp/_vendor/websockets/auth.py +0 -0
  450. {ha_mcp_dev-8.5.0.dev2731 → ha_mcp_dev-8.5.0.dev2732}/src/ha_mcp/_vendor/websockets/cli.py +0 -0
  451. {ha_mcp_dev-8.5.0.dev2731 → ha_mcp_dev-8.5.0.dev2732}/src/ha_mcp/_vendor/websockets/client.py +0 -0
  452. {ha_mcp_dev-8.5.0.dev2731 → ha_mcp_dev-8.5.0.dev2732}/src/ha_mcp/_vendor/websockets/connection.py +0 -0
  453. {ha_mcp_dev-8.5.0.dev2731 → ha_mcp_dev-8.5.0.dev2732}/src/ha_mcp/_vendor/websockets/datastructures.py +0 -0
  454. {ha_mcp_dev-8.5.0.dev2731 → ha_mcp_dev-8.5.0.dev2732}/src/ha_mcp/_vendor/websockets/exceptions.py +0 -0
  455. {ha_mcp_dev-8.5.0.dev2731 → ha_mcp_dev-8.5.0.dev2732}/src/ha_mcp/_vendor/websockets/extensions/__init__.py +0 -0
  456. {ha_mcp_dev-8.5.0.dev2731 → ha_mcp_dev-8.5.0.dev2732}/src/ha_mcp/_vendor/websockets/extensions/base.py +0 -0
  457. {ha_mcp_dev-8.5.0.dev2731 → ha_mcp_dev-8.5.0.dev2732}/src/ha_mcp/_vendor/websockets/extensions/permessage_deflate.py +0 -0
  458. {ha_mcp_dev-8.5.0.dev2731 → ha_mcp_dev-8.5.0.dev2732}/src/ha_mcp/_vendor/websockets/frames.py +0 -0
  459. {ha_mcp_dev-8.5.0.dev2731 → ha_mcp_dev-8.5.0.dev2732}/src/ha_mcp/_vendor/websockets/headers.py +0 -0
  460. {ha_mcp_dev-8.5.0.dev2731 → ha_mcp_dev-8.5.0.dev2732}/src/ha_mcp/_vendor/websockets/http11.py +0 -0
  461. {ha_mcp_dev-8.5.0.dev2731 → ha_mcp_dev-8.5.0.dev2732}/src/ha_mcp/_vendor/websockets/imports.py +0 -0
  462. {ha_mcp_dev-8.5.0.dev2731 → ha_mcp_dev-8.5.0.dev2732}/src/ha_mcp/_vendor/websockets/legacy/__init__.py +0 -0
  463. {ha_mcp_dev-8.5.0.dev2731 → ha_mcp_dev-8.5.0.dev2732}/src/ha_mcp/_vendor/websockets/legacy/auth.py +0 -0
  464. {ha_mcp_dev-8.5.0.dev2731 → ha_mcp_dev-8.5.0.dev2732}/src/ha_mcp/_vendor/websockets/legacy/client.py +0 -0
  465. {ha_mcp_dev-8.5.0.dev2731 → ha_mcp_dev-8.5.0.dev2732}/src/ha_mcp/_vendor/websockets/legacy/exceptions.py +0 -0
  466. {ha_mcp_dev-8.5.0.dev2731 → ha_mcp_dev-8.5.0.dev2732}/src/ha_mcp/_vendor/websockets/legacy/framing.py +0 -0
  467. {ha_mcp_dev-8.5.0.dev2731 → ha_mcp_dev-8.5.0.dev2732}/src/ha_mcp/_vendor/websockets/legacy/handshake.py +0 -0
  468. {ha_mcp_dev-8.5.0.dev2731 → ha_mcp_dev-8.5.0.dev2732}/src/ha_mcp/_vendor/websockets/legacy/http.py +0 -0
  469. {ha_mcp_dev-8.5.0.dev2731 → ha_mcp_dev-8.5.0.dev2732}/src/ha_mcp/_vendor/websockets/legacy/protocol.py +0 -0
  470. {ha_mcp_dev-8.5.0.dev2731 → ha_mcp_dev-8.5.0.dev2732}/src/ha_mcp/_vendor/websockets/legacy/server.py +0 -0
  471. {ha_mcp_dev-8.5.0.dev2731 → ha_mcp_dev-8.5.0.dev2732}/src/ha_mcp/_vendor/websockets/protocol.py +0 -0
  472. {ha_mcp_dev-8.5.0.dev2731 → ha_mcp_dev-8.5.0.dev2732}/src/ha_mcp/_vendor/websockets/proxy.py +0 -0
  473. {ha_mcp_dev-8.5.0.dev2731 → ha_mcp_dev-8.5.0.dev2732}/src/ha_mcp/_vendor/websockets/py.typed +0 -0
  474. {ha_mcp_dev-8.5.0.dev2731 → ha_mcp_dev-8.5.0.dev2732}/src/ha_mcp/_vendor/websockets/server.py +0 -0
  475. {ha_mcp_dev-8.5.0.dev2731 → ha_mcp_dev-8.5.0.dev2732}/src/ha_mcp/_vendor/websockets/streams.py +0 -0
  476. {ha_mcp_dev-8.5.0.dev2731 → ha_mcp_dev-8.5.0.dev2732}/src/ha_mcp/_vendor/websockets/sync/__init__.py +0 -0
  477. {ha_mcp_dev-8.5.0.dev2731 → ha_mcp_dev-8.5.0.dev2732}/src/ha_mcp/_vendor/websockets/sync/client.py +0 -0
  478. {ha_mcp_dev-8.5.0.dev2731 → ha_mcp_dev-8.5.0.dev2732}/src/ha_mcp/_vendor/websockets/sync/connection.py +0 -0
  479. {ha_mcp_dev-8.5.0.dev2731 → ha_mcp_dev-8.5.0.dev2732}/src/ha_mcp/_vendor/websockets/sync/messages.py +0 -0
  480. {ha_mcp_dev-8.5.0.dev2731 → ha_mcp_dev-8.5.0.dev2732}/src/ha_mcp/_vendor/websockets/sync/router.py +0 -0
  481. {ha_mcp_dev-8.5.0.dev2731 → ha_mcp_dev-8.5.0.dev2732}/src/ha_mcp/_vendor/websockets/sync/server.py +0 -0
  482. {ha_mcp_dev-8.5.0.dev2731 → ha_mcp_dev-8.5.0.dev2732}/src/ha_mcp/_vendor/websockets/sync/utils.py +0 -0
  483. {ha_mcp_dev-8.5.0.dev2731 → ha_mcp_dev-8.5.0.dev2732}/src/ha_mcp/_vendor/websockets/trio/__init__.py +0 -0
  484. {ha_mcp_dev-8.5.0.dev2731 → ha_mcp_dev-8.5.0.dev2732}/src/ha_mcp/_vendor/websockets/trio/client.py +0 -0
  485. {ha_mcp_dev-8.5.0.dev2731 → ha_mcp_dev-8.5.0.dev2732}/src/ha_mcp/_vendor/websockets/trio/connection.py +0 -0
  486. {ha_mcp_dev-8.5.0.dev2731 → ha_mcp_dev-8.5.0.dev2732}/src/ha_mcp/_vendor/websockets/trio/messages.py +0 -0
  487. {ha_mcp_dev-8.5.0.dev2731 → ha_mcp_dev-8.5.0.dev2732}/src/ha_mcp/_vendor/websockets/trio/router.py +0 -0
  488. {ha_mcp_dev-8.5.0.dev2731 → ha_mcp_dev-8.5.0.dev2732}/src/ha_mcp/_vendor/websockets/trio/server.py +0 -0
  489. {ha_mcp_dev-8.5.0.dev2731 → ha_mcp_dev-8.5.0.dev2732}/src/ha_mcp/_vendor/websockets/trio/utils.py +0 -0
  490. {ha_mcp_dev-8.5.0.dev2731 → ha_mcp_dev-8.5.0.dev2732}/src/ha_mcp/_vendor/websockets/typing.py +0 -0
  491. {ha_mcp_dev-8.5.0.dev2731 → ha_mcp_dev-8.5.0.dev2732}/src/ha_mcp/_vendor/websockets/uri.py +0 -0
  492. {ha_mcp_dev-8.5.0.dev2731 → ha_mcp_dev-8.5.0.dev2732}/src/ha_mcp/_vendor/websockets/utils.py +0 -0
  493. {ha_mcp_dev-8.5.0.dev2731 → ha_mcp_dev-8.5.0.dev2732}/src/ha_mcp/_vendor/websockets/version.py +0 -0
  494. {ha_mcp_dev-8.5.0.dev2731 → ha_mcp_dev-8.5.0.dev2732}/src/ha_mcp/_version.py +0 -0
  495. {ha_mcp_dev-8.5.0.dev2731 → ha_mcp_dev-8.5.0.dev2732}/src/ha_mcp/auth/__init__.py +0 -0
  496. {ha_mcp_dev-8.5.0.dev2731 → ha_mcp_dev-8.5.0.dev2732}/src/ha_mcp/auth/consent_form.py +0 -0
  497. {ha_mcp_dev-8.5.0.dev2731 → ha_mcp_dev-8.5.0.dev2732}/src/ha_mcp/auth/oidc_compat.py +0 -0
  498. {ha_mcp_dev-8.5.0.dev2731 → ha_mcp_dev-8.5.0.dev2732}/src/ha_mcp/auth/provider.py +0 -0
  499. {ha_mcp_dev-8.5.0.dev2731 → ha_mcp_dev-8.5.0.dev2732}/src/ha_mcp/backup_manager.py +0 -0
  500. {ha_mcp_dev-8.5.0.dev2731 → ha_mcp_dev-8.5.0.dev2732}/src/ha_mcp/browser_landing.py +0 -0
  501. {ha_mcp_dev-8.5.0.dev2731 → ha_mcp_dev-8.5.0.dev2732}/src/ha_mcp/client/__init__.py +0 -0
  502. {ha_mcp_dev-8.5.0.dev2731 → ha_mcp_dev-8.5.0.dev2732}/src/ha_mcp/client/rest_client.py +0 -0
  503. {ha_mcp_dev-8.5.0.dev2731 → ha_mcp_dev-8.5.0.dev2732}/src/ha_mcp/client/supervisor_client.py +0 -0
  504. {ha_mcp_dev-8.5.0.dev2731 → ha_mcp_dev-8.5.0.dev2732}/src/ha_mcp/client/websocket_client.py +0 -0
  505. {ha_mcp_dev-8.5.0.dev2731 → ha_mcp_dev-8.5.0.dev2732}/src/ha_mcp/client/websocket_listener.py +0 -0
  506. {ha_mcp_dev-8.5.0.dev2731 → ha_mcp_dev-8.5.0.dev2732}/src/ha_mcp/config.py +0 -0
  507. {ha_mcp_dev-8.5.0.dev2731 → ha_mcp_dev-8.5.0.dev2732}/src/ha_mcp/dashboard_screenshot/__init__.py +0 -0
  508. {ha_mcp_dev-8.5.0.dev2731 → ha_mcp_dev-8.5.0.dev2732}/src/ha_mcp/dashboard_screenshot/capture.py +0 -0
  509. {ha_mcp_dev-8.5.0.dev2731 → ha_mcp_dev-8.5.0.dev2732}/src/ha_mcp/dashboard_screenshot/content.py +0 -0
  510. {ha_mcp_dev-8.5.0.dev2731 → ha_mcp_dev-8.5.0.dev2732}/src/ha_mcp/dashboard_screenshot/paths.py +0 -0
  511. {ha_mcp_dev-8.5.0.dev2731 → ha_mcp_dev-8.5.0.dev2732}/src/ha_mcp/dashboard_screenshot/provision.py +0 -0
  512. {ha_mcp_dev-8.5.0.dev2731 → ha_mcp_dev-8.5.0.dev2732}/src/ha_mcp/dashboard_screenshot/theme_guard.py +0 -0
  513. {ha_mcp_dev-8.5.0.dev2731 → ha_mcp_dev-8.5.0.dev2732}/src/ha_mcp/errors.py +0 -0
  514. {ha_mcp_dev-8.5.0.dev2731 → ha_mcp_dev-8.5.0.dev2732}/src/ha_mcp/ha_request_queue.py +0 -0
  515. {ha_mcp_dev-8.5.0.dev2731 → ha_mcp_dev-8.5.0.dev2732}/src/ha_mcp/hacs_auto_refresh.py +0 -0
  516. {ha_mcp_dev-8.5.0.dev2731 → ha_mcp_dev-8.5.0.dev2732}/src/ha_mcp/http_transport.py +0 -0
  517. {ha_mcp_dev-8.5.0.dev2731 → ha_mcp_dev-8.5.0.dev2732}/src/ha_mcp/llm_exposure.py +0 -0
  518. {ha_mcp_dev-8.5.0.dev2731 → ha_mcp_dev-8.5.0.dev2732}/src/ha_mcp/log_filters.py +0 -0
  519. {ha_mcp_dev-8.5.0.dev2731 → ha_mcp_dev-8.5.0.dev2732}/src/ha_mcp/policy/__init__.py +0 -0
  520. {ha_mcp_dev-8.5.0.dev2731 → ha_mcp_dev-8.5.0.dev2732}/src/ha_mcp/policy/approval_queue.py +0 -0
  521. {ha_mcp_dev-8.5.0.dev2731 → ha_mcp_dev-8.5.0.dev2732}/src/ha_mcp/policy/decision_pin.py +0 -0
  522. {ha_mcp_dev-8.5.0.dev2731 → ha_mcp_dev-8.5.0.dev2732}/src/ha_mcp/policy/decisions.py +0 -0
  523. {ha_mcp_dev-8.5.0.dev2731 → ha_mcp_dev-8.5.0.dev2732}/src/ha_mcp/policy/editing.py +0 -0
  524. {ha_mcp_dev-8.5.0.dev2731 → ha_mcp_dev-8.5.0.dev2732}/src/ha_mcp/policy/evaluator.py +0 -0
  525. {ha_mcp_dev-8.5.0.dev2731 → ha_mcp_dev-8.5.0.dev2732}/src/ha_mcp/policy/events.py +0 -0
  526. {ha_mcp_dev-8.5.0.dev2731 → ha_mcp_dev-8.5.0.dev2732}/src/ha_mcp/policy/handlers.py +0 -0
  527. {ha_mcp_dev-8.5.0.dev2731 → ha_mcp_dev-8.5.0.dev2732}/src/ha_mcp/policy/middleware.py +0 -0
  528. {ha_mcp_dev-8.5.0.dev2731 → ha_mcp_dev-8.5.0.dev2732}/src/ha_mcp/policy/model.py +0 -0
  529. {ha_mcp_dev-8.5.0.dev2731 → ha_mcp_dev-8.5.0.dev2732}/src/ha_mcp/policy/persistence.py +0 -0
  530. {ha_mcp_dev-8.5.0.dev2731 → ha_mcp_dev-8.5.0.dev2732}/src/ha_mcp/policy/value_sources.py +0 -0
  531. {ha_mcp_dev-8.5.0.dev2731 → ha_mcp_dev-8.5.0.dev2732}/src/ha_mcp/py.typed +0 -0
  532. {ha_mcp_dev-8.5.0.dev2731 → ha_mcp_dev-8.5.0.dev2732}/src/ha_mcp/read_only.py +0 -0
  533. {ha_mcp_dev-8.5.0.dev2731 → ha_mcp_dev-8.5.0.dev2732}/src/ha_mcp/redaction.py +0 -0
  534. {ha_mcp_dev-8.5.0.dev2731 → ha_mcp_dev-8.5.0.dev2732}/src/ha_mcp/renamed_tools.py +0 -0
  535. {ha_mcp_dev-8.5.0.dev2731 → ha_mcp_dev-8.5.0.dev2732}/src/ha_mcp/resources/skills-vendor/.claude/settings.json +0 -0
  536. {ha_mcp_dev-8.5.0.dev2731 → ha_mcp_dev-8.5.0.dev2732}/src/ha_mcp/resources/skills-vendor/.claude-plugin/marketplace.json +0 -0
  537. {ha_mcp_dev-8.5.0.dev2731 → ha_mcp_dev-8.5.0.dev2732}/src/ha_mcp/resources/skills-vendor/.claude-plugin/plugin.json +0 -0
  538. {ha_mcp_dev-8.5.0.dev2731 → ha_mcp_dev-8.5.0.dev2732}/src/ha_mcp/resources/skills-vendor/.github/ISSUE_TEMPLATE/skill-rca.md +0 -0
  539. {ha_mcp_dev-8.5.0.dev2731 → ha_mcp_dev-8.5.0.dev2732}/src/ha_mcp/resources/skills-vendor/.github/pull_request_template.md +0 -0
  540. {ha_mcp_dev-8.5.0.dev2731 → ha_mcp_dev-8.5.0.dev2732}/src/ha_mcp/resources/skills-vendor/AGENTS.md +0 -0
  541. {ha_mcp_dev-8.5.0.dev2731 → ha_mcp_dev-8.5.0.dev2732}/src/ha_mcp/resources/skills-vendor/CLAUDE.md +0 -0
  542. {ha_mcp_dev-8.5.0.dev2731 → ha_mcp_dev-8.5.0.dev2732}/src/ha_mcp/resources/skills-vendor/CONTRIBUTING.md +0 -0
  543. {ha_mcp_dev-8.5.0.dev2731 → ha_mcp_dev-8.5.0.dev2732}/src/ha_mcp/resources/skills-vendor/LICENSE +0 -0
  544. {ha_mcp_dev-8.5.0.dev2731 → ha_mcp_dev-8.5.0.dev2732}/src/ha_mcp/resources/skills-vendor/README.md +0 -0
  545. {ha_mcp_dev-8.5.0.dev2731 → ha_mcp_dev-8.5.0.dev2732}/src/ha_mcp/resources/skills-vendor/evals/area-target-over-entity-list/case.yaml +0 -0
  546. {ha_mcp_dev-8.5.0.dev2731 → ha_mcp_dev-8.5.0.dev2732}/src/ha_mcp/resources/skills-vendor/evals/arrive-home-automation/case.yaml +0 -0
  547. {ha_mcp_dev-8.5.0.dev2731 → ha_mcp_dev-8.5.0.dev2732}/src/ha_mcp/resources/skills-vendor/evals/assist-shortcut-card/case.yaml +0 -0
  548. {ha_mcp_dev-8.5.0.dev2731 → ha_mcp_dev-8.5.0.dev2732}/src/ha_mcp/resources/skills-vendor/evals/avg-temperature/case.yaml +0 -0
  549. {ha_mcp_dev-8.5.0.dev2731 → ha_mcp_dev-8.5.0.dev2732}/src/ha_mcp/resources/skills-vendor/evals/backup-deletion-confirmation/case.yaml +0 -0
  550. {ha_mcp_dev-8.5.0.dev2731 → ha_mcp_dev-8.5.0.dev2732}/src/ha_mcp/resources/skills-vendor/evals/blueprint-authoring/case.yaml +0 -0
  551. {ha_mcp_dev-8.5.0.dev2731 → ha_mcp_dev-8.5.0.dev2732}/src/ha_mcp/resources/skills-vendor/evals/button-event-entity/case.yaml +0 -0
  552. {ha_mcp_dev-8.5.0.dev2731 → ha_mcp_dev-8.5.0.dev2732}/src/ha_mcp/resources/skills-vendor/evals/device-id-trigger-migration/case.yaml +0 -0
  553. {ha_mcp_dev-8.5.0.dev2731 → ha_mcp_dev-8.5.0.dev2732}/src/ha_mcp/resources/skills-vendor/evals/helper-flow-fields-not-platform-yaml/case.yaml +0 -0
  554. {ha_mcp_dev-8.5.0.dev2731 → ha_mcp_dev-8.5.0.dev2732}/src/ha_mcp/resources/skills-vendor/evals/media-player-song/case.yaml +0 -0
  555. {ha_mcp_dev-8.5.0.dev2731 → ha_mcp_dev-8.5.0.dev2732}/src/ha_mcp/resources/skills-vendor/evals/motion-light-automation-mode/case.yaml +0 -0
  556. {ha_mcp_dev-8.5.0.dev2731 → ha_mcp_dev-8.5.0.dev2732}/src/ha_mcp/resources/skills-vendor/evals/rename-entity-impact-analysis/case.yaml +0 -0
  557. {ha_mcp_dev-8.5.0.dev2731 → ha_mcp_dev-8.5.0.dev2732}/src/ha_mcp/resources/skills-vendor/evals/template-attributes-yaml-exception/case.yaml +0 -0
  558. {ha_mcp_dev-8.5.0.dev2731 → ha_mcp_dev-8.5.0.dev2732}/src/ha_mcp/resources/skills-vendor/evals/timer-finished-automation/case.yaml +0 -0
  559. {ha_mcp_dev-8.5.0.dev2731 → ha_mcp_dev-8.5.0.dev2732}/src/ha_mcp/resources/skills-vendor/evals/vacuum-last-clean/case.yaml +0 -0
  560. {ha_mcp_dev-8.5.0.dev2731 → ha_mcp_dev-8.5.0.dev2732}/src/ha_mcp/resources/skills-vendor/scripts/check_eval_cases.py +0 -0
  561. {ha_mcp_dev-8.5.0.dev2731 → ha_mcp_dev-8.5.0.dev2732}/src/ha_mcp/resources/skills-vendor/skills/home-assistant-best-practices/SKILL.md +0 -0
  562. {ha_mcp_dev-8.5.0.dev2731 → ha_mcp_dev-8.5.0.dev2732}/src/ha_mcp/resources/skills-vendor/skills/home-assistant-best-practices/references/appdaemon.md +0 -0
  563. {ha_mcp_dev-8.5.0.dev2731 → ha_mcp_dev-8.5.0.dev2732}/src/ha_mcp/resources/skills-vendor/skills/home-assistant-best-practices/references/automation-patterns.md +0 -0
  564. {ha_mcp_dev-8.5.0.dev2731 → ha_mcp_dev-8.5.0.dev2732}/src/ha_mcp/resources/skills-vendor/skills/home-assistant-best-practices/references/backups.md +0 -0
  565. {ha_mcp_dev-8.5.0.dev2731 → ha_mcp_dev-8.5.0.dev2732}/src/ha_mcp/resources/skills-vendor/skills/home-assistant-best-practices/references/blueprint-guide.md +0 -0
  566. {ha_mcp_dev-8.5.0.dev2731 → ha_mcp_dev-8.5.0.dev2732}/src/ha_mcp/resources/skills-vendor/skills/home-assistant-best-practices/references/dashboard-cards.md +0 -0
  567. {ha_mcp_dev-8.5.0.dev2731 → ha_mcp_dev-8.5.0.dev2732}/src/ha_mcp/resources/skills-vendor/skills/home-assistant-best-practices/references/dashboard-guide.md +0 -0
  568. {ha_mcp_dev-8.5.0.dev2731 → ha_mcp_dev-8.5.0.dev2732}/src/ha_mcp/resources/skills-vendor/skills/home-assistant-best-practices/references/device-control.md +0 -0
  569. {ha_mcp_dev-8.5.0.dev2731 → ha_mcp_dev-8.5.0.dev2732}/src/ha_mcp/resources/skills-vendor/skills/home-assistant-best-practices/references/domain-docs.md +0 -0
  570. {ha_mcp_dev-8.5.0.dev2731 → ha_mcp_dev-8.5.0.dev2732}/src/ha_mcp/resources/skills-vendor/skills/home-assistant-best-practices/references/examples.yaml +0 -0
  571. {ha_mcp_dev-8.5.0.dev2731 → ha_mcp_dev-8.5.0.dev2732}/src/ha_mcp/resources/skills-vendor/skills/home-assistant-best-practices/references/helper-selection.md +0 -0
  572. {ha_mcp_dev-8.5.0.dev2731 → ha_mcp_dev-8.5.0.dev2732}/src/ha_mcp/resources/skills-vendor/skills/home-assistant-best-practices/references/safe-refactoring.md +0 -0
  573. {ha_mcp_dev-8.5.0.dev2731 → ha_mcp_dev-8.5.0.dev2732}/src/ha_mcp/resources/skills-vendor/skills/home-assistant-best-practices/references/scenes.md +0 -0
  574. {ha_mcp_dev-8.5.0.dev2731 → ha_mcp_dev-8.5.0.dev2732}/src/ha_mcp/resources/skills-vendor/skills/home-assistant-best-practices/references/template-guidelines.md +0 -0
  575. {ha_mcp_dev-8.5.0.dev2731 → ha_mcp_dev-8.5.0.dev2732}/src/ha_mcp/resources/skills-vendor/skills/home-assistant-best-practices/references/yaml-only-integrations.md +0 -0
  576. {ha_mcp_dev-8.5.0.dev2731 → ha_mcp_dev-8.5.0.dev2732}/src/ha_mcp/server.py +0 -0
  577. {ha_mcp_dev-8.5.0.dev2731 → ha_mcp_dev-8.5.0.dev2732}/src/ha_mcp/settings_ui/__init__.py +0 -0
  578. {ha_mcp_dev-8.5.0.dev2731 → ha_mcp_dev-8.5.0.dev2732}/src/ha_mcp/settings_ui/_handlers_advanced.py +0 -0
  579. {ha_mcp_dev-8.5.0.dev2731 → ha_mcp_dev-8.5.0.dev2732}/src/ha_mcp/settings_ui/_handlers_backups.py +0 -0
  580. {ha_mcp_dev-8.5.0.dev2731 → ha_mcp_dev-8.5.0.dev2732}/src/ha_mcp/settings_ui/_handlers_fs.py +0 -0
  581. {ha_mcp_dev-8.5.0.dev2731 → ha_mcp_dev-8.5.0.dev2732}/src/ha_mcp/settings_ui/_handlers_server.py +0 -0
  582. {ha_mcp_dev-8.5.0.dev2731 → ha_mcp_dev-8.5.0.dev2732}/src/ha_mcp/settings_ui/_handlers_theme.py +0 -0
  583. {ha_mcp_dev-8.5.0.dev2731 → ha_mcp_dev-8.5.0.dev2732}/src/ha_mcp/settings_ui/_handlers_tools.py +0 -0
  584. {ha_mcp_dev-8.5.0.dev2731 → ha_mcp_dev-8.5.0.dev2732}/src/ha_mcp/settings_ui/_i18n.py +0 -0
  585. {ha_mcp_dev-8.5.0.dev2731 → ha_mcp_dev-8.5.0.dev2732}/src/ha_mcp/settings_ui/_locale_policy.py +0 -0
  586. {ha_mcp_dev-8.5.0.dev2731 → ha_mcp_dev-8.5.0.dev2732}/src/ha_mcp/settings_ui/_persistence.py +0 -0
  587. {ha_mcp_dev-8.5.0.dev2731 → ha_mcp_dev-8.5.0.dev2732}/src/ha_mcp/settings_ui/_supervisor.py +0 -0
  588. {ha_mcp_dev-8.5.0.dev2731 → ha_mcp_dev-8.5.0.dev2732}/src/ha_mcp/settings_ui/_theme.py +0 -0
  589. {ha_mcp_dev-8.5.0.dev2731 → ha_mcp_dev-8.5.0.dev2732}/src/ha_mcp/settings_ui/_tools_meta.py +0 -0
  590. {ha_mcp_dev-8.5.0.dev2731 → ha_mcp_dev-8.5.0.dev2732}/src/ha_mcp/settings_ui/locales/README.md +0 -0
  591. {ha_mcp_dev-8.5.0.dev2731 → ha_mcp_dev-8.5.0.dev2732}/src/ha_mcp/settings_ui/locales/en.json +0 -0
  592. {ha_mcp_dev-8.5.0.dev2731 → ha_mcp_dev-8.5.0.dev2732}/src/ha_mcp/settings_ui/locales/tlh.json +0 -0
  593. {ha_mcp_dev-8.5.0.dev2731 → ha_mcp_dev-8.5.0.dev2732}/src/ha_mcp/settings_ui/settings.css +0 -0
  594. {ha_mcp_dev-8.5.0.dev2731 → ha_mcp_dev-8.5.0.dev2732}/src/ha_mcp/settings_ui/settings.html +0 -0
  595. {ha_mcp_dev-8.5.0.dev2731 → ha_mcp_dev-8.5.0.dev2732}/src/ha_mcp/settings_ui/settings.js +0 -0
  596. {ha_mcp_dev-8.5.0.dev2731 → ha_mcp_dev-8.5.0.dev2732}/src/ha_mcp/smoke_test.py +0 -0
  597. {ha_mcp_dev-8.5.0.dev2731 → ha_mcp_dev-8.5.0.dev2732}/src/ha_mcp/stdio_settings_sidecar.py +0 -0
  598. {ha_mcp_dev-8.5.0.dev2731 → ha_mcp_dev-8.5.0.dev2732}/src/ha_mcp/strict_bps.py +0 -0
  599. {ha_mcp_dev-8.5.0.dev2731 → ha_mcp_dev-8.5.0.dev2732}/src/ha_mcp/tool_dispatch.py +0 -0
  600. {ha_mcp_dev-8.5.0.dev2731 → ha_mcp_dev-8.5.0.dev2732}/src/ha_mcp/tools/__init__.py +0 -0
  601. {ha_mcp_dev-8.5.0.dev2731 → ha_mcp_dev-8.5.0.dev2732}/src/ha_mcp/tools/auto_backup.py +0 -0
  602. {ha_mcp_dev-8.5.0.dev2731 → ha_mcp_dev-8.5.0.dev2732}/src/ha_mcp/tools/backup.py +0 -0
  603. {ha_mcp_dev-8.5.0.dev2731 → ha_mcp_dev-8.5.0.dev2732}/src/ha_mcp/tools/best_practice_checker.py +0 -0
  604. {ha_mcp_dev-8.5.0.dev2731 → ha_mcp_dev-8.5.0.dev2732}/src/ha_mcp/tools/best_practice_result.py +0 -0
  605. {ha_mcp_dev-8.5.0.dev2731 → ha_mcp_dev-8.5.0.dev2732}/src/ha_mcp/tools/best_practice_variables.py +0 -0
  606. {ha_mcp_dev-8.5.0.dev2731 → ha_mcp_dev-8.5.0.dev2732}/src/ha_mcp/tools/blueprint_sources.py +0 -0
  607. {ha_mcp_dev-8.5.0.dev2731 → ha_mcp_dev-8.5.0.dev2732}/src/ha_mcp/tools/blueprint_substitute.py +0 -0
  608. {ha_mcp_dev-8.5.0.dev2731 → ha_mcp_dev-8.5.0.dev2732}/src/ha_mcp/tools/blueprint_write.py +0 -0
  609. {ha_mcp_dev-8.5.0.dev2731 → ha_mcp_dev-8.5.0.dev2732}/src/ha_mcp/tools/bulk_selector.py +0 -0
  610. {ha_mcp_dev-8.5.0.dev2731 → ha_mcp_dev-8.5.0.dev2732}/src/ha_mcp/tools/component_api.py +0 -0
  611. {ha_mcp_dev-8.5.0.dev2731 → ha_mcp_dev-8.5.0.dev2732}/src/ha_mcp/tools/component_config_entries.py +0 -0
  612. {ha_mcp_dev-8.5.0.dev2731 → ha_mcp_dev-8.5.0.dev2732}/src/ha_mcp/tools/component_config_reads.py +0 -0
  613. {ha_mcp_dev-8.5.0.dev2731 → ha_mcp_dev-8.5.0.dev2732}/src/ha_mcp/tools/component_dashboard_edit.py +0 -0
  614. {ha_mcp_dev-8.5.0.dev2731 → ha_mcp_dev-8.5.0.dev2732}/src/ha_mcp/tools/component_devices.py +0 -0
  615. {ha_mcp_dev-8.5.0.dev2731 → ha_mcp_dev-8.5.0.dev2732}/src/ha_mcp/tools/component_registries.py +0 -0
  616. {ha_mcp_dev-8.5.0.dev2731 → ha_mcp_dev-8.5.0.dev2732}/src/ha_mcp/tools/component_registry_lookup.py +0 -0
  617. {ha_mcp_dev-8.5.0.dev2731 → ha_mcp_dev-8.5.0.dev2732}/src/ha_mcp/tools/config_entry_flow.py +0 -0
  618. {ha_mcp_dev-8.5.0.dev2731 → ha_mcp_dev-8.5.0.dev2732}/src/ha_mcp/tools/config_entry_flow_form.py +0 -0
  619. {ha_mcp_dev-8.5.0.dev2731 → ha_mcp_dev-8.5.0.dev2732}/src/ha_mcp/tools/config_entry_flow_menu.py +0 -0
  620. {ha_mcp_dev-8.5.0.dev2731 → ha_mcp_dev-8.5.0.dev2732}/src/ha_mcp/tools/config_entry_flow_walker.py +0 -0
  621. {ha_mcp_dev-8.5.0.dev2731 → ha_mcp_dev-8.5.0.dev2732}/src/ha_mcp/tools/config_entry_identity.py +0 -0
  622. {ha_mcp_dev-8.5.0.dev2731 → ha_mcp_dev-8.5.0.dev2732}/src/ha_mcp/tools/config_entry_reconfigure.py +0 -0
  623. {ha_mcp_dev-8.5.0.dev2731 → ha_mcp_dev-8.5.0.dev2732}/src/ha_mcp/tools/config_entry_reload_watch.py +0 -0
  624. {ha_mcp_dev-8.5.0.dev2731 → ha_mcp_dev-8.5.0.dev2732}/src/ha_mcp/tools/dashboard_edit_errors.py +0 -0
  625. {ha_mcp_dev-8.5.0.dev2731 → ha_mcp_dev-8.5.0.dev2732}/src/ha_mcp/tools/device_control.py +0 -0
  626. {ha_mcp_dev-8.5.0.dev2731 → ha_mcp_dev-8.5.0.dev2732}/src/ha_mcp/tools/entity_registration.py +0 -0
  627. {ha_mcp_dev-8.5.0.dev2731 → ha_mcp_dev-8.5.0.dev2732}/src/ha_mcp/tools/error_log_parsing.py +0 -0
  628. {ha_mcp_dev-8.5.0.dev2731 → ha_mcp_dev-8.5.0.dev2732}/src/ha_mcp/tools/hacs_registration.py +0 -0
  629. {ha_mcp_dev-8.5.0.dev2731 → ha_mcp_dev-8.5.0.dev2732}/src/ha_mcp/tools/helpers.py +0 -0
  630. {ha_mcp_dev-8.5.0.dev2731 → ha_mcp_dev-8.5.0.dev2732}/src/ha_mcp/tools/integration_reconfigure.py +0 -0
  631. {ha_mcp_dev-8.5.0.dev2731 → ha_mcp_dev-8.5.0.dev2732}/src/ha_mcp/tools/log_common.py +0 -0
  632. {ha_mcp_dev-8.5.0.dev2731 → ha_mcp_dev-8.5.0.dev2732}/src/ha_mcp/tools/log_sources.py +0 -0
  633. {ha_mcp_dev-8.5.0.dev2731 → ha_mcp_dev-8.5.0.dev2732}/src/ha_mcp/tools/log_sources_fault.py +0 -0
  634. {ha_mcp_dev-8.5.0.dev2731 → ha_mcp_dev-8.5.0.dev2732}/src/ha_mcp/tools/log_sources_supervisor.py +0 -0
  635. {ha_mcp_dev-8.5.0.dev2731 → ha_mcp_dev-8.5.0.dev2732}/src/ha_mcp/tools/radio/__init__.py +0 -0
  636. {ha_mcp_dev-8.5.0.dev2731 → ha_mcp_dev-8.5.0.dev2732}/src/ha_mcp/tools/radio/base.py +0 -0
  637. {ha_mcp_dev-8.5.0.dev2731 → ha_mcp_dev-8.5.0.dev2732}/src/ha_mcp/tools/radio/matter.py +0 -0
  638. {ha_mcp_dev-8.5.0.dev2731 → ha_mcp_dev-8.5.0.dev2732}/src/ha_mcp/tools/radio/thread.py +0 -0
  639. {ha_mcp_dev-8.5.0.dev2731 → ha_mcp_dev-8.5.0.dev2732}/src/ha_mcp/tools/radio/zigbee.py +0 -0
  640. {ha_mcp_dev-8.5.0.dev2731 → ha_mcp_dev-8.5.0.dev2732}/src/ha_mcp/tools/radio/zwave.py +0 -0
  641. {ha_mcp_dev-8.5.0.dev2731 → ha_mcp_dev-8.5.0.dev2732}/src/ha_mcp/tools/reference_validator.py +0 -0
  642. {ha_mcp_dev-8.5.0.dev2731 → ha_mcp_dev-8.5.0.dev2732}/src/ha_mcp/tools/registry.py +0 -0
  643. {ha_mcp_dev-8.5.0.dev2731 → ha_mcp_dev-8.5.0.dev2732}/src/ha_mcp/tools/renamed_tool_middleware.py +0 -0
  644. {ha_mcp_dev-8.5.0.dev2731 → ha_mcp_dev-8.5.0.dev2732}/src/ha_mcp/tools/scene_discovery.py +0 -0
  645. {ha_mcp_dev-8.5.0.dev2731 → ha_mcp_dev-8.5.0.dev2732}/src/ha_mcp/tools/smart_search/__init__.py +0 -0
  646. {ha_mcp_dev-8.5.0.dev2731 → ha_mcp_dev-8.5.0.dev2732}/src/ha_mcp/tools/smart_search/_base.py +0 -0
  647. {ha_mcp_dev-8.5.0.dev2731 → ha_mcp_dev-8.5.0.dev2732}/src/ha_mcp/tools/smart_search/_config.py +0 -0
  648. {ha_mcp_dev-8.5.0.dev2731 → ha_mcp_dev-8.5.0.dev2732}/src/ha_mcp/tools/smart_search/_deep.py +0 -0
  649. {ha_mcp_dev-8.5.0.dev2731 → ha_mcp_dev-8.5.0.dev2732}/src/ha_mcp/tools/smart_search/_entities.py +0 -0
  650. {ha_mcp_dev-8.5.0.dev2731 → ha_mcp_dev-8.5.0.dev2732}/src/ha_mcp/tools/smart_search/_fetch.py +0 -0
  651. {ha_mcp_dev-8.5.0.dev2731 → ha_mcp_dev-8.5.0.dev2732}/src/ha_mcp/tools/smart_search/_graph.py +0 -0
  652. {ha_mcp_dev-8.5.0.dev2731 → ha_mcp_dev-8.5.0.dev2732}/src/ha_mcp/tools/smart_search/_overview.py +0 -0
  653. {ha_mcp_dev-8.5.0.dev2731 → ha_mcp_dev-8.5.0.dev2732}/src/ha_mcp/tools/smart_search/_scenes.py +0 -0
  654. {ha_mcp_dev-8.5.0.dev2731 → ha_mcp_dev-8.5.0.dev2732}/src/ha_mcp/tools/smart_search/_scoring.py +0 -0
  655. {ha_mcp_dev-8.5.0.dev2731 → ha_mcp_dev-8.5.0.dev2732}/src/ha_mcp/tools/tool_search_hint_middleware.py +0 -0
  656. {ha_mcp_dev-8.5.0.dev2731 → ha_mcp_dev-8.5.0.dev2732}/src/ha_mcp/tools/tools_addons.py +0 -0
  657. {ha_mcp_dev-8.5.0.dev2731 → ha_mcp_dev-8.5.0.dev2732}/src/ha_mcp/tools/tools_areas.py +0 -0
  658. {ha_mcp_dev-8.5.0.dev2731 → ha_mcp_dev-8.5.0.dev2732}/src/ha_mcp/tools/tools_assist_pipeline.py +0 -0
  659. {ha_mcp_dev-8.5.0.dev2731 → ha_mcp_dev-8.5.0.dev2732}/src/ha_mcp/tools/tools_blueprints.py +0 -0
  660. {ha_mcp_dev-8.5.0.dev2731 → ha_mcp_dev-8.5.0.dev2732}/src/ha_mcp/tools/tools_bug_report.py +0 -0
  661. {ha_mcp_dev-8.5.0.dev2731 → ha_mcp_dev-8.5.0.dev2732}/src/ha_mcp/tools/tools_calendar.py +0 -0
  662. {ha_mcp_dev-8.5.0.dev2731 → ha_mcp_dev-8.5.0.dev2732}/src/ha_mcp/tools/tools_camera.py +0 -0
  663. {ha_mcp_dev-8.5.0.dev2731 → ha_mcp_dev-8.5.0.dev2732}/src/ha_mcp/tools/tools_categories.py +0 -0
  664. {ha_mcp_dev-8.5.0.dev2731 → ha_mcp_dev-8.5.0.dev2732}/src/ha_mcp/tools/tools_code.py +0 -0
  665. {ha_mcp_dev-8.5.0.dev2731 → ha_mcp_dev-8.5.0.dev2732}/src/ha_mcp/tools/tools_config_automations.py +0 -0
  666. {ha_mcp_dev-8.5.0.dev2731 → ha_mcp_dev-8.5.0.dev2732}/src/ha_mcp/tools/tools_config_dashboards.py +0 -0
  667. {ha_mcp_dev-8.5.0.dev2731 → ha_mcp_dev-8.5.0.dev2732}/src/ha_mcp/tools/tools_config_helpers.py +0 -0
  668. {ha_mcp_dev-8.5.0.dev2731 → ha_mcp_dev-8.5.0.dev2732}/src/ha_mcp/tools/tools_config_scenes.py +0 -0
  669. {ha_mcp_dev-8.5.0.dev2731 → ha_mcp_dev-8.5.0.dev2732}/src/ha_mcp/tools/tools_config_scripts.py +0 -0
  670. {ha_mcp_dev-8.5.0.dev2731 → ha_mcp_dev-8.5.0.dev2732}/src/ha_mcp/tools/tools_dashboard_screenshot.py +0 -0
  671. {ha_mcp_dev-8.5.0.dev2731 → ha_mcp_dev-8.5.0.dev2732}/src/ha_mcp/tools/tools_dev.py +0 -0
  672. {ha_mcp_dev-8.5.0.dev2731 → ha_mcp_dev-8.5.0.dev2732}/src/ha_mcp/tools/tools_energy.py +0 -0
  673. {ha_mcp_dev-8.5.0.dev2731 → ha_mcp_dev-8.5.0.dev2732}/src/ha_mcp/tools/tools_entities.py +0 -0
  674. {ha_mcp_dev-8.5.0.dev2731 → ha_mcp_dev-8.5.0.dev2732}/src/ha_mcp/tools/tools_filesystem.py +0 -0
  675. {ha_mcp_dev-8.5.0.dev2731 → ha_mcp_dev-8.5.0.dev2732}/src/ha_mcp/tools/tools_groups.py +0 -0
  676. {ha_mcp_dev-8.5.0.dev2731 → ha_mcp_dev-8.5.0.dev2732}/src/ha_mcp/tools/tools_hacs.py +0 -0
  677. {ha_mcp_dev-8.5.0.dev2731 → ha_mcp_dev-8.5.0.dev2732}/src/ha_mcp/tools/tools_history.py +0 -0
  678. {ha_mcp_dev-8.5.0.dev2731 → ha_mcp_dev-8.5.0.dev2732}/src/ha_mcp/tools/tools_integrations.py +0 -0
  679. {ha_mcp_dev-8.5.0.dev2731 → ha_mcp_dev-8.5.0.dev2732}/src/ha_mcp/tools/tools_labels.py +0 -0
  680. {ha_mcp_dev-8.5.0.dev2731 → ha_mcp_dev-8.5.0.dev2732}/src/ha_mcp/tools/tools_logs.py +0 -0
  681. {ha_mcp_dev-8.5.0.dev2731 → ha_mcp_dev-8.5.0.dev2732}/src/ha_mcp/tools/tools_radio.py +0 -0
  682. {ha_mcp_dev-8.5.0.dev2731 → ha_mcp_dev-8.5.0.dev2732}/src/ha_mcp/tools/tools_registry.py +0 -0
  683. {ha_mcp_dev-8.5.0.dev2731 → ha_mcp_dev-8.5.0.dev2732}/src/ha_mcp/tools/tools_resources.py +0 -0
  684. {ha_mcp_dev-8.5.0.dev2731 → ha_mcp_dev-8.5.0.dev2732}/src/ha_mcp/tools/tools_search.py +0 -0
  685. {ha_mcp_dev-8.5.0.dev2731 → ha_mcp_dev-8.5.0.dev2732}/src/ha_mcp/tools/tools_security_policy.py +0 -0
  686. {ha_mcp_dev-8.5.0.dev2731 → ha_mcp_dev-8.5.0.dev2732}/src/ha_mcp/tools/tools_service.py +0 -0
  687. {ha_mcp_dev-8.5.0.dev2731 → ha_mcp_dev-8.5.0.dev2732}/src/ha_mcp/tools/tools_services.py +0 -0
  688. {ha_mcp_dev-8.5.0.dev2731 → ha_mcp_dev-8.5.0.dev2732}/src/ha_mcp/tools/tools_system.py +0 -0
  689. {ha_mcp_dev-8.5.0.dev2731 → ha_mcp_dev-8.5.0.dev2732}/src/ha_mcp/tools/tools_themes.py +0 -0
  690. {ha_mcp_dev-8.5.0.dev2731 → ha_mcp_dev-8.5.0.dev2732}/src/ha_mcp/tools/tools_todo.py +0 -0
  691. {ha_mcp_dev-8.5.0.dev2731 → ha_mcp_dev-8.5.0.dev2732}/src/ha_mcp/tools/tools_traces.py +0 -0
  692. {ha_mcp_dev-8.5.0.dev2731 → ha_mcp_dev-8.5.0.dev2732}/src/ha_mcp/tools/tools_updates.py +0 -0
  693. {ha_mcp_dev-8.5.0.dev2731 → ha_mcp_dev-8.5.0.dev2732}/src/ha_mcp/tools/tools_utility.py +0 -0
  694. {ha_mcp_dev-8.5.0.dev2731 → ha_mcp_dev-8.5.0.dev2732}/src/ha_mcp/tools/tools_voice_assistant.py +0 -0
  695. {ha_mcp_dev-8.5.0.dev2731 → ha_mcp_dev-8.5.0.dev2732}/src/ha_mcp/tools/tools_yaml_config.py +0 -0
  696. {ha_mcp_dev-8.5.0.dev2731 → ha_mcp_dev-8.5.0.dev2732}/src/ha_mcp/tools/tools_yaml_read.py +0 -0
  697. {ha_mcp_dev-8.5.0.dev2731 → ha_mcp_dev-8.5.0.dev2732}/src/ha_mcp/tools/tools_zones.py +0 -0
  698. {ha_mcp_dev-8.5.0.dev2731 → ha_mcp_dev-8.5.0.dev2732}/src/ha_mcp/tools/util_helpers.py +0 -0
  699. {ha_mcp_dev-8.5.0.dev2731 → ha_mcp_dev-8.5.0.dev2732}/src/ha_mcp/tools/validation_middleware.py +0 -0
  700. {ha_mcp_dev-8.5.0.dev2731 → ha_mcp_dev-8.5.0.dev2732}/src/ha_mcp/transforms/__init__.py +0 -0
  701. {ha_mcp_dev-8.5.0.dev2731 → ha_mcp_dev-8.5.0.dev2732}/src/ha_mcp/transforms/categorized_search.py +0 -0
  702. {ha_mcp_dev-8.5.0.dev2731 → ha_mcp_dev-8.5.0.dev2732}/src/ha_mcp/transforms/component_search.py +0 -0
  703. {ha_mcp_dev-8.5.0.dev2731 → ha_mcp_dev-8.5.0.dev2732}/src/ha_mcp/transforms/lite_docstrings.py +0 -0
  704. {ha_mcp_dev-8.5.0.dev2731 → ha_mcp_dev-8.5.0.dev2732}/src/ha_mcp/transforms/write_tool_note.py +0 -0
  705. {ha_mcp_dev-8.5.0.dev2731 → ha_mcp_dev-8.5.0.dev2732}/src/ha_mcp/transport_security.py +0 -0
  706. {ha_mcp_dev-8.5.0.dev2731 → ha_mcp_dev-8.5.0.dev2732}/src/ha_mcp/update_check.py +0 -0
  707. {ha_mcp_dev-8.5.0.dev2731 → ha_mcp_dev-8.5.0.dev2732}/src/ha_mcp/utils/__init__.py +0 -0
  708. {ha_mcp_dev-8.5.0.dev2731 → ha_mcp_dev-8.5.0.dev2732}/src/ha_mcp/utils/config_hash.py +0 -0
  709. {ha_mcp_dev-8.5.0.dev2731 → ha_mcp_dev-8.5.0.dev2732}/src/ha_mcp/utils/config_write_lock.py +0 -0
  710. {ha_mcp_dev-8.5.0.dev2731 → ha_mcp_dev-8.5.0.dev2732}/src/ha_mcp/utils/dashboard_patch.py +0 -0
  711. {ha_mcp_dev-8.5.0.dev2731 → ha_mcp_dev-8.5.0.dev2732}/src/ha_mcp/utils/data_paths.py +0 -0
  712. {ha_mcp_dev-8.5.0.dev2731 → ha_mcp_dev-8.5.0.dev2732}/src/ha_mcp/utils/device_registry_semantics.py +0 -0
  713. {ha_mcp_dev-8.5.0.dev2731 → ha_mcp_dev-8.5.0.dev2732}/src/ha_mcp/utils/domain_handlers.py +0 -0
  714. {ha_mcp_dev-8.5.0.dev2731 → ha_mcp_dev-8.5.0.dev2732}/src/ha_mcp/utils/entity_membership.py +0 -0
  715. {ha_mcp_dev-8.5.0.dev2731 → ha_mcp_dev-8.5.0.dev2732}/src/ha_mcp/utils/fuzzy_search.py +0 -0
  716. {ha_mcp_dev-8.5.0.dev2731 → ha_mcp_dev-8.5.0.dev2732}/src/ha_mcp/utils/kill_signal_diagnostics.py +0 -0
  717. {ha_mcp_dev-8.5.0.dev2731 → ha_mcp_dev-8.5.0.dev2732}/src/ha_mcp/utils/mcp_client_host.py +0 -0
  718. {ha_mcp_dev-8.5.0.dev2731 → ha_mcp_dev-8.5.0.dev2732}/src/ha_mcp/utils/operation_manager.py +0 -0
  719. {ha_mcp_dev-8.5.0.dev2731 → ha_mcp_dev-8.5.0.dev2732}/src/ha_mcp/utils/python_sandbox.py +0 -0
  720. {ha_mcp_dev-8.5.0.dev2731 → ha_mcp_dev-8.5.0.dev2732}/src/ha_mcp/utils/registry_update_lock.py +0 -0
  721. {ha_mcp_dev-8.5.0.dev2731 → ha_mcp_dev-8.5.0.dev2732}/src/ha_mcp/utils/skill_loader.py +0 -0
  722. {ha_mcp_dev-8.5.0.dev2731 → ha_mcp_dev-8.5.0.dev2732}/src/ha_mcp/utils/usage_logger.py +0 -0
  723. {ha_mcp_dev-8.5.0.dev2731 → ha_mcp_dev-8.5.0.dev2732}/src/ha_mcp/visibility/__init__.py +0 -0
  724. {ha_mcp_dev-8.5.0.dev2731 → ha_mcp_dev-8.5.0.dev2732}/src/ha_mcp/visibility/enforcement.py +0 -0
  725. {ha_mcp_dev-8.5.0.dev2731 → ha_mcp_dev-8.5.0.dev2732}/src/ha_mcp/visibility/model.py +0 -0
  726. {ha_mcp_dev-8.5.0.dev2731 → ha_mcp_dev-8.5.0.dev2732}/src/ha_mcp/visibility/persistence.py +0 -0
  727. {ha_mcp_dev-8.5.0.dev2731 → ha_mcp_dev-8.5.0.dev2732}/src/ha_mcp/visibility/resolver.py +0 -0
  728. {ha_mcp_dev-8.5.0.dev2731 → ha_mcp_dev-8.5.0.dev2732}/src/ha_mcp_dev.egg-info/SOURCES.txt +0 -0
  729. {ha_mcp_dev-8.5.0.dev2731 → ha_mcp_dev-8.5.0.dev2732}/src/ha_mcp_dev.egg-info/dependency_links.txt +0 -0
  730. {ha_mcp_dev-8.5.0.dev2731 → ha_mcp_dev-8.5.0.dev2732}/src/ha_mcp_dev.egg-info/entry_points.txt +0 -0
  731. {ha_mcp_dev-8.5.0.dev2731 → ha_mcp_dev-8.5.0.dev2732}/src/ha_mcp_dev.egg-info/requires.txt +0 -0
  732. {ha_mcp_dev-8.5.0.dev2731 → ha_mcp_dev-8.5.0.dev2732}/src/ha_mcp_dev.egg-info/top_level.txt +0 -0
  733. {ha_mcp_dev-8.5.0.dev2731 → ha_mcp_dev-8.5.0.dev2732}/tests/__init__.py +0 -0
  734. {ha_mcp_dev-8.5.0.dev2731 → ha_mcp_dev-8.5.0.dev2732}/tests/test_constants.py +0 -0
  735. {ha_mcp_dev-8.5.0.dev2731 → ha_mcp_dev-8.5.0.dev2732}/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.dev2731
3
+ Version: 8.5.0.dev2732
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.dev2731"
7
+ version = "8.5.0.dev2732"
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
@@ -498,7 +498,25 @@
498
498
  "addon.verify_ssl.description": "Home Assistant serverinin TLS sertifikatını yoxlayın. Tətbiq (əlavə) Supervisor proksisi vasitəsilə qoşulur, buna görə adətən bu seçimin təsiri olmur və aktiv saxlanmalıdır. Yalnız tətbiqi (əlavəni) HA ilə özünün imzaladığı sertifikatı olan və ya host adı uyğun gəlməyən ictimai HTTPS host adı üzərindən əlaqə yaratmaq üçün yenidən konfiqurasiya etmisinizsə söndürün. Söndürmək ötürülmənin təhlükəsizliyini zəiflədir — buna ehtiyacınız olduğunu dəqiq bilmirsinizsə, aktiv saxlayın. Qüvvəyə minməsi üçün yenidən başlatmaq tələb olunur.",
499
499
  "addon.ha_tool_concurrency.name": "Home Assistant alətlərinin paralel icrası",
500
500
  "addon.ha_tool_concurrency.description": "Bütün sessiyalar üzrə Home Assistant alətlərinin üst səviyyəli çağırışlarının eyni vaxtda icrası üçün istəyə bağlı limit. Daxili REST, WebSocket və hər alətin daxilində şaxələnən çağırışların paralel icrası dəyişmir. 0 məhdudiyyətsiz davranışı saxlayır. İcra üçün boş yer gözləyən çağırış 60 saniyədən sonra uğursuz olur.",
501
- "addon_stable.enable_tool_search.description": "Tam alət kataloqunu axtarış əsasında aşkarlama ilə əvəz edin. Boşdayanma zamanı kontekst həcmini təxminən 90% azaldaraq təqribən 5K tokenə endirir. ⚠️ Öz daxili alət axtarışı / təxirə salınmış alətləri olan müştərilərdə (claude.ai, Claude Desktop, Claude Code) bunu aktivləşdirməyin — iki axtarış qatı toqquşur və həmin müştərilərdə daxili alət axtarışı daha yaxşı seçimdir; bunu deaktiv saxlayın. Alətlərin təxirə salınıb-salınmaması müştəri və model birləşməsindən asılıdır: quruluşunuz tam kataloqu əvvəlcədən yükləyirsə, bundan istifadə edin — təxirə salınmış alətləri özündə dəstəkləməyən modellər (məs. Gemini, OpenAI ilə uyğun lokal modellər, Claude Haiku), modeldən asılı olmayaraq bütün alət sxemlərini birbaşa kontekstə daxil edən müştərilər (məs. GitHub Copilot CLI) və ya daha kiçik kontekst pəncərələri üçün. Bəzi Codex modelləri və ChatGPT də təxirə salınmış alətləri dəstəkləyir — bu seçimi lazımsız yerə aktiv saxlamamaq üçün müştərinizin/modelinizin funksiyalarını birbaşa yoxlayın. Alətlər ha_search_tools vasitəsilə tapılır və kateqoriyalara ayrılmış proksilər (oxuma/yazma/silmə) vasitəsilə icra olunur. Qüvvəyə minməsi üçün tətbiqi (əlavəni) yenidən başlatmaq tələb olunur — sonra alət siyahısının yenidən yüklənməsi üçün AI müştərinizdə MCP serverinə yenidən qoşulun və ya onu yeniləyin. Təkcə tətbiqi (əlavəni) yenidən başlatmaq müştərinin keşindəki alət siyahısını yeniləmir; bu, buradakı istənilən parametr dəyişdirildikdən sonra keçərlidir."
501
+ "addon_stable.enable_tool_search.description": "Tam alət kataloqunu axtarış əsasında aşkarlama ilə əvəz edin. Boşdayanma zamanı kontekst həcmini təxminən 90% azaldaraq təqribən 5K tokenə endirir. ⚠️ Öz daxili alət axtarışı / təxirə salınmış alətləri olan müştərilərdə (claude.ai, Claude Desktop, Claude Code) bunu aktivləşdirməyin — iki axtarış qatı toqquşur və həmin müştərilərdə daxili alət axtarışı daha yaxşı seçimdir; bunu deaktiv saxlayın. Alətlərin təxirə salınıb-salınmaması müştəri və model birləşməsindən asılıdır: quruluşunuz tam kataloqu əvvəlcədən yükləyirsə, bundan istifadə edin — təxirə salınmış alətləri özündə dəstəkləməyən modellər (məs. Gemini, OpenAI ilə uyğun lokal modellər, Claude Haiku), modeldən asılı olmayaraq bütün alət sxemlərini birbaşa kontekstə daxil edən müştərilər (məs. GitHub Copilot CLI) və ya daha kiçik kontekst pəncərələri üçün. Bəzi Codex modelləri və ChatGPT də təxirə salınmış alətləri dəstəkləyir — bu seçimi lazımsız yerə aktiv saxlamamaq üçün müştərinizin/modelinizin funksiyalarını birbaşa yoxlayın. Alətlər ha_search_tools vasitəsilə tapılır və kateqoriyalara ayrılmış proksilər (oxuma/yazma/silmə) vasitəsilə icra olunur. Qüvvəyə minməsi üçün tətbiqi (əlavəni) yenidən başlatmaq tələb olunur — sonra alət siyahısının yenidən yüklənməsi üçün AI müştərinizdə MCP serverinə yenidən qoşulun və ya onu yeniləyin. Təkcə tətbiqi (əlavəni) yenidən başlatmaq müştərinin keşindəki alət siyahısını yeniləmir; bu, buradakı istənilən parametr dəyişdirildikdən sonra keçərlidir.",
502
+ "policies.global.event_decisions.label": "Home Assistant hadisələrindən təsdiqləməyə/rədd etməyə icazə ver",
503
+ "policies.global.event_decisions.help": "Varsayılan olaraq söndürülür. Aktiv olduqda, gözləyən sorğunun tokenini, qərarı və aşağıdakı PİN-i daşıyan <code>ha_mcp_approval_response</code> hadisəsi həmin sorğunu müəyyən edir — beləliklə, öz bildiriş avtomatlaşdırmanız onu telefondan təsdiq edə bilər. Aktivləşdirilməzdən əvvəl PİN tələb olunur.",
504
+ "policies.global.event_decisions.warning": "Kifayət qədər girişə malik AI agenti bu PİN-i təxmin edə və ya əldə edə bilər — onu sizdən soruşmaqla və ya cavab hadisəsindən oxuyan avtomatlaşdırma yazmaqla — və sonra öz sorğularını təsdiq edə bilər. Home Assistant avtomatlaşdırmanız tərəfindən işə salınan hadisəni agent tərəfindən işə salınandan ayırd edə bilmir, ona görə də onların arasındakı yeganə maneə PİN-dir. Bunu aktivləşdirmək bu məhdudiyyəti qəbul etmək deməkdir. Gözləyən siyahısında qərar verməyə təsir etmir — serverin özünün xidmət etdiyi ayarlar UI-sində. stdio sidecar-ın ayarlar səhifəsi PİN-i və siyasəti təyin edir, lakin gözləyən təsdiqləri siyahıya ala və ya onlara qərar verə bilməz: onlar onun çata bilmədiyi server prosesində yerləşir.",
505
+ "policies.global.pin.label": "Təsdiqləmə PİN-i",
506
+ "policies.global.pin.help": "Ən azı 4 simvol. Duzlanmış heyş (salted hash) kimi saxlanılır və bir daha heç vaxt göstərilmir, həmçinin siyasət sənədindən kənarda saxlanılır ki, siyasəti oxuyan və ya yazan heç nə onu daşımasın. Beş dəqiqə ərzində beş səhv PİN həmin pəncərənin qalan hissəsi üçün kanalı bağlayır — serverin öz ayarlar UI-sindəki Gözləyən siyahısı işləməyə davam edir (stdio sidecar səhifəsi onu göstərə bilməz).",
507
+ "policies.global.pin.set": "PİN təyin et",
508
+ "policies.global.pin.clear": "PİN-i sil",
509
+ "policies.global.pin.is_set": "PİN təyin edilib.",
510
+ "policies.global.pin.invalid": "Saxlanılan PİN oxuna bilmir və heç nəyə uyğun gəlmir. Yeni birini təyin edin.",
511
+ "policies.global.pin.not_set": "PİN təyin edilməyib. Hadisə şinası üzərindən qərarlara icazə vermək üçün birini təyin edin.",
512
+ "policies.global.pin.unknown": "PİN-in təyin edilib-edilmədiyi oxuna bilmədi.",
513
+ "policies.global.pin.saved": "PİN yadda saxlanıldı.",
514
+ "policies.global.pin.cleared": "PİN silindi.",
515
+ "policies.global.pin.cleared_and_disabled": "PİN silindi və onunla birlikdə hadisə şinası üzərindən qərar vermə sönduruldu.",
516
+ "policies.global.pin.confirm_clear": "Təsdiqləmə PİN-i silinsin? Hadisə şinası üzərindən qərar vermə bununla birlikdə söndürülür; bu vərəqdəki gözləyən siyahıya təsir etmir.",
517
+ "policies.operations.set_pin": "PİN təyin et",
518
+ "policies.rules.scope_notice": "Siyasətlər ayrı-ayrı alətlərə tətbiq olunur. Digər alətlər eyni əməliyyatı yerinə yetirə bilər. Məsələn, <code>ha_call_event</code> üçün təsdiq tələb etmək <code>ha_call_service</code> vasitəsilə hadisənin işə salınmasını məhdudlaşdırmır.",
519
+ "policies.operations.clear_pin": "PİN-i sil"
502
520
  },
503
521
  "tool_groups": {
504
522
  "Apps (add-ons)": "Tətbiqlər (əlavələr)",
@@ -498,7 +498,25 @@
498
498
  "addon.verify_ssl.description": "Ověřit TLS certifikát serveru Home Assistant. Aplikace (doplněk) se připojuje přes proxy Supervisor, takže to obvykle nemá žádný vliv a mělo by to zůstat zapnuté. Zakazujte pouze v případě, že jste přenastavili aplikaci (doplněk) tak, aby komunikovala s HA přes veřejný HTTPS hostname s The self-signed certifikátem nebo neshodou hostname. Vypnutí oslabuje zabezpečení přenosu – nechte zapnuté, pokud víte, že to potřebujete. Vyžaduje restart, aby se projevilo.",
499
499
  "addon.ha_tool_concurrency.name": "Souběžnost nástrojů Home Assistant",
500
500
  "addon.ha_tool_concurrency.description": "Volitelný limit pro vnější volání nástrojů Home Assistant napříč všemi relacemi. Vnitřní souběžnost REST, WebSocket a distribuce pro jednotlivé nástroje zůstává nezměněna. Hodnota 0 zachovává neomezené chování. Volání čekající na kapacitu selže po 60 sekundách.",
501
- "addon_stable.enable_tool_search.description": "Nahradit úplný katalog nástrojů vyhledáváním. Snižuje klidový kontext přibližně o 90 %, na asi 5 tisíc tokenů. ⚠️ NEZAPÍNEJTE toto v klientech s vlastním vestavěným vyhledáváním nástrojů / odloženými nástroji (claude.ai, Claude Desktop, Claude Code) – obě vrstvy vyhledávání se střetávají a vestavěné vyhledávání nástrojů v klientovi je zde lepší volbou; nechte to vypnuté. Zda jsou nástroje odloženy, závisí na kombinaci vašeho klienta a modelu: použijte toto, když vaše nastavení načítá celý katalog předem – modely bez nativních odložených nástrojů (např. Gemini, lokální modely kompatibilní s OpenAI, Claude Haiku), klienti, kteří vkládají všechna schémata nástrojů bez ohledu na model (např. GitHub Copilot CLI), nebo menší kontextová okna. Některé modely Codex a ChatGPT také obsahují odložené nástroje – ověřte si funkce přímo u svého klienta/modelu, abyste to nenechávali zbytečně zapnuté. Nástroje se vyhledávají přes ha_search_tools a spouštějí se přes kategorizované proxy (read/write/delete). Vyžaduje restart aplikace (doplněku), aby se projevila změna – poté znovu připojte nebo obnovte MCP server ve svém AI klientovi, aby se znovu načetl seznam nástrojů. Samotný restart aplikace (doplněku) NEAKTUALIZUJE mezipaměť seznamu nástrojů klienta; toto platí po změně jakéhokoli nastavení zde."
501
+ "addon_stable.enable_tool_search.description": "Nahradit úplný katalog nástrojů vyhledáváním. Snižuje klidový kontext přibližně o 90 %, na asi 5 tisíc tokenů. ⚠️ NEZAPÍNEJTE toto v klientech s vlastním vestavěným vyhledáváním nástrojů / odloženými nástroji (claude.ai, Claude Desktop, Claude Code) – obě vrstvy vyhledávání se střetávají a vestavěné vyhledávání nástrojů v klientovi je zde lepší volbou; nechte to vypnuté. Zda jsou nástroje odloženy, závisí na kombinaci vašeho klienta a modelu: použijte toto, když vaše nastavení načítá celý katalog předem – modely bez nativních odložených nástrojů (např. Gemini, lokální modely kompatibilní s OpenAI, Claude Haiku), klienti, kteří vkládají všechna schémata nástrojů bez ohledu na model (např. GitHub Copilot CLI), nebo menší kontextová okna. Některé modely Codex a ChatGPT také obsahují odložené nástroje – ověřte si funkce přímo u svého klienta/modelu, abyste to nenechávali zbytečně zapnuté. Nástroje se vyhledávají přes ha_search_tools a spouštějí se přes kategorizované proxy (read/write/delete). Vyžaduje restart aplikace (doplněku), aby se projevila změna – poté znovu připojte nebo obnovte MCP server ve svém AI klientovi, aby se znovu načetl seznam nástrojů. Samotný restart aplikace (doplněku) NEAKTUALIZUJE mezipaměť seznamu nástrojů klienta; toto platí po změně jakéhokoli nastavení zde.",
502
+ "policies.global.event_decisions.label": "Povolit schválení/zamítnutí z událostí Home Assistant",
503
+ "policies.global.event_decisions.help": "Ve výchozím nastavení vypnuto. Pokud je zapnuto, událost <code>ha_mcp_approval_response</code> obsahující token čekajícího požadavku, rozhodnutí a níže uvedený PIN o tomto požadavku rozhodne — takže vaše vlastní automatizace oznámení jej může schválit z telefonu. Před zapnutím je vyžadován PIN.",
504
+ "policies.global.event_decisions.warning": "AI agent s dostatečným přístupem může tento PIN uhodnout nebo získat — tím, že si o něj řekne, nebo napsáním automatizace, která jej přečte z odpovědní události — a poté schválit své vlastní požadavky. Home Assistant nedokáže rozlišit událost vyvolanou vaší automatizací od události vyvolané agentem, takže PIN je jedinou překážkou mezi nimi. Zapnutím této funkce berete toto omezení na vědomí. Rozhodování v seznamu čekajících je nedotčeno — v uživatelském rozhraní nastavení, které server sám obsluhuje. Stránka nastavení stdio sidecaru nastavuje PIN a politiku, ale nemůže zobrazovat seznam čekajících schválení ani o nich rozhodovat: ty se nacházejí v procesu serveru, kam nedosáhne.",
505
+ "policies.global.pin.label": "Schvalovací PIN",
506
+ "policies.global.pin.help": "Nejméně 4 znaky. Uloženo jako hash se solením a již se nikdy nezobrazí, přičemž je drženo mimo dokument politiky, takže jej nenese nic, co čte nebo zapisuje politiku. Pět chybných PINů během pěti minut uzavře kanál po zbytek tohoto okna — seznam čekajících v uživatelském rozhraní nastavení samotného serveru funguje dál (stránka stdio sidecaru jej nedokáže zobrazit).",
507
+ "policies.global.pin.set": "Nastavit PIN",
508
+ "policies.global.pin.clear": "Odebrat PIN",
509
+ "policies.global.pin.is_set": "PIN je nastaven.",
510
+ "policies.global.pin.invalid": "Uložený PIN nelze přečíst a neodpovídá ničemu. Nastavte nový.",
511
+ "policies.global.pin.not_set": "Není nastaven žádný PIN. Nastavte jej pro povolení rozhodování přes sběrnici událostí.",
512
+ "policies.global.pin.unknown": "Nepodařilo se zjistit, zda je PIN nastaven.",
513
+ "policies.global.pin.saved": "PIN uložen.",
514
+ "policies.global.pin.cleared": "PIN odebrán.",
515
+ "policies.global.pin.cleared_and_disabled": "PIN byl odebrán a rozhodování přes sběrnici událostí bylo s ním vypnuto.",
516
+ "policies.global.pin.confirm_clear": "Odebrat schvalovací PIN? Rozhodování přes sběrnici událostí se tím vypne; seznam čekajících na této kartě zůstane nedotčen.",
517
+ "policies.operations.set_pin": "Nastavit PIN",
518
+ "policies.rules.scope_notice": "Politiky se vztahují na jednotlivé nástroje. Ostatní nástroje mohou provádět stejnou akci. Vyžadování schválení pro <code>ha_call_event</code> například neomezuje vyvolávání událostí prostřednictvím <code>ha_call_service</code>.",
519
+ "policies.operations.clear_pin": "Odebrat PIN"
502
520
  },
503
521
  "tools": {
504
522
  "ha_bulk_control": {
@@ -498,7 +498,25 @@
498
498
  "addon.verify_ssl.description": "Überprüfe das TLS-Zertifikat des Home Assistant-Servers. Die App (das Add-on) verbindet sich über den Supervisor-Proxy, daher hat dies normalerweise keine Auswirkungen und sollte aktiviert bleiben. Deaktiviere es nur, wenn du die App (das Add-on) so rekonfiguriert hast, dass sie über einen öffentlichen HTTPS-Hostnamen mit einem selbstsignierten Zertifikat oder einem Hostnamen-Mismatch mit HA kommuniziert. Das Deaktivieren schwächt die Transportsicherheit — lasse es eingeschaltet, es sei denn, du weißt, dass du es brauchst. Erfordert einen Neustart, um wirksam zu werden.",
499
499
  "addon.ha_tool_concurrency.name": "Home-Assistant-Tool-Gleichzeitigkeit",
500
500
  "addon.ha_tool_concurrency.description": "Optionales Limit für äußere Home-Assistant-Tool-Aufrufe über alle Sitzungen hinweg. Interne REST-, WebSocket- und tool-spezifische Fan-Out-Gleichzeitigkeit bleibt unverändert. 0 behält das unbegrenzte Verhalten bei. Ein auf Kapazität wartender Aufruf schlägt nach 60 Sekunden fehl.",
501
- "addon_stable.enable_tool_search.description": "Ersetze den vollständigen Tool-Katalog durch eine suchend basierte Erkennung. Reduziert den Leerlaufkontext um etwa 90 % auf ca. 5K Token. ⚠️ Aktiviere dies NICHT in Clients mit eigener integrierter Tool-Suche / verzögerten Tools (claude.ai, Claude Desktop, Claude Code) — die beiden Suchschichten kollidieren, und die integrierte Tool-Suche des Clients ist dort die bessere Wahl; lasse dies ausgeschaltet. Ob Tools verzögert werden, hängt von deiner Client- und Modellkombination ab: Verwende dies, wenn dein Setup den vollständigen Katalog im Voraus lädt — Modelle ohne native verzögerte Tools (z. B. Gemini, OpenAI-kompatible lokale Modelle, Claude Haiku), Clients, die alle Tool-Schemas unabhängig vom Modell einbetten (z. B. GitHub Copilot CLI), oder kleinere Kontextfenster. Einige Codex-Modelle und ChatGPT beinhalten ebenfalls verzögerte Tools — überprüfe deinen Client bzw. dein Modell direkt, um dessen Funktionen zu bestätigen, damit du dies nicht unnötig aktiviert lässt. Tools werden über ha_search_tools gefunden und über kategorisierte Proxys (lesen/schreiben/löschen) ausgeführt. Erfordert einen App-(Add-on-)Neustart, um wirksam zu werden — verbinde dich danach neu oder aktualisiere den MCP-Server in deinem KI-Client, damit dieser die Tool-Liste neu lädt. Das alleinige Neustarten der App (des Add-ons) aktualisiert die zwischengespeicherte Tool-Liste eines Clients NICHT; dies gilt nach jeder Änderung einer Einstellung hier."
501
+ "addon_stable.enable_tool_search.description": "Ersetze den vollständigen Tool-Katalog durch eine suchend basierte Erkennung. Reduziert den Leerlaufkontext um etwa 90 % auf ca. 5K Token. ⚠️ Aktiviere dies NICHT in Clients mit eigener integrierter Tool-Suche / verzögerten Tools (claude.ai, Claude Desktop, Claude Code) — die beiden Suchschichten kollidieren, und die integrierte Tool-Suche des Clients ist dort die bessere Wahl; lasse dies ausgeschaltet. Ob Tools verzögert werden, hängt von deiner Client- und Modellkombination ab: Verwende dies, wenn dein Setup den vollständigen Katalog im Voraus lädt — Modelle ohne native verzögerte Tools (z. B. Gemini, OpenAI-kompatible lokale Modelle, Claude Haiku), Clients, die alle Tool-Schemas unabhängig vom Modell einbetten (z. B. GitHub Copilot CLI), oder kleinere Kontextfenster. Einige Codex-Modelle und ChatGPT beinhalten ebenfalls verzögerte Tools — überprüfe deinen Client bzw. dein Modell direkt, um dessen Funktionen zu bestätigen, damit du dies nicht unnötig aktiviert lässt. Tools werden über ha_search_tools gefunden und über kategorisierte Proxys (lesen/schreiben/löschen) ausgeführt. Erfordert einen App-(Add-on-)Neustart, um wirksam zu werden — verbinde dich danach neu oder aktualisiere den MCP-Server in deinem KI-Client, damit dieser die Tool-Liste neu lädt. Das alleinige Neustarten der App (des Add-ons) aktualisiert die zwischengespeicherte Tool-Liste eines Clients NICHT; dies gilt nach jeder Änderung einer Einstellung hier.",
502
+ "policies.global.event_decisions.label": "Freigabe/Ablehnung über Home Assistant-Ereignisse erlauben",
503
+ "policies.global.event_decisions.help": "Standardmäßig aus. Wenn aktiv, entscheidet ein <code>ha_mcp_approval_response</code>-Ereignis, das das Token einer ausstehenden Anfrage, eine Entscheidung und die PIN unten enthält, über diese Anfrage – sodass deine eigene Benachrichtigungsautomatisierung sie vom Smartphone aus genehmigen kann. Erfordert eine PIN, bevor sie eingeschaltet werden kann.",
504
+ "policies.global.event_decisions.warning": "Ein KI-Agent mit ausreichend Zugriff kann diese PIN erraten oder erlangen – indem er dich danach fragt oder eine Automatisierung schreibt, die sie aus einem Antwortereignis ausliest –, und dann seine eigenen Anfragen genehmigen. Home Assistant kann ein von deiner Automatisierung ausgelöstes Ereignis nicht von einem von einem Agenten ausgelösten unterscheiden, daher ist die PIN das Einzige dazwischen. Dies einzuschalten akzeptiert diese Einschränkung. Entscheidungen in der Liste der ausstehenden Anfragen sind davon nicht betroffen – auf der Einstellungsoberfläche, die der Server selbst bereitstellt. Die Einstellungsseite des stdio-Sidecars legt die PIN und die Richtlinie fest, kann aber ausstehende Genehmigungen weder auflisten noch darüber entscheiden: Diese befinden sich im Serverprozess, den er nicht erreichen kann.",
505
+ "policies.global.pin.label": "Freigabe-PIN",
506
+ "policies.global.pin.help": "Mindestens 4 Zeichen. Wird als gesalzener Hash gespeichert und nie wieder angezeigt, und aus dem Richtliniendokument herausgehalten, sodass nichts, was Richtlinien liest oder schreibt, sie enthält. Fünf falsche PINs innerhalb von fünf Minuten sperren den Kanal für den Rest dieses Zeitfensters – die Liste der ausstehenden Anfragen auf der eigenen Einstellungsoberfläche des Servers funktioniert weiterhin (die Seite des stdio-Sidecars kann sie nicht anzeigen).",
507
+ "policies.global.pin.set": "PIN festlegen",
508
+ "policies.global.pin.clear": "PIN entfernen",
509
+ "policies.global.pin.is_set": "Eine PIN ist festgelegt.",
510
+ "policies.global.pin.invalid": "Die gespeicherte PIN kann nicht gelesen werden und stimmt mit nichts überein. Lege eine neue fest.",
511
+ "policies.global.pin.not_set": "Keine PIN festgelegt. Lege eine fest, um Entscheidungen über den Ereignisbus zu erlauben.",
512
+ "policies.global.pin.unknown": "Konnte nicht lesen, ob eine PIN festgelegt ist.",
513
+ "policies.global.pin.saved": "PIN gespeichert.",
514
+ "policies.global.pin.cleared": "PIN entfernt.",
515
+ "policies.global.pin.cleared_and_disabled": "PIN entfernt und das Entscheiden über den Ereignisbus damit ausgeschaltet.",
516
+ "policies.global.pin.confirm_clear": "Freigabe-PIN entfernen? Das Entscheiden über den Ereignisbus wird damit ausgeschaltet; die Liste der ausstehenden Anfragen in diesem Tab ist nicht betroffen.",
517
+ "policies.operations.set_pin": "PIN festlegen",
518
+ "policies.rules.scope_notice": "Richtlinien gelten für einzelne Tools. Andere Tools führen möglicherweise dieselbe Aktion aus. Das Erfordern einer Genehmigung für <code>ha_call_event</code> schränkt beispielsweise das Auslösen von Ereignissen über <code>ha_call_service</code> nicht ein.",
519
+ "policies.operations.clear_pin": "PIN entfernen"
502
520
  },
503
521
  "tool_groups": {
504
522
  "Apps (add-ons)": "Apps (Add-ons)",
@@ -498,7 +498,25 @@
498
498
  "addon.verify_ssl.description": "Kontrolu la TLS-atestilon de la servilo Home Assistant. La programo (aldonaĵo) konektiĝas per la provkuratora prokurservilo (Supervisor proxy), do ĉi tio kutime havas neniun efikon kaj devas resti ebligita. Malŝaltu nur se vi reagordis la programon (aldonaĵo) por komuniki kun HA per publika HTTPS-gastnomo kun memsubskribita atestilo aŭ malkongruo de gastnomo. Malŝalto malfortigas transportan sekurecon — lasu ebligita krom se vi scias, ke vi bezonas tion. Postulas restartigon por ekvalidi.",
499
499
  "addon.ha_tool_concurrency.name": "Konkureco de hejmaŭtomatigaj iloj de Home Assistant",
500
500
  "addon.ha_tool_concurrency.description": "Laŭvola limo pri eksteraj vokoj al Home Assistant-iloj tra ĉiuj sesioj. Interna REST-, WebSocket-, kaj perila disbranĉiĝa konkureco restas neŝanĝita. 0 tenas la senliman konduton. Voko atendanta je kapablo malsukcesas post 60 sekundoj.",
501
- "addon_stable.enable_tool_search.description": "Anstataŭigu la plenan il-katalogon per serĉ-bazita malkovro. Reduktas senchovan kuntekston je ĉirkaŭ 90%, ĝis proksimume 5K tokenoj. ⚠️ NE ebligu ĉi tion en klientoj kun propra enkonstruita il-serĉo / prokrastitaj iloj (claude.ai, Claude Desktop, Claude Code) — la du serĉ-tavoloj konfliktas, kaj la enkonstruita il-serĉo de la kliento estas la pli bona elekto tie; lasu ĉi tion malŝaltita. Ĉu iloj estas prokrastitaj dependas de via kliento kaj modelo-kombinaĵo: uzu ĉi tion kiam via agordo ŝarĝas la plenan katalogon frue — modeloj sen denaskaj prokrastitaj iloj (ekz. Gemini, OpenAI-kongruaj lokaj modeloj, Claude Haiku), klientoj kiuj enlinias ĉiujn il-skemojn sendepende de modelo (ekz. GitHub Copilot CLI), aŭ pli malgrandaj kuntekstaj fenestroj. Kelkaj Codex-modeloj kaj ChatGPT ankaŭ inkluzivas prokrastitajn ilojn — kontrolu rekte vian klienton/modelon por konfirmi ties funkciojn, por ke vi ne lasu ĉi tion ebligita senbezone. Iloj estas trovitaj per ha_search_tools kaj ekzekutitaj per kategoriigitaj prokurserviloj (legado/skribado/forigo). Postulas restartigon de la programo (aldonaĵo) por ekvalidi — tiam reKonekti aŭ aktualigi la MCP-servilon en via AI-kliento por ke ĝi reŝarĝu la il-liston. Restartigi la programon (aldonaĵo) sole NE aktualigas la kaŝmemoritan il-liston de kliento; ĉi tio aplikiĝas post ŝanĝo de iu ajn agordo ĉi tie."
501
+ "addon_stable.enable_tool_search.description": "Anstataŭigu la plenan il-katalogon per serĉ-bazita malkovro. Reduktas senchovan kuntekston je ĉirkaŭ 90%, ĝis proksimume 5K tokenoj. ⚠️ NE ebligu ĉi tion en klientoj kun propra enkonstruita il-serĉo / prokrastitaj iloj (claude.ai, Claude Desktop, Claude Code) — la du serĉ-tavoloj konfliktas, kaj la enkonstruita il-serĉo de la kliento estas la pli bona elekto tie; lasu ĉi tion malŝaltita. Ĉu iloj estas prokrastitaj dependas de via kliento kaj modelo-kombinaĵo: uzu ĉi tion kiam via agordo ŝarĝas la plenan katalogon frue — modeloj sen denaskaj prokrastitaj iloj (ekz. Gemini, OpenAI-kongruaj lokaj modeloj, Claude Haiku), klientoj kiuj enlinias ĉiujn il-skemojn sendepende de modelo (ekz. GitHub Copilot CLI), aŭ pli malgrandaj kuntekstaj fenestroj. Kelkaj Codex-modeloj kaj ChatGPT ankaŭ inkluzivas prokrastitajn ilojn — kontrolu rekte vian klienton/modelon por konfirmi ties funkciojn, por ke vi ne lasu ĉi tion ebligita senbezone. Iloj estas trovitaj per ha_search_tools kaj ekzekutitaj per kategoriigitaj prokurserviloj (legado/skribado/forigo). Postulas restartigon de la programo (aldonaĵo) por ekvalidi — tiam reKonekti aŭ aktualigi la MCP-servilon en via AI-kliento por ke ĝi reŝarĝu la il-liston. Restartigi la programon (aldonaĵo) sole NE aktualigas la kaŝmemoritan il-liston de kliento; ĉi tio aplikiĝas post ŝanĝo de iu ajn agordo ĉi tie.",
502
+ "policies.global.event_decisions.label": "Permesi aprobon/malaprobon per Home Assistant eventoj",
503
+ "policies.global.event_decisions.help": "Malŝaltite defaŭlte. Dum ĝi estas ŝaltita, evento <code>ha_mcp_approval_response</code> enhavanta la signon de pritraktata peto, decidon kaj la suban PIN-kodon decidas pri tiu peto — do via propra sciiga aŭtomatigo povas aprobi ĝin de telefono. Postulas PIN-kodon antaŭ ol ĝi povas esti ŝaltita.",
504
+ "policies.global.event_decisions.warning": "AI-agento kun sufiĉa aliro povas diveni aŭ havigi ĉi tiun PIN-kodon — petante ĝin de vi, aŭ verkante aŭtomatigon kiu legas ĝin el responda evento — kaj poste aprobi siajn proprajn petojn. Home Assistant ne povas distingi eventon ekigitan de via aŭtomatigo disde unu ekigita de agentejo, do la PIN-kodo estas la sola afero inter ili. Ŝalti ĉi tion akceptas tiun limigon. Decidi en la pritraktata listo ne tuŝiĝas — sur la agorda fasado kiun la servilo mem servas. La agorda paĝo de la stdio-flankilo agordas la PIN-kodon kaj la politikon, sed ne povas listigi aŭ decidi pri pritraktataj aproboj: tiuj troviĝas en la servila procezo kiun ĝi ne povas atingi.",
505
+ "policies.global.pin.label": "Aproba PIN-kodo",
506
+ "policies.global.pin.help": "Almenau 4 signoj. Konservita kiel salita haknumero kaj neniam denove montrata, kaj tenita ekster la politikodokumento tiel ke nenio kiu legas aŭ skribas politikon portas ĝin. Kvin malĝustaj PIN-kodoj ene de kvin minutoj fermas la kanalon por la resto de tiu fenestro — la pritraktata listo sur la propra agorda fasado de la servilo daŭre funkcias (la paĝo de la stdio-flankilo ne povas montri ĝin).",
507
+ "policies.global.pin.set": "Agordi PIN-kodon",
508
+ "policies.global.pin.clear": "Forigi PIN-kodon",
509
+ "policies.global.pin.is_set": "PIN-kodo estas agordita.",
510
+ "policies.global.pin.invalid": "La konservita PIN-kodo ne povas esti legita kaj kongruas kun nenio. Agordu novan.",
511
+ "policies.global.pin.not_set": "Neniu PIN-kodo agordita. Agordu unu por permesi decidojn tra la eventobuso.",
512
+ "policies.global.pin.unknown": "Ne eblis legi ĉu PIN-kodo estas agordita.",
513
+ "policies.global.pin.saved": "PIN-kodo konservita.",
514
+ "policies.global.pin.cleared": "PIN-kodo forigita.",
515
+ "policies.global.pin.cleared_and_disabled": "PIN-kodo forigita, kaj decidi per la eventobuso malŝaltita kune kun ĝi.",
516
+ "policies.global.pin.confirm_clear": "Ĉu forigi la aproban PIN-kodon? Decidi per la eventobuso malŝaltas kun ĝi; la pritraktata listo en ĉi tiu langeto ne tuŝiĝas.",
517
+ "policies.operations.set_pin": "Agordi PIN-kodon",
518
+ "policies.rules.scope_notice": "Politikoj aplikiĝas al individuaj iloj. Aliaj iloj povas fari la saman agon. Ekzemple, postuli aprobon por <code>ha_call_event</code> ne limigas eventan ekigon per <code>ha_call_service</code>.",
519
+ "policies.operations.clear_pin": "Forigi PIN-kodon"
502
520
  },
503
521
  "tools": {
504
522
  "ha_bulk_control": {
@@ -498,7 +498,25 @@
498
498
  "addon.verify_ssl.description": "Verifica el certificado TLS del servidor de Home Assistant. La app (add-on) se conecta a través del proxy del Supervisor, por lo que normalmente esto no tiene efecto y debe permanecer habilitado. Desactívalo solo si has reconfigurado la app (add-on) para comunicarse con HA a través de un nombre de host HTTPS público con un certificado autofirmado o un error de coincidencia en el nombre de host. Desactivarlo debilita la seguridad del transporte; déjalo activado a menos que sepas que lo necesitas. Requiere reiniciar para aplicar los cambios.",
499
499
  "addon.ha_tool_concurrency.name": "Concurrencia de herramientas de Home Assistant",
500
500
  "addon.ha_tool_concurrency.description": "Límite opcional en las llamadas externas a herramientas de Home Assistant en todas las sesiones. La concurrencia interna de REST, WebSocket y de distribución por herramienta no se modifica. 0 mantiene el comportamiento ilimitado. Una llamada que espera capacidad falla después de 60 segundos.",
501
- "addon_stable.enable_tool_search.description": "Reemplaza el catálogo completo de herramientas por un descubrimiento basado en búsquedas. Reduce el contexto inactivo en aproximadamente un 90 %, a unos 5K tokens. ⚠️ NO habilites esto en clientes que tengan su propia búsqueda de herramientas integrada / herramientas diferidas (claude.ai, Claude Desktop, Claude Code); ambas capas de búsqueda entran en conflicto y la búsqueda de herramientas integrada del cliente es la mejor opción en ese caso; déjalo desactivado. El hecho de que las herramientas se diferieran depende de tu combinación de cliente y modelo: úsalo cuando tu configuración cargue el catálogo completo de entrada (modelos sin herramientas diferidas nativas, por ejemplo, Gemini, modelos locales compatibles con OpenAI, Claude Haiku), clientes que insertan todos los esquemas de herramientas sin importar el modelo (por ejemplo, GitHub Copilot CLI), o ventanas de contexto más pequeñas. Algunos modelos de Codex y ChatGPT también incluyen herramientas diferidas; comprueba directamente tu cliente/modelo para confirmar sus características y no dejar esto habilitado innecesariamente. Las herramientas se encuentran mediante ha_search_tools y se ejecutan a través de proxies categorizados (lectura/escritura/eliminación). Requiere reiniciar la app (add-on) para que surta efecto; a continuación, reconecta o actualiza el servidor MCP en tu cliente de IA para que recargue la lista de herramientas. Reiniciar solo la app (add-on) NO actualiza la lista de herramientas almacenada en caché del cliente; esto se aplica después de cambiar cualquier configuración aquí."
501
+ "addon_stable.enable_tool_search.description": "Reemplaza el catálogo completo de herramientas por un descubrimiento basado en búsquedas. Reduce el contexto inactivo en aproximadamente un 90 %, a unos 5K tokens. ⚠️ NO habilites esto en clientes que tengan su propia búsqueda de herramientas integrada / herramientas diferidas (claude.ai, Claude Desktop, Claude Code); ambas capas de búsqueda entran en conflicto y la búsqueda de herramientas integrada del cliente es la mejor opción en ese caso; déjalo desactivado. El hecho de que las herramientas se diferieran depende de tu combinación de cliente y modelo: úsalo cuando tu configuración cargue el catálogo completo de entrada (modelos sin herramientas diferidas nativas, por ejemplo, Gemini, modelos locales compatibles con OpenAI, Claude Haiku), clientes que insertan todos los esquemas de herramientas sin importar el modelo (por ejemplo, GitHub Copilot CLI), o ventanas de contexto más pequeñas. Algunos modelos de Codex y ChatGPT también incluyen herramientas diferidas; comprueba directamente tu cliente/modelo para confirmar sus características y no dejar esto habilitado innecesariamente. Las herramientas se encuentran mediante ha_search_tools y se ejecutan a través de proxies categorizados (lectura/escritura/eliminación). Requiere reiniciar la app (add-on) para que surta efecto; a continuación, reconecta o actualiza el servidor MCP en tu cliente de IA para que recargue la lista de herramientas. Reiniciar solo la app (add-on) NO actualiza la lista de herramientas almacenada en caché del cliente; esto se aplica después de cambiar cualquier configuración aquí.",
502
+ "policies.global.event_decisions.label": "Permitir aprobar/denegar desde eventos de Home Assistant",
503
+ "policies.global.event_decisions.help": "Desactivado por defecto. Si está activado, un evento <code>ha_mcp_approval_response</code> que contenga el token de una solicitud pendiente, una decisión y el PIN de abajo decidirá esa solicitud, por lo que tu propia automatización de notificaciones podrá aprobarla desde un teléfono. Requiere un PIN antes de poder activarse.",
504
+ "policies.global.event_decisions.warning": "Un agente de IA con suficiente acceso puede adivinar u obtener este PIN (pidiéndotelo o escribiendo una automatización que lo lea de un evento de respuesta) y así aprobar sus propias solicitudes. Home Assistant no puede distinguir un evento lanzado por tu automatización de uno lanzado por un agente, por lo que el PIN es lo único que se interpone entre ambos. Activar esto implica aceptar dicha limitación. Las decisiones en la lista de pendientes no se ven afectadas, realizadas en la propia interfaz de ajustes que sirve el servidor. La página de ajustes del sidecar de stdio establece el PIN y la política, pero no puede listar ni decidir aprobaciones pendientes: estas residen en el proceso del servidor al que no puede acceder.",
505
+ "policies.global.pin.label": "PIN de aprobación",
506
+ "policies.global.pin.help": "Al menos 4 caracteres. Se almacena como un hash con sal y no se vuelve a mostrar, y se mantiene fuera del documento de política para que nada que lea o escriba políticas lo transporte. Cinco PINs incorrectos en cinco minutos cierran el canal durante el resto de esa ventana; la lista de pendientes en la propia interfaz de ajustes del servidor sigue funcionando (la página del sidecar de stdio no puede mostrarla).",
507
+ "policies.global.pin.set": "Establecer PIN",
508
+ "policies.global.pin.clear": "Eliminar PIN",
509
+ "policies.global.pin.is_set": "Hay un PIN establecido.",
510
+ "policies.global.pin.invalid": "No se puede leer el PIN almacenado y no coincide con ninguno. Establece uno nuevo.",
511
+ "policies.global.pin.not_set": "Ningún PIN establecido. Establece uno para permitir decisiones a través del bus de eventos.",
512
+ "policies.global.pin.unknown": "No se pudo leer si hay un PIN establecido.",
513
+ "policies.global.pin.saved": "PIN guardado.",
514
+ "policies.global.pin.cleared": "PIN eliminado.",
515
+ "policies.global.pin.cleared_and_disabled": "PIN eliminado, y las decisiones a través del bus de eventos desactivadas junto con él.",
516
+ "policies.global.pin.confirm_clear": "¿Eliminar el PIN de aprobación? Las decisiones a través del bus de eventos se desactivarán junto con él; la lista de pendientes en esta pestaña no se ve afectada.",
517
+ "policies.operations.set_pin": "Establecer PIN",
518
+ "policies.rules.scope_notice": "Las políticas se aplican a herramientas individuales. Otras herramientas pueden realizar la misma acción. Por ejemplo, requerir aprobación para <code>ha_call_event</code> no restringe el lanzamiento de eventos a través de <code>ha_call_service</code>.",
519
+ "policies.operations.clear_pin": "Eliminar PIN"
502
520
  },
503
521
  "tool_groups": {
504
522
  "Apps (add-ons)": "Apps (add-ons)",
@@ -498,7 +498,25 @@
498
498
  "addon.verify_ssl.description": "Vérifier le certificat TLS du serveur Home Assistant. L'application (add-on) se connecte via le proxy du Supervisor, cela n'a donc normalement aucun effet et doit rester activé. Désactivez uniquement si vous avez reconfiguré l'application (add-on) pour communiquer avec HA via un nom d'hôte HTTPS public avec un certificat auto-signé ou une non-correspondance de nom d'hôte. La désactivation affaiblit la sécurité du transport — laissez activé sauf si vous savez que vous en avez besoin. Nécessite un redémarrage pour prendre effet.",
499
499
  "addon.ha_tool_concurrency.name": "Concurrence des outils Home Assistant",
500
500
  "addon.ha_tool_concurrency.description": "Limite optionnelle sur les appels d'outils Home Assistant externes pour toutes les sessions. La concurrence interne pour REST, WebSocket et par outil reste inchangée. 0 conserve un comportement illimité. Un appel en attente de capacité échoue après 60 secondes.",
501
- "addon_stable.enable_tool_search.description": "Remplacer le catalogue complet d'outils par une découverte basée sur la recherche. Réduit le contexte inactif d'environ 90 %, à environ 5K jetons. ⚠️ N'activez PAS cette option dans les clients disposant de leur propre recherche d'outils intégrée / d'outils différés (claude.ai, Claude Desktop, Claude Code) — les deux couches de recherche entrent en conflit, et la recherche d'outils intégrée du client constitue le meilleur choix dans ce cas ; laissez cette option désactivée. Le fait que les outils soient différés dépend de votre association client et modèle : utilisez cette option lorsque votre configuration charge le catalogue complet au départ — modèles sans outils différés natifs (par ex. Gemini, modèles locaux compatibles OpenAI, Claude Haiku), clients qui intègrent tous les schémas d'outils quel que soit le modèle (par ex. GitHub Copilot CLI), ou fenêtres de contexte plus petites. Certains modèles Codex et ChatGPT incluent également des outils différés — vérifiez directement votre client/modèle pour confirmer ses fonctionnalités afin de ne pas laisser cette option activée inutilement. Les outils sont trouvés via ha_search_tools et exécutés via des proxys catégorisés (lecture/écriture/suppression). Nécessite un redémarrage de l'application (add-on) pour prendre effet — puis reconnectez ou actualisez le serveur MCP dans votre client IA afin qu'il recharge la liste des outils. Le seul redémarrage de l'application (add-on) ne met PAS à jour la liste des outils mise en cache par un client ; cela s'applique après la modification de n'importe quel paramètre ici."
501
+ "addon_stable.enable_tool_search.description": "Remplacer le catalogue complet d'outils par une découverte basée sur la recherche. Réduit le contexte inactif d'environ 90 %, à environ 5K jetons. ⚠️ N'activez PAS cette option dans les clients disposant de leur propre recherche d'outils intégrée / d'outils différés (claude.ai, Claude Desktop, Claude Code) — les deux couches de recherche entrent en conflit, et la recherche d'outils intégrée du client constitue le meilleur choix dans ce cas ; laissez cette option désactivée. Le fait que les outils soient différés dépend de votre association client et modèle : utilisez cette option lorsque votre configuration charge le catalogue complet au départ — modèles sans outils différés natifs (par ex. Gemini, modèles locaux compatibles OpenAI, Claude Haiku), clients qui intègrent tous les schémas d'outils quel que soit le modèle (par ex. GitHub Copilot CLI), ou fenêtres de contexte plus petites. Certains modèles Codex et ChatGPT incluent également des outils différés — vérifiez directement votre client/modèle pour confirmer ses fonctionnalités afin de ne pas laisser cette option activée inutilement. Les outils sont trouvés via ha_search_tools et exécutés via des proxys catégorisés (lecture/écriture/suppression). Nécessite un redémarrage de l'application (add-on) pour prendre effet — puis reconnectez ou actualisez le serveur MCP dans votre client IA afin qu'il recharge la liste des outils. Le seul redémarrage de l'application (add-on) ne met PAS à jour la liste des outils mise en cache par un client ; cela s'applique après la modification de n'importe quel paramètre ici.",
502
+ "policies.global.event_decisions.label": "Autoriser l'approbation ou le refus à partir des événements Home Assistant",
503
+ "policies.global.event_decisions.help": "Désactivé par défaut. Lorsqu'il est activé, un événement <code>ha_mcp_approval_response</code> contenant le jeton d'une demande en attente, une décision et le code PIN ci-dessous statue sur cette demande — permettant ainsi à votre propre automatisation de notification de l'approuver depuis un téléphone. Nécessite la définition d'un code PIN avant de pouvoir être activé.",
504
+ "policies.global.event_decisions.warning": "Un agent IA disposant d'un accès suffisant peut deviner ou obtenir ce code PIN (en vous le demandant, ou en écrivant une automatisation qui le lit dans un événement de réponse) et ainsi approuver ses propres demandes. Home Assistant ne peut pas distinguer un événement déclenché par votre automatisation d'un événement déclenché par un agent, le code PIN est donc le seul rempart entre eux. Activer cette option implique d'accepter cette limitation. La prise de décision dans la liste des éléments en attente n'est pas affectée sur l'interface de configuration servie par le serveur lui-même. La page de configuration du conteneur d'accompagnement stdio définit le code PIN et la politique, mais ne peut ni lister ni décider des approbations en attente : celles-ci résident dans le processus du serveur qu'il ne peut pas atteindre.",
505
+ "policies.global.pin.label": "Code PIN d'approbation",
506
+ "policies.global.pin.help": "Au moins 4 caractères. Stocké sous forme de hachage salé et jamais réaffiché, et conservé hors du document de politique afin qu'aucun élément lisant ou écrivant la politique ne le transporte. Cinq codes PIN erronés en l'espace de cinq minutes ferment le canal pour le reste de cette période — la liste des éléments en attente sur l'interface de configuration du serveur continue de fonctionner (la page du conteneur d'accompagnement stdio ne peut pas l'afficher).",
507
+ "policies.global.pin.set": "Définir le code PIN",
508
+ "policies.global.pin.clear": "Supprimer le code PIN",
509
+ "policies.global.pin.is_set": "Un code PIN est défini.",
510
+ "policies.global.pin.invalid": "Le code PIN enregistré ne peut pas être lu et ne correspond à rien. Définissez-en un nouveau.",
511
+ "policies.global.pin.not_set": "Aucun code PIN défini. Définissez-en un pour autoriser les décisions via le bus d'événements.",
512
+ "policies.global.pin.unknown": "Impossible de déterminer si un code PIN est défini.",
513
+ "policies.global.pin.saved": "Code PIN enregistré.",
514
+ "policies.global.pin.cleared": "Code PIN supprimé.",
515
+ "policies.global.pin.cleared_and_disabled": "Code PIN supprimé, et la prise de décision via le bus d'événements désactivée en même temps.",
516
+ "policies.global.pin.confirm_clear": "Supprimer le code PIN d'approbation ? La prise de décision via le bus d'événements sera désactivée ; la liste en attente dans cet onglet n'est pas affectée.",
517
+ "policies.operations.set_pin": "Définir le code PIN",
518
+ "policies.rules.scope_notice": "Les politiques s'appliquent à des outils individuels. D'autres outils peuvent effectuer la même action. Par exemple, exiger une approbation pour <code>ha_call_event</code> ne restreint pas le déclenchement d'événements via <code>ha_call_service</code>.",
519
+ "policies.operations.clear_pin": "Supprimer le code PIN"
502
520
  },
503
521
  "tool_groups": {
504
522
  "Apps (add-ons)": "Applications (add-ons)",
@@ -498,7 +498,25 @@
498
498
  "addon.verify_ssl.description": "Verifica il certificato TLS del server Home Assistant. L'app (componente aggiuntivo) si connette tramite il proxy Supervisor, quindi questo normalmente non ha effetto e dovrebbe rimanere abilitato. Disabilita solo se hai riconfigurato l'app (componente aggiuntivo) per comunicare con HA su un nome host HTTPS pubblico con un certificato autofirmato o una discrepanza del nome host. La disabilitazione indebolisce la sicurezza del trasporto: lasciala attiva a meno che tu non sappia di averne bisogno. Richiede il riavvio per avere effetto.",
499
499
  "addon.ha_tool_concurrency.name": "Concorrenza degli strumenti di Home Assistant",
500
500
  "addon.ha_tool_concurrency.description": "Limite opzionale sulle chiamate esterne agli strumenti di Home Assistant in tutte le sessioni. La concorrenza interna di REST, WebSocket e fan-out per strumento rimane invariata. 0 mantiene il comportamento illimitato. Una chiamata in attesa di capacità fallisce dopo 60 secondi.",
501
- "addon_stable.enable_tool_search.description": "Sostituisci il catalogo completo degli strumenti con la scoperta basata sulla ricerca. Riduce il contesto inattivo di circa il 90%, a circa 5K token. ⚠️ NON abilitare questa opzione nei client con ricerca di strumenti integrata / strumenti differiti (claude.ai, Claude Desktop, Claude Code) — i due livelli di ricerca entrano in conflitto e la ricerca di strumenti integrata del client è la scelta migliore in quel caso; lasciala disattivata. Se gli strumenti siano differiti dipende dalla combinazione di client e modello: usalo quando la tua configurazione carica l'intero catalogo in anticipo — modelli senza strumenti differiti nativi (es. Gemini, modelli locali compatibili con OpenAI, Claude Haiku), client che inseriscono tutti gli schemi di strumenti indipendentemente dal modello (es. GitHub Copilot CLI), o finestre di contesto più piccole. Alcuni modelli Codex e ChatGPT includono anch'essi strumenti differiti — verifica direttamente il tuo client/modello per confermare le sue funzionalità in modo da non lasciare questa opzione abilitata inutilmente. Gli strumenti vengono trovati tramite ha_search_tools ed eseguiti tramite proxy categorizzati (lettura/scrittura/eliminazione). Richiede il riavvio dell'app (componente aggiuntivo) per avere effetto — quindi riconnettiti o aggiorna il server MCP nel tuo client di IA in modo che ricarichi l'elenco degli strumenti. Il solo riavvio dell'app (componente aggiuntivo) NON aggiorna l'elenco degli strumenti memorizzato nella cache di un client; questo si applica dopo aver modificato qualsiasi impostazione qui."
501
+ "addon_stable.enable_tool_search.description": "Sostituisci il catalogo completo degli strumenti con la scoperta basata sulla ricerca. Riduce il contesto inattivo di circa il 90%, a circa 5K token. ⚠️ NON abilitare questa opzione nei client con ricerca di strumenti integrata / strumenti differiti (claude.ai, Claude Desktop, Claude Code) — i due livelli di ricerca entrano in conflitto e la ricerca di strumenti integrata del client è la scelta migliore in quel caso; lasciala disattivata. Se gli strumenti siano differiti dipende dalla combinazione di client e modello: usalo quando la tua configurazione carica l'intero catalogo in anticipo — modelli senza strumenti differiti nativi (es. Gemini, modelli locali compatibili con OpenAI, Claude Haiku), client che inseriscono tutti gli schemi di strumenti indipendentemente dal modello (es. GitHub Copilot CLI), o finestre di contesto più piccole. Alcuni modelli Codex e ChatGPT includono anch'essi strumenti differiti — verifica direttamente il tuo client/modello per confermare le sue funzionalità in modo da non lasciare questa opzione abilitata inutilmente. Gli strumenti vengono trovati tramite ha_search_tools ed eseguiti tramite proxy categorizzati (lettura/scrittura/eliminazione). Richiede il riavvio dell'app (componente aggiuntivo) per avere effetto — quindi riconnettiti o aggiorna il server MCP nel tuo client di IA in modo che ricarichi l'elenco degli strumenti. Il solo riavvio dell'app (componente aggiuntivo) NON aggiorna l'elenco degli strumenti memorizzato nella cache di un client; questo si applica dopo aver modificato qualsiasi impostazione qui.",
502
+ "policies.global.event_decisions.label": "Consenti approvazione/rifiuto dagli eventi di Home Assistant",
503
+ "policies.global.event_decisions.help": "Disattivato per impostazione predefinita. Quando è attivo, un evento <code>ha_mcp_approval_response</code> contenente il token di una richiesta in sospeso, una decisione e il PIN sottostante decide quella richiesta, in modo che la tua automazione di notifica possa approvarla da un telefono. Richiede un PIN prima di poter essere attivato.",
504
+ "policies.global.event_decisions.warning": "Un agente di IA con sufficiente accesso può indovinare o ottenere questo PIN — chiedendotelo o scrivendo un'automazione che lo legge da un evento di risposta — e quindi approvare le proprie richieste. Home Assistant non può distinguere un evento attivato dalla tua automazione da uno attivato da un agente, quindi il PIN è l'unica cosa tra di essi. Attivare questa opzione significa accettare tale limitazione. Le decisioni nell'elenco in sospeso non subiscono variazioni — sull'interfaccia di configurazione servita dal server stesso. La pagina delle impostazioni del sidecar stdio imposta il PIN e la regola, ma non può elencare o decidere le approvazioni in sospeso: quelle risiedono nel processo del server che esso non può raggiungere.",
505
+ "policies.global.pin.label": "PIN di approvazione",
506
+ "policies.global.pin.help": "Almeno 4 caratteri. Salvato come hash con salt e mai più mostrato, e tenuto fuori dal documento delle regole in modo che nulla che legga o scriva regole lo trasporti. Cinque PIN errati in cinque minuti chiudono il canale per il resto di quella finestra — l'elenco in sospeso sull'interfaccia di configurazione del server continua a funzionare (la pagina del sidecar stdio non può mostrarlo).",
507
+ "policies.global.pin.set": "Imposta PIN",
508
+ "policies.global.pin.clear": "Rimuovi PIN",
509
+ "policies.global.pin.is_set": "È impostato un PIN.",
510
+ "policies.global.pin.invalid": "Il PIN memorizzato non può essere letto e non corrisponde ad alcuno. Impostane uno nuovo.",
511
+ "policies.global.pin.not_set": "Nessun PIN impostato. Impostane uno per consentire le decisioni tramite il bus degli eventi.",
512
+ "policies.global.pin.unknown": "Impossibile leggere se è impostato un PIN.",
513
+ "policies.global.pin.saved": "PIN salvato.",
514
+ "policies.global.pin.cleared": "PIN rimosso.",
515
+ "policies.global.pin.cleared_and_disabled": "PIN rimosso e decisioni tramite il bus degli eventi disattivate insieme ad esso.",
516
+ "policies.global.pin.confirm_clear": "Rimuovere il PIN di approvazione? Le decisioni tramite il bus degli eventi verranno disattivate; l'elenco in sospeso in questa scheda non subisce variazioni.",
517
+ "policies.operations.set_pin": "Imposta PIN",
518
+ "policies.rules.scope_notice": "Le regole si applicano ai singoli strumenti. Altri strumenti potrebbero eseguire la stessa azione. Ad esempio, richiedere l'approvazione per <code>ha_call_event</code> non limita l'invio di eventi tramite <code>ha_call_service</code>.",
519
+ "policies.operations.clear_pin": "Rimuovi PIN"
502
520
  },
503
521
  "tool_groups": {
504
522
  "Apps (add-ons)": "App (componenti aggiuntivi)",
@@ -498,7 +498,25 @@
498
498
  "addon.verify_ssl.description": "Home Assistant 서버의 TLS 인증서를 검증합니다. 앱(애드온)은 Supervisor 프록시를 통해 연결하므로 보통 아무 영향이 없으며 켜 두는 것이 좋습니다. 자체 서명 인증서나 호스트 이름이 일치하지 않는 공개 HTTPS 호스트 이름으로 HA에 접속하도록 앱(애드온)을 다시 구성한 경우에만 끄세요. 끄면 전송 구간 보안이 약해지므로, 반드시 필요한 경우가 아니면 켜 두세요. 적용하려면 다시 시작해야 합니다.",
499
499
  "addon.ha_tool_concurrency.name": "Home Assistant 도구 동시성",
500
500
  "addon.ha_tool_concurrency.description": "모든 세션에 걸친 외부 Home Assistant 도구 호출에 대한 선택적 제한입니다. 내부 REST, WebSocket 및 도구별 팬아웃 동시성은 변경되지 않습니다. 0은 무제한 동작을 유지합니다. 용량을 기다리는 호출은 60초 후에 실패합니다.",
501
- "addon_stable.enable_tool_search.description": "전체 도구 카탈로그 대신 검색 기반 탐색을 사용합니다. 대기 상태 컨텍스트를 약 90% 줄여 약 5K 토큰 수준으로 낮춥니다. ⚠️ 자체 도구 검색이나 지연 로딩 도구 기능을 갖춘 클라이언트(claude.ai, Claude Desktop, Claude Code)에서는 켜지 마세요. 두 검색 계층이 충돌하며, 그런 환경에서는 클라이언트 내장 도구 검색이 더 낫습니다. 도구가 지연 로딩되는지는 클라이언트와 모델 조합에 따라 다릅니다. 전체 카탈로그를 처음부터 모두 불러오는 환경(네이티브 지연 로딩 도구가 없는 모델(예: Gemini, OpenAI 호환 로컬 모델, Claude Haiku), 모델과 무관하게 모든 도구 스키마를 인라인으로 넣는 클라이언트(예: GitHub Copilot CLI), 컨텍스트 창이 작은 경우)에서 사용하세요. 일부 Codex 모델과 ChatGPT도 지연 로딩 도구를 지원하므로, 불필요하게 켜 두지 않도록 사용 중인 클라이언트/모델의 기능을 직접 확인하세요. 도구는 ha_search_tools로 찾고 범주별 프록시(읽기/쓰기/삭제)를 통해 실행됩니다. 적용하려면 앱(애드온)을 다시 시작한 뒤, AI 클라이언트에서 MCP 서버에 다시 연결하거나 새로 고쳐 도구 목록을 다시 불러오게 하세요. 앱(애드온)만 다시 시작해서는 클라이언트에 캐시된 도구 목록이 갱신되지 않으며, 이는 여기의 어떤 설정을 바꾸든 마찬가지입니다."
501
+ "addon_stable.enable_tool_search.description": "전체 도구 카탈로그 대신 검색 기반 탐색을 사용합니다. 대기 상태 컨텍스트를 약 90% 줄여 약 5K 토큰 수준으로 낮춥니다. ⚠️ 자체 도구 검색이나 지연 로딩 도구 기능을 갖춘 클라이언트(claude.ai, Claude Desktop, Claude Code)에서는 켜지 마세요. 두 검색 계층이 충돌하며, 그런 환경에서는 클라이언트 내장 도구 검색이 더 낫습니다. 도구가 지연 로딩되는지는 클라이언트와 모델 조합에 따라 다릅니다. 전체 카탈로그를 처음부터 모두 불러오는 환경(네이티브 지연 로딩 도구가 없는 모델(예: Gemini, OpenAI 호환 로컬 모델, Claude Haiku), 모델과 무관하게 모든 도구 스키마를 인라인으로 넣는 클라이언트(예: GitHub Copilot CLI), 컨텍스트 창이 작은 경우)에서 사용하세요. 일부 Codex 모델과 ChatGPT도 지연 로딩 도구를 지원하므로, 불필요하게 켜 두지 않도록 사용 중인 클라이언트/모델의 기능을 직접 확인하세요. 도구는 ha_search_tools로 찾고 범주별 프록시(읽기/쓰기/삭제)를 통해 실행됩니다. 적용하려면 앱(애드온)을 다시 시작한 뒤, AI 클라이언트에서 MCP 서버에 다시 연결하거나 새로 고쳐 도구 목록을 다시 불러오게 하세요. 앱(애드온)만 다시 시작해서는 클라이언트에 캐시된 도구 목록이 갱신되지 않으며, 이는 여기의 어떤 설정을 바꾸든 마찬가지입니다.",
502
+ "policies.global.event_decisions.label": "Home Assistant 이벤트에서 승인/거부 허용",
503
+ "policies.global.event_decisions.help": "기본적으로 꺼져 있습니다. 켜져 있는 동안에는 대기 중인 요청의 토큰, 결정 및 아래의 PIN이 포함된 <code>ha_mcp_approval_response</code> 이벤트가 해당 요청을 처리하므로, 휴대폰의 알림 자동화를 통해 이를 승인할 수 있습니다. 켜기 전에 PIN을 설정해야 합니다.",
504
+ "policies.global.event_decisions.warning": "권한이 충분한 AI 에이전트는 사용자에게 요청하거나 응답 이벤트에서 PIN을 읽어오는 자동화를 작성하여 PIN을 유추하거나 획득한 후 자신의 요청을 승인할 수 있습니다. Home Assistant는 사용자의 자동화가 발생시킨 이벤트와 에이전트가 발생시킨 이벤트를 구분할 수 없으므로 PIN이 유일한 보안 수단입니다. 이 기능을 켜는 것은 이러한 한계를 수용함을 의미합니다. 서버 자체가 제공하는 설정 UI인 대기 중인 목록에서의 결정은 영향을 받지 않습니다. stdio 사이드카의 설정 페이지에서는 PIN과 정책을 설정할 수 있지만, 도달할 수 없는 서버 프로세스에 있는 대기 중인 승인 목록을 표시하거나 결정할 수는 없습니다.",
505
+ "policies.global.pin.label": "승인 PIN",
506
+ "policies.global.pin.help": "최소 4자 이상이어야 합니다. 솔티드 해시(salted hash)로 저장되며 다시 표시되지 않고, 정책 문서에 포함되지 않아 정책을 읽거나 쓰는 어떤 항목도 이를 전달하지 않습니다. 5분 동안 PIN을 5회 틀리면 해당 시간 동안 채널이 차단됩니다. 서버 자체 설정 UI의 대기 중인 목록은 계속 작동합니다(stdio 사이드카 페이지에서는 표시할 수 없음).",
507
+ "policies.global.pin.set": "PIN 설정",
508
+ "policies.global.pin.clear": "PIN 제거",
509
+ "policies.global.pin.is_set": "PIN이 설정되어 있습니다.",
510
+ "policies.global.pin.invalid": "저장된 PIN을 읽을 수 없으며 일치하는 항목이 없습니다. 새로 설정하세요.",
511
+ "policies.global.pin.not_set": "PIN이 설정되지 않았습니다. 이벤트 버스를 통한 결정을 허용하려면 PIN을 설정하세요.",
512
+ "policies.global.pin.unknown": "PIN 설정 여부를 읽을 수 없습니다.",
513
+ "policies.global.pin.saved": "PIN이 저장되었습니다.",
514
+ "policies.global.pin.cleared": "PIN이 제거되었습니다.",
515
+ "policies.global.pin.cleared_and_disabled": "PIN이 제거되었으며, 이벤트 버스를 통한 결정 기능도 함께 꺼졌습니다.",
516
+ "policies.global.pin.confirm_clear": "승인 PIN을 제거하시겠습니까? 이벤트 버스를 통한 결정 기능이 함께 꺼지며, 이 탭의 대기 중인 목록은 영향을 받지 않습니다.",
517
+ "policies.operations.set_pin": "PIN 설정",
518
+ "policies.rules.scope_notice": "정책은 개별 도구에 적용됩니다. 다른 도구가 동일한 작업을 수행할 수 있습니다. 예를 들어 <code>ha_call_event</code>에 승인을 요구하더라도 <code>ha_call_service</code>를 통한 이벤트 발생은 제한되지 않습니다.",
519
+ "policies.operations.clear_pin": "PIN 제거"
502
520
  },
503
521
  "tool_groups": {
504
522
  "Apps (add-ons)": "앱(애드온)",
@@ -498,7 +498,25 @@
498
498
  "addon.verify_ssl.description": "Verifieer het TLS-certificaat van de Home Assistant-server. De app (add-on) maakt verbinding via de Supervisor-proxy, dus dit heeft normaal gesproken geen effect en moet ingeschakeld blijven. Schakel dit alleen uit als je de app (add-on) zo hebt geconfigureerd dat deze via een openbare HTTPS-hostnaam met een zelfondertekend certificaat of een niet-overeenkomende hostnaam met HA communiceert. Uitschakelen verzwakt de transportbeveiliging — laat ingeschakeld tenzij je zeker weet dat je het nodig hebt. Vereist een herstart om van kracht te worden.",
499
499
  "addon.ha_tool_concurrency.name": "Home Assistant tool concurrency",
500
500
  "addon.ha_tool_concurrency.description": "Optionele limiet voor uiterste Home Assistant-toolaanroepen over alle sessies. Interne REST-, WebSocket- en per-tool fan-out gelijktijdigheid blijft ongewijzigd. 0 behoudt onbeperkt gedrag. Een aanroep die wacht op capaciteit mislukt na 60 seconden.",
501
- "addon_stable.enable_tool_search.description": "Vervang de volledige toolcatalogus door zoekgebaseerde ontdekking. Vermindert inactieve context met ongeveer 90%, tot ongeveer 5K tokens. ⚠️ Schakel dit NIET in bij clients met een ingebouwde toolzoekfunctie / uitgestelde tools (claude.ai, Claude Desktop, Claude Code) — de twee zoeklagen conflicteren en de ingebouwde toolzoekfunctie van de client heeft daar de voorkeur; laat dit uitgeschakeld. Of tools worden uitgesteld hangt af van je client- en modelcombinatie: gebruik dit wanneer je opstelling de volledige catalogus vooraf laadt — modellen zonder native uitgestelde tools (bijv. Gemini, OpenAI-compatibele lokale modellen, Claude Haiku), clients die alle toolschema's inline opnemen ongeacht het model (bijv. GitHub Copilot CLI), of kleinere contextvensters. Sommige Codex-modellen en ChatGPT bevatten ook uitgestelde tools — controleer je client/model direct om de functies te bevestigen zodat je dit niet onnodig ingeschakeld laat. Tools worden gevonden via ha_search_tools en uitgevoerd via gecategoriseerde proxy's (lezen/schrijven/verwijderen). Vereist een herstart van de app (add-on) om van kracht te worden — maak daarna opnieuw verbinding of vernieuw de MCP-server in je AI-client zodat deze de toollijst opnieuw laadt. Alleen de app (add-on) herstarten vernieuwt de gecached toollijst van een client NIET; dit is van toepassing na het wijzigen van een instelling hier."
501
+ "addon_stable.enable_tool_search.description": "Vervang de volledige toolcatalogus door zoekgebaseerde ontdekking. Vermindert inactieve context met ongeveer 90%, tot ongeveer 5K tokens. ⚠️ Schakel dit NIET in bij clients met een ingebouwde toolzoekfunctie / uitgestelde tools (claude.ai, Claude Desktop, Claude Code) — de twee zoeklagen conflicteren en de ingebouwde toolzoekfunctie van de client heeft daar de voorkeur; laat dit uitgeschakeld. Of tools worden uitgesteld hangt af van je client- en modelcombinatie: gebruik dit wanneer je opstelling de volledige catalogus vooraf laadt — modellen zonder native uitgestelde tools (bijv. Gemini, OpenAI-compatibele lokale modellen, Claude Haiku), clients die alle toolschema's inline opnemen ongeacht het model (bijv. GitHub Copilot CLI), of kleinere contextvensters. Sommige Codex-modellen en ChatGPT bevatten ook uitgestelde tools — controleer je client/model direct om de functies te bevestigen zodat je dit niet onnodig ingeschakeld laat. Tools worden gevonden via ha_search_tools en uitgevoerd via gecategoriseerde proxy's (lezen/schrijven/verwijderen). Vereist een herstart van de app (add-on) om van kracht te worden — maak daarna opnieuw verbinding of vernieuw de MCP-server in je AI-client zodat deze de toollijst opnieuw laadt. Alleen de app (add-on) herstarten vernieuwt de gecached toollijst van een client NIET; dit is van toepassing na het wijzigen van een instelling hier.",
502
+ "policies.global.event_decisions.label": "Goedkeuren/afwijzen toestaan via Home Assistant-gebeurtenissen",
503
+ "policies.global.event_decisions.help": "Standaard uitgeschakeld. Indien ingeschakeld, beslist een <code>ha_mcp_approval_response</code>-gebeurtenis met het token van een openstaand verzoek, een beslissing en de onderstaande pincode over dat verzoek — zodat je eigen meldingsautomatisering dit vanaf een telefoon kan goedkeuren. Vereist een pincode voordat dit kan worden ingeschakeld.",
504
+ "policies.global.event_decisions.warning": "Een AI-agent met voldoende toegang kan deze pincode raden of verkrijgen — door erom te vragen, of door een automatisering te schrijven die deze uitleest uit een antwoordgebeurtenis — en zo zijn eigen verzoeken goedkeuren. Home Assistant kan een gebeurtenis die door je automatisering is gestart niet onderscheiden van een die door een agent is gestart, dus de pincode is het enige dat ertussenstaat. Dit inschakelen betekent dat je die beperking accepteert. Beslissingen nemen in de lijst met openstaande verzoeken blijft ongewijzigd — op de instellingen-gebruikersinterface die de server zelf aanbiedt. De instellingenpagina van de stdio-sidecar stelt de pincode en het beleid in, maar kan openstaande goedkeuringen niet weergeven of erover beslissen: die bevinden zich in het serverproces dat deze niet kan bereiken.",
505
+ "policies.global.pin.label": "Goedkeuringspincode",
506
+ "policies.global.pin.help": "Minimaal 4 tekens. Opgeslagen als een gehashte waarde met zout en nooit meer getoond, en buiten het beleidsdocument gehouden zodat niets dat beleid leest of schrijft deze meedraagt. Vijf fout ingevoerde pincodes binnen vijf minuten sluiten het kanaal voor de rest van dat venster — de lijst met openstaande verzoeken in de instellingen-gebruikersinterface van de server blijft werken (de pagina van de stdio-sidecar kan deze niet weergeven).",
507
+ "policies.global.pin.set": "Pincode instellen",
508
+ "policies.global.pin.clear": "Pincode verwijderen",
509
+ "policies.global.pin.is_set": "Er is een pincode ingesteld.",
510
+ "policies.global.pin.invalid": "De opgeslagen pincode kan niet worden gelezen en komt met niets overeen. Stel een nieuwe in.",
511
+ "policies.global.pin.not_set": "Geen pincode ingesteld. Stel er een in om beslissingen via de gebeurtenissenbus toe te staan.",
512
+ "policies.global.pin.unknown": "Kan niet aflezen of er een pincode is ingesteld.",
513
+ "policies.global.pin.saved": "Pincode opgeslagen.",
514
+ "policies.global.pin.cleared": "Pincode verwijderd.",
515
+ "policies.global.pin.cleared_and_disabled": "Pincode verwijderd, en beslissen via de gebeurtenissenbus is hiermee uitgeschakeld.",
516
+ "policies.global.pin.confirm_clear": "De goedkeuringspincode verwijderen? Beslissen via de gebeurtenissenbus wordt hiermee uitgeschakeld; de lijst met openstaande verzoeken in dit tabblad blijft ongewijzigd.",
517
+ "policies.operations.set_pin": "Pincode instellen",
518
+ "policies.rules.scope_notice": "Beleid is van toepassing op individuele tools. Andere tools kunnen dezelfde actie uitvoeren. Het vereisen van goedkeuring voor bijvoorbeeld <code>ha_call_event</code> beperkt het afvuren van gebeurtenissen via <code>ha_call_service</code> niet.",
519
+ "policies.operations.clear_pin": "Pincode verwijderen"
502
520
  },
503
521
  "tools": {
504
522
  "ha_bulk_control": {
@@ -498,7 +498,25 @@
498
498
  "addon.verify_ssl.description": "Zweryfikuj certyfikat TLS serwera Home Assistant. Aplikacja (dodatek) łączy się przez proxy Supervisora, więc zazwyczaj nie ma to wpływu i powinno pozostać włączone. Wyłącz tylko wtedy, gdy skonfigurowano aplikację (dodatek) tak, aby komunikowała się z HA przez publiczną nazwę hosta HTTPS z certyfikatem z podpisem własnym lub niedopasowaniem nazwy hosta. Wyłączenie osłabia bezpieczeństwo transportu — pozostaw włączone, chyba że wiesz, że tego potrzebujesz. Wymaga ponownego uruchomienia, aby zaczęło obowiązywać.",
499
499
  "addon.ha_tool_concurrency.name": "Współbieżność narzędzi Home Assistant",
500
500
  "addon.ha_tool_concurrency.description": "Opcjonalny limit zewnętrznych wywołań narzędzi Home Assistant we wszystkich sesjach. Wewnętrzna współbieżność REST, WebSocket oraz rozgałęziania dla poszczególnych narzędzi pozostaje bez zmian. Wartość 0 zachowuje zachowanie bez limitu. Wywołanie oczekujące na wolne zasoby kończy się niepowodzeniem po 60 sekundach.",
501
- "addon_stable.enable_tool_search.description": "Zastąp pełny katalog narzędzi wyszukiwaniem. Zmniejsza bezczynny kontekst o około 90%, do około 5K tokenów. ⚠️ NIE włączaj tego w klientach z własnym wbudowanym wyszukiwaniem narzędzi / odroczonymi narzędziami (claude.ai, Claude Desktop, Claude Code) — obie warstwy wyszukiwania będą w konflikcie, a wbudowane wyszukiwanie narzędzi klienta jest w tym przypadku lepszym wyborem; pozostaw to wyłączone. To, czy narzędzia są odraczane, zależy od kombinacji klienta i modelu: użyj tego, gdy konfiguracja ładowała pełny katalog na początku — modele bez natywnych odroczonych narzędzi (np. Gemini, modele lokalne kompatybilne z OpenAI, Claude Haiku), klienci, którzy wstawiają wszystkie schematy narzędzi niezależnie od modelu (np. GitHub Copilot CLI), lub mniejsze okna kontekstu. Niektóre modele Codex i ChatGPT również zawierają odroczone narzędzia — sprawdź bezpośrednio swojego klienta/model, aby potwierdzić jego funkcje, aby nie pozostawiać tego włączonego niepotrzebnie. Narzędzia są wyszukiwane przez ha_search_tools i wykonywane za pośrednictwem skategoryzowanych serwerów proxy (odczyt/zapis/usuwanie). Wymaga ponownego uruchomienia aplikacji (dodatku), aby zaczęło obowiązywać — następnie połącz się ponownie lub odśwież serwer MCP w kliencie AI, aby załadował listę narzędzi ponownie. Samo ponowne uruchomienie aplikacji (dodatku) NIE odświeża listy narzędzi w pamięci podręcznej klienta; dotyczy to zmiany dowolnego ustawienia tutaj."
501
+ "addon_stable.enable_tool_search.description": "Zastąp pełny katalog narzędzi wyszukiwaniem. Zmniejsza bezczynny kontekst o około 90%, do około 5K tokenów. ⚠️ NIE włączaj tego w klientach z własnym wbudowanym wyszukiwaniem narzędzi / odroczonymi narzędziami (claude.ai, Claude Desktop, Claude Code) — obie warstwy wyszukiwania będą w konflikcie, a wbudowane wyszukiwanie narzędzi klienta jest w tym przypadku lepszym wyborem; pozostaw to wyłączone. To, czy narzędzia są odraczane, zależy od kombinacji klienta i modelu: użyj tego, gdy konfiguracja ładowała pełny katalog na początku — modele bez natywnych odroczonych narzędzi (np. Gemini, modele lokalne kompatybilne z OpenAI, Claude Haiku), klienci, którzy wstawiają wszystkie schematy narzędzi niezależnie od modelu (np. GitHub Copilot CLI), lub mniejsze okna kontekstu. Niektóre modele Codex i ChatGPT również zawierają odroczone narzędzia — sprawdź bezpośrednio swojego klienta/model, aby potwierdzić jego funkcje, aby nie pozostawiać tego włączonego niepotrzebnie. Narzędzia są wyszukiwane przez ha_search_tools i wykonywane za pośrednictwem skategoryzowanych serwerów proxy (odczyt/zapis/usuwanie). Wymaga ponownego uruchomienia aplikacji (dodatku), aby zaczęło obowiązywać — następnie połącz się ponownie lub odśwież serwer MCP w kliencie AI, aby załadował listę narzędzi ponownie. Samo ponowne uruchomienie aplikacji (dodatku) NIE odświeża listy narzędzi w pamięci podręcznej klienta; dotyczy to zmiany dowolnego ustawienia tutaj.",
502
+ "policies.global.event_decisions.label": "Zezwalaj na zatwierdzanie/odrzucanie ze zdarzeń Home Assistant",
503
+ "policies.global.event_decisions.help": "Domyślnie wyłączone. Po włączeniu zdarzenie <code>ha_mcp_approval_response</code> zawierające token oczekującego żądania, decyzję oraz poniższy kod PIN decyduje o tym żądaniu — dzięki czemu Twoja własna automatyzacja powiadomień może je zatwierdzić z poziomu telefonu. Wymaga ustawienia kodu PIN przed włączeniem.",
504
+ "policies.global.event_decisions.warning": "Agent AI posiadający odpowiedni dostęp może odgadnąć lub pozyskać ten PIN – pytając Cię o niego lub pisząc automatyzację, która odczytuje go ze zdarzenia odpowiedzi – a następnie zatwierdzać własne żądania. Home Assistant nie odróżni zdarzenia wywołanego przez Twoją automatyzację od tego wywołanego przez agenta, więc PIN jest jedyną rzeczą, która ich dzieli. Włączenie tej opcji oznacza akceptację tego ograniczenia. Podejmowanie decyzji na liście Oczekujące pozostaje bez zmian – w interfejsie ustawień udostępnianym bezpośrednio przez serwer. Strona ustawień sidecara stdio ustawia PIN i politykę, ale nie może wyświetlać listy oczekujących zatwierdzeń ani podejmować wobec nich decyzji: te znajdują się w procesie serwera, do którego nie ma dostępu.",
505
+ "policies.global.pin.label": "PIN zatwierdzania",
506
+ "policies.global.pin.help": "Co najmniej 4 znaki. Przechowywany jako zahashowana wartość z solą i nigdy więcej nie jest pokazywany, a także pomijany w dokumencie polityki, dzięki czemu żaden element odczytujący lub zapisujący politykę go nie zawiera. Pięć błędnych kodów PIN w ciągu pięciu minut zamyka kanał na resztę tego czasu – lista Oczekujące w interfejsie ustawień serwera nadal działa (strona sidecara stdio nie może jej wyświetlić).",
507
+ "policies.global.pin.set": "Ustaw PIN",
508
+ "policies.global.pin.clear": "Usuń PIN",
509
+ "policies.global.pin.is_set": "PIN jest ustawiony.",
510
+ "policies.global.pin.invalid": "Zapisany PIN nie może zostać odczytany i nie pasuje do żadnego. Ustaw nowy.",
511
+ "policies.global.pin.not_set": "Brak ustawionego PIN-u. Ustaw go, aby umożliwić podejmowanie decyzji poprzez szynę zdarzeń.",
512
+ "policies.global.pin.unknown": "Nie udało się odczytać, czy PIN jest ustawiony.",
513
+ "policies.global.pin.saved": "PIN zapisany.",
514
+ "policies.global.pin.cleared": "PIN usunięty.",
515
+ "policies.global.pin.cleared_and_disabled": "PIN usunięty, a podejmowanie decyzji przez szynę zdarzeń zostało wyłączone wraz z nim.",
516
+ "policies.global.pin.confirm_clear": "Usunąć PIN zatwierdzania? Podejmowanie decyzji przez szynę zdarzeń zostanie wyłączone wraz z nim; lista oczekujących w tej zakładce pozostaje bez zmian.",
517
+ "policies.operations.set_pin": "Ustaw PIN",
518
+ "policies.rules.scope_notice": "Polityki dotyczą poszczególnych narzędzi. Inne narzędzia mogą wykonać tę samą akcję. Na przykład wymaganie zatwierdzenia dla <code>ha_call_event</code> nie ogranicza wywoływania zdarzeń przez <code>ha_call_service</code>.",
519
+ "policies.operations.clear_pin": "Usuń PIN"
502
520
  },
503
521
  "tools": {
504
522
  "ha_bulk_control": {
@@ -498,7 +498,25 @@
498
498
  "addon.verify_ssl.description": "Проверять TLS-сертификат сервера Home Assistant. Приложение (аддон) подключается через прокси Supervisor, поэтому обычно это не оказывает влияния и должно быть включено. Отключайте только в случае перенастройки приложения (аддона) для связи с HA по публичному HTTPS-имени хоста с самоподписанным сертификатом или несовпадением имени хоста. Отключение снижает безопасность передачи данных — оставляйте включенным, только если это необходимо. Требуется перезапуск для применения.",
499
499
  "addon.ha_tool_concurrency.name": "Параллелизм инструментов Home Assistant",
500
500
  "addon.ha_tool_concurrency.description": "Необязательный лимит внешних вызовов инструментов Home Assistant во всех сеансах. Внутренний параллелизм REST, WebSocket и вентирования по инструментам остается неизменным. 0 сохраняет неограниченное поведение. Вызов, ожидающий свободных ресурсов, завершается ошибкой через 60 секунд.",
501
- "addon_stable.enable_tool_search.description": "Заменить полный каталог инструментов поисковым обнаружением. Снижает объем неиспользуемого контекста примерно на 90%, до примерно 5K токенов. ⚠️ НЕ включайте эту функцию в клиентах со встроенным поиском инструментов / отложенными инструментами (claude.ai, Claude Desktop, Claude Code) — два слоя поиска конфликтуют, и встроенный поиск инструментов клиента в данном случае является лучшим выбором; оставьте ее выключенной. Зависят ли инструменты от отложенного выполнения, определяется комбинацией клиента и модели: используйте этот параметр, когда ваша установка загружает полный каталог заранее — для моделей без нативных отложенных инструментов (например, Gemini, локальные модели с поддержкой OpenAI, Claude Haiku), клиентов, которые передают все схемы инструментов независимо от модели (например, GitHub Copilot CLI), или меньших окон контекста. Некоторые модели Codex и ChatGPT также включают отложенные инструменты — проверьте свой клиент/модель напрямую, чтобы подтвердить поддерживаемые функции и не оставлять этот параметр включенным без необходимости. Инструменты находятся через ha_search_tools и выполняются через категоризированные прокси (чтение/запись/удаление). Требуется перезапуск приложения (аддона) для применения — после этого переподключите или обновите MCP-сервер в вашем ИИ-клиенте, чтобы он перезагрузил список инструментов. Перезапуск только приложения (аддона) НЕ обновляет закэшированный список инструментов клиента; это применяется после изменения любого параметра здесь."
501
+ "addon_stable.enable_tool_search.description": "Заменить полный каталог инструментов поисковым обнаружением. Снижает объем неиспользуемого контекста примерно на 90%, до примерно 5K токенов. ⚠️ НЕ включайте эту функцию в клиентах со встроенным поиском инструментов / отложенными инструментами (claude.ai, Claude Desktop, Claude Code) — два слоя поиска конфликтуют, и встроенный поиск инструментов клиента в данном случае является лучшим выбором; оставьте ее выключенной. Зависят ли инструменты от отложенного выполнения, определяется комбинацией клиента и модели: используйте этот параметр, когда ваша установка загружает полный каталог заранее — для моделей без нативных отложенных инструментов (например, Gemini, локальные модели с поддержкой OpenAI, Claude Haiku), клиентов, которые передают все схемы инструментов независимо от модели (например, GitHub Copilot CLI), или меньших окон контекста. Некоторые модели Codex и ChatGPT также включают отложенные инструменты — проверьте свой клиент/модель напрямую, чтобы подтвердить поддерживаемые функции и не оставлять этот параметр включенным без необходимости. Инструменты находятся через ha_search_tools и выполняются через категоризированные прокси (чтение/запись/удаление). Требуется перезапуск приложения (аддона) для применения — после этого переподключите или обновите MCP-сервер в вашем ИИ-клиенте, чтобы он перезагрузил список инструментов. Перезапуск только приложения (аддона) НЕ обновляет закэшированный список инструментов клиента; это применяется после изменения любого параметра здесь.",
502
+ "policies.global.event_decisions.label": "Разрешить подтверждение/отклонение через события Home Assistant",
503
+ "policies.global.event_decisions.help": "По умолчанию выключено. Если включено, событие <code>ha_mcp_approval_response</code>, содержащее токен ожидающего запроса, решение и указанный ниже PIN-код, обрабатывает этот запрос, позволяя вашей автоматизации уведомлений подтверждать его с телефона. Перед включением требуется задать PIN-код.",
504
+ "policies.global.event_decisions.warning": "ИИ-агент с достаточным уровнем доступа может угадать или получить этот PIN-код — запросив его у вас или написав автоматизацию, которая считывает его из события ответа — и затем подтвердить собственные запросы. Home Assistant не может отличить событие, запущенное вашей автоматизацией, от события, запущенного агентом, поэтому PIN-код — это единственная защита между ними. Включение этой функции означает принятие данного ограничения. Принятие решений в списке ожидания (Pending) работает как прежде — в интерфейсе настроек, который предоставляет сам сервер. Страница настроек stdio-сайдкары задает PIN-код и политику, но не может отображать ожидающие подтверждения или принимать решения по ним: они находятся в процессе сервера, к которому у него нет доступа.",
505
+ "policies.global.pin.label": "PIN-код подтверждения",
506
+ "policies.global.pin.help": "Не менее 4 символов. Сохраняется в виде соленого хеша и больше никогда не отображается, а также исключен из документа политики, чтобы его не было в читаемых или записываемых данных политики. Пять неверных вводов PIN-кода в течение пяти минут блокируют канал на оставшуюся часть этого периода — список ожидающих запросов на собственной странице настроек сервера продолжает работать (страница stdio-сайдкары не может его отобразить).",
507
+ "policies.global.pin.set": "Установить PIN-код",
508
+ "policies.global.pin.clear": "Удалить PIN-код",
509
+ "policies.global.pin.is_set": "PIN-код установлен.",
510
+ "policies.global.pin.invalid": "Не удалось прочитать сохраненный PIN-код, и он ничему не соответствует. Установите новый.",
511
+ "policies.global.pin.not_set": "PIN-код не установлен. Установите его, чтобы разрешить принятие решений через шину событий.",
512
+ "policies.global.pin.unknown": "Не удалось определить, установлен ли PIN-код.",
513
+ "policies.global.pin.saved": "PIN-код сохранен.",
514
+ "policies.global.pin.cleared": "PIN-код удален.",
515
+ "policies.global.pin.cleared_and_disabled": "PIN-код удален, а принятие решений через шину событий отключено вместе с ним.",
516
+ "policies.global.pin.confirm_clear": "Удалить PIN-код подтверждения? Принятие решений через шину событий отключится вместе с ним; список ожидающих запросов на этой вкладке продолжит работать.",
517
+ "policies.operations.set_pin": "Установить PIN-код",
518
+ "policies.rules.scope_notice": "Политики применяются к отдельным инструментам. Другие инструменты могут выполнять аналогичные действия. Например, требование подтверждения для <code>ha_call_event</code> не ограничивает отправку событий через <code>ha_call_service</code>.",
519
+ "policies.operations.clear_pin": "Удалить PIN-код"
502
520
  },
503
521
  "tool_groups": {
504
522
  "Apps (add-ons)": "Приложения (аддоны)",
@@ -498,7 +498,25 @@
498
498
  "addon.verify_ssl.description": "Verifiera Home Assistant-serverns TLS-certifikat. Appen (tillägget) ansluter via Supervisor-proxyn, så detta har normalt ingen effekt och bör förbli aktiverat. Inaktivera endast om du har konfigurerat om appen (tillägget) för att kommunicera med HA över ett offentligt HTTPS-värdnamn med ett självsignerat certifikat eller matchningsfel för värdnamn. Inaktivering försvagar transportsäkerheten – lämna på om du inte vet att du behöver det. Kräver omstart för att träda i kraft.",
499
499
  "addon.ha_tool_concurrency.name": "Samtidighet för Home Assistant-verktyg",
500
500
  "addon.ha_tool_concurrency.description": "Valfri gräns för yttre anrop av Home Assistant-verktyg över alla sessioner. Intern samtidighet för REST, WebSocket och per-verktyg-grenar är oförändrad. 0 behåller obegränsat beteende. Ett anrop som väntar på kapacitet misslyckas efter 60 sekunder.",
501
- "addon_stable.enable_tool_search.description": "Ersätt hela verktygskatalogen med sökbaserad upptäckt. Minskar inaktiv kontext med ungefär 90 %, till cirka 5K tokens. ⚠️ Aktivera INTE detta i klienter med inbyggd verktygssökning / uppskjutna verktyg (claude.ai, Claude Desktop, Claude Code) – de två söklagren krockar, och klientens inbyggda verktygssökning är det bättre valet där; lämna denna avstängd. Huruvida verktyg skjuts upp beror på din klient- och modellkombination: använd detta när din konfiguration läser in hela katalogen i förväg – modeller utan inbyggda uppskjutna verktyg (t.ex. Gemini, OpenAI-kompatibla lokala modeller, Claude Haiku), klienter som infogar alla verktygsscheman oavsett modell (t.ex. GitHub Copilot CLI), eller mindre kontextfönster. Vissa Codex-modeller och ChatGPT inkluderar också uppskjutna verktyg – kontrollera din klient/modell direkt för att bekräfta dess funktioner så att du inte lämnar detta aktiverat i onödan. Verktyg hittas via ha_search_tools och exekveras via kategoriserade proxyservrar (läs/skriv/ta bort). Kräver omstart av appen (tillägget) för att träda i kraft – återanslut eller uppdatera sedan MCP-servern i din AI-klient så att den läser om verktygslistan. Enbart omstart av appen (tillägget) uppdaterar INTE en klients cachade verktygslista; detta gäller efter att du har ändrat någon inställning här."
501
+ "addon_stable.enable_tool_search.description": "Ersätt hela verktygskatalogen med sökbaserad upptäckt. Minskar inaktiv kontext med ungefär 90 %, till cirka 5K tokens. ⚠️ Aktivera INTE detta i klienter med inbyggd verktygssökning / uppskjutna verktyg (claude.ai, Claude Desktop, Claude Code) – de två söklagren krockar, och klientens inbyggda verktygssökning är det bättre valet där; lämna denna avstängd. Huruvida verktyg skjuts upp beror på din klient- och modellkombination: använd detta när din konfiguration läser in hela katalogen i förväg – modeller utan inbyggda uppskjutna verktyg (t.ex. Gemini, OpenAI-kompatibla lokala modeller, Claude Haiku), klienter som infogar alla verktygsscheman oavsett modell (t.ex. GitHub Copilot CLI), eller mindre kontextfönster. Vissa Codex-modeller och ChatGPT inkluderar också uppskjutna verktyg – kontrollera din klient/modell direkt för att bekräfta dess funktioner så att du inte lämnar detta aktiverat i onödan. Verktyg hittas via ha_search_tools och exekveras via kategoriserade proxyservrar (läs/skriv/ta bort). Kräver omstart av appen (tillägget) för att träda i kraft – återanslut eller uppdatera sedan MCP-servern i din AI-klient så att den läser om verktygslistan. Enbart omstart av appen (tillägget) uppdaterar INTE en klients cachade verktygslista; detta gäller efter att du har ändrat någon inställning här.",
502
+ "policies.global.event_decisions.label": "Tillåt godkännande/nekande från Home Assistant-händelser",
503
+ "policies.global.event_decisions.help": "Av som standard. När funktionen är aktiverad avgör en <code>ha_mcp_approval_response</code>-händelse som innehåller en väntande begärans token, ett beslut och PIN-koden nedan den begäran – så att din egen notifieringsautomatisering kan godkänna den från en telefon. Kräver en PIN-kod innan den kan slås på.",
504
+ "policies.global.event_decisions.warning": "En AI-agent med tillräcklig behörighet kan gissa eller få tag på denna PIN-kod – genom att fråga dig efter den, eller genom att skriva en automatisering som läser av den från en svarsstöt – och sedan godkänna sina egna begäranden. Home Assistant kan inte skilja på en händelse som utlösts av din automatisering och en som utlösts av en agent, så PIN-koden är det enda som skiljer dem åt. Att slå på detta innebär ett accepterande av den begränsningen. Beslut i listan Väntande påverkas inte – på inställnings-UI som servern själv tillhandahåller. Stdio-sidovagnens inställningssida ställer in PIN-koden och policyn, men kan inte lista eller fatta beslut om väntande godkännanden: de finns i serverprocessen som den inte når.",
505
+ "policies.global.pin.label": "Godkännande-PIN",
506
+ "policies.global.pin.help": "Minst 4 tecken. Lagras som en saltad hash och visas aldrig igen, och hålls utanför policydokumentet så att inget som läser eller skriver policy bär med sig den. Fem felaktiga PIN-koder inom fem minuter stänger kanalen under resten av det tidsfönstret – listan Väntande på serverns egna inställnings-UI fortsätter att fungera (stdio-sidovagnens sida kan inte visa den).",
507
+ "policies.global.pin.set": "Ställ in PIN",
508
+ "policies.global.pin.clear": "Ta bort PIN",
509
+ "policies.global.pin.is_set": "En PIN-kod är inställd.",
510
+ "policies.global.pin.invalid": "Den lagrade PIN-koden kan inte läsas och matchar ingenting. Ställ in en ny.",
511
+ "policies.global.pin.not_set": "Ingen PIN-kod inställd. Ställ in en för att tillåta beslut över händelsebussen.",
512
+ "policies.global.pin.unknown": "Kunde inte läsa av om en PIN-kod är inställd.",
513
+ "policies.global.pin.saved": "PIN-kod sparad.",
514
+ "policies.global.pin.cleared": "PIN-kod borttagen.",
515
+ "policies.global.pin.cleared_and_disabled": "PIN-koden har tagits bort och beslut via händelsebussen har stängts av i samband med det.",
516
+ "policies.global.pin.confirm_clear": "Vill du ta bort godkännande-PIN-koden? Beslut via händelsebussen stängs av i samband med det; listan med väntande i den här fliken påverkas inte.",
517
+ "policies.operations.set_pin": "Ställ in PIN",
518
+ "policies.rules.scope_notice": "Policyer tillämpas på enskilda verktyg. Andra verktyg kan utföra samma åtgärd. Att till exempel kräva godkännande för <code>ha_call_event</code> begränsar inte händelseutlösning via <code>ha_call_service</code>.",
519
+ "policies.operations.clear_pin": "Ta bort PIN"
502
520
  },
503
521
  "tools": {
504
522
  "ha_bulk_control": {
@@ -498,7 +498,25 @@
498
498
  "addon.verify_ssl.description": "验证 Home Assistant 服务器的 TLS 证书。应用(add-on)通过 Supervisor 代理连接,因此此设置通常无效,应保持启用状态。仅当您重新配置了应用(add-on),使其通过具有自签名证书或主机名不匹配的公共 HTTPS 主机名与 HA 通信时,才可以禁用。禁用会削弱传输安全性 — 除非您确有需要,否则请保持开启。需要重启才能生效。",
499
499
  "addon.ha_tool_concurrency.name": "Home Assistant 工具并发数",
500
500
  "addon.ha_tool_concurrency.description": "对所有会话中外部 Home Assistant 工具调用的可选限制。内部的 REST、WebSocket 以及每个工具的扇出并发保持不变。设置为 0 则保持无限制。等待容量的调用将在 60 秒后失败。",
501
- "addon_stable.enable_tool_search.description": "将完整的工具目录替换为基于搜索的发现。可将空闲上下文减少约 90%,至大约 5K 个 token。⚠️ 请勿在具有内置工具搜索/延迟工具功能的客户端(claude.ai、Claude Desktop、Claude Code)中启用此功能 — 两个搜索层会发生冲突,而客户端的内置工具搜索在此类情况下是更好的选择;请将其关闭。工具是否延迟加载取决于您的客户端和模型组合:在您的设置会预先加载完整目录时使用此功能 — 不支持原生延迟工具的模型(例如 Gemini、OpenAI 兼容的本地模型、Claude Haiku)、无论模型如何都内联所有工具架构的客户端(例如 GitHub Copilot CLI),或较小的上下文窗口。某些 Codex 模型和 ChatGPT 也包含延迟工具 — 请直接检查您的客户端/模型以确认其功能,以免不必要地启用此功能。通过 ha_search_tools 查找工具,并通过分类代理(读/写/删除)执行。需要重启应用(add-on)才能生效 — 然后在您的 AI 客户端中重新连接或刷新 MCP 服务器以重新加载工具列表。仅重启应用(add-on)并不会刷新客户端缓存的工具列表;这在更改此处的任何设置后适用。"
501
+ "addon_stable.enable_tool_search.description": "将完整的工具目录替换为基于搜索的发现。可将空闲上下文减少约 90%,至大约 5K 个 token。⚠️ 请勿在具有内置工具搜索/延迟工具功能的客户端(claude.ai、Claude Desktop、Claude Code)中启用此功能 — 两个搜索层会发生冲突,而客户端的内置工具搜索在此类情况下是更好的选择;请将其关闭。工具是否延迟加载取决于您的客户端和模型组合:在您的设置会预先加载完整目录时使用此功能 — 不支持原生延迟工具的模型(例如 Gemini、OpenAI 兼容的本地模型、Claude Haiku)、无论模型如何都内联所有工具架构的客户端(例如 GitHub Copilot CLI),或较小的上下文窗口。某些 Codex 模型和 ChatGPT 也包含延迟工具 — 请直接检查您的客户端/模型以确认其功能,以免不必要地启用此功能。通过 ha_search_tools 查找工具,并通过分类代理(读/写/删除)执行。需要重启应用(add-on)才能生效 — 然后在您的 AI 客户端中重新连接或刷新 MCP 服务器以重新加载工具列表。仅重启应用(add-on)并不会刷新客户端缓存的工具列表;这在更改此处的任何设置后适用。",
502
+ "policies.global.event_decisions.label": "允许从 Home Assistant 事件中进行批准/拒绝",
503
+ "policies.global.event_decisions.help": "默认关闭。开启后,携带待处理请求令牌、决定以及下方 PIN 码的 <code>ha_mcp_approval_response</code> 事件将决定该请求——因此您的通知自动化可以通过手机批准它。启用前需要设置 PIN 码。",
504
+ "policies.global.event_decisions.warning": "拥有足够访问权限的 AI 助手可以猜测或获取此 PIN 码(通过向您索取,或编写从响应事件中读取该 PIN 码的自动化),进而批准其自身的请求。Home Assistant 无法区分是由您的自动化触发的事件还是由助手触发的事件,因此 PIN 码是它们之间的唯一防线。开启此功能即表示接受该局限性。待处理列表中的决策不受影响——该列表位于服务器自身提供的设置 UI 上。stdio 旁车程序的设置页面可设置 PIN 码和策略,但无法列出或决定待处理的批准:这些操作存在于其无法访问的服务器进程中。",
505
+ "policies.global.pin.label": "审批 PIN 码",
506
+ "policies.global.pin.help": "至少 4 个字符。以加盐哈希形式存储且绝不再显示,并且不会保存在策略文档中,因此任何读取或写入策略的内容都不会携带它。五分钟内连续输入五次错误 PIN 码将在该时间窗口的剩余时间内关闭通道——服务器自身设置 UI 上的待处理列表仍然正常工作(stdio 旁车程序页面无法显示它)。",
507
+ "policies.global.pin.set": "设置 PIN 码",
508
+ "policies.global.pin.clear": "移除 PIN 码",
509
+ "policies.global.pin.is_set": "已设置 PIN 码。",
510
+ "policies.global.pin.invalid": "无法读取所存储的 PIN 码且与任何内容均不匹配。请设置一个新 PIN 码。",
511
+ "policies.global.pin.not_set": "未设置 PIN 码。请设置一个以允许通过事件总线进行决策。",
512
+ "policies.global.pin.unknown": "无法读取是否已设置 PIN 码。",
513
+ "policies.global.pin.saved": "PIN 码已保存。",
514
+ "policies.global.pin.cleared": "PIN 码已移除。",
515
+ "policies.global.pin.cleared_and_disabled": "PIN 码已移除,通过事件总线进行决策的功能也随之关闭。",
516
+ "policies.global.pin.confirm_clear": "确定移除审批 PIN 码吗?通过事件总线进行决策的功能将随之关闭;此标签页中的待处理列表不受影响。",
517
+ "policies.operations.set_pin": "设置 PIN 码",
518
+ "policies.rules.scope_notice": "策略适用于单个工具。其他工具可能会执行相同的操作。例如,要求对 <code>ha_call_event</code> 进行批准并不会限制通过 <code>ha_call_service</code> 触发事件。",
519
+ "policies.operations.clear_pin": "移除 PIN 码"
502
520
  },
503
521
  "tool_groups": {
504
522
  "Apps (add-ons)": "应用(add-on)",
@@ -498,7 +498,25 @@
498
498
  "addon.verify_ssl.description": "驗證 Home Assistant 伺服器的 TLS 憑證。應用程式(附加元件)透過 Supervisor Proxy 連線,因此通常沒有影響,應保持啟用狀態。僅在您已將應用程式(附加元件)重新設定為透過具有自我簽署憑證或主機名稱不符的公開 HTTPS 主機名稱與 Home Assistant 通訊時才予以停用。停用會削弱傳輸安全性 — 除非您確定需要,否則請保持開啟。需要重新啟動才能生效。",
499
499
  "addon.ha_tool_concurrency.name": "Home Assistant 工具併發數",
500
500
  "addon.ha_tool_concurrency.description": "跨所有工作階段對外部 Home Assistant 工具呼叫的選填限制。內部的 REST、WebSocket 和每個工具的扇出併發數保持不變。0 表示維持無限行為。等待容量的呼叫會在 60 秒後失敗。",
501
- "addon_stable.enable_tool_search.description": "使用基於搜尋的探索來取代完整的工具目錄。可將閒置上下文減少約 90%,降至約 5K 個 Token。⚠️ 如果用戶端本身具有內建工具搜尋/延遲工具功能(claude.ai、Claude Desktop、Claude Code),請勿啟用此功能——這兩個搜尋層會發生衝突,而用戶端內建的工具搜尋在此處是更好的選擇;請保持關閉。工具是否被延遲取決於您的用戶端與模型組合:當您的設定會預先載入完整目錄時請使用此功能——適用於沒有原生延遲工具的模型(例如 Gemini、相容 OpenAI 的本地模型、Claude Haiku)、無論模型為何都內嵌所有工具結構描述的用戶端(例如 GitHub Copilot CLI),或是較小的上下文視窗。部分 Codex 模型和 ChatGPT 也包含延遲工具——請直接檢查您的用戶端/模型以確認其功能,以免不必要地保持啟用。工具是透過 ha_search_tools 尋找,並透過分類代理(讀取/寫入/刪除)執行。需要重新啟動應用程式(附加元件)才會生效——然後請在您的 AI 用戶端中重新連線或重新整理 MCP 伺服器,以便重新載入工具列表。單獨重新啟動應用程式(附加元件)並不會重新整理用戶端快取的工具列表;這適用於變更此處的任何設定之後。"
501
+ "addon_stable.enable_tool_search.description": "使用基於搜尋的探索來取代完整的工具目錄。可將閒置上下文減少約 90%,降至約 5K 個 Token。⚠️ 如果用戶端本身具有內建工具搜尋/延遲工具功能(claude.ai、Claude Desktop、Claude Code),請勿啟用此功能——這兩個搜尋層會發生衝突,而用戶端內建的工具搜尋在此處是更好的選擇;請保持關閉。工具是否被延遲取決於您的用戶端與模型組合:當您的設定會預先載入完整目錄時請使用此功能——適用於沒有原生延遲工具的模型(例如 Gemini、相容 OpenAI 的本地模型、Claude Haiku)、無論模型為何都內嵌所有工具結構描述的用戶端(例如 GitHub Copilot CLI),或是較小的上下文視窗。部分 Codex 模型和 ChatGPT 也包含延遲工具——請直接檢查您的用戶端/模型以確認其功能,以免不必要地保持啟用。工具是透過 ha_search_tools 尋找,並透過分類代理(讀取/寫入/刪除)執行。需要重新啟動應用程式(附加元件)才會生效——然後請在您的 AI 用戶端中重新連線或重新整理 MCP 伺服器,以便重新載入工具列表。單獨重新啟動應用程式(附加元件)並不會重新整理用戶端快取的工具列表;這適用於變更此處的任何設定之後。",
502
+ "policies.global.event_decisions.label": "允許從 Home Assistant 事件進行批准/拒絕",
503
+ "policies.global.event_decisions.help": "預設為關閉。開啟時,攜帶待處理請求權杖、決定及下方 PIN 碼的 <code>ha_mcp_approval_response</code> 事件將決定該請求 — 讓您自己的通知自動化能夠從手機上進行批准。啟用前需要設定 PIN 碼。",
504
+ "policies.global.event_decisions.warning": "擁有足夠存取權限的 AI 代理可以猜測或取得此 PIN 碼 — 透過向您索取,或透過編寫從回應事件中讀取它的自動化 — 然後批准它自己的請求。Home Assistant 無法分辨是由您的自動化觸發的事件,還是由代理觸發的事件,因此 PIN 碼是它們之間的唯一防線。開啟此功能即表示接受該限制。「待處理」列表中的決定不受影響 — 該列表位於伺服器本身提供的設定 UI 上。stdio sidecar 的設定頁面可設定 PIN 碼與策略,但無法列出或決定待處理的批准:這些位於其無法觸及的伺服器進程中。",
505
+ "policies.global.pin.label": "批准 PIN 碼",
506
+ "policies.global.pin.help": "至少 4 個字元。以加鹽雜湊值儲存且絕不再顯示,並會從策略文件中排除,確保任何讀取或寫入策略的東西都不會攜帶它。五分鐘內輸入五次錯誤的 PIN 碼將在該時間範圍的剩餘時間內關閉通道 — 伺服器自身設定 UI 上的「待處理」列表會繼續運作(stdio sidecar 頁面無法顯示它)。",
507
+ "policies.global.pin.set": "設定 PIN 碼",
508
+ "policies.global.pin.clear": "移除 PIN 碼",
509
+ "policies.global.pin.is_set": "已設定 PIN 碼。",
510
+ "policies.global.pin.invalid": "無法讀取儲存的 PIN 碼且與任何內容不符。請設定新 PIN 碼。",
511
+ "policies.global.pin.not_set": "未設定 PIN 碼。請設定一個以允許透過事件匯流排進行決定。",
512
+ "policies.global.pin.unknown": "無法讀取是否已設定 PIN 碼。",
513
+ "policies.global.pin.saved": "PIN 碼已儲存。",
514
+ "policies.global.pin.cleared": "PIN 碼已移除。",
515
+ "policies.global.pin.cleared_and_disabled": "PIN 碼已移除,透過事件匯流排進行決定的功能也隨之關閉。",
516
+ "policies.global.pin.confirm_clear": "要移除批准 PIN 碼嗎?透過事件匯流排進行決定的功能將隨之關閉;此分頁中的待處理列表不受影響。",
517
+ "policies.operations.set_pin": "設定 PIN 碼",
518
+ "policies.rules.scope_notice": "策略適用於個別工具。其他工具可能會執行相同的動作。例如,要求批准 <code>ha_call_event</code> 並不會限制透過 <code>ha_call_service</code> 觸發事件。",
519
+ "policies.operations.clear_pin": "移除 PIN 碼"
502
520
  },
503
521
  "tools": {
504
522
  "ha_bulk_control": {