2026-05-28 16:44:02 -04:00

58 lines
2.4 KiB
Python

"""hermes-agent-azure: Microsoft Entra ID / Azure Identity adapter for Hermes Agent."""
from hermes_agent_azure.adapter import ( # noqa: F401
SCOPE_AI_AZURE_DEFAULT,
EntraIdentityConfig,
_build_default_credential,
_require_azure_identity,
build_bearer_http_client,
build_credential,
build_token_provider,
describe_active_credential,
has_azure_identity_credentials,
has_azure_identity_installed,
is_token_provider,
materialize_bearer_for_http,
reset_credential_cache,
)
def register(ctx):
"""Entry point for the hermes_agent.plugins entry point group."""
from hermes_agent_azure import adapter
ctx.register_provider_services("azure", {
# Auth / credentials
"is_token_provider": adapter.is_token_provider,
"has_azure_identity_credentials": adapter.has_azure_identity_credentials,
"has_azure_identity_installed": adapter.has_azure_identity_installed,
# Client building
"build_bearer_http_client": adapter.build_bearer_http_client,
"build_credential": adapter.build_credential,
"build_token_provider": adapter.build_token_provider,
"materialize_bearer_for_http": adapter.materialize_bearer_for_http,
"reset_credential_cache": adapter.reset_credential_cache,
# Constants / config
"SCOPE_AI_AZURE_DEFAULT": adapter.SCOPE_AI_AZURE_DEFAULT,
"EntraIdentityConfig": adapter.EntraIdentityConfig,
# Internal helpers
"_build_default_credential": adapter._build_default_credential,
"_require_azure_identity": adapter._require_azure_identity,
"describe_active_credential": adapter.describe_active_credential,
})
# Register the provider resolver — core dispatches to this instead of
# having a per-azure-foundry if/elif branch in resolve_provider_client().
from hermes_agent_azure.resolve import resolve_auxiliary_client as _azure_resolver
ctx.register_provider_resolver("azure-foundry", _azure_resolver)
# Register the provider overlay — core merges this into HERMES_OVERLAYS
from agent.plugin_registries import ProviderOverlayEntry
ctx.register_provider_overlay(ProviderOverlayEntry(
provider_name="azure-foundry",
transport="openai_chat", # default; overridden by api_mode in config
base_url_env_var="AZURE_FOUNDRY_BASE_URL",
display_name="Azure AI Foundry",
aliases=[],
))