Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
20 changes: 10 additions & 10 deletions agents/mcp/src/hyperforge_mcp/http.py
Original file line number Diff line number Diff line change
Expand Up @@ -13,6 +13,16 @@
import httpx
from cryptography.fernet import Fernet
from httpx import Auth, Timeout
from hyperforge.configure import driver
from hyperforge.driver import Driver
from hyperforge.interaction import (
Feedback,
OAuthAuthenticateURL,
OAuthFeedbackReturnSchema,
Provider,
)
from hyperforge.memory import QuestionMemory
from hyperforge.utils.http import SafeTransport
from mcp.client.auth import OAuthClientProvider, PKCEParameters, TokenStorage
from mcp.client.auth.exceptions import OAuthFlowError
from mcp.client.streamable_http import streamable_http_client
Expand All @@ -25,16 +35,6 @@
from pydantic import AnyUrl, BaseModel

from hyperforge import logger
from hyperforge.configure import driver
from hyperforge.driver import Driver
from hyperforge.interaction import (
Feedback,
OAuthAuthenticateURL,
OAuthFeedbackReturnSchema,
Provider,
)
from hyperforge.memory import QuestionMemory
from hyperforge.utils.http import SafeTransport
from hyperforge_mcp.config_driver import MCPHTTPDriverConfig, MCPHTTPInnerConfig

# ---------------------------------------------------------------------------
Expand Down
7 changes: 3 additions & 4 deletions agents/mcp/tests/test_mcp_oauth.py
Original file line number Diff line number Diff line change
Expand Up @@ -7,17 +7,16 @@

import httpx
import pytest
from mcp.client.auth import PKCEParameters
from mcp.shared.auth import OAuthClientInformationFull, OAuthClientMetadata
from pydantic import AnyUrl

from hyperforge_mcp.http import (
_MCP_OAUTH_SINGLE_FLIGHT_LOCKS,
MCPOAuthRoutingParams,
_generate_pkce_parameters,
_RoutedOAuthClientProvider,
handle_callback,
)
from mcp.client.auth import PKCEParameters
from mcp.shared.auth import OAuthClientInformationFull, OAuthClientMetadata
from pydantic import AnyUrl


def _make_provider(**kwargs) -> _RoutedOAuthClientProvider:
Expand Down
4 changes: 2 additions & 2 deletions agents/nucliadb/src/hyperforge_nucliadb/driver.py
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
import asyncio
from asyncio import gather
from functools import reduce
from typing import Dict, List, Optional
from typing import Dict, List, Optional, Union

import httpx
from hyperforge.configure import driver
Expand Down Expand Up @@ -347,7 +347,7 @@ async def catalog_search_raw(self, q: CatalogRequest) -> CatalogResponse:
return await self.driver.catalog(content=q, kbid=self.config.kbid)

async def get_resource_by_id(
self, rid: str, query_params: Optional[Dict[str, str]] = None
self, rid: str, query_params: Optional[Dict[str, Union[str, List[str]]]] = None
) -> Optional[Resource]:
return await self.driver.get_resource_by_id(
kbid=self.config.kbid, rid=rid, query_params=query_params
Expand Down
2 changes: 1 addition & 1 deletion hyperforge/src/hyperforge/api/v1/oauth.py
Original file line number Diff line number Diff line change
Expand Up @@ -3,13 +3,13 @@

from cryptography.fernet import InvalidToken
from fastapi import Query
from hyperforge_mcp.http import _fingerprint, decrypt_mcp_oauth_state
from starlette.requests import Request
from starlette.responses import HTMLResponse

from hyperforge.api.settings import Settings
from hyperforge.api.v1.router import router
from hyperforge.api.v1.utils import tracer
from hyperforge_mcp.http import _fingerprint, decrypt_mcp_oauth_state

logger = logging.getLogger(__name__)

Expand Down
4 changes: 3 additions & 1 deletion hyperforge/src/hyperforge/broker/redis.py
Original file line number Diff line number Diff line change
Expand Up @@ -99,7 +99,9 @@ async def subscribe_activations(
logger.warning("Consumer group lost, re-creating...")
await self._ensure_consumer_group()
else:
logger.exception("Error while subscribing to activations, retrying...")
logger.exception(
"Error while subscribing to activations, retrying..."
)
await asyncio.sleep(1)
except Exception:
logger.exception("Error while subscribing to activations, retrying...")
Expand Down
2 changes: 1 addition & 1 deletion hyperforge/src/hyperforge/server/sandbox.py
Original file line number Diff line number Diff line change
Expand Up @@ -2,12 +2,12 @@
from importlib.metadata import version

import sentry_sdk
from hyperforge_restricted import sandbox
from nucliadb_telemetry.fastapi import application_metrics
from nucliadb_telemetry.logs import setup_logging
from nucliadb_telemetry.settings import LogLevel, LogSettings
from sentry_sdk.integrations.excepthook import ExcepthookIntegration

from hyperforge_restricted import sandbox
from hyperforge.server.settings import Settings


Expand Down
2 changes: 1 addition & 1 deletion hyperforge/src/hyperforge/server/session.py
Original file line number Diff line number Diff line change
Expand Up @@ -111,7 +111,7 @@ async def initialize(self, health_check: bool = True) -> None:
logger.error(f"Module {load_module} could not be loaded")

self.activation_task = asyncio.create_task(self.activation_listener())
if health_check:
if health_check and self.settings.health_check_enabled:
self.server = await start_health_check()

async def finalize(self):
Expand Down
2 changes: 2 additions & 0 deletions hyperforge/src/hyperforge/server/settings.py
Original file line number Diff line number Diff line change
Expand Up @@ -45,3 +45,5 @@ class Settings(BaseSettings):
# the kbid for internal NUA calls from the account_id request header
# instead.
standalone: bool = False

health_check_enabled: bool = True
1 change: 0 additions & 1 deletion hyperforge/tests/server/test_session_manager.py
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,6 @@
from unittest.mock import AsyncMock, MagicMock, patch

import pytest

from hyperforge.pubsub import StartInteraction
from hyperforge.server.session import SessionManager

Expand Down
6 changes: 2 additions & 4 deletions hyperforge/tests/unit/arag/test_mcp_oauth_callback.py
Original file line number Diff line number Diff line change
Expand Up @@ -3,16 +3,15 @@
from unittest.mock import AsyncMock
from urllib.parse import parse_qs

import hyperforge_mcp.http as http_module
import pytest
from cryptography.fernet import Fernet
from starlette.testclient import TestClient

import hyperforge_mcp.http as http_module
from hyperforge_mcp.http import (
MCPOAuthRoutingParams,
decrypt_mcp_oauth_state,
encrypt_mcp_oauth_state,
)
from starlette.testclient import TestClient

# ---------------------------------------------------------------------------
# Test Fernet key - injected via env var so EncryptionSettings picks it up.
Expand Down Expand Up @@ -47,7 +46,6 @@ def _inject_key(monkeypatch):
def _make_app():
"""Return a minimal FastAPI app that mounts only the oauth router."""
from fastapi import FastAPI

from hyperforge.api.settings import Settings
from hyperforge.api.v1.router import router

Expand Down
2 changes: 2 additions & 0 deletions uv.lock

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

Loading