ha-mcp-dev 9.2.0.dev3467__tar.gz → 9.2.0.dev3469__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 (851) hide show
  1. {ha_mcp_dev-9.2.0.dev3467 → ha_mcp_dev-9.2.0.dev3469}/PKG-INFO +1 -1
  2. {ha_mcp_dev-9.2.0.dev3467 → ha_mcp_dev-9.2.0.dev3469}/pyproject.toml +1 -1
  3. {ha_mcp_dev-9.2.0.dev3467 → ha_mcp_dev-9.2.0.dev3469}/pyproject.toml.orig +1 -1
  4. {ha_mcp_dev-9.2.0.dev3467 → ha_mcp_dev-9.2.0.dev3469}/src/ha_mcp/_vendor/requirements.txt +1 -1
  5. {ha_mcp_dev-9.2.0.dev3467 → ha_mcp_dev-9.2.0.dev3469}/src/ha_mcp/_vendor/websockets/MANIFEST.sha256 +16 -16
  6. {ha_mcp_dev-9.2.0.dev3467 → ha_mcp_dev-9.2.0.dev3469}/src/ha_mcp/_vendor/websockets/VENDORED +1 -1
  7. {ha_mcp_dev-9.2.0.dev3467 → ha_mcp_dev-9.2.0.dev3469}/src/ha_mcp/_vendor/websockets/__init__.py +3 -0
  8. {ha_mcp_dev-9.2.0.dev3467 → ha_mcp_dev-9.2.0.dev3469}/src/ha_mcp/_vendor/websockets/asyncio/connection.py +33 -26
  9. {ha_mcp_dev-9.2.0.dev3467 → ha_mcp_dev-9.2.0.dev3469}/src/ha_mcp/_vendor/websockets/asyncio/messages.py +16 -10
  10. {ha_mcp_dev-9.2.0.dev3467 → ha_mcp_dev-9.2.0.dev3469}/src/ha_mcp/_vendor/websockets/asyncio/server.py +4 -1
  11. {ha_mcp_dev-9.2.0.dev3467 → ha_mcp_dev-9.2.0.dev3469}/src/ha_mcp/_vendor/websockets/exceptions.py +9 -0
  12. {ha_mcp_dev-9.2.0.dev3467 → ha_mcp_dev-9.2.0.dev3469}/src/ha_mcp/_vendor/websockets/headers.py +8 -2
  13. {ha_mcp_dev-9.2.0.dev3467 → ha_mcp_dev-9.2.0.dev3469}/src/ha_mcp/_vendor/websockets/http11.py +29 -17
  14. {ha_mcp_dev-9.2.0.dev3467 → ha_mcp_dev-9.2.0.dev3469}/src/ha_mcp/_vendor/websockets/legacy/protocol.py +10 -0
  15. {ha_mcp_dev-9.2.0.dev3467 → ha_mcp_dev-9.2.0.dev3469}/src/ha_mcp/_vendor/websockets/protocol.py +2 -0
  16. {ha_mcp_dev-9.2.0.dev3467 → ha_mcp_dev-9.2.0.dev3469}/src/ha_mcp/_vendor/websockets/sync/connection.py +84 -54
  17. {ha_mcp_dev-9.2.0.dev3467 → ha_mcp_dev-9.2.0.dev3469}/src/ha_mcp/_vendor/websockets/sync/messages.py +6 -1
  18. {ha_mcp_dev-9.2.0.dev3467 → ha_mcp_dev-9.2.0.dev3469}/src/ha_mcp/_vendor/websockets/sync/server.py +4 -1
  19. {ha_mcp_dev-9.2.0.dev3467 → ha_mcp_dev-9.2.0.dev3469}/src/ha_mcp/_vendor/websockets/trio/connection.py +37 -26
  20. {ha_mcp_dev-9.2.0.dev3467 → ha_mcp_dev-9.2.0.dev3469}/src/ha_mcp/_vendor/websockets/trio/messages.py +16 -7
  21. {ha_mcp_dev-9.2.0.dev3467 → ha_mcp_dev-9.2.0.dev3469}/src/ha_mcp/_vendor/websockets/version.py +1 -1
  22. {ha_mcp_dev-9.2.0.dev3467 → ha_mcp_dev-9.2.0.dev3469}/LICENSE +0 -0
  23. {ha_mcp_dev-9.2.0.dev3467 → ha_mcp_dev-9.2.0.dev3469}/README.md +0 -0
  24. {ha_mcp_dev-9.2.0.dev3467 → ha_mcp_dev-9.2.0.dev3469}/src/ha_mcp/__init__.py +0 -0
  25. {ha_mcp_dev-9.2.0.dev3467 → ha_mcp_dev-9.2.0.dev3469}/src/ha_mcp/__main__.py +0 -0
  26. {ha_mcp_dev-9.2.0.dev3467 → ha_mcp_dev-9.2.0.dev3469}/src/ha_mcp/_pypi_marker +0 -0
  27. {ha_mcp_dev-9.2.0.dev3467 → ha_mcp_dev-9.2.0.dev3469}/src/ha_mcp/_rich_compat.py +0 -0
  28. {ha_mcp_dev-9.2.0.dev3467 → ha_mcp_dev-9.2.0.dev3469}/src/ha_mcp/_vendor/__init__.py +0 -0
  29. {ha_mcp_dev-9.2.0.dev3467 → ha_mcp_dev-9.2.0.dev3469}/src/ha_mcp/_vendor/fastmcp/LICENSE +0 -0
  30. {ha_mcp_dev-9.2.0.dev3467 → ha_mcp_dev-9.2.0.dev3469}/src/ha_mcp/_vendor/fastmcp/MANIFEST.sha256 +0 -0
  31. {ha_mcp_dev-9.2.0.dev3467 → ha_mcp_dev-9.2.0.dev3469}/src/ha_mcp/_vendor/fastmcp/REQUIRES.txt +0 -0
  32. {ha_mcp_dev-9.2.0.dev3467 → ha_mcp_dev-9.2.0.dev3469}/src/ha_mcp/_vendor/fastmcp/VENDORED +0 -0
  33. {ha_mcp_dev-9.2.0.dev3467 → ha_mcp_dev-9.2.0.dev3469}/src/ha_mcp/_vendor/fastmcp/__init__.py +0 -0
  34. {ha_mcp_dev-9.2.0.dev3467 → ha_mcp_dev-9.2.0.dev3469}/src/ha_mcp/_vendor/fastmcp/_compat.py +0 -0
  35. {ha_mcp_dev-9.2.0.dev3467 → ha_mcp_dev-9.2.0.dev3469}/src/ha_mcp/_vendor/fastmcp/_install_hints.py +0 -0
  36. {ha_mcp_dev-9.2.0.dev3467 → ha_mcp_dev-9.2.0.dev3469}/src/ha_mcp/_vendor/fastmcp/_warnings.py +0 -0
  37. {ha_mcp_dev-9.2.0.dev3467 → ha_mcp_dev-9.2.0.dev3469}/src/ha_mcp/_vendor/fastmcp/apps/__init__.py +0 -0
  38. {ha_mcp_dev-9.2.0.dev3467 → ha_mcp_dev-9.2.0.dev3469}/src/ha_mcp/_vendor/fastmcp/apps/app.py +0 -0
  39. {ha_mcp_dev-9.2.0.dev3467 → ha_mcp_dev-9.2.0.dev3469}/src/ha_mcp/_vendor/fastmcp/apps/approval.py +0 -0
  40. {ha_mcp_dev-9.2.0.dev3467 → ha_mcp_dev-9.2.0.dev3469}/src/ha_mcp/_vendor/fastmcp/apps/choice.py +0 -0
  41. {ha_mcp_dev-9.2.0.dev3467 → ha_mcp_dev-9.2.0.dev3469}/src/ha_mcp/_vendor/fastmcp/apps/config.py +0 -0
  42. {ha_mcp_dev-9.2.0.dev3467 → ha_mcp_dev-9.2.0.dev3469}/src/ha_mcp/_vendor/fastmcp/apps/file_upload.py +0 -0
  43. {ha_mcp_dev-9.2.0.dev3467 → ha_mcp_dev-9.2.0.dev3469}/src/ha_mcp/_vendor/fastmcp/apps/form.py +0 -0
  44. {ha_mcp_dev-9.2.0.dev3467 → ha_mcp_dev-9.2.0.dev3469}/src/ha_mcp/_vendor/fastmcp/apps/generative.py +0 -0
  45. {ha_mcp_dev-9.2.0.dev3467 → ha_mcp_dev-9.2.0.dev3469}/src/ha_mcp/_vendor/fastmcp/cli/__init__.py +0 -0
  46. {ha_mcp_dev-9.2.0.dev3467 → ha_mcp_dev-9.2.0.dev3469}/src/ha_mcp/_vendor/fastmcp/cli/__main__.py +0 -0
  47. {ha_mcp_dev-9.2.0.dev3467 → ha_mcp_dev-9.2.0.dev3469}/src/ha_mcp/_vendor/fastmcp/cli/apps_dev.py +0 -0
  48. {ha_mcp_dev-9.2.0.dev3467 → ha_mcp_dev-9.2.0.dev3469}/src/ha_mcp/_vendor/fastmcp/cli/apps_dev_security.py +0 -0
  49. {ha_mcp_dev-9.2.0.dev3467 → ha_mcp_dev-9.2.0.dev3469}/src/ha_mcp/_vendor/fastmcp/cli/auth.py +0 -0
  50. {ha_mcp_dev-9.2.0.dev3467 → ha_mcp_dev-9.2.0.dev3469}/src/ha_mcp/_vendor/fastmcp/cli/cimd.py +0 -0
  51. {ha_mcp_dev-9.2.0.dev3467 → ha_mcp_dev-9.2.0.dev3469}/src/ha_mcp/_vendor/fastmcp/cli/cli.py +0 -0
  52. {ha_mcp_dev-9.2.0.dev3467 → ha_mcp_dev-9.2.0.dev3469}/src/ha_mcp/_vendor/fastmcp/cli/client.py +0 -0
  53. {ha_mcp_dev-9.2.0.dev3467 → ha_mcp_dev-9.2.0.dev3469}/src/ha_mcp/_vendor/fastmcp/cli/deploy/__init__.py +0 -0
  54. {ha_mcp_dev-9.2.0.dev3467 → ha_mcp_dev-9.2.0.dev3469}/src/ha_mcp/_vendor/fastmcp/cli/deploy/authentication.py +0 -0
  55. {ha_mcp_dev-9.2.0.dev3467 → ha_mcp_dev-9.2.0.dev3469}/src/ha_mcp/_vendor/fastmcp/cli/deploy/command.py +0 -0
  56. {ha_mcp_dev-9.2.0.dev3467 → ha_mcp_dev-9.2.0.dev3469}/src/ha_mcp/_vendor/fastmcp/cli/deploy/configuration.py +0 -0
  57. {ha_mcp_dev-9.2.0.dev3467 → ha_mcp_dev-9.2.0.dev3469}/src/ha_mcp/_vendor/fastmcp/cli/deploy/credentials.py +0 -0
  58. {ha_mcp_dev-9.2.0.dev3467 → ha_mcp_dev-9.2.0.dev3469}/src/ha_mcp/_vendor/fastmcp/cli/deploy/horizon_client.py +0 -0
  59. {ha_mcp_dev-9.2.0.dev3467 → ha_mcp_dev-9.2.0.dev3469}/src/ha_mcp/_vendor/fastmcp/cli/deploy/output.py +0 -0
  60. {ha_mcp_dev-9.2.0.dev3467 → ha_mcp_dev-9.2.0.dev3469}/src/ha_mcp/_vendor/fastmcp/cli/deploy/state.py +0 -0
  61. {ha_mcp_dev-9.2.0.dev3467 → ha_mcp_dev-9.2.0.dev3469}/src/ha_mcp/_vendor/fastmcp/cli/discovery.py +0 -0
  62. {ha_mcp_dev-9.2.0.dev3467 → ha_mcp_dev-9.2.0.dev3469}/src/ha_mcp/_vendor/fastmcp/cli/generate.py +0 -0
  63. {ha_mcp_dev-9.2.0.dev3467 → ha_mcp_dev-9.2.0.dev3469}/src/ha_mcp/_vendor/fastmcp/cli/install/__init__.py +0 -0
  64. {ha_mcp_dev-9.2.0.dev3467 → ha_mcp_dev-9.2.0.dev3469}/src/ha_mcp/_vendor/fastmcp/cli/install/claude_code.py +0 -0
  65. {ha_mcp_dev-9.2.0.dev3467 → ha_mcp_dev-9.2.0.dev3469}/src/ha_mcp/_vendor/fastmcp/cli/install/claude_desktop.py +0 -0
  66. {ha_mcp_dev-9.2.0.dev3467 → ha_mcp_dev-9.2.0.dev3469}/src/ha_mcp/_vendor/fastmcp/cli/install/cursor.py +0 -0
  67. {ha_mcp_dev-9.2.0.dev3467 → ha_mcp_dev-9.2.0.dev3469}/src/ha_mcp/_vendor/fastmcp/cli/install/gemini_cli.py +0 -0
  68. {ha_mcp_dev-9.2.0.dev3467 → ha_mcp_dev-9.2.0.dev3469}/src/ha_mcp/_vendor/fastmcp/cli/install/goose.py +0 -0
  69. {ha_mcp_dev-9.2.0.dev3467 → ha_mcp_dev-9.2.0.dev3469}/src/ha_mcp/_vendor/fastmcp/cli/install/mcp_json.py +0 -0
  70. {ha_mcp_dev-9.2.0.dev3467 → ha_mcp_dev-9.2.0.dev3469}/src/ha_mcp/_vendor/fastmcp/cli/install/shared.py +0 -0
  71. {ha_mcp_dev-9.2.0.dev3467 → ha_mcp_dev-9.2.0.dev3469}/src/ha_mcp/_vendor/fastmcp/cli/install/stdio.py +0 -0
  72. {ha_mcp_dev-9.2.0.dev3467 → ha_mcp_dev-9.2.0.dev3469}/src/ha_mcp/_vendor/fastmcp/cli/run.py +0 -0
  73. {ha_mcp_dev-9.2.0.dev3467 → ha_mcp_dev-9.2.0.dev3469}/src/ha_mcp/_vendor/fastmcp/client/__init__.py +0 -0
  74. {ha_mcp_dev-9.2.0.dev3467 → ha_mcp_dev-9.2.0.dev3469}/src/ha_mcp/_vendor/fastmcp/client/_sdk_context_shim.py +0 -0
  75. {ha_mcp_dev-9.2.0.dev3467 → ha_mcp_dev-9.2.0.dev3469}/src/ha_mcp/_vendor/fastmcp/client/auth/__init__.py +0 -0
  76. {ha_mcp_dev-9.2.0.dev3467 → ha_mcp_dev-9.2.0.dev3469}/src/ha_mcp/_vendor/fastmcp/client/auth/bearer.py +0 -0
  77. {ha_mcp_dev-9.2.0.dev3467 → ha_mcp_dev-9.2.0.dev3469}/src/ha_mcp/_vendor/fastmcp/client/auth/client_credentials.py +0 -0
  78. {ha_mcp_dev-9.2.0.dev3467 → ha_mcp_dev-9.2.0.dev3469}/src/ha_mcp/_vendor/fastmcp/client/auth/oauth.py +0 -0
  79. {ha_mcp_dev-9.2.0.dev3467 → ha_mcp_dev-9.2.0.dev3469}/src/ha_mcp/_vendor/fastmcp/client/caching.py +0 -0
  80. {ha_mcp_dev-9.2.0.dev3467 → ha_mcp_dev-9.2.0.dev3469}/src/ha_mcp/_vendor/fastmcp/client/client.py +0 -0
  81. {ha_mcp_dev-9.2.0.dev3467 → ha_mcp_dev-9.2.0.dev3469}/src/ha_mcp/_vendor/fastmcp/client/dependencies.py +0 -0
  82. {ha_mcp_dev-9.2.0.dev3467 → ha_mcp_dev-9.2.0.dev3469}/src/ha_mcp/_vendor/fastmcp/client/elicitation.py +0 -0
  83. {ha_mcp_dev-9.2.0.dev3467 → ha_mcp_dev-9.2.0.dev3469}/src/ha_mcp/_vendor/fastmcp/client/extension_hooks.py +0 -0
  84. {ha_mcp_dev-9.2.0.dev3467 → ha_mcp_dev-9.2.0.dev3469}/src/ha_mcp/_vendor/fastmcp/client/group.py +0 -0
  85. {ha_mcp_dev-9.2.0.dev3467 → ha_mcp_dev-9.2.0.dev3469}/src/ha_mcp/_vendor/fastmcp/client/logging.py +0 -0
  86. {ha_mcp_dev-9.2.0.dev3467 → ha_mcp_dev-9.2.0.dev3469}/src/ha_mcp/_vendor/fastmcp/client/messages.py +0 -0
  87. {ha_mcp_dev-9.2.0.dev3467 → ha_mcp_dev-9.2.0.dev3469}/src/ha_mcp/_vendor/fastmcp/client/mixins/__init__.py +0 -0
  88. {ha_mcp_dev-9.2.0.dev3467 → ha_mcp_dev-9.2.0.dev3469}/src/ha_mcp/_vendor/fastmcp/client/mixins/prompts.py +0 -0
  89. {ha_mcp_dev-9.2.0.dev3467 → ha_mcp_dev-9.2.0.dev3469}/src/ha_mcp/_vendor/fastmcp/client/mixins/resources.py +0 -0
  90. {ha_mcp_dev-9.2.0.dev3467 → ha_mcp_dev-9.2.0.dev3469}/src/ha_mcp/_vendor/fastmcp/client/mixins/skills.py +0 -0
  91. {ha_mcp_dev-9.2.0.dev3467 → ha_mcp_dev-9.2.0.dev3469}/src/ha_mcp/_vendor/fastmcp/client/mixins/tools.py +0 -0
  92. {ha_mcp_dev-9.2.0.dev3467 → ha_mcp_dev-9.2.0.dev3469}/src/ha_mcp/_vendor/fastmcp/client/oauth_callback.py +0 -0
  93. {ha_mcp_dev-9.2.0.dev3467 → ha_mcp_dev-9.2.0.dev3469}/src/ha_mcp/_vendor/fastmcp/client/progress.py +0 -0
  94. {ha_mcp_dev-9.2.0.dev3467 → ha_mcp_dev-9.2.0.dev3469}/src/ha_mcp/_vendor/fastmcp/client/roots.py +0 -0
  95. {ha_mcp_dev-9.2.0.dev3467 → ha_mcp_dev-9.2.0.dev3469}/src/ha_mcp/_vendor/fastmcp/client/sampling/__init__.py +0 -0
  96. {ha_mcp_dev-9.2.0.dev3467 → ha_mcp_dev-9.2.0.dev3469}/src/ha_mcp/_vendor/fastmcp/client/sampling/handlers/__init__.py +0 -0
  97. {ha_mcp_dev-9.2.0.dev3467 → ha_mcp_dev-9.2.0.dev3469}/src/ha_mcp/_vendor/fastmcp/client/sampling/handlers/anthropic.py +0 -0
  98. {ha_mcp_dev-9.2.0.dev3467 → ha_mcp_dev-9.2.0.dev3469}/src/ha_mcp/_vendor/fastmcp/client/sampling/handlers/google_genai.py +0 -0
  99. {ha_mcp_dev-9.2.0.dev3467 → ha_mcp_dev-9.2.0.dev3469}/src/ha_mcp/_vendor/fastmcp/client/sampling/handlers/openai.py +0 -0
  100. {ha_mcp_dev-9.2.0.dev3467 → ha_mcp_dev-9.2.0.dev3469}/src/ha_mcp/_vendor/fastmcp/client/telemetry.py +0 -0
  101. {ha_mcp_dev-9.2.0.dev3467 → ha_mcp_dev-9.2.0.dev3469}/src/ha_mcp/_vendor/fastmcp/client/transports/__init__.py +0 -0
  102. {ha_mcp_dev-9.2.0.dev3467 → ha_mcp_dev-9.2.0.dev3469}/src/ha_mcp/_vendor/fastmcp/client/transports/base.py +0 -0
  103. {ha_mcp_dev-9.2.0.dev3467 → ha_mcp_dev-9.2.0.dev3469}/src/ha_mcp/_vendor/fastmcp/client/transports/config.py +0 -0
  104. {ha_mcp_dev-9.2.0.dev3467 → ha_mcp_dev-9.2.0.dev3469}/src/ha_mcp/_vendor/fastmcp/client/transports/http.py +0 -0
  105. {ha_mcp_dev-9.2.0.dev3467 → ha_mcp_dev-9.2.0.dev3469}/src/ha_mcp/_vendor/fastmcp/client/transports/inference.py +0 -0
  106. {ha_mcp_dev-9.2.0.dev3467 → ha_mcp_dev-9.2.0.dev3469}/src/ha_mcp/_vendor/fastmcp/client/transports/memory.py +0 -0
  107. {ha_mcp_dev-9.2.0.dev3467 → ha_mcp_dev-9.2.0.dev3469}/src/ha_mcp/_vendor/fastmcp/client/transports/sse.py +0 -0
  108. {ha_mcp_dev-9.2.0.dev3467 → ha_mcp_dev-9.2.0.dev3469}/src/ha_mcp/_vendor/fastmcp/client/transports/stdio.py +0 -0
  109. {ha_mcp_dev-9.2.0.dev3467 → ha_mcp_dev-9.2.0.dev3469}/src/ha_mcp/_vendor/fastmcp/contrib/README.md +0 -0
  110. {ha_mcp_dev-9.2.0.dev3467 → ha_mcp_dev-9.2.0.dev3469}/src/ha_mcp/_vendor/fastmcp/contrib/bulk_tool_caller/README.md +0 -0
  111. {ha_mcp_dev-9.2.0.dev3467 → ha_mcp_dev-9.2.0.dev3469}/src/ha_mcp/_vendor/fastmcp/contrib/bulk_tool_caller/__init__.py +0 -0
  112. {ha_mcp_dev-9.2.0.dev3467 → ha_mcp_dev-9.2.0.dev3469}/src/ha_mcp/_vendor/fastmcp/contrib/bulk_tool_caller/bulk_tool_caller.py +0 -0
  113. {ha_mcp_dev-9.2.0.dev3467 → ha_mcp_dev-9.2.0.dev3469}/src/ha_mcp/_vendor/fastmcp/contrib/bulk_tool_caller/example.py +0 -0
  114. {ha_mcp_dev-9.2.0.dev3467 → ha_mcp_dev-9.2.0.dev3469}/src/ha_mcp/_vendor/fastmcp/contrib/component_manager/README.md +0 -0
  115. {ha_mcp_dev-9.2.0.dev3467 → ha_mcp_dev-9.2.0.dev3469}/src/ha_mcp/_vendor/fastmcp/contrib/component_manager/__init__.py +0 -0
  116. {ha_mcp_dev-9.2.0.dev3467 → ha_mcp_dev-9.2.0.dev3469}/src/ha_mcp/_vendor/fastmcp/contrib/component_manager/component_manager.py +0 -0
  117. {ha_mcp_dev-9.2.0.dev3467 → ha_mcp_dev-9.2.0.dev3469}/src/ha_mcp/_vendor/fastmcp/contrib/component_manager/example.py +0 -0
  118. {ha_mcp_dev-9.2.0.dev3467 → ha_mcp_dev-9.2.0.dev3469}/src/ha_mcp/_vendor/fastmcp/contrib/mcp_mixin/README.md +0 -0
  119. {ha_mcp_dev-9.2.0.dev3467 → ha_mcp_dev-9.2.0.dev3469}/src/ha_mcp/_vendor/fastmcp/contrib/mcp_mixin/__init__.py +0 -0
  120. {ha_mcp_dev-9.2.0.dev3467 → ha_mcp_dev-9.2.0.dev3469}/src/ha_mcp/_vendor/fastmcp/contrib/mcp_mixin/example.py +0 -0
  121. {ha_mcp_dev-9.2.0.dev3467 → ha_mcp_dev-9.2.0.dev3469}/src/ha_mcp/_vendor/fastmcp/contrib/mcp_mixin/mcp_mixin.py +0 -0
  122. {ha_mcp_dev-9.2.0.dev3467 → ha_mcp_dev-9.2.0.dev3469}/src/ha_mcp/_vendor/fastmcp/decorators.py +0 -0
  123. {ha_mcp_dev-9.2.0.dev3467 → ha_mcp_dev-9.2.0.dev3469}/src/ha_mcp/_vendor/fastmcp/dependencies.py +0 -0
  124. {ha_mcp_dev-9.2.0.dev3467 → ha_mcp_dev-9.2.0.dev3469}/src/ha_mcp/_vendor/fastmcp/exceptions.py +0 -0
  125. {ha_mcp_dev-9.2.0.dev3467 → ha_mcp_dev-9.2.0.dev3469}/src/ha_mcp/_vendor/fastmcp/experimental/__init__.py +0 -0
  126. {ha_mcp_dev-9.2.0.dev3467 → ha_mcp_dev-9.2.0.dev3469}/src/ha_mcp/_vendor/fastmcp/experimental/transforms/__init__.py +0 -0
  127. {ha_mcp_dev-9.2.0.dev3467 → ha_mcp_dev-9.2.0.dev3469}/src/ha_mcp/_vendor/fastmcp/experimental/transforms/code_mode.py +0 -0
  128. {ha_mcp_dev-9.2.0.dev3467 → ha_mcp_dev-9.2.0.dev3469}/src/ha_mcp/_vendor/fastmcp/experimental/transforms/jev_search.py +0 -0
  129. {ha_mcp_dev-9.2.0.dev3467 → ha_mcp_dev-9.2.0.dev3469}/src/ha_mcp/_vendor/fastmcp/mcp_config.py +0 -0
  130. {ha_mcp_dev-9.2.0.dev3467 → ha_mcp_dev-9.2.0.dev3469}/src/ha_mcp/_vendor/fastmcp/prompts/__init__.py +0 -0
  131. {ha_mcp_dev-9.2.0.dev3467 → ha_mcp_dev-9.2.0.dev3469}/src/ha_mcp/_vendor/fastmcp/prompts/base.py +0 -0
  132. {ha_mcp_dev-9.2.0.dev3467 → ha_mcp_dev-9.2.0.dev3469}/src/ha_mcp/_vendor/fastmcp/prompts/function_prompt.py +0 -0
  133. {ha_mcp_dev-9.2.0.dev3467 → ha_mcp_dev-9.2.0.dev3469}/src/ha_mcp/_vendor/fastmcp/py.typed +0 -0
  134. {ha_mcp_dev-9.2.0.dev3467 → ha_mcp_dev-9.2.0.dev3469}/src/ha_mcp/_vendor/fastmcp/resources/__init__.py +0 -0
  135. {ha_mcp_dev-9.2.0.dev3467 → ha_mcp_dev-9.2.0.dev3469}/src/ha_mcp/_vendor/fastmcp/resources/base.py +0 -0
  136. {ha_mcp_dev-9.2.0.dev3467 → ha_mcp_dev-9.2.0.dev3469}/src/ha_mcp/_vendor/fastmcp/resources/function_resource.py +0 -0
  137. {ha_mcp_dev-9.2.0.dev3467 → ha_mcp_dev-9.2.0.dev3469}/src/ha_mcp/_vendor/fastmcp/resources/security.py +0 -0
  138. {ha_mcp_dev-9.2.0.dev3467 → ha_mcp_dev-9.2.0.dev3469}/src/ha_mcp/_vendor/fastmcp/resources/template.py +0 -0
  139. {ha_mcp_dev-9.2.0.dev3467 → ha_mcp_dev-9.2.0.dev3469}/src/ha_mcp/_vendor/fastmcp/resources/types.py +0 -0
  140. {ha_mcp_dev-9.2.0.dev3467 → ha_mcp_dev-9.2.0.dev3469}/src/ha_mcp/_vendor/fastmcp/server/__init__.py +0 -0
  141. {ha_mcp_dev-9.2.0.dev3467 → ha_mcp_dev-9.2.0.dev3469}/src/ha_mcp/_vendor/fastmcp/server/auth/__init__.py +0 -0
  142. {ha_mcp_dev-9.2.0.dev3467 → ha_mcp_dev-9.2.0.dev3469}/src/ha_mcp/_vendor/fastmcp/server/auth/auth.py +0 -0
  143. {ha_mcp_dev-9.2.0.dev3467 → ha_mcp_dev-9.2.0.dev3469}/src/ha_mcp/_vendor/fastmcp/server/auth/cimd.py +0 -0
  144. {ha_mcp_dev-9.2.0.dev3467 → ha_mcp_dev-9.2.0.dev3469}/src/ha_mcp/_vendor/fastmcp/server/auth/handlers/__init__.py +0 -0
  145. {ha_mcp_dev-9.2.0.dev3467 → ha_mcp_dev-9.2.0.dev3469}/src/ha_mcp/_vendor/fastmcp/server/auth/handlers/authorize.py +0 -0
  146. {ha_mcp_dev-9.2.0.dev3467 → ha_mcp_dev-9.2.0.dev3469}/src/ha_mcp/_vendor/fastmcp/server/auth/identity_assertion.py +0 -0
  147. {ha_mcp_dev-9.2.0.dev3467 → ha_mcp_dev-9.2.0.dev3469}/src/ha_mcp/_vendor/fastmcp/server/auth/jwt_issuer.py +0 -0
  148. {ha_mcp_dev-9.2.0.dev3467 → ha_mcp_dev-9.2.0.dev3469}/src/ha_mcp/_vendor/fastmcp/server/auth/middleware.py +0 -0
  149. {ha_mcp_dev-9.2.0.dev3467 → ha_mcp_dev-9.2.0.dev3469}/src/ha_mcp/_vendor/fastmcp/server/auth/oauth_proxy/__init__.py +0 -0
  150. {ha_mcp_dev-9.2.0.dev3467 → ha_mcp_dev-9.2.0.dev3469}/src/ha_mcp/_vendor/fastmcp/server/auth/oauth_proxy/consent.py +0 -0
  151. {ha_mcp_dev-9.2.0.dev3467 → ha_mcp_dev-9.2.0.dev3469}/src/ha_mcp/_vendor/fastmcp/server/auth/oauth_proxy/models.py +0 -0
  152. {ha_mcp_dev-9.2.0.dev3467 → ha_mcp_dev-9.2.0.dev3469}/src/ha_mcp/_vendor/fastmcp/server/auth/oauth_proxy/proxy.py +0 -0
  153. {ha_mcp_dev-9.2.0.dev3467 → ha_mcp_dev-9.2.0.dev3469}/src/ha_mcp/_vendor/fastmcp/server/auth/oauth_proxy/ui.py +0 -0
  154. {ha_mcp_dev-9.2.0.dev3467 → ha_mcp_dev-9.2.0.dev3469}/src/ha_mcp/_vendor/fastmcp/server/auth/oauth_proxy/upstream.py +0 -0
  155. {ha_mcp_dev-9.2.0.dev3467 → ha_mcp_dev-9.2.0.dev3469}/src/ha_mcp/_vendor/fastmcp/server/auth/oidc_proxy.py +0 -0
  156. {ha_mcp_dev-9.2.0.dev3467 → ha_mcp_dev-9.2.0.dev3469}/src/ha_mcp/_vendor/fastmcp/server/auth/providers/__init__.py +0 -0
  157. {ha_mcp_dev-9.2.0.dev3467 → ha_mcp_dev-9.2.0.dev3469}/src/ha_mcp/_vendor/fastmcp/server/auth/providers/auth0.py +0 -0
  158. {ha_mcp_dev-9.2.0.dev3467 → ha_mcp_dev-9.2.0.dev3469}/src/ha_mcp/_vendor/fastmcp/server/auth/providers/aws.py +0 -0
  159. {ha_mcp_dev-9.2.0.dev3467 → ha_mcp_dev-9.2.0.dev3469}/src/ha_mcp/_vendor/fastmcp/server/auth/providers/azure.py +0 -0
  160. {ha_mcp_dev-9.2.0.dev3467 → ha_mcp_dev-9.2.0.dev3469}/src/ha_mcp/_vendor/fastmcp/server/auth/providers/clerk.py +0 -0
  161. {ha_mcp_dev-9.2.0.dev3467 → ha_mcp_dev-9.2.0.dev3469}/src/ha_mcp/_vendor/fastmcp/server/auth/providers/debug.py +0 -0
  162. {ha_mcp_dev-9.2.0.dev3467 → ha_mcp_dev-9.2.0.dev3469}/src/ha_mcp/_vendor/fastmcp/server/auth/providers/descope.py +0 -0
  163. {ha_mcp_dev-9.2.0.dev3467 → ha_mcp_dev-9.2.0.dev3469}/src/ha_mcp/_vendor/fastmcp/server/auth/providers/discord.py +0 -0
  164. {ha_mcp_dev-9.2.0.dev3467 → ha_mcp_dev-9.2.0.dev3469}/src/ha_mcp/_vendor/fastmcp/server/auth/providers/github.py +0 -0
  165. {ha_mcp_dev-9.2.0.dev3467 → ha_mcp_dev-9.2.0.dev3469}/src/ha_mcp/_vendor/fastmcp/server/auth/providers/google.py +0 -0
  166. {ha_mcp_dev-9.2.0.dev3467 → ha_mcp_dev-9.2.0.dev3469}/src/ha_mcp/_vendor/fastmcp/server/auth/providers/huggingface.py +0 -0
  167. {ha_mcp_dev-9.2.0.dev3467 → ha_mcp_dev-9.2.0.dev3469}/src/ha_mcp/_vendor/fastmcp/server/auth/providers/in_memory.py +0 -0
  168. {ha_mcp_dev-9.2.0.dev3467 → ha_mcp_dev-9.2.0.dev3469}/src/ha_mcp/_vendor/fastmcp/server/auth/providers/introspection.py +0 -0
  169. {ha_mcp_dev-9.2.0.dev3467 → ha_mcp_dev-9.2.0.dev3469}/src/ha_mcp/_vendor/fastmcp/server/auth/providers/jwt.py +0 -0
  170. {ha_mcp_dev-9.2.0.dev3467 → ha_mcp_dev-9.2.0.dev3469}/src/ha_mcp/_vendor/fastmcp/server/auth/providers/keycloak.py +0 -0
  171. {ha_mcp_dev-9.2.0.dev3467 → ha_mcp_dev-9.2.0.dev3469}/src/ha_mcp/_vendor/fastmcp/server/auth/providers/oci.py +0 -0
  172. {ha_mcp_dev-9.2.0.dev3467 → ha_mcp_dev-9.2.0.dev3469}/src/ha_mcp/_vendor/fastmcp/server/auth/providers/propelauth.py +0 -0
  173. {ha_mcp_dev-9.2.0.dev3467 → ha_mcp_dev-9.2.0.dev3469}/src/ha_mcp/_vendor/fastmcp/server/auth/providers/scalekit.py +0 -0
  174. {ha_mcp_dev-9.2.0.dev3467 → ha_mcp_dev-9.2.0.dev3469}/src/ha_mcp/_vendor/fastmcp/server/auth/providers/supabase.py +0 -0
  175. {ha_mcp_dev-9.2.0.dev3467 → ha_mcp_dev-9.2.0.dev3469}/src/ha_mcp/_vendor/fastmcp/server/auth/providers/workos.py +0 -0
  176. {ha_mcp_dev-9.2.0.dev3467 → ha_mcp_dev-9.2.0.dev3469}/src/ha_mcp/_vendor/fastmcp/server/auth/redirect_validation.py +0 -0
  177. {ha_mcp_dev-9.2.0.dev3467 → ha_mcp_dev-9.2.0.dev3469}/src/ha_mcp/_vendor/fastmcp/server/auth/ssrf.py +0 -0
  178. {ha_mcp_dev-9.2.0.dev3467 → ha_mcp_dev-9.2.0.dev3469}/src/ha_mcp/_vendor/fastmcp/server/caching.py +0 -0
  179. {ha_mcp_dev-9.2.0.dev3467 → ha_mcp_dev-9.2.0.dev3469}/src/ha_mcp/_vendor/fastmcp/server/completions.py +0 -0
  180. {ha_mcp_dev-9.2.0.dev3467 → ha_mcp_dev-9.2.0.dev3469}/src/ha_mcp/_vendor/fastmcp/server/context.py +0 -0
  181. {ha_mcp_dev-9.2.0.dev3467 → ha_mcp_dev-9.2.0.dev3469}/src/ha_mcp/_vendor/fastmcp/server/dependencies.py +0 -0
  182. {ha_mcp_dev-9.2.0.dev3467 → ha_mcp_dev-9.2.0.dev3469}/src/ha_mcp/_vendor/fastmcp/server/elicitation.py +0 -0
  183. {ha_mcp_dev-9.2.0.dev3467 → ha_mcp_dev-9.2.0.dev3469}/src/ha_mcp/_vendor/fastmcp/server/event_store.py +0 -0
  184. {ha_mcp_dev-9.2.0.dev3467 → ha_mcp_dev-9.2.0.dev3469}/src/ha_mcp/_vendor/fastmcp/server/extensions.py +0 -0
  185. {ha_mcp_dev-9.2.0.dev3467 → ha_mcp_dev-9.2.0.dev3469}/src/ha_mcp/_vendor/fastmcp/server/http.py +0 -0
  186. {ha_mcp_dev-9.2.0.dev3467 → ha_mcp_dev-9.2.0.dev3469}/src/ha_mcp/_vendor/fastmcp/server/lifespan.py +0 -0
  187. {ha_mcp_dev-9.2.0.dev3467 → ha_mcp_dev-9.2.0.dev3469}/src/ha_mcp/_vendor/fastmcp/server/low_level.py +0 -0
  188. {ha_mcp_dev-9.2.0.dev3467 → ha_mcp_dev-9.2.0.dev3469}/src/ha_mcp/_vendor/fastmcp/server/middleware/__init__.py +0 -0
  189. {ha_mcp_dev-9.2.0.dev3467 → ha_mcp_dev-9.2.0.dev3469}/src/ha_mcp/_vendor/fastmcp/server/middleware/authorization.py +0 -0
  190. {ha_mcp_dev-9.2.0.dev3467 → ha_mcp_dev-9.2.0.dev3469}/src/ha_mcp/_vendor/fastmcp/server/middleware/caching.py +0 -0
  191. {ha_mcp_dev-9.2.0.dev3467 → ha_mcp_dev-9.2.0.dev3469}/src/ha_mcp/_vendor/fastmcp/server/middleware/dereference.py +0 -0
  192. {ha_mcp_dev-9.2.0.dev3467 → ha_mcp_dev-9.2.0.dev3469}/src/ha_mcp/_vendor/fastmcp/server/middleware/error_handling.py +0 -0
  193. {ha_mcp_dev-9.2.0.dev3467 → ha_mcp_dev-9.2.0.dev3469}/src/ha_mcp/_vendor/fastmcp/server/middleware/logging.py +0 -0
  194. {ha_mcp_dev-9.2.0.dev3467 → ha_mcp_dev-9.2.0.dev3469}/src/ha_mcp/_vendor/fastmcp/server/middleware/middleware.py +0 -0
  195. {ha_mcp_dev-9.2.0.dev3467 → ha_mcp_dev-9.2.0.dev3469}/src/ha_mcp/_vendor/fastmcp/server/middleware/ping.py +0 -0
  196. {ha_mcp_dev-9.2.0.dev3467 → ha_mcp_dev-9.2.0.dev3469}/src/ha_mcp/_vendor/fastmcp/server/middleware/rate_limiting.py +0 -0
  197. {ha_mcp_dev-9.2.0.dev3467 → ha_mcp_dev-9.2.0.dev3469}/src/ha_mcp/_vendor/fastmcp/server/middleware/response_limiting.py +0 -0
  198. {ha_mcp_dev-9.2.0.dev3467 → ha_mcp_dev-9.2.0.dev3469}/src/ha_mcp/_vendor/fastmcp/server/middleware/timing.py +0 -0
  199. {ha_mcp_dev-9.2.0.dev3467 → ha_mcp_dev-9.2.0.dev3469}/src/ha_mcp/_vendor/fastmcp/server/middleware/tool_injection.py +0 -0
  200. {ha_mcp_dev-9.2.0.dev3467 → ha_mcp_dev-9.2.0.dev3469}/src/ha_mcp/_vendor/fastmcp/server/mixins/__init__.py +0 -0
  201. {ha_mcp_dev-9.2.0.dev3467 → ha_mcp_dev-9.2.0.dev3469}/src/ha_mcp/_vendor/fastmcp/server/mixins/extensions.py +0 -0
  202. {ha_mcp_dev-9.2.0.dev3467 → ha_mcp_dev-9.2.0.dev3469}/src/ha_mcp/_vendor/fastmcp/server/mixins/lifespan.py +0 -0
  203. {ha_mcp_dev-9.2.0.dev3467 → ha_mcp_dev-9.2.0.dev3469}/src/ha_mcp/_vendor/fastmcp/server/mixins/mcp_operations.py +0 -0
  204. {ha_mcp_dev-9.2.0.dev3467 → ha_mcp_dev-9.2.0.dev3469}/src/ha_mcp/_vendor/fastmcp/server/mixins/transport.py +0 -0
  205. {ha_mcp_dev-9.2.0.dev3467 → ha_mcp_dev-9.2.0.dev3469}/src/ha_mcp/_vendor/fastmcp/server/providers/__init__.py +0 -0
  206. {ha_mcp_dev-9.2.0.dev3467 → ha_mcp_dev-9.2.0.dev3469}/src/ha_mcp/_vendor/fastmcp/server/providers/addressing.py +0 -0
  207. {ha_mcp_dev-9.2.0.dev3467 → ha_mcp_dev-9.2.0.dev3469}/src/ha_mcp/_vendor/fastmcp/server/providers/aggregate.py +0 -0
  208. {ha_mcp_dev-9.2.0.dev3467 → ha_mcp_dev-9.2.0.dev3469}/src/ha_mcp/_vendor/fastmcp/server/providers/base.py +0 -0
  209. {ha_mcp_dev-9.2.0.dev3467 → ha_mcp_dev-9.2.0.dev3469}/src/ha_mcp/_vendor/fastmcp/server/providers/fastmcp_provider.py +0 -0
  210. {ha_mcp_dev-9.2.0.dev3467 → ha_mcp_dev-9.2.0.dev3469}/src/ha_mcp/_vendor/fastmcp/server/providers/filesystem.py +0 -0
  211. {ha_mcp_dev-9.2.0.dev3467 → ha_mcp_dev-9.2.0.dev3469}/src/ha_mcp/_vendor/fastmcp/server/providers/filesystem_discovery.py +0 -0
  212. {ha_mcp_dev-9.2.0.dev3467 → ha_mcp_dev-9.2.0.dev3469}/src/ha_mcp/_vendor/fastmcp/server/providers/local_provider/__init__.py +0 -0
  213. {ha_mcp_dev-9.2.0.dev3467 → ha_mcp_dev-9.2.0.dev3469}/src/ha_mcp/_vendor/fastmcp/server/providers/local_provider/decorators/__init__.py +0 -0
  214. {ha_mcp_dev-9.2.0.dev3467 → ha_mcp_dev-9.2.0.dev3469}/src/ha_mcp/_vendor/fastmcp/server/providers/local_provider/decorators/prompts.py +0 -0
  215. {ha_mcp_dev-9.2.0.dev3467 → ha_mcp_dev-9.2.0.dev3469}/src/ha_mcp/_vendor/fastmcp/server/providers/local_provider/decorators/resources.py +0 -0
  216. {ha_mcp_dev-9.2.0.dev3467 → ha_mcp_dev-9.2.0.dev3469}/src/ha_mcp/_vendor/fastmcp/server/providers/local_provider/decorators/tools.py +0 -0
  217. {ha_mcp_dev-9.2.0.dev3467 → ha_mcp_dev-9.2.0.dev3469}/src/ha_mcp/_vendor/fastmcp/server/providers/local_provider/local_provider.py +0 -0
  218. {ha_mcp_dev-9.2.0.dev3467 → ha_mcp_dev-9.2.0.dev3469}/src/ha_mcp/_vendor/fastmcp/server/providers/openapi/README.md +0 -0
  219. {ha_mcp_dev-9.2.0.dev3467 → ha_mcp_dev-9.2.0.dev3469}/src/ha_mcp/_vendor/fastmcp/server/providers/openapi/__init__.py +0 -0
  220. {ha_mcp_dev-9.2.0.dev3467 → ha_mcp_dev-9.2.0.dev3469}/src/ha_mcp/_vendor/fastmcp/server/providers/openapi/components.py +0 -0
  221. {ha_mcp_dev-9.2.0.dev3467 → ha_mcp_dev-9.2.0.dev3469}/src/ha_mcp/_vendor/fastmcp/server/providers/openapi/provider.py +0 -0
  222. {ha_mcp_dev-9.2.0.dev3467 → ha_mcp_dev-9.2.0.dev3469}/src/ha_mcp/_vendor/fastmcp/server/providers/openapi/routing.py +0 -0
  223. {ha_mcp_dev-9.2.0.dev3467 → ha_mcp_dev-9.2.0.dev3469}/src/ha_mcp/_vendor/fastmcp/server/providers/prefab_payload.py +0 -0
  224. {ha_mcp_dev-9.2.0.dev3467 → ha_mcp_dev-9.2.0.dev3469}/src/ha_mcp/_vendor/fastmcp/server/providers/prefab_synthesis.py +0 -0
  225. {ha_mcp_dev-9.2.0.dev3467 → ha_mcp_dev-9.2.0.dev3469}/src/ha_mcp/_vendor/fastmcp/server/providers/proxy.py +0 -0
  226. {ha_mcp_dev-9.2.0.dev3467 → ha_mcp_dev-9.2.0.dev3469}/src/ha_mcp/_vendor/fastmcp/server/providers/skills/__init__.py +0 -0
  227. {ha_mcp_dev-9.2.0.dev3467 → ha_mcp_dev-9.2.0.dev3469}/src/ha_mcp/_vendor/fastmcp/server/providers/skills/_common.py +0 -0
  228. {ha_mcp_dev-9.2.0.dev3467 → ha_mcp_dev-9.2.0.dev3469}/src/ha_mcp/_vendor/fastmcp/server/providers/skills/claude_provider.py +0 -0
  229. {ha_mcp_dev-9.2.0.dev3467 → ha_mcp_dev-9.2.0.dev3469}/src/ha_mcp/_vendor/fastmcp/server/providers/skills/directory_provider.py +0 -0
  230. {ha_mcp_dev-9.2.0.dev3467 → ha_mcp_dev-9.2.0.dev3469}/src/ha_mcp/_vendor/fastmcp/server/providers/skills/skill_provider.py +0 -0
  231. {ha_mcp_dev-9.2.0.dev3467 → ha_mcp_dev-9.2.0.dev3469}/src/ha_mcp/_vendor/fastmcp/server/providers/skills/vendor_providers.py +0 -0
  232. {ha_mcp_dev-9.2.0.dev3467 → ha_mcp_dev-9.2.0.dev3469}/src/ha_mcp/_vendor/fastmcp/server/providers/wrapped_provider.py +0 -0
  233. {ha_mcp_dev-9.2.0.dev3467 → ha_mcp_dev-9.2.0.dev3469}/src/ha_mcp/_vendor/fastmcp/server/server.py +0 -0
  234. {ha_mcp_dev-9.2.0.dev3467 → ha_mcp_dev-9.2.0.dev3469}/src/ha_mcp/_vendor/fastmcp/server/session_scoped_event_store.py +0 -0
  235. {ha_mcp_dev-9.2.0.dev3467 → ha_mcp_dev-9.2.0.dev3469}/src/ha_mcp/_vendor/fastmcp/server/sessions.py +0 -0
  236. {ha_mcp_dev-9.2.0.dev3467 → ha_mcp_dev-9.2.0.dev3469}/src/ha_mcp/_vendor/fastmcp/server/telemetry.py +0 -0
  237. {ha_mcp_dev-9.2.0.dev3467 → ha_mcp_dev-9.2.0.dev3469}/src/ha_mcp/_vendor/fastmcp/server/transforms/__init__.py +0 -0
  238. {ha_mcp_dev-9.2.0.dev3467 → ha_mcp_dev-9.2.0.dev3469}/src/ha_mcp/_vendor/fastmcp/server/transforms/catalog.py +0 -0
  239. {ha_mcp_dev-9.2.0.dev3467 → ha_mcp_dev-9.2.0.dev3469}/src/ha_mcp/_vendor/fastmcp/server/transforms/namespace.py +0 -0
  240. {ha_mcp_dev-9.2.0.dev3467 → ha_mcp_dev-9.2.0.dev3469}/src/ha_mcp/_vendor/fastmcp/server/transforms/prompts_as_tools.py +0 -0
  241. {ha_mcp_dev-9.2.0.dev3467 → ha_mcp_dev-9.2.0.dev3469}/src/ha_mcp/_vendor/fastmcp/server/transforms/resources_as_tools.py +0 -0
  242. {ha_mcp_dev-9.2.0.dev3467 → ha_mcp_dev-9.2.0.dev3469}/src/ha_mcp/_vendor/fastmcp/server/transforms/search/__init__.py +0 -0
  243. {ha_mcp_dev-9.2.0.dev3467 → ha_mcp_dev-9.2.0.dev3469}/src/ha_mcp/_vendor/fastmcp/server/transforms/search/base.py +0 -0
  244. {ha_mcp_dev-9.2.0.dev3467 → ha_mcp_dev-9.2.0.dev3469}/src/ha_mcp/_vendor/fastmcp/server/transforms/search/bm25.py +0 -0
  245. {ha_mcp_dev-9.2.0.dev3467 → ha_mcp_dev-9.2.0.dev3469}/src/ha_mcp/_vendor/fastmcp/server/transforms/search/regex.py +0 -0
  246. {ha_mcp_dev-9.2.0.dev3467 → ha_mcp_dev-9.2.0.dev3469}/src/ha_mcp/_vendor/fastmcp/server/transforms/tool_transform.py +0 -0
  247. {ha_mcp_dev-9.2.0.dev3467 → ha_mcp_dev-9.2.0.dev3469}/src/ha_mcp/_vendor/fastmcp/server/transforms/version_filter.py +0 -0
  248. {ha_mcp_dev-9.2.0.dev3467 → ha_mcp_dev-9.2.0.dev3469}/src/ha_mcp/_vendor/fastmcp/server/transforms/visibility.py +0 -0
  249. {ha_mcp_dev-9.2.0.dev3467 → ha_mcp_dev-9.2.0.dev3469}/src/ha_mcp/_vendor/fastmcp/settings.py +0 -0
  250. {ha_mcp_dev-9.2.0.dev3467 → ha_mcp_dev-9.2.0.dev3469}/src/ha_mcp/_vendor/fastmcp/skills/__init__.py +0 -0
  251. {ha_mcp_dev-9.2.0.dev3467 → ha_mcp_dev-9.2.0.dev3469}/src/ha_mcp/_vendor/fastmcp/skills/_constants.py +0 -0
  252. {ha_mcp_dev-9.2.0.dev3467 → ha_mcp_dev-9.2.0.dev3469}/src/ha_mcp/_vendor/fastmcp/skills/_resources.py +0 -0
  253. {ha_mcp_dev-9.2.0.dev3467 → ha_mcp_dev-9.2.0.dev3469}/src/ha_mcp/_vendor/fastmcp/skills/_snapshot.py +0 -0
  254. {ha_mcp_dev-9.2.0.dev3467 → ha_mcp_dev-9.2.0.dev3469}/src/ha_mcp/_vendor/fastmcp/skills/_source.py +0 -0
  255. {ha_mcp_dev-9.2.0.dev3467 → ha_mcp_dev-9.2.0.dev3469}/src/ha_mcp/_vendor/fastmcp/skills/client.py +0 -0
  256. {ha_mcp_dev-9.2.0.dev3467 → ha_mcp_dev-9.2.0.dev3469}/src/ha_mcp/_vendor/fastmcp/skills/extension.py +0 -0
  257. {ha_mcp_dev-9.2.0.dev3467 → ha_mcp_dev-9.2.0.dev3469}/src/ha_mcp/_vendor/fastmcp/skills/models.py +0 -0
  258. {ha_mcp_dev-9.2.0.dev3467 → ha_mcp_dev-9.2.0.dev3469}/src/ha_mcp/_vendor/fastmcp/telemetry.py +0 -0
  259. {ha_mcp_dev-9.2.0.dev3467 → ha_mcp_dev-9.2.0.dev3469}/src/ha_mcp/_vendor/fastmcp/tools/__init__.py +0 -0
  260. {ha_mcp_dev-9.2.0.dev3467 → ha_mcp_dev-9.2.0.dev3469}/src/ha_mcp/_vendor/fastmcp/tools/base.py +0 -0
  261. {ha_mcp_dev-9.2.0.dev3467 → ha_mcp_dev-9.2.0.dev3469}/src/ha_mcp/_vendor/fastmcp/tools/function_parsing.py +0 -0
  262. {ha_mcp_dev-9.2.0.dev3467 → ha_mcp_dev-9.2.0.dev3469}/src/ha_mcp/_vendor/fastmcp/tools/function_tool.py +0 -0
  263. {ha_mcp_dev-9.2.0.dev3467 → ha_mcp_dev-9.2.0.dev3469}/src/ha_mcp/_vendor/fastmcp/tools/tool_transform.py +0 -0
  264. {ha_mcp_dev-9.2.0.dev3467 → ha_mcp_dev-9.2.0.dev3469}/src/ha_mcp/_vendor/fastmcp/types.py +0 -0
  265. {ha_mcp_dev-9.2.0.dev3467 → ha_mcp_dev-9.2.0.dev3469}/src/ha_mcp/_vendor/fastmcp/utilities/__init__.py +0 -0
  266. {ha_mcp_dev-9.2.0.dev3467 → ha_mcp_dev-9.2.0.dev3469}/src/ha_mcp/_vendor/fastmcp/utilities/asgi_transport.py +0 -0
  267. {ha_mcp_dev-9.2.0.dev3467 → ha_mcp_dev-9.2.0.dev3469}/src/ha_mcp/_vendor/fastmcp/utilities/async_utils.py +0 -0
  268. {ha_mcp_dev-9.2.0.dev3467 → ha_mcp_dev-9.2.0.dev3469}/src/ha_mcp/_vendor/fastmcp/utilities/auth.py +0 -0
  269. {ha_mcp_dev-9.2.0.dev3467 → ha_mcp_dev-9.2.0.dev3469}/src/ha_mcp/_vendor/fastmcp/utilities/authorization.py +0 -0
  270. {ha_mcp_dev-9.2.0.dev3467 → ha_mcp_dev-9.2.0.dev3469}/src/ha_mcp/_vendor/fastmcp/utilities/cli.py +0 -0
  271. {ha_mcp_dev-9.2.0.dev3467 → ha_mcp_dev-9.2.0.dev3469}/src/ha_mcp/_vendor/fastmcp/utilities/components.py +0 -0
  272. {ha_mcp_dev-9.2.0.dev3467 → ha_mcp_dev-9.2.0.dev3469}/src/ha_mcp/_vendor/fastmcp/utilities/docstring_parsing.py +0 -0
  273. {ha_mcp_dev-9.2.0.dev3467 → ha_mcp_dev-9.2.0.dev3469}/src/ha_mcp/_vendor/fastmcp/utilities/exceptions.py +0 -0
  274. {ha_mcp_dev-9.2.0.dev3467 → ha_mcp_dev-9.2.0.dev3469}/src/ha_mcp/_vendor/fastmcp/utilities/http.py +0 -0
  275. {ha_mcp_dev-9.2.0.dev3467 → ha_mcp_dev-9.2.0.dev3469}/src/ha_mcp/_vendor/fastmcp/utilities/inspect.py +0 -0
  276. {ha_mcp_dev-9.2.0.dev3467 → ha_mcp_dev-9.2.0.dev3469}/src/ha_mcp/_vendor/fastmcp/utilities/json_schema.py +0 -0
  277. {ha_mcp_dev-9.2.0.dev3467 → ha_mcp_dev-9.2.0.dev3469}/src/ha_mcp/_vendor/fastmcp/utilities/json_schema_type.py +0 -0
  278. {ha_mcp_dev-9.2.0.dev3467 → ha_mcp_dev-9.2.0.dev3469}/src/ha_mcp/_vendor/fastmcp/utilities/lifespan.py +0 -0
  279. {ha_mcp_dev-9.2.0.dev3467 → ha_mcp_dev-9.2.0.dev3469}/src/ha_mcp/_vendor/fastmcp/utilities/logging.py +0 -0
  280. {ha_mcp_dev-9.2.0.dev3467 → ha_mcp_dev-9.2.0.dev3469}/src/ha_mcp/_vendor/fastmcp/utilities/mcp_server_config/__init__.py +0 -0
  281. {ha_mcp_dev-9.2.0.dev3467 → ha_mcp_dev-9.2.0.dev3469}/src/ha_mcp/_vendor/fastmcp/utilities/mcp_server_config/v1/__init__.py +0 -0
  282. {ha_mcp_dev-9.2.0.dev3467 → ha_mcp_dev-9.2.0.dev3469}/src/ha_mcp/_vendor/fastmcp/utilities/mcp_server_config/v1/environments/__init__.py +0 -0
  283. {ha_mcp_dev-9.2.0.dev3467 → ha_mcp_dev-9.2.0.dev3469}/src/ha_mcp/_vendor/fastmcp/utilities/mcp_server_config/v1/environments/base.py +0 -0
  284. {ha_mcp_dev-9.2.0.dev3467 → ha_mcp_dev-9.2.0.dev3469}/src/ha_mcp/_vendor/fastmcp/utilities/mcp_server_config/v1/environments/uv.py +0 -0
  285. {ha_mcp_dev-9.2.0.dev3467 → ha_mcp_dev-9.2.0.dev3469}/src/ha_mcp/_vendor/fastmcp/utilities/mcp_server_config/v1/mcp_server_config.py +0 -0
  286. {ha_mcp_dev-9.2.0.dev3467 → ha_mcp_dev-9.2.0.dev3469}/src/ha_mcp/_vendor/fastmcp/utilities/mcp_server_config/v1/schema.json +0 -0
  287. {ha_mcp_dev-9.2.0.dev3467 → ha_mcp_dev-9.2.0.dev3469}/src/ha_mcp/_vendor/fastmcp/utilities/mcp_server_config/v1/sources/__init__.py +0 -0
  288. {ha_mcp_dev-9.2.0.dev3467 → ha_mcp_dev-9.2.0.dev3469}/src/ha_mcp/_vendor/fastmcp/utilities/mcp_server_config/v1/sources/base.py +0 -0
  289. {ha_mcp_dev-9.2.0.dev3467 → ha_mcp_dev-9.2.0.dev3469}/src/ha_mcp/_vendor/fastmcp/utilities/mcp_server_config/v1/sources/filesystem.py +0 -0
  290. {ha_mcp_dev-9.2.0.dev3467 → ha_mcp_dev-9.2.0.dev3469}/src/ha_mcp/_vendor/fastmcp/utilities/mime.py +0 -0
  291. {ha_mcp_dev-9.2.0.dev3467 → ha_mcp_dev-9.2.0.dev3469}/src/ha_mcp/_vendor/fastmcp/utilities/openapi/README.md +0 -0
  292. {ha_mcp_dev-9.2.0.dev3467 → ha_mcp_dev-9.2.0.dev3469}/src/ha_mcp/_vendor/fastmcp/utilities/openapi/__init__.py +0 -0
  293. {ha_mcp_dev-9.2.0.dev3467 → ha_mcp_dev-9.2.0.dev3469}/src/ha_mcp/_vendor/fastmcp/utilities/openapi/director.py +0 -0
  294. {ha_mcp_dev-9.2.0.dev3467 → ha_mcp_dev-9.2.0.dev3469}/src/ha_mcp/_vendor/fastmcp/utilities/openapi/formatters.py +0 -0
  295. {ha_mcp_dev-9.2.0.dev3467 → ha_mcp_dev-9.2.0.dev3469}/src/ha_mcp/_vendor/fastmcp/utilities/openapi/json_schema_converter.py +0 -0
  296. {ha_mcp_dev-9.2.0.dev3467 → ha_mcp_dev-9.2.0.dev3469}/src/ha_mcp/_vendor/fastmcp/utilities/openapi/models.py +0 -0
  297. {ha_mcp_dev-9.2.0.dev3467 → ha_mcp_dev-9.2.0.dev3469}/src/ha_mcp/_vendor/fastmcp/utilities/openapi/parser.py +0 -0
  298. {ha_mcp_dev-9.2.0.dev3467 → ha_mcp_dev-9.2.0.dev3469}/src/ha_mcp/_vendor/fastmcp/utilities/openapi/schemas.py +0 -0
  299. {ha_mcp_dev-9.2.0.dev3467 → ha_mcp_dev-9.2.0.dev3469}/src/ha_mcp/_vendor/fastmcp/utilities/pagination.py +0 -0
  300. {ha_mcp_dev-9.2.0.dev3467 → ha_mcp_dev-9.2.0.dev3469}/src/ha_mcp/_vendor/fastmcp/utilities/prefab.py +0 -0
  301. {ha_mcp_dev-9.2.0.dev3467 → ha_mcp_dev-9.2.0.dev3469}/src/ha_mcp/_vendor/fastmcp/utilities/skills.py +0 -0
  302. {ha_mcp_dev-9.2.0.dev3467 → ha_mcp_dev-9.2.0.dev3469}/src/ha_mcp/_vendor/fastmcp/utilities/tasks.py +0 -0
  303. {ha_mcp_dev-9.2.0.dev3467 → ha_mcp_dev-9.2.0.dev3469}/src/ha_mcp/_vendor/fastmcp/utilities/tests.py +0 -0
  304. {ha_mcp_dev-9.2.0.dev3467 → ha_mcp_dev-9.2.0.dev3469}/src/ha_mcp/_vendor/fastmcp/utilities/timeout.py +0 -0
  305. {ha_mcp_dev-9.2.0.dev3467 → ha_mcp_dev-9.2.0.dev3469}/src/ha_mcp/_vendor/fastmcp/utilities/token_cache.py +0 -0
  306. {ha_mcp_dev-9.2.0.dev3467 → ha_mcp_dev-9.2.0.dev3469}/src/ha_mcp/_vendor/fastmcp/utilities/types.py +0 -0
  307. {ha_mcp_dev-9.2.0.dev3467 → ha_mcp_dev-9.2.0.dev3469}/src/ha_mcp/_vendor/fastmcp/utilities/ui.py +0 -0
  308. {ha_mcp_dev-9.2.0.dev3467 → ha_mcp_dev-9.2.0.dev3469}/src/ha_mcp/_vendor/fastmcp/utilities/version_check.py +0 -0
  309. {ha_mcp_dev-9.2.0.dev3467 → ha_mcp_dev-9.2.0.dev3469}/src/ha_mcp/_vendor/fastmcp/utilities/versions.py +0 -0
  310. {ha_mcp_dev-9.2.0.dev3467 → ha_mcp_dev-9.2.0.dev3469}/src/ha_mcp/_vendor/mcp/LICENSE +0 -0
  311. {ha_mcp_dev-9.2.0.dev3467 → ha_mcp_dev-9.2.0.dev3469}/src/ha_mcp/_vendor/mcp/MANIFEST.sha256 +0 -0
  312. {ha_mcp_dev-9.2.0.dev3467 → ha_mcp_dev-9.2.0.dev3469}/src/ha_mcp/_vendor/mcp/REQUIRES.txt +0 -0
  313. {ha_mcp_dev-9.2.0.dev3467 → ha_mcp_dev-9.2.0.dev3469}/src/ha_mcp/_vendor/mcp/VENDORED +0 -0
  314. {ha_mcp_dev-9.2.0.dev3467 → ha_mcp_dev-9.2.0.dev3469}/src/ha_mcp/_vendor/mcp/__init__.py +0 -0
  315. {ha_mcp_dev-9.2.0.dev3467 → ha_mcp_dev-9.2.0.dev3469}/src/ha_mcp/_vendor/mcp/cli/__init__.py +0 -0
  316. {ha_mcp_dev-9.2.0.dev3467 → ha_mcp_dev-9.2.0.dev3469}/src/ha_mcp/_vendor/mcp/cli/claude.py +0 -0
  317. {ha_mcp_dev-9.2.0.dev3467 → ha_mcp_dev-9.2.0.dev3469}/src/ha_mcp/_vendor/mcp/cli/cli.py +0 -0
  318. {ha_mcp_dev-9.2.0.dev3467 → ha_mcp_dev-9.2.0.dev3469}/src/ha_mcp/_vendor/mcp/client/__init__.py +0 -0
  319. {ha_mcp_dev-9.2.0.dev3467 → ha_mcp_dev-9.2.0.dev3469}/src/ha_mcp/_vendor/mcp/client/__main__.py +0 -0
  320. {ha_mcp_dev-9.2.0.dev3467 → ha_mcp_dev-9.2.0.dev3469}/src/ha_mcp/_vendor/mcp/client/_input_required.py +0 -0
  321. {ha_mcp_dev-9.2.0.dev3467 → ha_mcp_dev-9.2.0.dev3469}/src/ha_mcp/_vendor/mcp/client/_memory.py +0 -0
  322. {ha_mcp_dev-9.2.0.dev3467 → ha_mcp_dev-9.2.0.dev3469}/src/ha_mcp/_vendor/mcp/client/_probe.py +0 -0
  323. {ha_mcp_dev-9.2.0.dev3467 → ha_mcp_dev-9.2.0.dev3469}/src/ha_mcp/_vendor/mcp/client/_transport.py +0 -0
  324. {ha_mcp_dev-9.2.0.dev3467 → ha_mcp_dev-9.2.0.dev3469}/src/ha_mcp/_vendor/mcp/client/auth/__init__.py +0 -0
  325. {ha_mcp_dev-9.2.0.dev3467 → ha_mcp_dev-9.2.0.dev3469}/src/ha_mcp/_vendor/mcp/client/auth/exceptions.py +0 -0
  326. {ha_mcp_dev-9.2.0.dev3467 → ha_mcp_dev-9.2.0.dev3469}/src/ha_mcp/_vendor/mcp/client/auth/extensions/__init__.py +0 -0
  327. {ha_mcp_dev-9.2.0.dev3467 → ha_mcp_dev-9.2.0.dev3469}/src/ha_mcp/_vendor/mcp/client/auth/extensions/client_credentials.py +0 -0
  328. {ha_mcp_dev-9.2.0.dev3467 → ha_mcp_dev-9.2.0.dev3469}/src/ha_mcp/_vendor/mcp/client/auth/extensions/identity_assertion.py +0 -0
  329. {ha_mcp_dev-9.2.0.dev3467 → ha_mcp_dev-9.2.0.dev3469}/src/ha_mcp/_vendor/mcp/client/auth/oauth2.py +0 -0
  330. {ha_mcp_dev-9.2.0.dev3467 → ha_mcp_dev-9.2.0.dev3469}/src/ha_mcp/_vendor/mcp/client/auth/utils.py +0 -0
  331. {ha_mcp_dev-9.2.0.dev3467 → ha_mcp_dev-9.2.0.dev3469}/src/ha_mcp/_vendor/mcp/client/caching.py +0 -0
  332. {ha_mcp_dev-9.2.0.dev3467 → ha_mcp_dev-9.2.0.dev3469}/src/ha_mcp/_vendor/mcp/client/client.py +0 -0
  333. {ha_mcp_dev-9.2.0.dev3467 → ha_mcp_dev-9.2.0.dev3469}/src/ha_mcp/_vendor/mcp/client/context.py +0 -0
  334. {ha_mcp_dev-9.2.0.dev3467 → ha_mcp_dev-9.2.0.dev3469}/src/ha_mcp/_vendor/mcp/client/extension.py +0 -0
  335. {ha_mcp_dev-9.2.0.dev3467 → ha_mcp_dev-9.2.0.dev3469}/src/ha_mcp/_vendor/mcp/client/session.py +0 -0
  336. {ha_mcp_dev-9.2.0.dev3467 → ha_mcp_dev-9.2.0.dev3469}/src/ha_mcp/_vendor/mcp/client/session_group.py +0 -0
  337. {ha_mcp_dev-9.2.0.dev3467 → ha_mcp_dev-9.2.0.dev3469}/src/ha_mcp/_vendor/mcp/client/sse.py +0 -0
  338. {ha_mcp_dev-9.2.0.dev3467 → ha_mcp_dev-9.2.0.dev3469}/src/ha_mcp/_vendor/mcp/client/stdio.py +0 -0
  339. {ha_mcp_dev-9.2.0.dev3467 → ha_mcp_dev-9.2.0.dev3469}/src/ha_mcp/_vendor/mcp/client/streamable_http.py +0 -0
  340. {ha_mcp_dev-9.2.0.dev3467 → ha_mcp_dev-9.2.0.dev3469}/src/ha_mcp/_vendor/mcp/client/subscriptions.py +0 -0
  341. {ha_mcp_dev-9.2.0.dev3467 → ha_mcp_dev-9.2.0.dev3469}/src/ha_mcp/_vendor/mcp/os/__init__.py +0 -0
  342. {ha_mcp_dev-9.2.0.dev3467 → ha_mcp_dev-9.2.0.dev3469}/src/ha_mcp/_vendor/mcp/os/posix/__init__.py +0 -0
  343. {ha_mcp_dev-9.2.0.dev3467 → ha_mcp_dev-9.2.0.dev3469}/src/ha_mcp/_vendor/mcp/os/posix/utilities.py +0 -0
  344. {ha_mcp_dev-9.2.0.dev3467 → ha_mcp_dev-9.2.0.dev3469}/src/ha_mcp/_vendor/mcp/os/win32/__init__.py +0 -0
  345. {ha_mcp_dev-9.2.0.dev3467 → ha_mcp_dev-9.2.0.dev3469}/src/ha_mcp/_vendor/mcp/os/win32/utilities.py +0 -0
  346. {ha_mcp_dev-9.2.0.dev3467 → ha_mcp_dev-9.2.0.dev3469}/src/ha_mcp/_vendor/mcp/py.typed +0 -0
  347. {ha_mcp_dev-9.2.0.dev3467 → ha_mcp_dev-9.2.0.dev3469}/src/ha_mcp/_vendor/mcp/server/__init__.py +0 -0
  348. {ha_mcp_dev-9.2.0.dev3467 → ha_mcp_dev-9.2.0.dev3469}/src/ha_mcp/_vendor/mcp/server/__main__.py +0 -0
  349. {ha_mcp_dev-9.2.0.dev3467 → ha_mcp_dev-9.2.0.dev3469}/src/ha_mcp/_vendor/mcp/server/_otel.py +0 -0
  350. {ha_mcp_dev-9.2.0.dev3467 → ha_mcp_dev-9.2.0.dev3469}/src/ha_mcp/_vendor/mcp/server/_streamable_http_modern.py +0 -0
  351. {ha_mcp_dev-9.2.0.dev3467 → ha_mcp_dev-9.2.0.dev3469}/src/ha_mcp/_vendor/mcp/server/apps.py +0 -0
  352. {ha_mcp_dev-9.2.0.dev3467 → ha_mcp_dev-9.2.0.dev3469}/src/ha_mcp/_vendor/mcp/server/auth/__init__.py +0 -0
  353. {ha_mcp_dev-9.2.0.dev3467 → ha_mcp_dev-9.2.0.dev3469}/src/ha_mcp/_vendor/mcp/server/auth/errors.py +0 -0
  354. {ha_mcp_dev-9.2.0.dev3467 → ha_mcp_dev-9.2.0.dev3469}/src/ha_mcp/_vendor/mcp/server/auth/handlers/__init__.py +0 -0
  355. {ha_mcp_dev-9.2.0.dev3467 → ha_mcp_dev-9.2.0.dev3469}/src/ha_mcp/_vendor/mcp/server/auth/handlers/authorize.py +0 -0
  356. {ha_mcp_dev-9.2.0.dev3467 → ha_mcp_dev-9.2.0.dev3469}/src/ha_mcp/_vendor/mcp/server/auth/handlers/metadata.py +0 -0
  357. {ha_mcp_dev-9.2.0.dev3467 → ha_mcp_dev-9.2.0.dev3469}/src/ha_mcp/_vendor/mcp/server/auth/handlers/register.py +0 -0
  358. {ha_mcp_dev-9.2.0.dev3467 → ha_mcp_dev-9.2.0.dev3469}/src/ha_mcp/_vendor/mcp/server/auth/handlers/revoke.py +0 -0
  359. {ha_mcp_dev-9.2.0.dev3467 → ha_mcp_dev-9.2.0.dev3469}/src/ha_mcp/_vendor/mcp/server/auth/handlers/token.py +0 -0
  360. {ha_mcp_dev-9.2.0.dev3467 → ha_mcp_dev-9.2.0.dev3469}/src/ha_mcp/_vendor/mcp/server/auth/json_response.py +0 -0
  361. {ha_mcp_dev-9.2.0.dev3467 → ha_mcp_dev-9.2.0.dev3469}/src/ha_mcp/_vendor/mcp/server/auth/middleware/__init__.py +0 -0
  362. {ha_mcp_dev-9.2.0.dev3467 → ha_mcp_dev-9.2.0.dev3469}/src/ha_mcp/_vendor/mcp/server/auth/middleware/auth_context.py +0 -0
  363. {ha_mcp_dev-9.2.0.dev3467 → ha_mcp_dev-9.2.0.dev3469}/src/ha_mcp/_vendor/mcp/server/auth/middleware/bearer_auth.py +0 -0
  364. {ha_mcp_dev-9.2.0.dev3467 → ha_mcp_dev-9.2.0.dev3469}/src/ha_mcp/_vendor/mcp/server/auth/middleware/client_auth.py +0 -0
  365. {ha_mcp_dev-9.2.0.dev3467 → ha_mcp_dev-9.2.0.dev3469}/src/ha_mcp/_vendor/mcp/server/auth/provider.py +0 -0
  366. {ha_mcp_dev-9.2.0.dev3467 → ha_mcp_dev-9.2.0.dev3469}/src/ha_mcp/_vendor/mcp/server/auth/routes.py +0 -0
  367. {ha_mcp_dev-9.2.0.dev3467 → ha_mcp_dev-9.2.0.dev3469}/src/ha_mcp/_vendor/mcp/server/auth/settings.py +0 -0
  368. {ha_mcp_dev-9.2.0.dev3467 → ha_mcp_dev-9.2.0.dev3469}/src/ha_mcp/_vendor/mcp/server/caching.py +0 -0
  369. {ha_mcp_dev-9.2.0.dev3467 → ha_mcp_dev-9.2.0.dev3469}/src/ha_mcp/_vendor/mcp/server/connection.py +0 -0
  370. {ha_mcp_dev-9.2.0.dev3467 → ha_mcp_dev-9.2.0.dev3469}/src/ha_mcp/_vendor/mcp/server/context.py +0 -0
  371. {ha_mcp_dev-9.2.0.dev3467 → ha_mcp_dev-9.2.0.dev3469}/src/ha_mcp/_vendor/mcp/server/elicitation.py +0 -0
  372. {ha_mcp_dev-9.2.0.dev3467 → ha_mcp_dev-9.2.0.dev3469}/src/ha_mcp/_vendor/mcp/server/extension.py +0 -0
  373. {ha_mcp_dev-9.2.0.dev3467 → ha_mcp_dev-9.2.0.dev3469}/src/ha_mcp/_vendor/mcp/server/fastmcp.py +0 -0
  374. {ha_mcp_dev-9.2.0.dev3467 → ha_mcp_dev-9.2.0.dev3469}/src/ha_mcp/_vendor/mcp/server/lowlevel/__init__.py +0 -0
  375. {ha_mcp_dev-9.2.0.dev3467 → ha_mcp_dev-9.2.0.dev3469}/src/ha_mcp/_vendor/mcp/server/lowlevel/helper_types.py +0 -0
  376. {ha_mcp_dev-9.2.0.dev3467 → ha_mcp_dev-9.2.0.dev3469}/src/ha_mcp/_vendor/mcp/server/lowlevel/server.py +0 -0
  377. {ha_mcp_dev-9.2.0.dev3467 → ha_mcp_dev-9.2.0.dev3469}/src/ha_mcp/_vendor/mcp/server/mcpserver/__init__.py +0 -0
  378. {ha_mcp_dev-9.2.0.dev3467 → ha_mcp_dev-9.2.0.dev3469}/src/ha_mcp/_vendor/mcp/server/mcpserver/context.py +0 -0
  379. {ha_mcp_dev-9.2.0.dev3467 → ha_mcp_dev-9.2.0.dev3469}/src/ha_mcp/_vendor/mcp/server/mcpserver/exceptions.py +0 -0
  380. {ha_mcp_dev-9.2.0.dev3467 → ha_mcp_dev-9.2.0.dev3469}/src/ha_mcp/_vendor/mcp/server/mcpserver/prompts/__init__.py +0 -0
  381. {ha_mcp_dev-9.2.0.dev3467 → ha_mcp_dev-9.2.0.dev3469}/src/ha_mcp/_vendor/mcp/server/mcpserver/prompts/base.py +0 -0
  382. {ha_mcp_dev-9.2.0.dev3467 → ha_mcp_dev-9.2.0.dev3469}/src/ha_mcp/_vendor/mcp/server/mcpserver/prompts/manager.py +0 -0
  383. {ha_mcp_dev-9.2.0.dev3467 → ha_mcp_dev-9.2.0.dev3469}/src/ha_mcp/_vendor/mcp/server/mcpserver/resolve.py +0 -0
  384. {ha_mcp_dev-9.2.0.dev3467 → ha_mcp_dev-9.2.0.dev3469}/src/ha_mcp/_vendor/mcp/server/mcpserver/resources/__init__.py +0 -0
  385. {ha_mcp_dev-9.2.0.dev3467 → ha_mcp_dev-9.2.0.dev3469}/src/ha_mcp/_vendor/mcp/server/mcpserver/resources/base.py +0 -0
  386. {ha_mcp_dev-9.2.0.dev3467 → ha_mcp_dev-9.2.0.dev3469}/src/ha_mcp/_vendor/mcp/server/mcpserver/resources/resource_manager.py +0 -0
  387. {ha_mcp_dev-9.2.0.dev3467 → ha_mcp_dev-9.2.0.dev3469}/src/ha_mcp/_vendor/mcp/server/mcpserver/resources/templates.py +0 -0
  388. {ha_mcp_dev-9.2.0.dev3467 → ha_mcp_dev-9.2.0.dev3469}/src/ha_mcp/_vendor/mcp/server/mcpserver/resources/types.py +0 -0
  389. {ha_mcp_dev-9.2.0.dev3467 → ha_mcp_dev-9.2.0.dev3469}/src/ha_mcp/_vendor/mcp/server/mcpserver/server.py +0 -0
  390. {ha_mcp_dev-9.2.0.dev3467 → ha_mcp_dev-9.2.0.dev3469}/src/ha_mcp/_vendor/mcp/server/mcpserver/tools/__init__.py +0 -0
  391. {ha_mcp_dev-9.2.0.dev3467 → ha_mcp_dev-9.2.0.dev3469}/src/ha_mcp/_vendor/mcp/server/mcpserver/tools/base.py +0 -0
  392. {ha_mcp_dev-9.2.0.dev3467 → ha_mcp_dev-9.2.0.dev3469}/src/ha_mcp/_vendor/mcp/server/mcpserver/tools/tool_manager.py +0 -0
  393. {ha_mcp_dev-9.2.0.dev3467 → ha_mcp_dev-9.2.0.dev3469}/src/ha_mcp/_vendor/mcp/server/mcpserver/utilities/__init__.py +0 -0
  394. {ha_mcp_dev-9.2.0.dev3467 → ha_mcp_dev-9.2.0.dev3469}/src/ha_mcp/_vendor/mcp/server/mcpserver/utilities/context_injection.py +0 -0
  395. {ha_mcp_dev-9.2.0.dev3467 → ha_mcp_dev-9.2.0.dev3469}/src/ha_mcp/_vendor/mcp/server/mcpserver/utilities/func_metadata.py +0 -0
  396. {ha_mcp_dev-9.2.0.dev3467 → ha_mcp_dev-9.2.0.dev3469}/src/ha_mcp/_vendor/mcp/server/mcpserver/utilities/logging.py +0 -0
  397. {ha_mcp_dev-9.2.0.dev3467 → ha_mcp_dev-9.2.0.dev3469}/src/ha_mcp/_vendor/mcp/server/mcpserver/utilities/types.py +0 -0
  398. {ha_mcp_dev-9.2.0.dev3467 → ha_mcp_dev-9.2.0.dev3469}/src/ha_mcp/_vendor/mcp/server/models.py +0 -0
  399. {ha_mcp_dev-9.2.0.dev3467 → ha_mcp_dev-9.2.0.dev3469}/src/ha_mcp/_vendor/mcp/server/request_state.py +0 -0
  400. {ha_mcp_dev-9.2.0.dev3467 → ha_mcp_dev-9.2.0.dev3469}/src/ha_mcp/_vendor/mcp/server/runner.py +0 -0
  401. {ha_mcp_dev-9.2.0.dev3467 → ha_mcp_dev-9.2.0.dev3469}/src/ha_mcp/_vendor/mcp/server/session.py +0 -0
  402. {ha_mcp_dev-9.2.0.dev3467 → ha_mcp_dev-9.2.0.dev3469}/src/ha_mcp/_vendor/mcp/server/sse.py +0 -0
  403. {ha_mcp_dev-9.2.0.dev3467 → ha_mcp_dev-9.2.0.dev3469}/src/ha_mcp/_vendor/mcp/server/stdio.py +0 -0
  404. {ha_mcp_dev-9.2.0.dev3467 → ha_mcp_dev-9.2.0.dev3469}/src/ha_mcp/_vendor/mcp/server/streamable_http.py +0 -0
  405. {ha_mcp_dev-9.2.0.dev3467 → ha_mcp_dev-9.2.0.dev3469}/src/ha_mcp/_vendor/mcp/server/streamable_http_manager.py +0 -0
  406. {ha_mcp_dev-9.2.0.dev3467 → ha_mcp_dev-9.2.0.dev3469}/src/ha_mcp/_vendor/mcp/server/subscriptions.py +0 -0
  407. {ha_mcp_dev-9.2.0.dev3467 → ha_mcp_dev-9.2.0.dev3469}/src/ha_mcp/_vendor/mcp/server/transport_security.py +0 -0
  408. {ha_mcp_dev-9.2.0.dev3467 → ha_mcp_dev-9.2.0.dev3469}/src/ha_mcp/_vendor/mcp/server/validation.py +0 -0
  409. {ha_mcp_dev-9.2.0.dev3467 → ha_mcp_dev-9.2.0.dev3469}/src/ha_mcp/_vendor/mcp/shared/__init__.py +0 -0
  410. {ha_mcp_dev-9.2.0.dev3467 → ha_mcp_dev-9.2.0.dev3469}/src/ha_mcp/_vendor/mcp/shared/_callable_inspection.py +0 -0
  411. {ha_mcp_dev-9.2.0.dev3467 → ha_mcp_dev-9.2.0.dev3469}/src/ha_mcp/_vendor/mcp/shared/_compat.py +0 -0
  412. {ha_mcp_dev-9.2.0.dev3467 → ha_mcp_dev-9.2.0.dev3469}/src/ha_mcp/_vendor/mcp/shared/_context_streams.py +0 -0
  413. {ha_mcp_dev-9.2.0.dev3467 → ha_mcp_dev-9.2.0.dev3469}/src/ha_mcp/_vendor/mcp/shared/_httpx_utils.py +0 -0
  414. {ha_mcp_dev-9.2.0.dev3467 → ha_mcp_dev-9.2.0.dev3469}/src/ha_mcp/_vendor/mcp/shared/_otel.py +0 -0
  415. {ha_mcp_dev-9.2.0.dev3467 → ha_mcp_dev-9.2.0.dev3469}/src/ha_mcp/_vendor/mcp/shared/_request_clock.py +0 -0
  416. {ha_mcp_dev-9.2.0.dev3467 → ha_mcp_dev-9.2.0.dev3469}/src/ha_mcp/_vendor/mcp/shared/_stream_protocols.py +0 -0
  417. {ha_mcp_dev-9.2.0.dev3467 → ha_mcp_dev-9.2.0.dev3469}/src/ha_mcp/_vendor/mcp/shared/auth.py +0 -0
  418. {ha_mcp_dev-9.2.0.dev3467 → ha_mcp_dev-9.2.0.dev3469}/src/ha_mcp/_vendor/mcp/shared/auth_utils.py +0 -0
  419. {ha_mcp_dev-9.2.0.dev3467 → ha_mcp_dev-9.2.0.dev3469}/src/ha_mcp/_vendor/mcp/shared/context.py +0 -0
  420. {ha_mcp_dev-9.2.0.dev3467 → ha_mcp_dev-9.2.0.dev3469}/src/ha_mcp/_vendor/mcp/shared/direct_dispatcher.py +0 -0
  421. {ha_mcp_dev-9.2.0.dev3467 → ha_mcp_dev-9.2.0.dev3469}/src/ha_mcp/_vendor/mcp/shared/dispatcher.py +0 -0
  422. {ha_mcp_dev-9.2.0.dev3467 → ha_mcp_dev-9.2.0.dev3469}/src/ha_mcp/_vendor/mcp/shared/exceptions.py +0 -0
  423. {ha_mcp_dev-9.2.0.dev3467 → ha_mcp_dev-9.2.0.dev3469}/src/ha_mcp/_vendor/mcp/shared/extension.py +0 -0
  424. {ha_mcp_dev-9.2.0.dev3467 → ha_mcp_dev-9.2.0.dev3469}/src/ha_mcp/_vendor/mcp/shared/inbound.py +0 -0
  425. {ha_mcp_dev-9.2.0.dev3467 → ha_mcp_dev-9.2.0.dev3469}/src/ha_mcp/_vendor/mcp/shared/jsonrpc_dispatcher.py +0 -0
  426. {ha_mcp_dev-9.2.0.dev3467 → ha_mcp_dev-9.2.0.dev3469}/src/ha_mcp/_vendor/mcp/shared/memory.py +0 -0
  427. {ha_mcp_dev-9.2.0.dev3467 → ha_mcp_dev-9.2.0.dev3469}/src/ha_mcp/_vendor/mcp/shared/message.py +0 -0
  428. {ha_mcp_dev-9.2.0.dev3467 → ha_mcp_dev-9.2.0.dev3469}/src/ha_mcp/_vendor/mcp/shared/metadata_utils.py +0 -0
  429. {ha_mcp_dev-9.2.0.dev3467 → ha_mcp_dev-9.2.0.dev3469}/src/ha_mcp/_vendor/mcp/shared/path_security.py +0 -0
  430. {ha_mcp_dev-9.2.0.dev3467 → ha_mcp_dev-9.2.0.dev3469}/src/ha_mcp/_vendor/mcp/shared/peer.py +0 -0
  431. {ha_mcp_dev-9.2.0.dev3467 → ha_mcp_dev-9.2.0.dev3469}/src/ha_mcp/_vendor/mcp/shared/subscriptions.py +0 -0
  432. {ha_mcp_dev-9.2.0.dev3467 → ha_mcp_dev-9.2.0.dev3469}/src/ha_mcp/_vendor/mcp/shared/tool_name_validation.py +0 -0
  433. {ha_mcp_dev-9.2.0.dev3467 → ha_mcp_dev-9.2.0.dev3469}/src/ha_mcp/_vendor/mcp/shared/transport_context.py +0 -0
  434. {ha_mcp_dev-9.2.0.dev3467 → ha_mcp_dev-9.2.0.dev3469}/src/ha_mcp/_vendor/mcp/shared/uri_template.py +0 -0
  435. {ha_mcp_dev-9.2.0.dev3467 → ha_mcp_dev-9.2.0.dev3469}/src/ha_mcp/_vendor/mcp/types/__init__.py +0 -0
  436. {ha_mcp_dev-9.2.0.dev3467 → ha_mcp_dev-9.2.0.dev3469}/src/ha_mcp/_vendor/mcp/types/jsonrpc.py +0 -0
  437. {ha_mcp_dev-9.2.0.dev3467 → ha_mcp_dev-9.2.0.dev3469}/src/ha_mcp/_vendor/mcp/types/methods.py +0 -0
  438. {ha_mcp_dev-9.2.0.dev3467 → ha_mcp_dev-9.2.0.dev3469}/src/ha_mcp/_vendor/mcp/types/version.py +0 -0
  439. {ha_mcp_dev-9.2.0.dev3467 → ha_mcp_dev-9.2.0.dev3469}/src/ha_mcp/_vendor/mcp_types/LICENSE +0 -0
  440. {ha_mcp_dev-9.2.0.dev3467 → ha_mcp_dev-9.2.0.dev3469}/src/ha_mcp/_vendor/mcp_types/MANIFEST.sha256 +0 -0
  441. {ha_mcp_dev-9.2.0.dev3467 → ha_mcp_dev-9.2.0.dev3469}/src/ha_mcp/_vendor/mcp_types/REQUIRES.txt +0 -0
  442. {ha_mcp_dev-9.2.0.dev3467 → ha_mcp_dev-9.2.0.dev3469}/src/ha_mcp/_vendor/mcp_types/VENDORED +0 -0
  443. {ha_mcp_dev-9.2.0.dev3467 → ha_mcp_dev-9.2.0.dev3469}/src/ha_mcp/_vendor/mcp_types/__init__.py +0 -0
  444. {ha_mcp_dev-9.2.0.dev3467 → ha_mcp_dev-9.2.0.dev3469}/src/ha_mcp/_vendor/mcp_types/_types.py +0 -0
  445. {ha_mcp_dev-9.2.0.dev3467 → ha_mcp_dev-9.2.0.dev3469}/src/ha_mcp/_vendor/mcp_types/_v2025_11_25/__init__.py +0 -0
  446. {ha_mcp_dev-9.2.0.dev3467 → ha_mcp_dev-9.2.0.dev3469}/src/ha_mcp/_vendor/mcp_types/_v2026_07_28/__init__.py +0 -0
  447. {ha_mcp_dev-9.2.0.dev3467 → ha_mcp_dev-9.2.0.dev3469}/src/ha_mcp/_vendor/mcp_types/_wire_base.py +0 -0
  448. {ha_mcp_dev-9.2.0.dev3467 → ha_mcp_dev-9.2.0.dev3469}/src/ha_mcp/_vendor/mcp_types/jsonrpc.py +0 -0
  449. {ha_mcp_dev-9.2.0.dev3467 → ha_mcp_dev-9.2.0.dev3469}/src/ha_mcp/_vendor/mcp_types/methods.py +0 -0
  450. {ha_mcp_dev-9.2.0.dev3467 → ha_mcp_dev-9.2.0.dev3469}/src/ha_mcp/_vendor/mcp_types/py.typed +0 -0
  451. {ha_mcp_dev-9.2.0.dev3467 → ha_mcp_dev-9.2.0.dev3469}/src/ha_mcp/_vendor/mcp_types/version.py +0 -0
  452. {ha_mcp_dev-9.2.0.dev3467 → ha_mcp_dev-9.2.0.dev3469}/src/ha_mcp/_vendor/websockets/LICENSE +0 -0
  453. {ha_mcp_dev-9.2.0.dev3467 → ha_mcp_dev-9.2.0.dev3469}/src/ha_mcp/_vendor/websockets/__main__.py +0 -0
  454. {ha_mcp_dev-9.2.0.dev3467 → ha_mcp_dev-9.2.0.dev3469}/src/ha_mcp/_vendor/websockets/asyncio/__init__.py +0 -0
  455. {ha_mcp_dev-9.2.0.dev3467 → ha_mcp_dev-9.2.0.dev3469}/src/ha_mcp/_vendor/websockets/asyncio/client.py +0 -0
  456. {ha_mcp_dev-9.2.0.dev3467 → ha_mcp_dev-9.2.0.dev3469}/src/ha_mcp/_vendor/websockets/asyncio/router.py +0 -0
  457. {ha_mcp_dev-9.2.0.dev3467 → ha_mcp_dev-9.2.0.dev3469}/src/ha_mcp/_vendor/websockets/auth.py +0 -0
  458. {ha_mcp_dev-9.2.0.dev3467 → ha_mcp_dev-9.2.0.dev3469}/src/ha_mcp/_vendor/websockets/cli.py +0 -0
  459. {ha_mcp_dev-9.2.0.dev3467 → ha_mcp_dev-9.2.0.dev3469}/src/ha_mcp/_vendor/websockets/client.py +0 -0
  460. {ha_mcp_dev-9.2.0.dev3467 → ha_mcp_dev-9.2.0.dev3469}/src/ha_mcp/_vendor/websockets/connection.py +0 -0
  461. {ha_mcp_dev-9.2.0.dev3467 → ha_mcp_dev-9.2.0.dev3469}/src/ha_mcp/_vendor/websockets/datastructures.py +0 -0
  462. {ha_mcp_dev-9.2.0.dev3467 → ha_mcp_dev-9.2.0.dev3469}/src/ha_mcp/_vendor/websockets/extensions/__init__.py +0 -0
  463. {ha_mcp_dev-9.2.0.dev3467 → ha_mcp_dev-9.2.0.dev3469}/src/ha_mcp/_vendor/websockets/extensions/base.py +0 -0
  464. {ha_mcp_dev-9.2.0.dev3467 → ha_mcp_dev-9.2.0.dev3469}/src/ha_mcp/_vendor/websockets/extensions/permessage_deflate.py +0 -0
  465. {ha_mcp_dev-9.2.0.dev3467 → ha_mcp_dev-9.2.0.dev3469}/src/ha_mcp/_vendor/websockets/frames.py +0 -0
  466. {ha_mcp_dev-9.2.0.dev3467 → ha_mcp_dev-9.2.0.dev3469}/src/ha_mcp/_vendor/websockets/imports.py +0 -0
  467. {ha_mcp_dev-9.2.0.dev3467 → ha_mcp_dev-9.2.0.dev3469}/src/ha_mcp/_vendor/websockets/legacy/__init__.py +0 -0
  468. {ha_mcp_dev-9.2.0.dev3467 → ha_mcp_dev-9.2.0.dev3469}/src/ha_mcp/_vendor/websockets/legacy/auth.py +0 -0
  469. {ha_mcp_dev-9.2.0.dev3467 → ha_mcp_dev-9.2.0.dev3469}/src/ha_mcp/_vendor/websockets/legacy/client.py +0 -0
  470. {ha_mcp_dev-9.2.0.dev3467 → ha_mcp_dev-9.2.0.dev3469}/src/ha_mcp/_vendor/websockets/legacy/exceptions.py +0 -0
  471. {ha_mcp_dev-9.2.0.dev3467 → ha_mcp_dev-9.2.0.dev3469}/src/ha_mcp/_vendor/websockets/legacy/framing.py +0 -0
  472. {ha_mcp_dev-9.2.0.dev3467 → ha_mcp_dev-9.2.0.dev3469}/src/ha_mcp/_vendor/websockets/legacy/handshake.py +0 -0
  473. {ha_mcp_dev-9.2.0.dev3467 → ha_mcp_dev-9.2.0.dev3469}/src/ha_mcp/_vendor/websockets/legacy/http.py +0 -0
  474. {ha_mcp_dev-9.2.0.dev3467 → ha_mcp_dev-9.2.0.dev3469}/src/ha_mcp/_vendor/websockets/legacy/server.py +0 -0
  475. {ha_mcp_dev-9.2.0.dev3467 → ha_mcp_dev-9.2.0.dev3469}/src/ha_mcp/_vendor/websockets/proxy.py +0 -0
  476. {ha_mcp_dev-9.2.0.dev3467 → ha_mcp_dev-9.2.0.dev3469}/src/ha_mcp/_vendor/websockets/py.typed +0 -0
  477. {ha_mcp_dev-9.2.0.dev3467 → ha_mcp_dev-9.2.0.dev3469}/src/ha_mcp/_vendor/websockets/server.py +0 -0
  478. {ha_mcp_dev-9.2.0.dev3467 → ha_mcp_dev-9.2.0.dev3469}/src/ha_mcp/_vendor/websockets/streams.py +0 -0
  479. {ha_mcp_dev-9.2.0.dev3467 → ha_mcp_dev-9.2.0.dev3469}/src/ha_mcp/_vendor/websockets/sync/__init__.py +0 -0
  480. {ha_mcp_dev-9.2.0.dev3467 → ha_mcp_dev-9.2.0.dev3469}/src/ha_mcp/_vendor/websockets/sync/client.py +0 -0
  481. {ha_mcp_dev-9.2.0.dev3467 → ha_mcp_dev-9.2.0.dev3469}/src/ha_mcp/_vendor/websockets/sync/router.py +0 -0
  482. {ha_mcp_dev-9.2.0.dev3467 → ha_mcp_dev-9.2.0.dev3469}/src/ha_mcp/_vendor/websockets/sync/utils.py +0 -0
  483. {ha_mcp_dev-9.2.0.dev3467 → ha_mcp_dev-9.2.0.dev3469}/src/ha_mcp/_vendor/websockets/trio/__init__.py +0 -0
  484. {ha_mcp_dev-9.2.0.dev3467 → ha_mcp_dev-9.2.0.dev3469}/src/ha_mcp/_vendor/websockets/trio/client.py +0 -0
  485. {ha_mcp_dev-9.2.0.dev3467 → ha_mcp_dev-9.2.0.dev3469}/src/ha_mcp/_vendor/websockets/trio/router.py +0 -0
  486. {ha_mcp_dev-9.2.0.dev3467 → ha_mcp_dev-9.2.0.dev3469}/src/ha_mcp/_vendor/websockets/trio/server.py +0 -0
  487. {ha_mcp_dev-9.2.0.dev3467 → ha_mcp_dev-9.2.0.dev3469}/src/ha_mcp/_vendor/websockets/trio/utils.py +0 -0
  488. {ha_mcp_dev-9.2.0.dev3467 → ha_mcp_dev-9.2.0.dev3469}/src/ha_mcp/_vendor/websockets/typing.py +0 -0
  489. {ha_mcp_dev-9.2.0.dev3467 → ha_mcp_dev-9.2.0.dev3469}/src/ha_mcp/_vendor/websockets/uri.py +0 -0
  490. {ha_mcp_dev-9.2.0.dev3467 → ha_mcp_dev-9.2.0.dev3469}/src/ha_mcp/_vendor/websockets/utils.py +0 -0
  491. {ha_mcp_dev-9.2.0.dev3467 → ha_mcp_dev-9.2.0.dev3469}/src/ha_mcp/_version.py +0 -0
  492. {ha_mcp_dev-9.2.0.dev3467 → ha_mcp_dev-9.2.0.dev3469}/src/ha_mcp/app_discovery.py +0 -0
  493. {ha_mcp_dev-9.2.0.dev3467 → ha_mcp_dev-9.2.0.dev3469}/src/ha_mcp/auth/__init__.py +0 -0
  494. {ha_mcp_dev-9.2.0.dev3467 → ha_mcp_dev-9.2.0.dev3469}/src/ha_mcp/auth/consent_form.py +0 -0
  495. {ha_mcp_dev-9.2.0.dev3467 → ha_mcp_dev-9.2.0.dev3469}/src/ha_mcp/auth/iss_stamp.py +0 -0
  496. {ha_mcp_dev-9.2.0.dev3467 → ha_mcp_dev-9.2.0.dev3469}/src/ha_mcp/auth/oidc_compat.py +0 -0
  497. {ha_mcp_dev-9.2.0.dev3467 → ha_mcp_dev-9.2.0.dev3469}/src/ha_mcp/auth/provider.py +0 -0
  498. {ha_mcp_dev-9.2.0.dev3467 → ha_mcp_dev-9.2.0.dev3469}/src/ha_mcp/backup_calendar.py +0 -0
  499. {ha_mcp_dev-9.2.0.dev3467 → ha_mcp_dev-9.2.0.dev3469}/src/ha_mcp/backup_dashboards.py +0 -0
  500. {ha_mcp_dev-9.2.0.dev3467 → ha_mcp_dev-9.2.0.dev3469}/src/ha_mcp/backup_diff.py +0 -0
  501. {ha_mcp_dev-9.2.0.dev3467 → ha_mcp_dev-9.2.0.dev3469}/src/ha_mcp/backup_entities.py +0 -0
  502. {ha_mcp_dev-9.2.0.dev3467 → ha_mcp_dev-9.2.0.dev3469}/src/ha_mcp/backup_entity_ids.py +0 -0
  503. {ha_mcp_dev-9.2.0.dev3467 → ha_mcp_dev-9.2.0.dev3469}/src/ha_mcp/backup_files.py +0 -0
  504. {ha_mcp_dev-9.2.0.dev3467 → ha_mcp_dev-9.2.0.dev3469}/src/ha_mcp/backup_helper_target.py +0 -0
  505. {ha_mcp_dev-9.2.0.dev3467 → ha_mcp_dev-9.2.0.dev3469}/src/ha_mcp/backup_integrations.py +0 -0
  506. {ha_mcp_dev-9.2.0.dev3467 → ha_mcp_dev-9.2.0.dev3469}/src/ha_mcp/backup_manager.py +0 -0
  507. {ha_mcp_dev-9.2.0.dev3467 → ha_mcp_dev-9.2.0.dev3469}/src/ha_mcp/backup_tags.py +0 -0
  508. {ha_mcp_dev-9.2.0.dev3467 → ha_mcp_dev-9.2.0.dev3469}/src/ha_mcp/backup_todo.py +0 -0
  509. {ha_mcp_dev-9.2.0.dev3467 → ha_mcp_dev-9.2.0.dev3469}/src/ha_mcp/backup_zones.py +0 -0
  510. {ha_mcp_dev-9.2.0.dev3467 → ha_mcp_dev-9.2.0.dev3469}/src/ha_mcp/browser_landing.py +0 -0
  511. {ha_mcp_dev-9.2.0.dev3467 → ha_mcp_dev-9.2.0.dev3469}/src/ha_mcp/client/__init__.py +0 -0
  512. {ha_mcp_dev-9.2.0.dev3467 → ha_mcp_dev-9.2.0.dev3469}/src/ha_mcp/client/admin_routes.py +0 -0
  513. {ha_mcp_dev-9.2.0.dev3467 → ha_mcp_dev-9.2.0.dev3469}/src/ha_mcp/client/config_entry_read.py +0 -0
  514. {ha_mcp_dev-9.2.0.dev3467 → ha_mcp_dev-9.2.0.dev3469}/src/ha_mcp/client/error_log_journald.py +0 -0
  515. {ha_mcp_dev-9.2.0.dev3467 → ha_mcp_dev-9.2.0.dev3469}/src/ha_mcp/client/event_listeners.py +0 -0
  516. {ha_mcp_dev-9.2.0.dev3467 → ha_mcp_dev-9.2.0.dev3469}/src/ha_mcp/client/models.py +0 -0
  517. {ha_mcp_dev-9.2.0.dev3467 → ha_mcp_dev-9.2.0.dev3469}/src/ha_mcp/client/rest_client.py +0 -0
  518. {ha_mcp_dev-9.2.0.dev3467 → ha_mcp_dev-9.2.0.dev3469}/src/ha_mcp/client/supervisor_client.py +0 -0
  519. {ha_mcp_dev-9.2.0.dev3467 → ha_mcp_dev-9.2.0.dev3469}/src/ha_mcp/client/websocket_client.py +0 -0
  520. {ha_mcp_dev-9.2.0.dev3467 → ha_mcp_dev-9.2.0.dev3469}/src/ha_mcp/client/websocket_listener.py +0 -0
  521. {ha_mcp_dev-9.2.0.dev3467 → ha_mcp_dev-9.2.0.dev3469}/src/ha_mcp/client/websocket_state.py +0 -0
  522. {ha_mcp_dev-9.2.0.dev3467 → ha_mcp_dev-9.2.0.dev3469}/src/ha_mcp/config.py +0 -0
  523. {ha_mcp_dev-9.2.0.dev3467 → ha_mcp_dev-9.2.0.dev3469}/src/ha_mcp/config_backup.py +0 -0
  524. {ha_mcp_dev-9.2.0.dev3467 → ha_mcp_dev-9.2.0.dev3469}/src/ha_mcp/config_meta.py +0 -0
  525. {ha_mcp_dev-9.2.0.dev3467 → ha_mcp_dev-9.2.0.dev3469}/src/ha_mcp/config_overrides.py +0 -0
  526. {ha_mcp_dev-9.2.0.dev3467 → ha_mcp_dev-9.2.0.dev3469}/src/ha_mcp/config_registry.py +0 -0
  527. {ha_mcp_dev-9.2.0.dev3467 → ha_mcp_dev-9.2.0.dev3469}/src/ha_mcp/config_settings.py +0 -0
  528. {ha_mcp_dev-9.2.0.dev3467 → ha_mcp_dev-9.2.0.dev3469}/src/ha_mcp/dashboard_screenshot/__init__.py +0 -0
  529. {ha_mcp_dev-9.2.0.dev3467 → ha_mcp_dev-9.2.0.dev3469}/src/ha_mcp/dashboard_screenshot/capture.py +0 -0
  530. {ha_mcp_dev-9.2.0.dev3467 → ha_mcp_dev-9.2.0.dev3469}/src/ha_mcp/dashboard_screenshot/content.py +0 -0
  531. {ha_mcp_dev-9.2.0.dev3467 → ha_mcp_dev-9.2.0.dev3469}/src/ha_mcp/dashboard_screenshot/engine_compat.py +0 -0
  532. {ha_mcp_dev-9.2.0.dev3467 → ha_mcp_dev-9.2.0.dev3469}/src/ha_mcp/dashboard_screenshot/paths.py +0 -0
  533. {ha_mcp_dev-9.2.0.dev3467 → ha_mcp_dev-9.2.0.dev3469}/src/ha_mcp/dashboard_screenshot/provision.py +0 -0
  534. {ha_mcp_dev-9.2.0.dev3467 → ha_mcp_dev-9.2.0.dev3469}/src/ha_mcp/dashboard_screenshot/theme_check.py +0 -0
  535. {ha_mcp_dev-9.2.0.dev3467 → ha_mcp_dev-9.2.0.dev3469}/src/ha_mcp/dashboard_screenshot/theme_guard.py +0 -0
  536. {ha_mcp_dev-9.2.0.dev3467 → ha_mcp_dev-9.2.0.dev3469}/src/ha_mcp/errors.py +0 -0
  537. {ha_mcp_dev-9.2.0.dev3467 → ha_mcp_dev-9.2.0.dev3469}/src/ha_mcp/ha_request_queue.py +0 -0
  538. {ha_mcp_dev-9.2.0.dev3467 → ha_mcp_dev-9.2.0.dev3469}/src/ha_mcp/hacs_auto_refresh.py +0 -0
  539. {ha_mcp_dev-9.2.0.dev3467 → ha_mcp_dev-9.2.0.dev3469}/src/ha_mcp/http_transport.py +0 -0
  540. {ha_mcp_dev-9.2.0.dev3467 → ha_mcp_dev-9.2.0.dev3469}/src/ha_mcp/image_info.py +0 -0
  541. {ha_mcp_dev-9.2.0.dev3467 → ha_mcp_dev-9.2.0.dev3469}/src/ha_mcp/ipv6_lan_guard.py +0 -0
  542. {ha_mcp_dev-9.2.0.dev3467 → ha_mcp_dev-9.2.0.dev3469}/src/ha_mcp/listen_sockets.py +0 -0
  543. {ha_mcp_dev-9.2.0.dev3467 → ha_mcp_dev-9.2.0.dev3469}/src/ha_mcp/llm_exposure.py +0 -0
  544. {ha_mcp_dev-9.2.0.dev3467 → ha_mcp_dev-9.2.0.dev3469}/src/ha_mcp/log_filters.py +0 -0
  545. {ha_mcp_dev-9.2.0.dev3467 → ha_mcp_dev-9.2.0.dev3469}/src/ha_mcp/mcp_client_context.py +0 -0
  546. {ha_mcp_dev-9.2.0.dev3467 → ha_mcp_dev-9.2.0.dev3469}/src/ha_mcp/policy/__init__.py +0 -0
  547. {ha_mcp_dev-9.2.0.dev3467 → ha_mcp_dev-9.2.0.dev3469}/src/ha_mcp/policy/approval_queue.py +0 -0
  548. {ha_mcp_dev-9.2.0.dev3467 → ha_mcp_dev-9.2.0.dev3469}/src/ha_mcp/policy/decision_pin.py +0 -0
  549. {ha_mcp_dev-9.2.0.dev3467 → ha_mcp_dev-9.2.0.dev3469}/src/ha_mcp/policy/decisions.py +0 -0
  550. {ha_mcp_dev-9.2.0.dev3467 → ha_mcp_dev-9.2.0.dev3469}/src/ha_mcp/policy/editing.py +0 -0
  551. {ha_mcp_dev-9.2.0.dev3467 → ha_mcp_dev-9.2.0.dev3469}/src/ha_mcp/policy/evaluator.py +0 -0
  552. {ha_mcp_dev-9.2.0.dev3467 → ha_mcp_dev-9.2.0.dev3469}/src/ha_mcp/policy/events.py +0 -0
  553. {ha_mcp_dev-9.2.0.dev3467 → ha_mcp_dev-9.2.0.dev3469}/src/ha_mcp/policy/handlers.py +0 -0
  554. {ha_mcp_dev-9.2.0.dev3467 → ha_mcp_dev-9.2.0.dev3469}/src/ha_mcp/policy/middleware.py +0 -0
  555. {ha_mcp_dev-9.2.0.dev3467 → ha_mcp_dev-9.2.0.dev3469}/src/ha_mcp/policy/model.py +0 -0
  556. {ha_mcp_dev-9.2.0.dev3467 → ha_mcp_dev-9.2.0.dev3469}/src/ha_mcp/policy/mrtr.py +0 -0
  557. {ha_mcp_dev-9.2.0.dev3467 → ha_mcp_dev-9.2.0.dev3469}/src/ha_mcp/policy/persistence.py +0 -0
  558. {ha_mcp_dev-9.2.0.dev3467 → ha_mcp_dev-9.2.0.dev3469}/src/ha_mcp/policy/server_channels.py +0 -0
  559. {ha_mcp_dev-9.2.0.dev3467 → ha_mcp_dev-9.2.0.dev3469}/src/ha_mcp/policy/value_sources.py +0 -0
  560. {ha_mcp_dev-9.2.0.dev3467 → ha_mcp_dev-9.2.0.dev3469}/src/ha_mcp/py.typed +0 -0
  561. {ha_mcp_dev-9.2.0.dev3467 → ha_mcp_dev-9.2.0.dev3469}/src/ha_mcp/read_only.py +0 -0
  562. {ha_mcp_dev-9.2.0.dev3467 → ha_mcp_dev-9.2.0.dev3469}/src/ha_mcp/redaction.py +0 -0
  563. {ha_mcp_dev-9.2.0.dev3467 → ha_mcp_dev-9.2.0.dev3469}/src/ha_mcp/renamed_tools.py +0 -0
  564. {ha_mcp_dev-9.2.0.dev3467 → ha_mcp_dev-9.2.0.dev3469}/src/ha_mcp/resources/skills-vendor/LICENSE +0 -0
  565. {ha_mcp_dev-9.2.0.dev3467 → ha_mcp_dev-9.2.0.dev3469}/src/ha_mcp/resources/skills-vendor/skills/home-assistant-best-practices/SKILL.md +0 -0
  566. {ha_mcp_dev-9.2.0.dev3467 → ha_mcp_dev-9.2.0.dev3469}/src/ha_mcp/resources/skills-vendor/skills/home-assistant-best-practices/references/appdaemon.md +0 -0
  567. {ha_mcp_dev-9.2.0.dev3467 → ha_mcp_dev-9.2.0.dev3469}/src/ha_mcp/resources/skills-vendor/skills/home-assistant-best-practices/references/automation-actions.md +0 -0
  568. {ha_mcp_dev-9.2.0.dev3467 → ha_mcp_dev-9.2.0.dev3469}/src/ha_mcp/resources/skills-vendor/skills/home-assistant-best-practices/references/backups.md +0 -0
  569. {ha_mcp_dev-9.2.0.dev3467 → ha_mcp_dev-9.2.0.dev3469}/src/ha_mcp/resources/skills-vendor/skills/home-assistant-best-practices/references/blueprint-guide.md +0 -0
  570. {ha_mcp_dev-9.2.0.dev3467 → ha_mcp_dev-9.2.0.dev3469}/src/ha_mcp/resources/skills-vendor/skills/home-assistant-best-practices/references/dashboard-cards.md +0 -0
  571. {ha_mcp_dev-9.2.0.dev3467 → ha_mcp_dev-9.2.0.dev3469}/src/ha_mcp/resources/skills-vendor/skills/home-assistant-best-practices/references/dashboard-guide.md +0 -0
  572. {ha_mcp_dev-9.2.0.dev3467 → ha_mcp_dev-9.2.0.dev3469}/src/ha_mcp/resources/skills-vendor/skills/home-assistant-best-practices/references/device-control.md +0 -0
  573. {ha_mcp_dev-9.2.0.dev3467 → ha_mcp_dev-9.2.0.dev3469}/src/ha_mcp/resources/skills-vendor/skills/home-assistant-best-practices/references/domain-docs.md +0 -0
  574. {ha_mcp_dev-9.2.0.dev3467 → ha_mcp_dev-9.2.0.dev3469}/src/ha_mcp/resources/skills-vendor/skills/home-assistant-best-practices/references/examples.yaml +0 -0
  575. {ha_mcp_dev-9.2.0.dev3467 → ha_mcp_dev-9.2.0.dev3469}/src/ha_mcp/resources/skills-vendor/skills/home-assistant-best-practices/references/helper-selection.md +0 -0
  576. {ha_mcp_dev-9.2.0.dev3467 → ha_mcp_dev-9.2.0.dev3469}/src/ha_mcp/resources/skills-vendor/skills/home-assistant-best-practices/references/safe-refactoring.md +0 -0
  577. {ha_mcp_dev-9.2.0.dev3467 → ha_mcp_dev-9.2.0.dev3469}/src/ha_mcp/resources/skills-vendor/skills/home-assistant-best-practices/references/scenes.md +0 -0
  578. {ha_mcp_dev-9.2.0.dev3467 → ha_mcp_dev-9.2.0.dev3469}/src/ha_mcp/resources/skills-vendor/skills/home-assistant-best-practices/references/template-guidelines.md +0 -0
  579. {ha_mcp_dev-9.2.0.dev3467 → ha_mcp_dev-9.2.0.dev3469}/src/ha_mcp/resources/skills-vendor/skills/home-assistant-best-practices/references/triggers-and-conditions.md +0 -0
  580. {ha_mcp_dev-9.2.0.dev3467 → ha_mcp_dev-9.2.0.dev3469}/src/ha_mcp/resources/skills-vendor/skills/home-assistant-best-practices/references/yaml-only-integrations.md +0 -0
  581. {ha_mcp_dev-9.2.0.dev3467 → ha_mcp_dev-9.2.0.dev3469}/src/ha_mcp/server.py +0 -0
  582. {ha_mcp_dev-9.2.0.dev3467 → ha_mcp_dev-9.2.0.dev3469}/src/ha_mcp/server_instructions.py +0 -0
  583. {ha_mcp_dev-9.2.0.dev3467 → ha_mcp_dev-9.2.0.dev3469}/src/ha_mcp/server_lifespan.py +0 -0
  584. {ha_mcp_dev-9.2.0.dev3467 → ha_mcp_dev-9.2.0.dev3469}/src/ha_mcp/server_tool_text.py +0 -0
  585. {ha_mcp_dev-9.2.0.dev3467 → ha_mcp_dev-9.2.0.dev3469}/src/ha_mcp/settings_ui/__init__.py +0 -0
  586. {ha_mcp_dev-9.2.0.dev3467 → ha_mcp_dev-9.2.0.dev3469}/src/ha_mcp/settings_ui/_handlers_advanced.py +0 -0
  587. {ha_mcp_dev-9.2.0.dev3467 → ha_mcp_dev-9.2.0.dev3469}/src/ha_mcp/settings_ui/_handlers_backups.py +0 -0
  588. {ha_mcp_dev-9.2.0.dev3467 → ha_mcp_dev-9.2.0.dev3469}/src/ha_mcp/settings_ui/_handlers_fs.py +0 -0
  589. {ha_mcp_dev-9.2.0.dev3467 → ha_mcp_dev-9.2.0.dev3469}/src/ha_mcp/settings_ui/_handlers_oauth_callbacks.py +0 -0
  590. {ha_mcp_dev-9.2.0.dev3467 → ha_mcp_dev-9.2.0.dev3469}/src/ha_mcp/settings_ui/_handlers_server.py +0 -0
  591. {ha_mcp_dev-9.2.0.dev3467 → ha_mcp_dev-9.2.0.dev3469}/src/ha_mcp/settings_ui/_handlers_theme.py +0 -0
  592. {ha_mcp_dev-9.2.0.dev3467 → ha_mcp_dev-9.2.0.dev3469}/src/ha_mcp/settings_ui/_handlers_tools.py +0 -0
  593. {ha_mcp_dev-9.2.0.dev3467 → ha_mcp_dev-9.2.0.dev3469}/src/ha_mcp/settings_ui/_i18n.py +0 -0
  594. {ha_mcp_dev-9.2.0.dev3467 → ha_mcp_dev-9.2.0.dev3469}/src/ha_mcp/settings_ui/_locale_policy.py +0 -0
  595. {ha_mcp_dev-9.2.0.dev3467 → ha_mcp_dev-9.2.0.dev3469}/src/ha_mcp/settings_ui/_persistence.py +0 -0
  596. {ha_mcp_dev-9.2.0.dev3467 → ha_mcp_dev-9.2.0.dev3469}/src/ha_mcp/settings_ui/_supervisor.py +0 -0
  597. {ha_mcp_dev-9.2.0.dev3467 → ha_mcp_dev-9.2.0.dev3469}/src/ha_mcp/settings_ui/_theme.py +0 -0
  598. {ha_mcp_dev-9.2.0.dev3467 → ha_mcp_dev-9.2.0.dev3469}/src/ha_mcp/settings_ui/_tools_meta.py +0 -0
  599. {ha_mcp_dev-9.2.0.dev3467 → ha_mcp_dev-9.2.0.dev3469}/src/ha_mcp/settings_ui/locales/README.md +0 -0
  600. {ha_mcp_dev-9.2.0.dev3467 → ha_mcp_dev-9.2.0.dev3469}/src/ha_mcp/settings_ui/locales/az.json +0 -0
  601. {ha_mcp_dev-9.2.0.dev3467 → ha_mcp_dev-9.2.0.dev3469}/src/ha_mcp/settings_ui/locales/cs.json +0 -0
  602. {ha_mcp_dev-9.2.0.dev3467 → ha_mcp_dev-9.2.0.dev3469}/src/ha_mcp/settings_ui/locales/de.json +0 -0
  603. {ha_mcp_dev-9.2.0.dev3467 → ha_mcp_dev-9.2.0.dev3469}/src/ha_mcp/settings_ui/locales/en.json +0 -0
  604. {ha_mcp_dev-9.2.0.dev3467 → ha_mcp_dev-9.2.0.dev3469}/src/ha_mcp/settings_ui/locales/eo.json +0 -0
  605. {ha_mcp_dev-9.2.0.dev3467 → ha_mcp_dev-9.2.0.dev3469}/src/ha_mcp/settings_ui/locales/es.json +0 -0
  606. {ha_mcp_dev-9.2.0.dev3467 → ha_mcp_dev-9.2.0.dev3469}/src/ha_mcp/settings_ui/locales/fr.json +0 -0
  607. {ha_mcp_dev-9.2.0.dev3467 → ha_mcp_dev-9.2.0.dev3469}/src/ha_mcp/settings_ui/locales/hu.json +0 -0
  608. {ha_mcp_dev-9.2.0.dev3467 → ha_mcp_dev-9.2.0.dev3469}/src/ha_mcp/settings_ui/locales/it.json +0 -0
  609. {ha_mcp_dev-9.2.0.dev3467 → ha_mcp_dev-9.2.0.dev3469}/src/ha_mcp/settings_ui/locales/ko.json +0 -0
  610. {ha_mcp_dev-9.2.0.dev3467 → ha_mcp_dev-9.2.0.dev3469}/src/ha_mcp/settings_ui/locales/nl.json +0 -0
  611. {ha_mcp_dev-9.2.0.dev3467 → ha_mcp_dev-9.2.0.dev3469}/src/ha_mcp/settings_ui/locales/pl.json +0 -0
  612. {ha_mcp_dev-9.2.0.dev3467 → ha_mcp_dev-9.2.0.dev3469}/src/ha_mcp/settings_ui/locales/ru.json +0 -0
  613. {ha_mcp_dev-9.2.0.dev3467 → ha_mcp_dev-9.2.0.dev3469}/src/ha_mcp/settings_ui/locales/sv.json +0 -0
  614. {ha_mcp_dev-9.2.0.dev3467 → ha_mcp_dev-9.2.0.dev3469}/src/ha_mcp/settings_ui/locales/tlh.json +0 -0
  615. {ha_mcp_dev-9.2.0.dev3467 → ha_mcp_dev-9.2.0.dev3469}/src/ha_mcp/settings_ui/locales/zh-Hans.json +0 -0
  616. {ha_mcp_dev-9.2.0.dev3467 → ha_mcp_dev-9.2.0.dev3469}/src/ha_mcp/settings_ui/locales/zh-Hant.json +0 -0
  617. {ha_mcp_dev-9.2.0.dev3467 → ha_mcp_dev-9.2.0.dev3469}/src/ha_mcp/settings_ui/settings.css +0 -0
  618. {ha_mcp_dev-9.2.0.dev3467 → ha_mcp_dev-9.2.0.dev3469}/src/ha_mcp/settings_ui/settings.html +0 -0
  619. {ha_mcp_dev-9.2.0.dev3467 → ha_mcp_dev-9.2.0.dev3469}/src/ha_mcp/settings_ui/settings_js/01_i18n_state.js +0 -0
  620. {ha_mcp_dev-9.2.0.dev3467 → ha_mcp_dev-9.2.0.dev3469}/src/ha_mcp/settings_ui/settings_js/02_tools_restart.js +0 -0
  621. {ha_mcp_dev-9.2.0.dev3467 → ha_mcp_dev-9.2.0.dev3469}/src/ha_mcp/settings_ui/settings_js/03_render_save.js +0 -0
  622. {ha_mcp_dev-9.2.0.dev3467 → ha_mcp_dev-9.2.0.dev3469}/src/ha_mcp/settings_ui/settings_js/04_backups.js +0 -0
  623. {ha_mcp_dev-9.2.0.dev3467 → ha_mcp_dev-9.2.0.dev3469}/src/ha_mcp/settings_ui/settings_js/05_feature_flags.js +0 -0
  624. {ha_mcp_dev-9.2.0.dev3467 → ha_mcp_dev-9.2.0.dev3469}/src/ha_mcp/settings_ui/settings_js/06_policy_cards.js +0 -0
  625. {ha_mcp_dev-9.2.0.dev3467 → ha_mcp_dev-9.2.0.dev3469}/src/ha_mcp/settings_ui/settings_js/07_policy_actions.js +0 -0
  626. {ha_mcp_dev-9.2.0.dev3467 → ha_mcp_dev-9.2.0.dev3469}/src/ha_mcp/settings_ui/settings_js/08_advanced.js +0 -0
  627. {ha_mcp_dev-9.2.0.dev3467 → ha_mcp_dev-9.2.0.dev3469}/src/ha_mcp/settings_ui/settings_js/09_prefs_visibility.js +0 -0
  628. {ha_mcp_dev-9.2.0.dev3467 → ha_mcp_dev-9.2.0.dev3469}/src/ha_mcp/settings_ui/settings_js/10_oauth_callbacks.js +0 -0
  629. {ha_mcp_dev-9.2.0.dev3467 → ha_mcp_dev-9.2.0.dev3469}/src/ha_mcp/smoke_test.py +0 -0
  630. {ha_mcp_dev-9.2.0.dev3467 → ha_mcp_dev-9.2.0.dev3469}/src/ha_mcp/stdio_settings_sidecar.py +0 -0
  631. {ha_mcp_dev-9.2.0.dev3467 → ha_mcp_dev-9.2.0.dev3469}/src/ha_mcp/storage_helper_types.py +0 -0
  632. {ha_mcp_dev-9.2.0.dev3467 → ha_mcp_dev-9.2.0.dev3469}/src/ha_mcp/strict_bps.py +0 -0
  633. {ha_mcp_dev-9.2.0.dev3467 → ha_mcp_dev-9.2.0.dev3469}/src/ha_mcp/tool_catalog.py +0 -0
  634. {ha_mcp_dev-9.2.0.dev3467 → ha_mcp_dev-9.2.0.dev3469}/src/ha_mcp/tool_dispatch.py +0 -0
  635. {ha_mcp_dev-9.2.0.dev3467 → ha_mcp_dev-9.2.0.dev3469}/src/ha_mcp/tools/__init__.py +0 -0
  636. {ha_mcp_dev-9.2.0.dev3467 → ha_mcp_dev-9.2.0.dev3469}/src/ha_mcp/tools/addon_connection_hints.py +0 -0
  637. {ha_mcp_dev-9.2.0.dev3467 → ha_mcp_dev-9.2.0.dev3469}/src/ha_mcp/tools/area_messages.py +0 -0
  638. {ha_mcp_dev-9.2.0.dev3467 → ha_mcp_dev-9.2.0.dev3469}/src/ha_mcp/tools/auto_backup.py +0 -0
  639. {ha_mcp_dev-9.2.0.dev3467 → ha_mcp_dev-9.2.0.dev3469}/src/ha_mcp/tools/automation_errors.py +0 -0
  640. {ha_mcp_dev-9.2.0.dev3467 → ha_mcp_dev-9.2.0.dev3469}/src/ha_mcp/tools/automation_registry_details.py +0 -0
  641. {ha_mcp_dev-9.2.0.dev3467 → ha_mcp_dev-9.2.0.dev3469}/src/ha_mcp/tools/backup.py +0 -0
  642. {ha_mcp_dev-9.2.0.dev3467 → ha_mcp_dev-9.2.0.dev3469}/src/ha_mcp/tools/backup_access.py +0 -0
  643. {ha_mcp_dev-9.2.0.dev3467 → ha_mcp_dev-9.2.0.dev3469}/src/ha_mcp/tools/backup_on_demand.py +0 -0
  644. {ha_mcp_dev-9.2.0.dev3467 → ha_mcp_dev-9.2.0.dev3469}/src/ha_mcp/tools/backup_snapshot.py +0 -0
  645. {ha_mcp_dev-9.2.0.dev3467 → ha_mcp_dev-9.2.0.dev3469}/src/ha_mcp/tools/backup_snapshot_restore.py +0 -0
  646. {ha_mcp_dev-9.2.0.dev3467 → ha_mcp_dev-9.2.0.dev3469}/src/ha_mcp/tools/best_practice_checker.py +0 -0
  647. {ha_mcp_dev-9.2.0.dev3467 → ha_mcp_dev-9.2.0.dev3469}/src/ha_mcp/tools/best_practice_result.py +0 -0
  648. {ha_mcp_dev-9.2.0.dev3467 → ha_mcp_dev-9.2.0.dev3469}/src/ha_mcp/tools/best_practice_variables.py +0 -0
  649. {ha_mcp_dev-9.2.0.dev3467 → ha_mcp_dev-9.2.0.dev3469}/src/ha_mcp/tools/blueprint_sources.py +0 -0
  650. {ha_mcp_dev-9.2.0.dev3467 → ha_mcp_dev-9.2.0.dev3469}/src/ha_mcp/tools/blueprint_substitute.py +0 -0
  651. {ha_mcp_dev-9.2.0.dev3467 → ha_mcp_dev-9.2.0.dev3469}/src/ha_mcp/tools/blueprint_write.py +0 -0
  652. {ha_mcp_dev-9.2.0.dev3467 → ha_mcp_dev-9.2.0.dev3469}/src/ha_mcp/tools/bug_report_config.py +0 -0
  653. {ha_mcp_dev-9.2.0.dev3467 → ha_mcp_dev-9.2.0.dev3469}/src/ha_mcp/tools/bug_report_redaction.py +0 -0
  654. {ha_mcp_dev-9.2.0.dev3467 → ha_mcp_dev-9.2.0.dev3469}/src/ha_mcp/tools/bug_report_sources.py +0 -0
  655. {ha_mcp_dev-9.2.0.dev3467 → ha_mcp_dev-9.2.0.dev3469}/src/ha_mcp/tools/bug_report_templates.py +0 -0
  656. {ha_mcp_dev-9.2.0.dev3467 → ha_mcp_dev-9.2.0.dev3469}/src/ha_mcp/tools/bulk_selector.py +0 -0
  657. {ha_mcp_dev-9.2.0.dev3467 → ha_mcp_dev-9.2.0.dev3469}/src/ha_mcp/tools/coercion.py +0 -0
  658. {ha_mcp_dev-9.2.0.dev3467 → ha_mcp_dev-9.2.0.dev3469}/src/ha_mcp/tools/component_api.py +0 -0
  659. {ha_mcp_dev-9.2.0.dev3467 → ha_mcp_dev-9.2.0.dev3469}/src/ha_mcp/tools/component_automation.py +0 -0
  660. {ha_mcp_dev-9.2.0.dev3467 → ha_mcp_dev-9.2.0.dev3469}/src/ha_mcp/tools/component_config_entries.py +0 -0
  661. {ha_mcp_dev-9.2.0.dev3467 → ha_mcp_dev-9.2.0.dev3469}/src/ha_mcp/tools/component_config_reads.py +0 -0
  662. {ha_mcp_dev-9.2.0.dev3467 → ha_mcp_dev-9.2.0.dev3469}/src/ha_mcp/tools/component_dashboard_edit.py +0 -0
  663. {ha_mcp_dev-9.2.0.dev3467 → ha_mcp_dev-9.2.0.dev3469}/src/ha_mcp/tools/component_devices.py +0 -0
  664. {ha_mcp_dev-9.2.0.dev3467 → ha_mcp_dev-9.2.0.dev3469}/src/ha_mcp/tools/component_helper_collections.py +0 -0
  665. {ha_mcp_dev-9.2.0.dev3467 → ha_mcp_dev-9.2.0.dev3469}/src/ha_mcp/tools/component_registries.py +0 -0
  666. {ha_mcp_dev-9.2.0.dev3467 → ha_mcp_dev-9.2.0.dev3469}/src/ha_mcp/tools/component_registry_lookup.py +0 -0
  667. {ha_mcp_dev-9.2.0.dev3467 → ha_mcp_dev-9.2.0.dev3469}/src/ha_mcp/tools/component_todo.py +0 -0
  668. {ha_mcp_dev-9.2.0.dev3467 → ha_mcp_dev-9.2.0.dev3469}/src/ha_mcp/tools/config_entry_backup.py +0 -0
  669. {ha_mcp_dev-9.2.0.dev3467 → ha_mcp_dev-9.2.0.dev3469}/src/ha_mcp/tools/config_entry_flow.py +0 -0
  670. {ha_mcp_dev-9.2.0.dev3467 → ha_mcp_dev-9.2.0.dev3469}/src/ha_mcp/tools/config_entry_flow_errors.py +0 -0
  671. {ha_mcp_dev-9.2.0.dev3467 → ha_mcp_dev-9.2.0.dev3469}/src/ha_mcp/tools/config_entry_flow_form.py +0 -0
  672. {ha_mcp_dev-9.2.0.dev3467 → ha_mcp_dev-9.2.0.dev3469}/src/ha_mcp/tools/config_entry_flow_introspect.py +0 -0
  673. {ha_mcp_dev-9.2.0.dev3467 → ha_mcp_dev-9.2.0.dev3469}/src/ha_mcp/tools/config_entry_flow_menu.py +0 -0
  674. {ha_mcp_dev-9.2.0.dev3467 → ha_mcp_dev-9.2.0.dev3469}/src/ha_mcp/tools/config_entry_flow_progress.py +0 -0
  675. {ha_mcp_dev-9.2.0.dev3467 → ha_mcp_dev-9.2.0.dev3469}/src/ha_mcp/tools/config_entry_flow_walker.py +0 -0
  676. {ha_mcp_dev-9.2.0.dev3467 → ha_mcp_dev-9.2.0.dev3469}/src/ha_mcp/tools/config_entry_identity.py +0 -0
  677. {ha_mcp_dev-9.2.0.dev3467 → ha_mcp_dev-9.2.0.dev3469}/src/ha_mcp/tools/config_entry_reload_watch.py +0 -0
  678. {ha_mcp_dev-9.2.0.dev3467 → ha_mcp_dev-9.2.0.dev3469}/src/ha_mcp/tools/config_file_visibility.py +0 -0
  679. {ha_mcp_dev-9.2.0.dev3467 → ha_mcp_dev-9.2.0.dev3469}/src/ha_mcp/tools/config_helpers/__init__.py +0 -0
  680. {ha_mcp_dev-9.2.0.dev3467 → ha_mcp_dev-9.2.0.dev3469}/src/ha_mcp/tools/config_helpers/core_payload.py +0 -0
  681. {ha_mcp_dev-9.2.0.dev3467 → ha_mcp_dev-9.2.0.dev3469}/src/ha_mcp/tools/config_helpers/create.py +0 -0
  682. {ha_mcp_dev-9.2.0.dev3467 → ha_mcp_dev-9.2.0.dev3469}/src/ha_mcp/tools/config_helpers/describe.py +0 -0
  683. {ha_mcp_dev-9.2.0.dev3467 → ha_mcp_dev-9.2.0.dev3469}/src/ha_mcp/tools/config_helpers/flow.py +0 -0
  684. {ha_mcp_dev-9.2.0.dev3467 → ha_mcp_dev-9.2.0.dev3469}/src/ha_mcp/tools/config_helpers/icon_route.py +0 -0
  685. {ha_mcp_dev-9.2.0.dev3467 → ha_mcp_dev-9.2.0.dev3469}/src/ha_mcp/tools/config_helpers/listing.py +0 -0
  686. {ha_mcp_dev-9.2.0.dev3467 → ha_mcp_dev-9.2.0.dev3469}/src/ha_mcp/tools/config_helpers/registry.py +0 -0
  687. {ha_mcp_dev-9.2.0.dev3467 → ha_mcp_dev-9.2.0.dev3469}/src/ha_mcp/tools/config_helpers/schemas.py +0 -0
  688. {ha_mcp_dev-9.2.0.dev3467 → ha_mcp_dev-9.2.0.dev3469}/src/ha_mcp/tools/config_helpers/typed_config.py +0 -0
  689. {ha_mcp_dev-9.2.0.dev3467 → ha_mcp_dev-9.2.0.dev3469}/src/ha_mcp/tools/config_helpers/update.py +0 -0
  690. {ha_mcp_dev-9.2.0.dev3467 → ha_mcp_dev-9.2.0.dev3469}/src/ha_mcp/tools/config_helpers/validation.py +0 -0
  691. {ha_mcp_dev-9.2.0.dev3467 → ha_mcp_dev-9.2.0.dev3469}/src/ha_mcp/tools/config_subentry_restore.py +0 -0
  692. {ha_mcp_dev-9.2.0.dev3467 → ha_mcp_dev-9.2.0.dev3469}/src/ha_mcp/tools/config_write_errors.py +0 -0
  693. {ha_mcp_dev-9.2.0.dev3467 → ha_mcp_dev-9.2.0.dev3469}/src/ha_mcp/tools/config_write_helpers.py +0 -0
  694. {ha_mcp_dev-9.2.0.dev3467 → ha_mcp_dev-9.2.0.dev3469}/src/ha_mcp/tools/core_contract.py +0 -0
  695. {ha_mcp_dev-9.2.0.dev3467 → ha_mcp_dev-9.2.0.dev3469}/src/ha_mcp/tools/dashboard_card_describe.py +0 -0
  696. {ha_mcp_dev-9.2.0.dev3467 → ha_mcp_dev-9.2.0.dev3469}/src/ha_mcp/tools/dashboard_edit_errors.py +0 -0
  697. {ha_mcp_dev-9.2.0.dev3467 → ha_mcp_dev-9.2.0.dev3469}/src/ha_mcp/tools/dashboard_list_checks.py +0 -0
  698. {ha_mcp_dev-9.2.0.dev3467 → ha_mcp_dev-9.2.0.dev3469}/src/ha_mcp/tools/dashboard_read_errors.py +0 -0
  699. {ha_mcp_dev-9.2.0.dev3467 → ha_mcp_dev-9.2.0.dev3469}/src/ha_mcp/tools/dev_backup.py +0 -0
  700. {ha_mcp_dev-9.2.0.dev3467 → ha_mcp_dev-9.2.0.dev3469}/src/ha_mcp/tools/device_control.py +0 -0
  701. {ha_mcp_dev-9.2.0.dev3467 → ha_mcp_dev-9.2.0.dev3469}/src/ha_mcp/tools/device_enrichment.py +0 -0
  702. {ha_mcp_dev-9.2.0.dev3467 → ha_mcp_dev-9.2.0.dev3469}/src/ha_mcp/tools/diagnostics_helpers.py +0 -0
  703. {ha_mcp_dev-9.2.0.dev3467 → ha_mcp_dev-9.2.0.dev3469}/src/ha_mcp/tools/energy_preferences.py +0 -0
  704. {ha_mcp_dev-9.2.0.dev3467 → ha_mcp_dev-9.2.0.dev3469}/src/ha_mcp/tools/entity_expose_batch.py +0 -0
  705. {ha_mcp_dev-9.2.0.dev3467 → ha_mcp_dev-9.2.0.dev3469}/src/ha_mcp/tools/entity_param_parsing.py +0 -0
  706. {ha_mcp_dev-9.2.0.dev3467 → ha_mcp_dev-9.2.0.dev3469}/src/ha_mcp/tools/entity_registration.py +0 -0
  707. {ha_mcp_dev-9.2.0.dev3467 → ha_mcp_dev-9.2.0.dev3469}/src/ha_mcp/tools/entity_removal.py +0 -0
  708. {ha_mcp_dev-9.2.0.dev3467 → ha_mcp_dev-9.2.0.dev3469}/src/ha_mcp/tools/entity_update_fields.py +0 -0
  709. {ha_mcp_dev-9.2.0.dev3467 → ha_mcp_dev-9.2.0.dev3469}/src/ha_mcp/tools/error_log_parsing.py +0 -0
  710. {ha_mcp_dev-9.2.0.dev3467 → ha_mcp_dev-9.2.0.dev3469}/src/ha_mcp/tools/event_call.py +0 -0
  711. {ha_mcp_dev-9.2.0.dev3467 → ha_mcp_dev-9.2.0.dev3469}/src/ha_mcp/tools/event_listener_fields.py +0 -0
  712. {ha_mcp_dev-9.2.0.dev3467 → ha_mcp_dev-9.2.0.dev3469}/src/ha_mcp/tools/file_edit_refusal.py +0 -0
  713. {ha_mcp_dev-9.2.0.dev3467 → ha_mcp_dev-9.2.0.dev3469}/src/ha_mcp/tools/flow_helper_lookup.py +0 -0
  714. {ha_mcp_dev-9.2.0.dev3467 → ha_mcp_dev-9.2.0.dev3469}/src/ha_mcp/tools/flow_translations.py +0 -0
  715. {ha_mcp_dev-9.2.0.dev3467 → ha_mcp_dev-9.2.0.dev3469}/src/ha_mcp/tools/hacs_backend.py +0 -0
  716. {ha_mcp_dev-9.2.0.dev3467 → ha_mcp_dev-9.2.0.dev3469}/src/ha_mcp/tools/hacs_own_repository.py +0 -0
  717. {ha_mcp_dev-9.2.0.dev3467 → ha_mcp_dev-9.2.0.dev3469}/src/ha_mcp/tools/hacs_registration.py +0 -0
  718. {ha_mcp_dev-9.2.0.dev3467 → ha_mcp_dev-9.2.0.dev3469}/src/ha_mcp/tools/helper_flows.py +0 -0
  719. {ha_mcp_dev-9.2.0.dev3467 → ha_mcp_dev-9.2.0.dev3469}/src/ha_mcp/tools/helpers.py +0 -0
  720. {ha_mcp_dev-9.2.0.dev3467 → ha_mcp_dev-9.2.0.dev3469}/src/ha_mcp/tools/history_response.py +0 -0
  721. {ha_mcp_dev-9.2.0.dev3467 → ha_mcp_dev-9.2.0.dev3469}/src/ha_mcp/tools/ignored_entries.py +0 -0
  722. {ha_mcp_dev-9.2.0.dev3467 → ha_mcp_dev-9.2.0.dev3469}/src/ha_mcp/tools/integration_entry_state.py +0 -0
  723. {ha_mcp_dev-9.2.0.dev3467 → ha_mcp_dev-9.2.0.dev3469}/src/ha_mcp/tools/integration_flow_steps.py +0 -0
  724. {ha_mcp_dev-9.2.0.dev3467 → ha_mcp_dev-9.2.0.dev3469}/src/ha_mcp/tools/integration_schema.py +0 -0
  725. {ha_mcp_dev-9.2.0.dev3467 → ha_mcp_dev-9.2.0.dev3469}/src/ha_mcp/tools/integration_ws_commands.py +0 -0
  726. {ha_mcp_dev-9.2.0.dev3467 → ha_mcp_dev-9.2.0.dev3469}/src/ha_mcp/tools/log_common.py +0 -0
  727. {ha_mcp_dev-9.2.0.dev3467 → ha_mcp_dev-9.2.0.dev3469}/src/ha_mcp/tools/log_sources.py +0 -0
  728. {ha_mcp_dev-9.2.0.dev3467 → ha_mcp_dev-9.2.0.dev3469}/src/ha_mcp/tools/log_sources_fault.py +0 -0
  729. {ha_mcp_dev-9.2.0.dev3467 → ha_mcp_dev-9.2.0.dev3469}/src/ha_mcp/tools/log_sources_logbook.py +0 -0
  730. {ha_mcp_dev-9.2.0.dev3467 → ha_mcp_dev-9.2.0.dev3469}/src/ha_mcp/tools/log_sources_supervisor.py +0 -0
  731. {ha_mcp_dev-9.2.0.dev3467 → ha_mcp_dev-9.2.0.dev3469}/src/ha_mcp/tools/radio/__init__.py +0 -0
  732. {ha_mcp_dev-9.2.0.dev3467 → ha_mcp_dev-9.2.0.dev3469}/src/ha_mcp/tools/radio/base.py +0 -0
  733. {ha_mcp_dev-9.2.0.dev3467 → ha_mcp_dev-9.2.0.dev3469}/src/ha_mcp/tools/radio/matter.py +0 -0
  734. {ha_mcp_dev-9.2.0.dev3467 → ha_mcp_dev-9.2.0.dev3469}/src/ha_mcp/tools/radio/thread.py +0 -0
  735. {ha_mcp_dev-9.2.0.dev3467 → ha_mcp_dev-9.2.0.dev3469}/src/ha_mcp/tools/radio/zigbee.py +0 -0
  736. {ha_mcp_dev-9.2.0.dev3467 → ha_mcp_dev-9.2.0.dev3469}/src/ha_mcp/tools/radio/zwave.py +0 -0
  737. {ha_mcp_dev-9.2.0.dev3467 → ha_mcp_dev-9.2.0.dev3469}/src/ha_mcp/tools/radio/zwave_parameters.py +0 -0
  738. {ha_mcp_dev-9.2.0.dev3467 → ha_mcp_dev-9.2.0.dev3469}/src/ha_mcp/tools/recorder_errors.py +0 -0
  739. {ha_mcp_dev-9.2.0.dev3467 → ha_mcp_dev-9.2.0.dev3469}/src/ha_mcp/tools/reference_validator.py +0 -0
  740. {ha_mcp_dev-9.2.0.dev3467 → ha_mcp_dev-9.2.0.dev3469}/src/ha_mcp/tools/registry.py +0 -0
  741. {ha_mcp_dev-9.2.0.dev3467 → ha_mcp_dev-9.2.0.dev3469}/src/ha_mcp/tools/renamed_tool_middleware.py +0 -0
  742. {ha_mcp_dev-9.2.0.dev3467 → ha_mcp_dev-9.2.0.dev3469}/src/ha_mcp/tools/resource_codec.py +0 -0
  743. {ha_mcp_dev-9.2.0.dev3467 → ha_mcp_dev-9.2.0.dev3469}/src/ha_mcp/tools/resource_patch.py +0 -0
  744. {ha_mcp_dev-9.2.0.dev3467 → ha_mcp_dev-9.2.0.dev3469}/src/ha_mcp/tools/response_helpers.py +0 -0
  745. {ha_mcp_dev-9.2.0.dev3467 → ha_mcp_dev-9.2.0.dev3469}/src/ha_mcp/tools/scene_discovery.py +0 -0
  746. {ha_mcp_dev-9.2.0.dev3467 → ha_mcp_dev-9.2.0.dev3469}/src/ha_mcp/tools/search/__init__.py +0 -0
  747. {ha_mcp_dev-9.2.0.dev3467 → ha_mcp_dev-9.2.0.dev3469}/src/ha_mcp/tools/search/base.py +0 -0
  748. {ha_mcp_dev-9.2.0.dev3467 → ha_mcp_dev-9.2.0.dev3469}/src/ha_mcp/tools/search/component.py +0 -0
  749. {ha_mcp_dev-9.2.0.dev3467 → ha_mcp_dev-9.2.0.dev3469}/src/ha_mcp/tools/search/entities.py +0 -0
  750. {ha_mcp_dev-9.2.0.dev3467 → ha_mcp_dev-9.2.0.dev3469}/src/ha_mcp/tools/search/legacy.py +0 -0
  751. {ha_mcp_dev-9.2.0.dev3467 → ha_mcp_dev-9.2.0.dev3469}/src/ha_mcp/tools/search/modes.py +0 -0
  752. {ha_mcp_dev-9.2.0.dev3467 → ha_mcp_dev-9.2.0.dev3469}/src/ha_mcp/tools/search/overview.py +0 -0
  753. {ha_mcp_dev-9.2.0.dev3467 → ha_mcp_dev-9.2.0.dev3469}/src/ha_mcp/tools/search/response.py +0 -0
  754. {ha_mcp_dev-9.2.0.dev3467 → ha_mcp_dev-9.2.0.dev3469}/src/ha_mcp/tools/search/state.py +0 -0
  755. {ha_mcp_dev-9.2.0.dev3467 → ha_mcp_dev-9.2.0.dev3469}/src/ha_mcp/tools/server_version.py +0 -0
  756. {ha_mcp_dev-9.2.0.dev3467 → ha_mcp_dev-9.2.0.dev3469}/src/ha_mcp/tools/smart_search/__init__.py +0 -0
  757. {ha_mcp_dev-9.2.0.dev3467 → ha_mcp_dev-9.2.0.dev3469}/src/ha_mcp/tools/smart_search/_base.py +0 -0
  758. {ha_mcp_dev-9.2.0.dev3467 → ha_mcp_dev-9.2.0.dev3469}/src/ha_mcp/tools/smart_search/_config.py +0 -0
  759. {ha_mcp_dev-9.2.0.dev3467 → ha_mcp_dev-9.2.0.dev3469}/src/ha_mcp/tools/smart_search/_deep.py +0 -0
  760. {ha_mcp_dev-9.2.0.dev3467 → ha_mcp_dev-9.2.0.dev3469}/src/ha_mcp/tools/smart_search/_entities.py +0 -0
  761. {ha_mcp_dev-9.2.0.dev3467 → ha_mcp_dev-9.2.0.dev3469}/src/ha_mcp/tools/smart_search/_fetch.py +0 -0
  762. {ha_mcp_dev-9.2.0.dev3467 → ha_mcp_dev-9.2.0.dev3469}/src/ha_mcp/tools/smart_search/_flow_helpers.py +0 -0
  763. {ha_mcp_dev-9.2.0.dev3467 → ha_mcp_dev-9.2.0.dev3469}/src/ha_mcp/tools/smart_search/_graph.py +0 -0
  764. {ha_mcp_dev-9.2.0.dev3467 → ha_mcp_dev-9.2.0.dev3469}/src/ha_mcp/tools/smart_search/_overview.py +0 -0
  765. {ha_mcp_dev-9.2.0.dev3467 → ha_mcp_dev-9.2.0.dev3469}/src/ha_mcp/tools/smart_search/_scenes.py +0 -0
  766. {ha_mcp_dev-9.2.0.dev3467 → ha_mcp_dev-9.2.0.dev3469}/src/ha_mcp/tools/smart_search/_scoring.py +0 -0
  767. {ha_mcp_dev-9.2.0.dev3467 → ha_mcp_dev-9.2.0.dev3469}/src/ha_mcp/tools/statistics_calendar.py +0 -0
  768. {ha_mcp_dev-9.2.0.dev3467 → ha_mcp_dev-9.2.0.dev3469}/src/ha_mcp/tools/statistics_helpers.py +0 -0
  769. {ha_mcp_dev-9.2.0.dev3467 → ha_mcp_dev-9.2.0.dev3469}/src/ha_mcp/tools/statistics_resets.py +0 -0
  770. {ha_mcp_dev-9.2.0.dev3467 → ha_mcp_dev-9.2.0.dev3469}/src/ha_mcp/tools/system_restart.py +0 -0
  771. {ha_mcp_dev-9.2.0.dev3467 → ha_mcp_dev-9.2.0.dev3469}/src/ha_mcp/tools/tool_hints.py +0 -0
  772. {ha_mcp_dev-9.2.0.dev3467 → ha_mcp_dev-9.2.0.dev3469}/src/ha_mcp/tools/tool_search_hint_middleware.py +0 -0
  773. {ha_mcp_dev-9.2.0.dev3467 → ha_mcp_dev-9.2.0.dev3469}/src/ha_mcp/tools/tools_addons.py +0 -0
  774. {ha_mcp_dev-9.2.0.dev3467 → ha_mcp_dev-9.2.0.dev3469}/src/ha_mcp/tools/tools_areas.py +0 -0
  775. {ha_mcp_dev-9.2.0.dev3467 → ha_mcp_dev-9.2.0.dev3469}/src/ha_mcp/tools/tools_assist_pipeline.py +0 -0
  776. {ha_mcp_dev-9.2.0.dev3467 → ha_mcp_dev-9.2.0.dev3469}/src/ha_mcp/tools/tools_blueprints.py +0 -0
  777. {ha_mcp_dev-9.2.0.dev3467 → ha_mcp_dev-9.2.0.dev3469}/src/ha_mcp/tools/tools_bug_report.py +0 -0
  778. {ha_mcp_dev-9.2.0.dev3467 → ha_mcp_dev-9.2.0.dev3469}/src/ha_mcp/tools/tools_calendar.py +0 -0
  779. {ha_mcp_dev-9.2.0.dev3467 → ha_mcp_dev-9.2.0.dev3469}/src/ha_mcp/tools/tools_camera.py +0 -0
  780. {ha_mcp_dev-9.2.0.dev3467 → ha_mcp_dev-9.2.0.dev3469}/src/ha_mcp/tools/tools_categories.py +0 -0
  781. {ha_mcp_dev-9.2.0.dev3467 → ha_mcp_dev-9.2.0.dev3469}/src/ha_mcp/tools/tools_code.py +0 -0
  782. {ha_mcp_dev-9.2.0.dev3467 → ha_mcp_dev-9.2.0.dev3469}/src/ha_mcp/tools/tools_config_automations.py +0 -0
  783. {ha_mcp_dev-9.2.0.dev3467 → ha_mcp_dev-9.2.0.dev3469}/src/ha_mcp/tools/tools_config_dashboards.py +0 -0
  784. {ha_mcp_dev-9.2.0.dev3467 → ha_mcp_dev-9.2.0.dev3469}/src/ha_mcp/tools/tools_config_helpers.py +0 -0
  785. {ha_mcp_dev-9.2.0.dev3467 → ha_mcp_dev-9.2.0.dev3469}/src/ha_mcp/tools/tools_config_scenes.py +0 -0
  786. {ha_mcp_dev-9.2.0.dev3467 → ha_mcp_dev-9.2.0.dev3469}/src/ha_mcp/tools/tools_config_scripts.py +0 -0
  787. {ha_mcp_dev-9.2.0.dev3467 → ha_mcp_dev-9.2.0.dev3469}/src/ha_mcp/tools/tools_dashboard_screenshot.py +0 -0
  788. {ha_mcp_dev-9.2.0.dev3467 → ha_mcp_dev-9.2.0.dev3469}/src/ha_mcp/tools/tools_dev.py +0 -0
  789. {ha_mcp_dev-9.2.0.dev3467 → ha_mcp_dev-9.2.0.dev3469}/src/ha_mcp/tools/tools_energy.py +0 -0
  790. {ha_mcp_dev-9.2.0.dev3467 → ha_mcp_dev-9.2.0.dev3469}/src/ha_mcp/tools/tools_entities.py +0 -0
  791. {ha_mcp_dev-9.2.0.dev3467 → ha_mcp_dev-9.2.0.dev3469}/src/ha_mcp/tools/tools_filesystem.py +0 -0
  792. {ha_mcp_dev-9.2.0.dev3467 → ha_mcp_dev-9.2.0.dev3469}/src/ha_mcp/tools/tools_groups.py +0 -0
  793. {ha_mcp_dev-9.2.0.dev3467 → ha_mcp_dev-9.2.0.dev3469}/src/ha_mcp/tools/tools_hacs.py +0 -0
  794. {ha_mcp_dev-9.2.0.dev3467 → ha_mcp_dev-9.2.0.dev3469}/src/ha_mcp/tools/tools_history.py +0 -0
  795. {ha_mcp_dev-9.2.0.dev3467 → ha_mcp_dev-9.2.0.dev3469}/src/ha_mcp/tools/tools_integrations.py +0 -0
  796. {ha_mcp_dev-9.2.0.dev3467 → ha_mcp_dev-9.2.0.dev3469}/src/ha_mcp/tools/tools_labels.py +0 -0
  797. {ha_mcp_dev-9.2.0.dev3467 → ha_mcp_dev-9.2.0.dev3469}/src/ha_mcp/tools/tools_logs.py +0 -0
  798. {ha_mcp_dev-9.2.0.dev3467 → ha_mcp_dev-9.2.0.dev3469}/src/ha_mcp/tools/tools_radio.py +0 -0
  799. {ha_mcp_dev-9.2.0.dev3467 → ha_mcp_dev-9.2.0.dev3469}/src/ha_mcp/tools/tools_registry.py +0 -0
  800. {ha_mcp_dev-9.2.0.dev3467 → ha_mcp_dev-9.2.0.dev3469}/src/ha_mcp/tools/tools_resources.py +0 -0
  801. {ha_mcp_dev-9.2.0.dev3467 → ha_mcp_dev-9.2.0.dev3469}/src/ha_mcp/tools/tools_search.py +0 -0
  802. {ha_mcp_dev-9.2.0.dev3467 → ha_mcp_dev-9.2.0.dev3469}/src/ha_mcp/tools/tools_security_policy.py +0 -0
  803. {ha_mcp_dev-9.2.0.dev3467 → ha_mcp_dev-9.2.0.dev3469}/src/ha_mcp/tools/tools_service.py +0 -0
  804. {ha_mcp_dev-9.2.0.dev3467 → ha_mcp_dev-9.2.0.dev3469}/src/ha_mcp/tools/tools_services.py +0 -0
  805. {ha_mcp_dev-9.2.0.dev3467 → ha_mcp_dev-9.2.0.dev3469}/src/ha_mcp/tools/tools_system.py +0 -0
  806. {ha_mcp_dev-9.2.0.dev3467 → ha_mcp_dev-9.2.0.dev3469}/src/ha_mcp/tools/tools_themes.py +0 -0
  807. {ha_mcp_dev-9.2.0.dev3467 → ha_mcp_dev-9.2.0.dev3469}/src/ha_mcp/tools/tools_todo.py +0 -0
  808. {ha_mcp_dev-9.2.0.dev3467 → ha_mcp_dev-9.2.0.dev3469}/src/ha_mcp/tools/tools_traces.py +0 -0
  809. {ha_mcp_dev-9.2.0.dev3467 → ha_mcp_dev-9.2.0.dev3469}/src/ha_mcp/tools/tools_updates.py +0 -0
  810. {ha_mcp_dev-9.2.0.dev3467 → ha_mcp_dev-9.2.0.dev3469}/src/ha_mcp/tools/tools_utility.py +0 -0
  811. {ha_mcp_dev-9.2.0.dev3467 → ha_mcp_dev-9.2.0.dev3469}/src/ha_mcp/tools/tools_voice_assistant.py +0 -0
  812. {ha_mcp_dev-9.2.0.dev3467 → ha_mcp_dev-9.2.0.dev3469}/src/ha_mcp/tools/tools_yaml_config.py +0 -0
  813. {ha_mcp_dev-9.2.0.dev3467 → ha_mcp_dev-9.2.0.dev3469}/src/ha_mcp/tools/tools_yaml_read.py +0 -0
  814. {ha_mcp_dev-9.2.0.dev3467 → ha_mcp_dev-9.2.0.dev3469}/src/ha_mcp/tools/tools_zones.py +0 -0
  815. {ha_mcp_dev-9.2.0.dev3467 → ha_mcp_dev-9.2.0.dev3469}/src/ha_mcp/tools/update_categories.py +0 -0
  816. {ha_mcp_dev-9.2.0.dev3467 → ha_mcp_dev-9.2.0.dev3469}/src/ha_mcp/tools/util_helpers.py +0 -0
  817. {ha_mcp_dev-9.2.0.dev3467 → ha_mcp_dev-9.2.0.dev3469}/src/ha_mcp/tools/validation_middleware.py +0 -0
  818. {ha_mcp_dev-9.2.0.dev3467 → ha_mcp_dev-9.2.0.dev3469}/src/ha_mcp/tools/ws_waiters.py +0 -0
  819. {ha_mcp_dev-9.2.0.dev3467 → ha_mcp_dev-9.2.0.dev3469}/src/ha_mcp/tools/yaml_extra_keys.py +0 -0
  820. {ha_mcp_dev-9.2.0.dev3467 → ha_mcp_dev-9.2.0.dev3469}/src/ha_mcp/transforms/__init__.py +0 -0
  821. {ha_mcp_dev-9.2.0.dev3467 → ha_mcp_dev-9.2.0.dev3469}/src/ha_mcp/transforms/categorized_search.py +0 -0
  822. {ha_mcp_dev-9.2.0.dev3467 → ha_mcp_dev-9.2.0.dev3469}/src/ha_mcp/transforms/compact_params.py +0 -0
  823. {ha_mcp_dev-9.2.0.dev3467 → ha_mcp_dev-9.2.0.dev3469}/src/ha_mcp/transforms/component_helpers.py +0 -0
  824. {ha_mcp_dev-9.2.0.dev3467 → ha_mcp_dev-9.2.0.dev3469}/src/ha_mcp/transforms/component_search.py +0 -0
  825. {ha_mcp_dev-9.2.0.dev3467 → ha_mcp_dev-9.2.0.dev3469}/src/ha_mcp/transforms/lite_docstrings.py +0 -0
  826. {ha_mcp_dev-9.2.0.dev3467 → ha_mcp_dev-9.2.0.dev3469}/src/ha_mcp/transforms/write_tool_note.py +0 -0
  827. {ha_mcp_dev-9.2.0.dev3467 → ha_mcp_dev-9.2.0.dev3469}/src/ha_mcp/transport_security.py +0 -0
  828. {ha_mcp_dev-9.2.0.dev3467 → ha_mcp_dev-9.2.0.dev3469}/src/ha_mcp/update_check.py +0 -0
  829. {ha_mcp_dev-9.2.0.dev3467 → ha_mcp_dev-9.2.0.dev3469}/src/ha_mcp/utils/__init__.py +0 -0
  830. {ha_mcp_dev-9.2.0.dev3467 → ha_mcp_dev-9.2.0.dev3469}/src/ha_mcp/utils/config_hash.py +0 -0
  831. {ha_mcp_dev-9.2.0.dev3467 → ha_mcp_dev-9.2.0.dev3469}/src/ha_mcp/utils/config_write_lock.py +0 -0
  832. {ha_mcp_dev-9.2.0.dev3467 → ha_mcp_dev-9.2.0.dev3469}/src/ha_mcp/utils/dashboard_patch.py +0 -0
  833. {ha_mcp_dev-9.2.0.dev3467 → ha_mcp_dev-9.2.0.dev3469}/src/ha_mcp/utils/data_paths.py +0 -0
  834. {ha_mcp_dev-9.2.0.dev3467 → ha_mcp_dev-9.2.0.dev3469}/src/ha_mcp/utils/device_registry_semantics.py +0 -0
  835. {ha_mcp_dev-9.2.0.dev3467 → ha_mcp_dev-9.2.0.dev3469}/src/ha_mcp/utils/domain_handlers.py +0 -0
  836. {ha_mcp_dev-9.2.0.dev3467 → ha_mcp_dev-9.2.0.dev3469}/src/ha_mcp/utils/entity_membership.py +0 -0
  837. {ha_mcp_dev-9.2.0.dev3467 → ha_mcp_dev-9.2.0.dev3469}/src/ha_mcp/utils/fuzzy_search.py +0 -0
  838. {ha_mcp_dev-9.2.0.dev3467 → ha_mcp_dev-9.2.0.dev3469}/src/ha_mcp/utils/kill_signal_diagnostics.py +0 -0
  839. {ha_mcp_dev-9.2.0.dev3467 → ha_mcp_dev-9.2.0.dev3469}/src/ha_mcp/utils/mcp_client_host.py +0 -0
  840. {ha_mcp_dev-9.2.0.dev3467 → ha_mcp_dev-9.2.0.dev3469}/src/ha_mcp/utils/operation_manager.py +0 -0
  841. {ha_mcp_dev-9.2.0.dev3467 → ha_mcp_dev-9.2.0.dev3469}/src/ha_mcp/utils/python_sandbox.py +0 -0
  842. {ha_mcp_dev-9.2.0.dev3467 → ha_mcp_dev-9.2.0.dev3469}/src/ha_mcp/utils/registry_update_lock.py +0 -0
  843. {ha_mcp_dev-9.2.0.dev3467 → ha_mcp_dev-9.2.0.dev3469}/src/ha_mcp/utils/skill_loader.py +0 -0
  844. {ha_mcp_dev-9.2.0.dev3467 → ha_mcp_dev-9.2.0.dev3469}/src/ha_mcp/utils/usage_logger.py +0 -0
  845. {ha_mcp_dev-9.2.0.dev3467 → ha_mcp_dev-9.2.0.dev3469}/src/ha_mcp/visibility/__init__.py +0 -0
  846. {ha_mcp_dev-9.2.0.dev3467 → ha_mcp_dev-9.2.0.dev3469}/src/ha_mcp/visibility/config_files.py +0 -0
  847. {ha_mcp_dev-9.2.0.dev3467 → ha_mcp_dev-9.2.0.dev3469}/src/ha_mcp/visibility/enforcement.py +0 -0
  848. {ha_mcp_dev-9.2.0.dev3467 → ha_mcp_dev-9.2.0.dev3469}/src/ha_mcp/visibility/identifier_aliases.py +0 -0
  849. {ha_mcp_dev-9.2.0.dev3467 → ha_mcp_dev-9.2.0.dev3469}/src/ha_mcp/visibility/model.py +0 -0
  850. {ha_mcp_dev-9.2.0.dev3467 → ha_mcp_dev-9.2.0.dev3469}/src/ha_mcp/visibility/persistence.py +0 -0
  851. {ha_mcp_dev-9.2.0.dev3467 → ha_mcp_dev-9.2.0.dev3469}/src/ha_mcp/visibility/resolver.py +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: ha-mcp-dev
