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
27 changes: 24 additions & 3 deletions tee_gateway/__main__.py
Original file line number Diff line number Diff line change
Expand Up @@ -7,7 +7,9 @@
import sys
import os
import threading
import time
import atexit
from importlib.metadata import PackageNotFoundError, version as pkg_version

import connexion
from flask import jsonify, request
Expand All @@ -19,7 +21,7 @@
DEFAULT_HEARTBEAT_BUFFER,
DEFAULT_HEARTBEAT_INTERVAL,
)
from tee_gateway.llm_backend import set_provider_config
from tee_gateway.llm_backend import get_provider_config, set_provider_config
from tee_gateway.heartbeat import create_heartbeat_service

from x402.http import FacilitatorConfig, HTTPFacilitatorClientSync, PaymentOption
Expand Down Expand Up @@ -116,6 +118,18 @@ def _shutdown_heartbeat():
_price_feed = OPGPriceFeed()
_price_feed.start()

_started_at = time.time()


def _gateway_version() -> str:
try:
return pkg_version("tee-gateway")
except PackageNotFoundError:
return "unknown"
Comment on lines +124 to +128


_active_facilitator_url: str | None = None


# ---------------------------------------------------------------------------
# x402 read-body patch
Expand Down Expand Up @@ -254,7 +268,7 @@ def set_provider_keys():
x402 payment verification and the heartbeat relay), and optional heartbeat
parameters. Can only be called once; subsequent calls return HTTP 409.
"""
global _keys_initialized
global _keys_initialized, _active_facilitator_url

with _keys_lock:
if _keys_initialized:
Expand Down Expand Up @@ -353,6 +367,7 @@ def _set(val: str | None) -> str:

_init_payment_middleware(facilitator_url)

_active_facilitator_url = facilitator_url
_keys_initialized = True

providers_set = [
Expand All @@ -377,10 +392,16 @@ def _set(val: str | None) -> str:


def health():
cfg = get_provider_config()
providers = cfg.initialized_providers() if cfg else []

return {
"status": "OK",
"version": "1.0.0",
"version": _gateway_version(),
"tee_enabled": True,
"uptime_seconds": int(time.time() - _started_at),
"providers": providers,
"facilitator_url": _active_facilitator_url,
"price_feed": _price_feed.get_status(),
Comment thread
adambalogh marked this conversation as resolved.
Comment thread
adambalogh marked this conversation as resolved.
Comment thread
adambalogh marked this conversation as resolved.
}, 200

Expand Down
15 changes: 15 additions & 0 deletions tee_gateway/config.py
Original file line number Diff line number Diff line change
Expand Up @@ -29,6 +29,21 @@ class ProviderConfig:
xai_api_key: Optional[str] = None
bytedance_api_key: Optional[str] = None

def initialized_providers(self) -> list[str]:
"""Return provider names whose API key is set (non-empty)."""
providers = []
if self.openai_api_key:
providers.append("openai")
if self.anthropic_api_key:
providers.append("anthropic")
if self.google_api_key:
providers.append("google")
if self.xai_api_key:
providers.append("xai")
if self.bytedance_api_key:
providers.append("bytedance")
return providers
Comment thread
adambalogh marked this conversation as resolved.


@dataclass(frozen=True)
class HeartbeatConfig:
Expand Down
Loading