3
- Version: 9.2.0.dev3467
3
+ Version: 9.2.0.dev3469
4
4
  Summary: Configure and automate Home Assistant with Claude, ChatGPT, and other AI assistants.
5
5
  Keywords: mcp,home-assistant,ai,automation,smart-home
6
6
  Author: Julien
@@ -4,7 +4,7 @@ build-backend = "uv_build"
4
4
 
5
5
  [project]
6
6
  name = "ha-mcp-dev"
7
- version = "9.2.0.dev3467"
7
+ version = "9.2.0.dev3469"
8
8
  description = "Configure and automate Home Assistant with Claude, ChatGPT, and other AI assistants."
9
9
  readme = "README.md"
10
10
  requires-python = ">=3.13,<3.15"
@@ -4,7 +4,7 @@ build-backend = "uv_build"
4
4
 
5
5
  [project]
6
6
  name = "ha-mcp-dev"
7
- version = "9.2.0.dev3467"
7
+ version = "9.2.0.dev3469"
8
8
  description = "Configure and automate Home Assistant with Claude, ChatGPT, and other AI assistants."
9
9
  readme = "README.md"
10
10
  # Upper bound widened to <3.15 so the package installs on Home Assistant's
@@ -5,7 +5,7 @@
5
5
  # scripts/vendor_fastmcp.py (fastmcp-slim, mcp, mcp-types) before committing
6
6
  # a bump; tests/src/unit/test_vendored_*.py reject stale or altered trees.
7
7
  # For a manual pin change, run the same generator and commit its outputs.
8
- websockets==17.2
8
+ websockets==17.4
9
9
  fastmcp-slim==4.1.6
10
10
  mcp==2.3.0
11
11
  mcp-types==2.3.0
@@ -1,25 +1,25 @@
1
1
  3d6a0c050d8bec52fabad502e45fb25bd02bcadbd70dea34d447b6a0ff4e6da8 LICENSE
2
- a6c00001a575dfb862e0d167e507325c4639b0c87ee7a337b0c734422727a404 VENDORED
3
- ce6042263ec421ae99244403a787487739dfcc025403c756e35fa3ec49be4034 __init__.py
2
+ 85472f7f77c3ac0108711ab756774070b0218425f9e9f3d8b5ed26746ad658c1 VENDORED
3
+ 96901d1c200b5df20d9b2443b4ee68a51b69155ca13fbbab9b18a4ca3e3fbad1 __init__.py
4
4
  c2ee4ddb093c9af060cafaf68219907f8a6b7b301ed3f8bea75db7555adec987 __main__.py
5
5
  e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855 asyncio/__init__.py
6
6
  581192ec6ae3781ac4968b6ec38e64502ff1acfe38f72ba2a7d4c2066d7216b1 asyncio/client.py
7
- f2eb6ad56371fab33839a7ad2694e4b5610bea839bf92ae1f76e6d0a63f1e346 asyncio/connection.py
8
- bc13ddf7722e2f72c4d0e4b179a202223cefca886de7792687efd9868f9b1b35 asyncio/messages.py
7
+ 115ae298e176d5fe06132fee86147ccd98466ff0c7956e2305166ac8e3dcb06e asyncio/connection.py
8
+ ab9bc4bd8b8c9dbd45ffc56fd8fa6b9bc979d73dd4727329e417858ad1bfa6e6 asyncio/messages.py
9
9
  2453543482e4001e4ff5fb7a3cba2035a66aea9f765b3d7dbc89717f1d434e58 asyncio/router.py
10
- f5aab916ff9bf604c77c8635879e80e223489ba05eaf921002471d5421316373 asyncio/server.py
10
+ df978af9c191841999655480f71d062bc4c6b92e0095ba3d5b6503ec7aff46d2 asyncio/server.py
11
11
  53f2709a7e7d65143a11e7293af322cd0086fd96c0be051fd6293b85a6510b77 auth.py
12
12
  7d87f462aad6231fe224303e45675cce1e6f8cef69e99c59be613beb56d4420d cli.py
13
13
  eaf4e66220a92297bc794adc98494e63ea0aae21fa394c72a7e846a535af3cc7 client.py
14
14
  38b88c56435ddb9ffceac07c43b0ab0b00685f2f6703438281d80b440f16511f connection.py
15
15
  5c64efbe015d6527af355fd3ebe2e8f83c66d951f125c80a9789750cd43a7d4f datastructures.py
16
- b69d3f132a907ddec260d3879b102278e1fc11df4f49016dd7c7be0ae45e4ce6 exceptions.py
16
+ 18783b89d7eb01220a2236152ab86321fa6ddb1deed351e2b6d22ef35e33124e exceptions.py
17
17
  42466cc5a255965552a75ba1743e6e3c689b75bc7fd3dd46ad555f4b92d7729c extensions/__init__.py
18
18
  24d7f2939e370bb56e3c7d103a86e2a8aa06af38c920b8deeaccf920bbce3e5e extensions/base.py
19
19
  d97d5fdd3e47b8e4176d89e61d7f8c937ab5b76d67f94fc585f8d2ea81c189bc extensions/permessage_deflate.py
20
20
  62cb106e8c23dbadf19bb5e74006a18dc4650381ddcb5592058b61b1fc7c10fb frames.py
21
- c909cf963559c15d7f57ea4e49128d2c6feef36ef0142d61ef671c8a88dc43c3 headers.py
22
- b4b56e36f3400f0b7c775ba2e4a305299099313b49e82a9766f7a880b68f6dfd http11.py
21
+ c7f645f6743ec5190c351e78072373cf1f06b11812ac97e8093a7b7f165c9912 headers.py
22
+ da6463e1f27f1e37b2c517d4b607f94ed917c29fcc874a1640b38e6496249d07 http11.py
23
23
  4ff07d4d4987a1c78a310f8f36985d410007d97771031c1240d790120a882e41 imports.py
24
24
  c10e7344810d1944bfe5e28d017f42444ef1d53c0a6a92a29ab40515637d4b1b legacy/__init__.py
25
25
  0dc41c09279578ff7725c1fcbc5584d072092fe5fe7f6dcb6740ec2696afd52a legacy/auth.py
@@ -28,28 +28,28 @@ e6826ead47333dd7578bc45d7b97c0da10f7578a67bfffd9eb8a514573fa1c1b legacy/client.
28
28
  6f4c0cc7cdd74c85d56683bad299770226ca1db4250dbeeb040ca114491a3029 legacy/framing.py
29
29
  d8dcebe40376c6f0c2e4474d3fe901de539cac069436562e8fffa1aff8efee93 legacy/handshake.py
30
30
  e51bb9a87d5dc09f440c0879f82089688eca021ae4e63edf554ffadf2e4a7de2 legacy/http.py
31
- dcc4e1d7ed24b564ad4425f4d252d5ebd80bcc5ffd8009fc60b144fdb664cd8c legacy/protocol.py
31
+ 544de39900bdd9e18df03beb8976e65bfa126b45cbb1bcad7c2d804ae4f61b74 legacy/protocol.py
32
32
  8529389c54ec23778c45bbb925c2388177a2f546f0d3b452ad28ed2f878cda07 legacy/server.py
33
- dc7b8204c2d324cc69f491dde49301aad4c5f384ac636f62b871f4cb39ee0ff4 protocol.py
33
+ 356dcca7cf7a459bccc7c6bfda3a67135eff3c609506b6cd137cf32f4f8cbc5e protocol.py
34
34
  83276f75aa0972dc7219166e91dd6f2a29aec65e046214f579ef5a3c7aa39193 proxy.py
35
35
  e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855 py.typed
36
36
  ee41092f540414ef294c1f74c0fe1f51b9336060dc6e44daee34ef762499b509 server.py
37
37
  ac9ac33522fd872dc42587353c51e3631e2b75dd6f10b0ae6b40b074588737ff streams.py
38
38
  e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855 sync/__init__.py
39
39
  0265d98a4c558359b7f727e5d4ebe6f4a637c5a4dfcd7797350dfacaf60c1ea4 sync/client.py
40
- dd9c4c859f4fcc8ccaccd168f02efc24b2567e39e1d10ccf78c93a87f94fe044 sync/connection.py
41
- abc2b5bf176ba959356ef9f7cd6d49c74f5395a908592c9870e1c2eee7854269 sync/messages.py
40
+ c03a5e12fc879efc34f0c6fa4747915eaae71767649d46ae283ae2cf1156a878 sync/connection.py
41
+ ddbcb6a00489bb571fe518aec06afd5d880a1e7db54d40ef548e18897fa6416d sync/messages.py
42
42
  c0e180bc66cac17caa98d1050425993f77da1efcbfd8c28deced977842fc9c62 sync/router.py
43
- a316c9f5bb35f1264e636b9256b4e176d2cef06386c88279838c8541cabe5858 sync/server.py
43
+ fb98217246d4384723942292cd55668f1ccf9e990f48b6f2e97c52926ea09f23 sync/server.py
44
44
  4ed5be9dc605bc99a2496da03bcea7804d8156c9e705d2fee07f3c91634361b8 sync/utils.py
45
45
  e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855 trio/__init__.py
46
46
  951e2e225679024d6027c09b720f371b7a773db90ed3400c2500ae9f9d8505b6 trio/client.py
47
- d571c39156caddefccf75a4e186798793d286b350ce4d8ea1cea30d0590dae06 trio/connection.py
48
- 4a66c0d64fe58c41ae10764d2741cf0def3ea231ed313897191db41eb3c9b8a9 trio/messages.py
47
+ d0034e74663729fb87f77a678b77517e0010a6666dcdb6417215e2481512ef6e trio/connection.py
48
+ 94ef1e56330c8b734e95988302fde66fd1eeef86d9577667d5b18811d819fa80 trio/messages.py
49
49
  a992fdfb8e268bd48e393194dc22c13ee68237369f406a99f9f265f61569bfeb trio/router.py
50
50
  0275d2a1425c780c854caa937060db6a3ac406ddaf9033289305af5925d4bb7f trio/server.py
51
51
  035d8d6143ce8d06a21aeb1a938de85b33c8702c618a429390024b5ed649bdc6 trio/utils.py
52
52
  72ef3d9ff5d05e7a3f83da8fa459a12db6f39c4f8c2956b3500a30b36bb926a5 typing.py
53
53
  4cd1600ef343a207c44b0fbbf17f140e487da49174dda7be76e8eda7113c04eb uri.py
54
54
  59db6c876a908872eb5d40449e9dcb6ad30b253663076084adb78e16fadd5ef1 utils.py
55
- 15757e2221681ad967e40fe2e5a612a46bdb4c11a25948114aca2ba4dbfcde1a version.py
55
+ 7a71c96a059a913dd8e0b3d1e8b8ec9366c80f879b20677f306339d967391c4c version.py
@@ -1,2 +1,2 @@
1
- websockets==17.2
1
+ websockets==17.4
2
2
  Vendored by scripts/vendor_websockets.py — do not edit by hand.
@@ -60,6 +60,7 @@ __all__ = [
60
60
  "RequestLineTooLong",
61
61
  "SecurityError",
62
62
  "StatusLineTooLong",
63
+ "TooManyFragments",
63
64
  "TooManyHeaders",
64
65
  "WebSocketException",
65
66
  # .frames
@@ -131,6 +132,7 @@ if TYPE_CHECKING:
131
132
  RequestLineTooLong,
132
133
  SecurityError,
133
134
  StatusLineTooLong,
135
+ TooManyFragments,
134
136
  TooManyHeaders,
135
137
  WebSocketException,
136
138
  )
@@ -203,6 +205,7 @@ else:
203
205
  "RequestLineTooLong": ".exceptions",
204
206
  "SecurityError": ".exceptions",
205
207
  "StatusLineTooLong": ".exceptions",
208
+ "TooManyFragments": ".exceptions",
206
209
  "TooManyHeaders": ".exceptions",
207
210
  "WebSocketException": ".exceptions",
208
211
  # .frames
@@ -18,6 +18,7 @@ from ..exceptions import (
18
18
  ConnectionClosed,
19
19
  ConnectionClosedOK,
20
20
  ProtocolError,
21
+ TooManyFragments,
21
22
  )
22
23
  from ..frames import DATA_OPCODES, PONG, CloseCode, Frame
23
24
  from ..http11 import Request, Response
@@ -115,9 +116,9 @@ class Connection(asyncio.Protocol):
115
116
  # Task that sends keepalive pings. None when ping_interval is None.
116
117
  self.keepalive_task: asyncio.Task[None] | None = None
117
118
 
118
- # Exception raised while reading from the connection, to be chained to
119
- # ConnectionClosed in order to show why the TCP connection dropped.
120
- self.recv_exc: BaseException | None = None
119
+ # Exception that caused the connection to drop, to chain to
120
+ # ConnectionClosed.
121
+ self.connection_exc: BaseException | None = None
121
122
 
122
123
  # Completed when the TCP connection is closed and the WebSocket
123
124
  # connection state becomes CLOSED.
@@ -304,7 +305,12 @@ class Connection(asyncio.Protocol):
304
305
  "cannot call recv while another coroutine "
305
306
  "is already running recv or recv_streaming"
306
307
  ) from None
308
+ except TooManyFragments as exc:
309
+ self.set_connection_exc(exc)
310
+ async with self.send_context():
311
+ self.protocol.fail(CloseCode.MESSAGE_TOO_BIG, "too many fragments")
307
312
  except UnicodeDecodeError as exc:
313
+ self.set_connection_exc(exc)
308
314
  async with self.send_context():
309
315
  self.protocol.fail(
310
316
  CloseCode.INVALID_DATA,
@@ -314,7 +320,7 @@ class Connection(asyncio.Protocol):
314
320
 
315
321
  # Wait for the protocol state to be CLOSED before accessing close_exc.
316
322
  await asyncio.shield(self.connection_lost_waiter)
317
- raise self.protocol.close_exc from self.recv_exc
323
+ raise self.close_exc
318
324
 
319
325
  @overload
320
326
  def recv_streaming(self, decode: Literal[True]) -> AsyncIterator[str]: ...
@@ -382,6 +388,7 @@ class Connection(asyncio.Protocol):
382
388
  "is already running recv or recv_streaming"
383
389
  ) from None
384
390
  except UnicodeDecodeError as exc:
391
+ self.set_connection_exc(exc)
385
392
  async with self.send_context():
386
393
  self.protocol.fail(
387
394
  CloseCode.INVALID_DATA,
@@ -391,7 +398,7 @@ class Connection(asyncio.Protocol):
391
398
 
392
399
  # Wait for the protocol state to be CLOSED before accessing close_exc.
393
400
  await asyncio.shield(self.connection_lost_waiter)
394
- raise self.protocol.close_exc from self.recv_exc
401
+ raise self.close_exc
395
402
 
396
403
  async def send(
397
404
  self,
@@ -881,9 +888,6 @@ class Connection(asyncio.Protocol):
881
888
  wait_for_close = False
882
889
  # Should we close the transport and raise ConnectionClosed?
883
890
  raise_close_exc = False
884
- # What exception should we chain ConnectionClosed to?
885
- original_exc: BaseException | None = None
886
-
887
891
  if self.protocol.state is expected_state:
888
892
  # Let the caller interact with the protocol.
889
893
  try:
@@ -898,7 +902,7 @@ class Connection(asyncio.Protocol):
898
902
  # connection and raise the exception to the caller.
899
903
  wait_for_close = False
900
904
  raise_close_exc = True
901
- original_exc = exc
905
+ self.set_connection_exc(exc)
902
906
  else:
903
907
  # Check if the connection is expected to close soon.
904
908
  if self.protocol.close_expected():
@@ -923,7 +927,7 @@ class Connection(asyncio.Protocol):
923
927
  # other exceptions would be treated identically.
924
928
  wait_for_close = False
925
929
  raise_close_exc = True
926
- original_exc = exc
930
+ self.set_connection_exc(exc)
927
931
 
928
932
  else: # self.protocol.state is not expected_state
929
933
  # Minor layering violation: we assume that the connection
@@ -942,14 +946,12 @@ class Connection(asyncio.Protocol):
942
946
  async with asyncio.timeout_at(self.close_deadline):
943
947
  await asyncio.shield(self.connection_lost_waiter)
944
948
  except TimeoutError:
945
- # There's no risk of overwriting another error because
946
- # original_exc is never set when wait_for_close is True.
947
- assert original_exc is None
948
- original_exc = TimeoutError("timed out while closing connection")
949
- # Set recv_exc before closing the transport in order to get
950
- # proper exception reporting.
949
+ # Set connection_exc before closing the transport in order to
950
+ # get proper exception reporting.
951
951
  raise_close_exc = True
952
- self.set_recv_exc(original_exc)
952
+ self.set_connection_exc(
953
+ TimeoutError("timed out while closing connection")
954
+ )
953
955
 
954
956
  # If an error occurred, close the transport to terminate the connection and
955
957
  # raise an exception.
@@ -957,7 +959,7 @@ class Connection(asyncio.Protocol):
957
959
  self.transport.abort()
958
960
  # Wait for the protocol state to be CLOSED before accessing close_exc.
959
961
  await asyncio.shield(self.connection_lost_waiter)
960
- raise self.protocol.close_exc from original_exc
962
+ raise self.close_exc
961
963
 
962
964
  def send_data(self) -> None:
963
965
  """
@@ -984,15 +986,20 @@ class Connection(asyncio.Protocol):
984
986
  self.logger.debug("x closing TCP connection")
985
987
  self.transport.close()
986
988
 
987
- def set_recv_exc(self, exc: BaseException | None) -> None:
988
- """
989
- Set recv_exc, if not set yet.
989
+ @property
990
+ def close_exc(self) -> ConnectionClosed:
991
+ exc = self.protocol.close_exc
992
+ if self.connection_exc is not None:
993
+ exc.__cause__ = self.connection_exc
994
+ return exc
990
995
 
991
- This method must be called only from connection callbacks.
996
+ def set_connection_exc(self, exc: BaseException | None) -> None:
997
+ """
998
+ Set connection_exc, if not set yet.
992
999
 
993
1000
  """
994
- if self.recv_exc is None:
995
- self.recv_exc = exc
1001
+ if self.connection_exc is None:
1002
+ self.connection_exc = exc
996
1003
 
997
1004
  # asyncio.Protocol methods
998
1005
 
@@ -1018,7 +1025,7 @@ class Connection(asyncio.Protocol):
1018
1025
  self.protocol.receive_eof()
1019
1026
  assert self.protocol.state is CLOSED
1020
1027
 
1021
- self.set_recv_exc(exc)
1028
+ self.set_connection_exc(exc)
1022
1029
 
1023
1030
  # Abort recv() and pending pings with a ConnectionClosed exception.
1024
1031
  self.recv_messages.close()
@@ -1092,7 +1099,7 @@ class Connection(asyncio.Protocol):
1092
1099
  except Exception as exc:
1093
1100
  if self.debug:
1094
1101
  self.logger.debug("! error while sending data", exc_info=True)
1095
- self.set_recv_exc(exc)
1102
+ self.set_connection_exc(exc)
1096
1103
 
1097
1104
  # If needed, set the close deadline based on the close timeout.
1098
1105
  if self.protocol.close_expected():
@@ -3,10 +3,11 @@ from __future__ import annotations
3
3
  import asyncio
4
4
  import codecs
5
5
  import collections
6
- from collections.abc import AsyncIterator, Iterable
6
+ import os
7
+ from collections.abc import AsyncIterator, Sequence
7
8
  from typing import Any, Callable, Generic, Literal, TypeVar, overload
8
9
 
9
- from ..exceptions import ConcurrencyError
10
+ from ..exceptions import ConcurrencyError, TooManyFragments
10
11
  from ..frames import BINARY, CONT, TEXT, Frame
11
12
  from ..typing import Data
12
13
 
@@ -15,6 +16,8 @@ __all__ = ["Assembler"]
15
16
 
16
17
  UTF8Decoder = codecs.getincrementaldecoder("utf-8")
17
18
 
19
+ MAX_FRAGMENTS = int(os.environ.get("WEBSOCKETS_MAX_FRAGMENTS", "4096"))
20
+
18
21
  T = TypeVar("T")
19
22
 
20
23
 
@@ -54,11 +57,10 @@ class SimpleQueue(Generic[T]):
54
57
  self.get_waiter = None
55
58
  return self.queue.popleft()
56
59
 
57
- def reset(self, items: Iterable[T]) -> None:
58
- """Put back items into an empty, idle queue."""
59
- assert self.get_waiter is None, "cannot reset() while get() is running"
60
- assert not self.queue, "cannot reset() while queue isn't empty"
61
- self.queue.extend(items)
60
+ def put_back(self, items: Sequence[T]) -> None:
61
+ """Put back items at the front of the queue."""
62
+ assert self.get_waiter is None, "cannot put_back() while get() is running"
63
+ self.queue.extendleft(reversed(items))
62
64
 
63
65
  def abort(self) -> None:
64
66
  """Close the queue, raising EOFError in get() if necessary."""
@@ -167,12 +169,16 @@ class Assembler:
167
169
  try:
168
170
  frame = await self.frames.get(not self.closed)
169
171
  except asyncio.CancelledError:
170
- # Put frames already received back into the queue
171
- # so that future calls to get() can return them.
172
- self.frames.reset(frames)
172
+ # Put frames already received back into the queue so that
173
+ # future calls to get() can return them. The queue may be
174
+ # non-empty if put() added frames in the same iteration of
175
+ # the event loop where get() was canceled.
176
+ self.frames.put_back(frames)
173
177
  raise
174
178
  self.maybe_resume()
175
179
  assert frame.opcode is CONT
180
+ if len(frames) >= MAX_FRAGMENTS:
181
+ raise TooManyFragments(MAX_FRAGMENTS)
176
182
  frames.append(frame)
177
183
 
178
184
  finally:
@@ -870,7 +870,10 @@ def basic_auth(
870
870
  expected_password = credentials_dict[username]
871
871
  except KeyError:
872
872
  return False
873
- return hmac.compare_digest(expected_password, password)
873
+ return hmac.compare_digest(
874
+ expected_password.encode(errors="surrogateescape"),
875
+ password.encode(errors="surrogateescape"),
876
+ )
874
877
 
875
878
  assert check_credentials is not None # help mypy
876
879
 
@@ -34,6 +34,7 @@
34
34
  * :exc:`RedirectHandshake` (legacy)
35
35
  * :exc:`ProtocolError` (Sans-I/O)
36
36
  * :exc:`PayloadTooBig` (Sans-I/O)
37
+ * :exc:`TooManyFragments`
37
38
  * :exc:`InvalidState` (Sans-I/O)
38
39
  * :exc:`ConcurrencyError`
39
40
 
@@ -59,6 +60,7 @@ __all__ = [
59
60
  "StatusLineTooLong",
60
61
  "HeaderLineTooLong",
61
62
  "TooManyHeaders",
63
+ "TooManyFragments",
62
64
  "ProxyError",
63
65
  "InvalidProxyMessage",
64
66
  "InvalidProxyStatus",
@@ -498,6 +500,13 @@ class PayloadTooBig(WebSocketException):
498
500
  self.current_size = current_size
499
501
 
500
502
 
503
+ class TooManyFragments(WebSocketException):
504
+ """Raised when reassembling message that contains too many frames."""
505
+
506
+ def __init__(self, max_fragments: int) -> None:
507
+ super().__init__(f"fragmented message exceeds limit of {max_fragments} frames")
508
+
509
+
501
510
  class InvalidState(WebSocketException, AssertionError):
502
511
  """
503
512
  Raised when sending a frame is forbidden in the current state.
@@ -530,6 +530,8 @@ def parse_authorization_basic(header: str) -> tuple[str, str]:
530
530
 
531
531
  Return a ``(username, password)`` tuple.
532
532
 
533
+ Non-UTF-8 data is represented with surrogate code points.
534
+
533
535
  Args:
534
536
  header: Value of the ``Authorization`` header.
535
537
 
@@ -555,12 +557,13 @@ def parse_authorization_basic(header: str) -> tuple[str, str]:
555
557
  parse_end(header, pos, "Authorization")
556
558
 
557
559
  try:
558
- user_pass = base64.b64decode(basic_credentials.encode()).decode()
560
+ user_pass_bytes = base64.b64decode(basic_credentials.encode())
559
561
  except binascii.Error:
560
562
  raise InvalidHeaderValue(
561
563
  "Authorization",
562
564
  "expected base64-encoded credentials",
563
565
  ) from None
566
+ user_pass = user_pass_bytes.decode(errors="surrogateescape")
564
567
  try:
565
568
  username, password = user_pass.split(":", 1)
566
569
  except ValueError:
@@ -578,9 +581,12 @@ def build_authorization_basic(username: str, password: str) -> str:
578
581
 
579
582
  This is the reverse of :func:`parse_authorization_basic`.
580
583
 
584
+ Non-UTF-8 data can be represented with surrogate code points.
585
+
581
586
  """
582
587
  # https://datatracker.ietf.org/doc/html/rfc7617#section-2
583
588
  assert ":" not in username
584
589
  user_pass = f"{username}:{password}"
585
- basic_credentials = base64.b64encode(user_pass.encode()).decode()
590
+ user_pass_bytes = user_pass.encode(errors="surrogateescape")
591
+ basic_credentials = base64.b64encode(user_pass_bytes).decode()
586
592
  return "Basic " + basic_credentials
@@ -80,6 +80,19 @@ _token_re = re.compile(rb"[-!#$%&\'*+.^_`|~0-9a-zA-Z]+")
80
80
 
81
81
  _value_re = re.compile(rb"[\x09\x20-\x7e\x80-\xff]*")
82
82
 
83
+ # Regexes for validating status codes and numeric header values.
84
+ # Set a lower limit than default_max_str_digits; 1 EB is plenty.
85
+
86
+ # Content-Length = 1*DIGIT
87
+ # See https://datatracker.ietf.org/doc/html/rfc9110#section-8.6
88
+
89
+ _digits_re = re.compile(rb"[0-9]{1,18}")
90
+
91
+ # chunk-size = 1*HEXDIG
92
+ # See https://datatracker.ietf.org/doc/html/rfc9112#section-7.1
93
+
94
+ _hexdigits_re = re.compile(rb"[0-9a-fA-F]{1,15}")
95
+
83
96
 
84
97
  @dataclasses.dataclass
85
98
  class Request:
@@ -147,6 +160,7 @@ class Request:
147
160
  TooManyHeaders: If there are too many headers.
148
161
  UnicodeDecodeError: If the request method or path isn't ASCII.
149
162
  ValueError: If the request isn't well formatted.
163
+ NotImplementedError: If the request uses Transfer-Encoding.
150
164
 
151
165
  """
152
166
  # https://datatracker.ietf.org/doc/html/rfc7230#section-3.1.1
@@ -183,11 +197,11 @@ class Request:
183
197
  if "Transfer-Encoding" in headers:
184
198
  raise NotImplementedError("transfer codings aren't supported")
185
199
 
186
- if "Content-Length" in headers:
187
- # Some devices send a Content-Length header with a value of 0.
188
- # This raises ValueError if Content-Length isn't an integer too.
189
- if int(headers["Content-Length"]) != 0:
190
- raise ValueError("unsupported request body")
200
+ # Some devices send a Content-Length header with a value of 0.
201
+ # Reject any other value. For technical correctness, accept
202
+ # multiple Content-Length headers, all with a value of 0.
203
+ if not set(headers.get_all("Content-Length")) <= {"0"}:
204
+ raise ValueError("unsupported request body")
191
205
 
192
206
  return cls(path, headers, method, protocol)
193
207
 
@@ -274,6 +288,8 @@ class Response:
274
288
  SecurityError: If the response body exceeds a security limit.
275
289
  LookupError: If the response isn't well formatted.
276
290
  ValueError: If the response isn't well formatted.
291
+ NotImplementedError: If the response uses Transfer-Encoding, and
292
+ it isn't "chunked".
277
293
 
278
294
  """
279
295
  # https://datatracker.ietf.org/doc/html/rfc7230#section-3.1.2
@@ -298,12 +314,11 @@ class Response:
298
314
  raise ValueError(
299
315
  f"unsupported protocol; expected HTTP/1.1: {d(status_line)}"
300
316
  )
301
- try:
302
- status_code = int(raw_status_code)
303
- except ValueError: # invalid literal for int() with base 10
317
+ if not _digits_re.fullmatch(raw_status_code):
304
318
  raise ValueError(
305
319
  f"invalid status code; expected integer; got {d(raw_status_code)}"
306
- ) from None
320
+ )
321
+ status_code = int(raw_status_code)
307
322
  if not 100 <= status_code < 600:
308
323
  raise ValueError(
309
324
  f"invalid status code; expected 100–599; got {d(raw_status_code)}"
@@ -452,7 +467,7 @@ def read_body(
452
467
  # MultipleValuesError is sufficiently unlikely that we don't attempt to
453
468
  # handle it when accessing headers. Instead we document that its parent
454
469
  # class, LookupError, may be raised.
455
- # Conversions from str to int are protected by sys.set_int_max_str_digits..
470
+ # Conversions from str to int are protected by sys.set_int_max_str_digits.
456
471
 
457
472
  elif (coding := headers.get("Transfer-Encoding")) is not None:
458
473
  if coding != "chunked":
@@ -462,10 +477,8 @@ def read_body(
462
477
  while True:
463
478
  chunk_size_line = yield from parse_line(read_line, SecurityError)
464
479
  raw_chunk_size = chunk_size_line.split(b";", 1)[0]
465
- # Set a lower limit than default_max_str_digits; 1 EB is plenty.
466
- if len(raw_chunk_size) > 15:
467
- str_chunk_size = raw_chunk_size.decode(errors="backslashreplace")
468
- raise SecurityError(f"chunk too large: 0x{str_chunk_size} bytes")
480
+ if not _hexdigits_re.fullmatch(raw_chunk_size):
481
+ raise SecurityError(f"invalid chunk size: {d(raw_chunk_size)}")
469
482
  chunk_size = int(raw_chunk_size, 16)
470
483
  if chunk_size == 0:
471
484
  break
@@ -481,9 +494,8 @@ def read_body(
481
494
  return body
482
495
 
483
496
  elif (raw_content_length := headers.get("Content-Length")) is not None:
484
- # Set a lower limit than default_max_str_digits; 1 EiB is plenty.
485
- if len(raw_content_length) > 18:
486
- raise SecurityError(f"body too large: {raw_content_length} bytes")
497
+ if not _digits_re.fullmatch(raw_content_length.encode("iso-8859-1")):
498
+ raise SecurityError(f"invalid content length: {raw_content_length}")
487
499
  content_length = int(raw_content_length)
488
500
  if content_length > MAX_BODY_SIZE:
489
501
  raise SecurityError(f"body too large: {content_length} bytes")
@@ -4,6 +4,7 @@ import asyncio
4
4
  import codecs
5
5
  import collections
6
6
  import logging
7
+ import os
7
8
  import random
8
9
  import ssl
9
10
  import struct
@@ -23,6 +24,7 @@ from ..exceptions import (
23
24
  InvalidState,
24
25
  PayloadTooBig,
25
26
  ProtocolError,
27
+ TooManyFragments,
26
28
  )
27
29
  from ..extensions import Extension
28
30
  from ..frames import (
@@ -44,6 +46,8 @@ from .framing import Frame, prepare_ctrl, prepare_data
44
46
 
45
47
  __all__ = ["WebSocketCommonProtocol"]
46
48
 
49
+ MAX_FRAGMENTS = int(os.environ.get("WEBSOCKETS_MAX_FRAGMENTS", "4096"))
50
+
47
51
 
48
52
  # In order to ensure consistency, the code always checks the current value of
49
53
  # WebSocketCommonProtocol.state before assigning a new value and never yields
@@ -991,6 +995,10 @@ class WebSocketCommonProtocol(asyncio.Protocol):
991
995
  self.transfer_data_exc = exc
992
996
  self.fail_connection(CloseCode.MESSAGE_TOO_BIG)
993
997
 
998
+ except TooManyFragments as exc:
999
+ self.transfer_data_exc = exc
1000
+ self.fail_connection(CloseCode.MESSAGE_TOO_BIG, "too many fragments")
1001
+
994
1002
  except Exception as exc:
995
1003
  # This shouldn't happen often because exceptions expected under
996
1004
  # regular circumstances are handled above. If it does, consider
@@ -1071,6 +1079,8 @@ class WebSocketCommonProtocol(asyncio.Protocol):
1071
1079
  raise ProtocolError("incomplete fragmented message")
1072
1080
  if frame.opcode != OP_CONT:
1073
1081
  raise ProtocolError("unexpected opcode")
1082
+ if len(fragments) >= MAX_FRAGMENTS:
1083
+ raise TooManyFragments(MAX_FRAGMENTS)
1074
1084
  append(frame)
1075
1085
 
1076
1086
  return ("" if text else b"").join(fragments)
@@ -155,6 +155,8 @@ class Protocol:
155
155
  self.writes: list[bytes] = []
156
156
  self.parser = self.parse()
157
157
  next(self.parser) # start coroutine
158
+
159
+ # Exception that caused the parser to stop, chained to ConnectionClosed.
158
160
  self.parser_exc: Exception | None = None
159
161
 
160
162
  @property