refactor: replace SessionDep with explicit Annotated[Session, Depends(get_session)] across all routers

- Replace SessionDep type alias with explicit Annotated[Session, Depends(get_session)]
- Add missing imports for Session, Annotated, and Depends types
- Update all endpoint function signatures to use explicit dependency annotation
- Remove redundant `= Depends()` default values from session parameters
- Update docstrings and comments to reference new annotation pattern
- Apply changes consistently across all router
This commit is contained in:
oib
2026-03-07 15:45:11 +01:00
parent 93aae0edb3
commit 89e161c906
75 changed files with 371 additions and 372 deletions

View File

@@ -1,14 +1,15 @@
from sqlalchemy.orm import Session
from typing import Annotated
"""
Dependency injection module for AITBC Coordinator API
Provides unified dependency injection using storage.SessionDep.
Provides unified dependency injection using storage.Annotated[Session, Depends(get_session)].
"""
from typing import Callable
from fastapi import Depends, Header, HTTPException
from .config import settings
from .storage import SessionDep
def _validate_api_key(allowed_keys: list[str], api_key: str | None) -> str:
@@ -68,6 +69,6 @@ def require_admin_key() -> Callable[[str | None], str]:
# Legacy aliases for backward compatibility
def get_session():
"""Legacy alias - use SessionDep instead."""
"""Legacy alias - use Annotated[Session, Depends(get_session)] instead."""
from .storage import get_session
return get_session()

View File

@@ -1,7 +1,9 @@
from sqlalchemy.orm import Session
from typing import Annotated
from slowapi import Limiter, _rate_limit_exceeded_handler
from slowapi.util import get_remote_address
from slowapi.errors import RateLimitExceeded
from fastapi import FastAPI, Request
from fastapi import FastAPI, Request, Depends
from fastapi.middleware.cors import CORSMiddleware
from fastapi.responses import JSONResponse, Response
from fastapi.exceptions import RequestValidationError
@@ -201,7 +203,7 @@ def create_app() -> FastAPI:
docs_url="/docs",
redoc_url="/redoc",
lifespan=lifespan,
# Custom OpenAPI config to handle SessionDep issues
# Custom OpenAPI config to handle Annotated[Session, Depends(get_session)] issues
openapi_components={
"securitySchemes": {
"ApiKeyAuth": {

View File

@@ -11,7 +11,7 @@ import sys
import psutil
from typing import Dict, Any
from ..storage import Annotated[Session, Depends(get_session)], get_session
from ..storage import get_session
from ..services.adaptive_learning import AdaptiveLearningService
from ..logging import get_logger
@@ -20,7 +20,7 @@ router = APIRouter()
@router.get("/health", tags=["health"], summary="Adaptive Learning Service Health")
async def adaptive_learning_health(session: Annotated[Session, Depends(get_session)] = Depends()) -> Dict[str, Any]:
async def adaptive_learning_health(session: Annotated[Session, Depends(get_session)]) -> Dict[str, Any]:
"""
Health check for Adaptive Learning Service (Port 8005)
"""
@@ -105,7 +105,7 @@ async def adaptive_learning_health(session: Annotated[Session, Depends(get_sessi
@router.get("/health/deep", tags=["health"], summary="Deep Adaptive Learning Service Health")
async def adaptive_learning_deep_health(session: Annotated[Session, Depends(get_session)] = Depends()) -> Dict[str, Any]:
async def adaptive_learning_deep_health(session: Annotated[Session, Depends(get_session)]) -> Dict[str, Any]:
"""
Deep health check with learning framework validation
"""

View File

@@ -8,7 +8,7 @@ from datetime import datetime
from ..deps import require_admin_key
from ..services import JobService, MinerService
from ..storage import Annotated[Session, Depends(get_session)], get_session
from ..storage import get_session
from ..utils.cache import cached, get_cache_config
from ..config import settings
from aitbc.logging import get_logger
@@ -48,7 +48,7 @@ async def test_key(
@cached(**get_cache_config("job_list")) # Cache admin stats for 1 minute
async def get_stats(
request: Request,
session: Annotated[Session, Depends(get_session)] = Depends(),
session: Annotated[Session, Depends(get_session)],
api_key: str = Header(default=None, alias="X-Api-Key")
) -> dict[str, int]: # type: ignore[arg-type]
# Temporary debug: bypass dependency and validate directly
@@ -81,7 +81,7 @@ async def get_stats(
@router.get("/jobs", summary="List jobs")
async def list_jobs(session: Annotated[Session, Depends(get_session)] = Depends(), admin_key: str = Depends(require_admin_key())) -> dict[str, list[dict]]: # type: ignore[arg-type]
async def list_jobs(session: Annotated[Session, Depends(get_session)], admin_key: str = Depends(require_admin_key())) -> dict[str, list[dict]]: # type: ignore[arg-type]
from ..domain import Job
jobs = session.execute(select(Job).order_by(Job.requested_at.desc()).limit(100)).all()
@@ -100,7 +100,7 @@ async def list_jobs(session: Annotated[Session, Depends(get_session)] = Depends(
@router.get("/miners", summary="List miners")
async def list_miners(session: Annotated[Session, Depends(get_session)] = Depends(), admin_key: str = Depends(require_admin_key())) -> dict[str, list[dict]]: # type: ignore[arg-type]
async def list_miners(session: Annotated[Session, Depends(get_session)], admin_key: str = Depends(require_admin_key())) -> dict[str, list[dict]]: # type: ignore[arg-type]
miner_service = MinerService(session)
miners = [
{
@@ -123,7 +123,7 @@ async def list_miners(session: Annotated[Session, Depends(get_session)] = Depend
@router.get("/status", summary="Get system status", response_model=None)
async def get_system_status(
request: Request,
session: Annotated[Session, Depends(get_session)] = Depends(),
session: Annotated[Session, Depends(get_session)],
admin_key: str = Depends(require_admin_key())
) -> dict[str, any]: # type: ignore[arg-type]
"""Get comprehensive system status for admin dashboard"""

View File

@@ -11,7 +11,7 @@ from fastapi import APIRouter, HTTPException, Depends, Query, Body
from pydantic import BaseModel, Field
from aitbc.logging import get_logger
from ..storage import Annotated[Session, Depends(get_session)], get_session
from ..storage import get_session
from ..services.creative_capabilities_service import (
CreativityEnhancementEngine, IdeationAlgorithm, CrossDomainCreativeIntegrator
)
@@ -68,7 +68,7 @@ class SynthesisRequest(BaseModel):
@router.post("/capabilities", response_model=CreativeCapabilityResponse)
async def create_creative_capability(
request: CreativeCapabilityCreate,
session: Annotated[Session, Depends(get_session)] = Depends()
session: Annotated[Session, Depends(get_session)]
):
"""Initialize a new creative capability for an agent"""
engine = CreativityEnhancementEngine()
@@ -92,7 +92,7 @@ async def create_creative_capability(
async def enhance_creativity(
capability_id: str,
request: EnhanceCreativityRequest,
session: Annotated[Session, Depends(get_session)] = Depends()
session: Annotated[Session, Depends(get_session)]
):
"""Enhance a specific creative capability using specified algorithm"""
engine = CreativityEnhancementEngine()
@@ -115,7 +115,7 @@ async def enhance_creativity(
async def evaluate_creation(
capability_id: str,
request: EvaluateCreationRequest,
session: Annotated[Session, Depends(get_session)] = Depends()
session: Annotated[Session, Depends(get_session)]
):
"""Evaluate a creative output and update agent capability metrics"""
engine = CreativityEnhancementEngine()
@@ -155,7 +155,7 @@ async def generate_ideas(request: IdeationRequest):
@router.post("/synthesis/cross-domain")
async def synthesize_cross_domain(
request: SynthesisRequest,
session: Annotated[Session, Depends(get_session)] = Depends()
session: Annotated[Session, Depends(get_session)]
):
"""Synthesize concepts from multiple domains to create novel outputs"""
integrator = CrossDomainCreativeIntegrator()
@@ -178,7 +178,7 @@ async def synthesize_cross_domain(
@router.get("/capabilities/{agent_id}")
async def list_agent_creative_capabilities(
agent_id: str,
session: Annotated[Session, Depends(get_session)] = Depends()
session: Annotated[Session, Depends(get_session)]
):
"""List all creative capabilities for a specific agent"""
try:

View File

@@ -16,7 +16,7 @@ from ..services.agent_integration import (
AgentIntegrationManager, AgentDeploymentManager, AgentMonitoringManager, AgentProductionManager,
DeploymentStatus, AgentDeploymentConfig, AgentDeploymentInstance
)
from ..storage import Annotated[Session, Depends(get_session)], get_session
from ..storage import get_session
from ..deps import require_admin_key
from sqlmodel import Session, select
from datetime import datetime

View File

@@ -11,7 +11,7 @@ from fastapi import APIRouter, HTTPException, Depends, Query
from pydantic import BaseModel, Field
from aitbc.logging import get_logger
from ..storage import Annotated[Session, Depends(get_session)], get_session
from ..storage import get_session
from ..services.agent_performance_service import (
AgentPerformanceService, MetaLearningEngine, ResourceManager, PerformanceOptimizer
)
@@ -153,7 +153,7 @@ class CapabilityResponse(BaseModel):
@router.post("/profiles", response_model=PerformanceProfileResponse)
async def create_performance_profile(
profile_request: PerformanceProfileRequest,
session: Annotated[Session, Depends(get_session)] = Depends()
session: Annotated[Session, Depends(get_session)]
) -> PerformanceProfileResponse:
"""Create agent performance profile"""
@@ -192,7 +192,7 @@ async def create_performance_profile(
@router.get("/profiles/{agent_id}", response_model=Dict[str, Any])
async def get_performance_profile(
agent_id: str,
session: Annotated[Session, Depends(get_session)] = Depends()
session: Annotated[Session, Depends(get_session)]
) -> Dict[str, Any]:
"""Get agent performance profile"""
@@ -218,7 +218,7 @@ async def update_performance_metrics(
agent_id: str,
metrics: Dict[str, float],
task_context: Optional[Dict[str, Any]] = None,
session: Annotated[Session, Depends(get_session)] = Depends()
session: Annotated[Session, Depends(get_session)]
) -> Dict[str, Any]:
"""Update agent performance metrics"""
@@ -247,7 +247,7 @@ async def update_performance_metrics(
@router.post("/meta-learning/models", response_model=MetaLearningResponse)
async def create_meta_learning_model(
model_request: MetaLearningRequest,
session: Annotated[Session, Depends(get_session)] = Depends()
session: Annotated[Session, Depends(get_session)]
) -> MetaLearningResponse:
"""Create meta-learning model"""
@@ -286,7 +286,7 @@ async def adapt_model_to_task(
model_id: str,
task_data: Dict[str, Any],
adaptation_steps: int = Query(default=10, ge=1, le=50),
session: Annotated[Session, Depends(get_session)] = Depends()
session: Annotated[Session, Depends(get_session)]
) -> Dict[str, Any]:
"""Adapt meta-learning model to new task"""
@@ -319,7 +319,7 @@ async def list_meta_learning_models(
status: Optional[str] = Query(default=None, description="Filter by status"),
meta_strategy: Optional[str] = Query(default=None, description="Filter by meta strategy"),
limit: int = Query(default=50, ge=1, le=100, description="Number of results"),
session: Annotated[Session, Depends(get_session)] = Depends()
session: Annotated[Session, Depends(get_session)]
) -> List[Dict[str, Any]]:
"""List meta-learning models"""
@@ -362,7 +362,7 @@ async def list_meta_learning_models(
@router.post("/resources/allocate", response_model=ResourceAllocationResponse)
async def allocate_resources(
allocation_request: ResourceAllocationRequest,
session: Annotated[Session, Depends(get_session)] = Depends()
session: Annotated[Session, Depends(get_session)]
) -> ResourceAllocationResponse:
"""Allocate resources for agent task"""
@@ -400,7 +400,7 @@ async def get_resource_allocations(
agent_id: str,
status: Optional[str] = Query(default=None, description="Filter by status"),
limit: int = Query(default=20, ge=1, le=100, description="Number of results"),
session: Annotated[Session, Depends(get_session)] = Depends()
session: Annotated[Session, Depends(get_session)]
) -> List[Dict[str, Any]]:
"""Get resource allocations for agent"""
@@ -445,7 +445,7 @@ async def get_resource_allocations(
@router.post("/optimization/optimize", response_model=PerformanceOptimizationResponse)
async def optimize_performance(
optimization_request: PerformanceOptimizationRequest,
session: Annotated[Session, Depends(get_session)] = Depends()
session: Annotated[Session, Depends(get_session)]
) -> PerformanceOptimizationResponse:
"""Optimize agent performance"""
@@ -484,7 +484,7 @@ async def get_optimization_history(
status: Optional[str] = Query(default=None, description="Filter by status"),
target_metric: Optional[str] = Query(default=None, description="Filter by target metric"),
limit: int = Query(default=20, ge=1, le=100, description="Number of results"),
session: Annotated[Session, Depends(get_session)] = Depends()
session: Annotated[Session, Depends(get_session)]
) -> List[Dict[str, Any]]:
"""Get optimization history for agent"""
@@ -532,7 +532,7 @@ async def get_optimization_history(
@router.post("/capabilities", response_model=CapabilityResponse)
async def create_capability(
capability_request: CapabilityRequest,
session: Annotated[Session, Depends(get_session)] = Depends()
session: Annotated[Session, Depends(get_session)]
) -> CapabilityResponse:
"""Create agent capability"""
@@ -579,7 +579,7 @@ async def get_agent_capabilities(
capability_type: Optional[str] = Query(default=None, description="Filter by capability type"),
domain_area: Optional[str] = Query(default=None, description="Filter by domain area"),
limit: int = Query(default=50, ge=1, le=100, description="Number of results"),
session: Annotated[Session, Depends(get_session)] = Depends()
session: Annotated[Session, Depends(get_session)]
) -> List[Dict[str, Any]]:
"""Get agent capabilities"""
@@ -631,7 +631,7 @@ async def get_performance_summary(
agent_ids: List[str] = Query(default=[], description="List of agent IDs"),
metric: Optional[str] = Query(default="overall_score", description="Metric to summarize"),
period: str = Query(default="7d", description="Time period"),
session: Annotated[Session, Depends(get_session)] = Depends()
session: Annotated[Session, Depends(get_session)]
) -> Dict[str, Any]:
"""Get performance summary for agents"""

View File

@@ -16,7 +16,7 @@ from ..domain.agent import (
AgentStatus, VerificationLevel
)
from ..services.agent_service import AIAgentOrchestrator
from ..storage import Annotated[Session, Depends(get_session)], get_session
from ..storage import get_session
from ..deps import require_admin_key
from sqlmodel import Session, select

View File

@@ -17,7 +17,7 @@ from ..services.agent_security import (
SecurityLevel, AuditEventType, AgentSecurityPolicy, AgentTrustScore, AgentSandboxConfig,
AgentAuditLog
)
from ..storage import Annotated[Session, Depends(get_session)], get_session
from ..storage import get_session
from ..deps import require_admin_key
from sqlmodel import Session, select

View File

@@ -11,7 +11,7 @@ from fastapi import APIRouter, HTTPException, Depends, Query
from pydantic import BaseModel, Field
from aitbc.logging import get_logger
from ..storage import Annotated[Session, Depends(get_session)], get_session
from ..storage import get_session
from ..services.analytics_service import MarketplaceAnalytics
from ..domain.analytics import (
MarketMetric, MarketInsight, AnalyticsReport, DashboardConfig,
@@ -111,7 +111,7 @@ class AnalyticsSummaryResponse(BaseModel):
@router.post("/data-collection", response_model=AnalyticsSummaryResponse)
async def collect_market_data(
period_type: AnalyticsPeriod = Query(default=AnalyticsPeriod.DAILY, description="Collection period"),
session: Annotated[Session, Depends(get_session)] = Depends()
session: Annotated[Session, Depends(get_session)]
) -> AnalyticsSummaryResponse:
"""Collect market data for analytics"""
@@ -133,7 +133,7 @@ async def get_market_insights(
insight_type: Optional[str] = Query(default=None, description="Filter by insight type"),
impact_level: Optional[str] = Query(default=None, description="Filter by impact level"),
limit: int = Query(default=20, ge=1, le=100, description="Number of results"),
session: Annotated[Session, Depends(get_session)] = Depends()
session: Annotated[Session, Depends(get_session)]
) -> Dict[str, Any]:
"""Get market insights and analysis"""
@@ -171,7 +171,7 @@ async def get_market_metrics(
category: Optional[str] = Query(default=None, description="Filter by category"),
geographic_region: Optional[str] = Query(default=None, description="Filter by region"),
limit: int = Query(default=50, ge=1, le=100, description="Number of results"),
session: Annotated[Session, Depends(get_session)] = Depends()
session: Annotated[Session, Depends(get_session)]
) -> List[MetricResponse]:
"""Get market metrics with filters"""
@@ -215,7 +215,7 @@ async def get_market_metrics(
@router.get("/overview", response_model=MarketOverviewResponse)
async def get_market_overview(
session: Annotated[Session, Depends(get_session)] = Depends()
session: Annotated[Session, Depends(get_session)]
) -> MarketOverviewResponse:
"""Get comprehensive market overview"""
@@ -236,7 +236,7 @@ async def create_dashboard(
owner_id: str,
dashboard_type: str = Query(default="default", description="Dashboard type: default, executive"),
name: Optional[str] = Query(default=None, description="Custom dashboard name"),
session: Annotated[Session, Depends(get_session)] = Depends()
session: Annotated[Session, Depends(get_session)]
) -> DashboardResponse:
"""Create analytics dashboard"""
@@ -277,7 +277,7 @@ async def create_dashboard(
@router.get("/dashboards/{dashboard_id}", response_model=DashboardResponse)
async def get_dashboard(
dashboard_id: str,
session: Annotated[Session, Depends(get_session)] = Depends()
session: Annotated[Session, Depends(get_session)]
) -> DashboardResponse:
"""Get dashboard configuration"""
@@ -318,7 +318,7 @@ async def list_dashboards(
dashboard_type: Optional[str] = Query(default=None, description="Filter by dashboard type"),
status: Optional[str] = Query(default=None, description="Filter by status"),
limit: int = Query(default=50, ge=1, le=100, description="Number of results"),
session: Annotated[Session, Depends(get_session)] = Depends()
session: Annotated[Session, Depends(get_session)]
) -> List[DashboardResponse]:
"""List analytics dashboards with filters"""
@@ -363,7 +363,7 @@ async def list_dashboards(
@router.post("/reports", response_model=Dict[str, Any])
async def generate_report(
report_request: ReportRequest,
session: Annotated[Session, Depends(get_session)] = Depends()
session: Annotated[Session, Depends(get_session)]
) -> Dict[str, Any]:
"""Generate analytics report"""
@@ -437,7 +437,7 @@ async def generate_report(
async def get_report(
report_id: str,
format: str = Query(default="json", description="Response format: json, csv, pdf"),
session: Annotated[Session, Depends(get_session)] = Depends()
session: Annotated[Session, Depends(get_session)]
) -> Dict[str, Any]:
"""Get generated analytics report"""
@@ -491,7 +491,7 @@ async def get_analytics_alerts(
severity: Optional[str] = Query(default=None, description="Filter by severity level"),
status: Optional[str] = Query(default="active", description="Filter by status"),
limit: int = Query(default=20, ge=1, le=100, description="Number of results"),
session: Annotated[Session, Depends(get_session)] = Depends()
session: Annotated[Session, Depends(get_session)]
) -> List[Dict[str, Any]]:
"""Get analytics alerts"""
@@ -536,7 +536,7 @@ async def get_analytics_alerts(
@router.get("/kpi")
async def get_key_performance_indicators(
period_type: AnalyticsPeriod = Query(default=AnalyticsPeriod.DAILY, description="Period type"),
session: Annotated[Session, Depends(get_session)] = Depends()
session: Annotated[Session, Depends(get_session)]
) -> Dict[str, Any]:
"""Get key performance indicators"""

View File

@@ -10,7 +10,7 @@ from typing import List, Optional, Dict, Any
from datetime import datetime, timedelta
from pydantic import BaseModel, Field, validator
from ..storage import Annotated[Session, Depends(get_session)], get_session
from ..storage import get_session
from ..logging import get_logger
from ..domain.bounty import (
Bounty, BountySubmission, BountyStatus, BountyTier,
@@ -207,7 +207,7 @@ async def create_bounty(
@router.get("/bounties", response_model=List[BountyResponse])
async def get_bounties(
filters: BountyFilterRequest = Depends(),
session: Annotated[Session, Depends(get_session)] = Depends(),
session: Annotated[Session, Depends(get_session)],
bounty_service: BountyService = Depends(get_bounty_service)
):
"""Get filtered list of bounties"""
@@ -236,7 +236,7 @@ async def get_bounties(
@router.get("/bounties/{bounty_id}", response_model=BountyResponse)
async def get_bounty(
bounty_id: str,
session: Annotated[Session, Depends(get_session)] = Depends(),
session: Annotated[Session, Depends(get_session)],
bounty_service: BountyService = Depends(get_bounty_service)
):
"""Get bounty details"""
@@ -258,7 +258,7 @@ async def submit_bounty_solution(
bounty_id: str,
request: BountySubmissionRequest,
background_tasks: BackgroundTasks,
session: Annotated[Session, Depends(get_session)] = Depends(),
session: Annotated[Session, Depends(get_session)],
bounty_service: BountyService = Depends(get_bounty_service),
blockchain_service: BlockchainService = Depends(get_blockchain_service),
current_user: dict = Depends(get_current_user)
@@ -307,7 +307,7 @@ async def submit_bounty_solution(
@router.get("/bounties/{bounty_id}/submissions", response_model=List[BountySubmissionResponse])
async def get_bounty_submissions(
bounty_id: str,
session: Annotated[Session, Depends(get_session)] = Depends(),
session: Annotated[Session, Depends(get_session)],
bounty_service: BountyService = Depends(get_bounty_service),
current_user: dict = Depends(get_current_user)
):
@@ -337,7 +337,7 @@ async def verify_bounty_submission(
bounty_id: str,
request: BountyVerificationRequest,
background_tasks: BackgroundTasks,
session: Annotated[Session, Depends(get_session)] = Depends(),
session: Annotated[Session, Depends(get_session)],
bounty_service: BountyService = Depends(get_bounty_service),
blockchain_service: BlockchainService = Depends(get_blockchain_service),
current_user: dict = Depends(get_current_user)
@@ -377,7 +377,7 @@ async def dispute_bounty_submission(
bounty_id: str,
request: BountyDisputeRequest,
background_tasks: BackgroundTasks,
session: Annotated[Session, Depends(get_session)] = Depends(),
session: Annotated[Session, Depends(get_session)],
bounty_service: BountyService = Depends(get_bounty_service),
blockchain_service: BlockchainService = Depends(get_blockchain_service),
current_user: dict = Depends(get_current_user)
@@ -412,7 +412,7 @@ async def get_my_created_bounties(
status: Optional[BountyStatus] = None,
page: int = Field(default=1, ge=1),
limit: int = Field(default=20, ge=1, le=100),
session: Annotated[Session, Depends(get_session)] = Depends(),
session: Annotated[Session, Depends(get_session)],
bounty_service: BountyService = Depends(get_bounty_service),
current_user: dict = Depends(get_current_user)
):
@@ -436,7 +436,7 @@ async def get_my_submissions(
status: Optional[SubmissionStatus] = None,
page: int = Field(default=1, ge=1),
limit: int = Field(default=20, ge=1, le=100),
session: Annotated[Session, Depends(get_session)] = Depends(),
session: Annotated[Session, Depends(get_session)],
bounty_service: BountyService = Depends(get_bounty_service),
current_user: dict = Depends(get_current_user)
):
@@ -459,7 +459,7 @@ async def get_my_submissions(
async def get_bounty_leaderboard(
period: str = Field(default="weekly", regex="^(daily|weekly|monthly)$"),
limit: int = Field(default=50, ge=1, le=100),
session: Annotated[Session, Depends(get_session)] = Depends(),
session: Annotated[Session, Depends(get_session)],
bounty_service: BountyService = Depends(get_bounty_service)
):
"""Get bounty leaderboard"""
@@ -478,7 +478,7 @@ async def get_bounty_leaderboard(
@router.get("/bounties/stats", response_model=BountyStatsResponse)
async def get_bounty_stats(
period: str = Field(default="monthly", regex="^(daily|weekly|monthly)$"),
session: Annotated[Session, Depends(get_session)] = Depends(),
session: Annotated[Session, Depends(get_session)],
bounty_service: BountyService = Depends(get_bounty_service)
):
"""Get bounty statistics"""
@@ -495,7 +495,7 @@ async def get_bounty_stats(
async def expire_bounty(
bounty_id: str,
background_tasks: BackgroundTasks,
session: Annotated[Session, Depends(get_session)] = Depends(),
session: Annotated[Session, Depends(get_session)],
bounty_service: BountyService = Depends(get_bounty_service),
blockchain_service: BlockchainService = Depends(get_blockchain_service),
current_user: dict = Depends(get_current_user)
@@ -535,7 +535,7 @@ async def expire_bounty(
@router.get("/bounties/categories")
async def get_bounty_categories(
session: Annotated[Session, Depends(get_session)] = Depends(),
session: Annotated[Session, Depends(get_session)],
bounty_service: BountyService = Depends(get_bounty_service)
):
"""Get all bounty categories"""
@@ -550,7 +550,7 @@ async def get_bounty_categories(
@router.get("/bounties/tags")
async def get_bounty_tags(
limit: int = Field(default=100, ge=1, le=500),
session: Annotated[Session, Depends(get_session)] = Depends(),
session: Annotated[Session, Depends(get_session)],
bounty_service: BountyService = Depends(get_bounty_service)
):
"""Get popular bounty tags"""
@@ -567,7 +567,7 @@ async def search_bounties(
query: str = Field(..., min_length=1, max_length=100),
page: int = Field(default=1, ge=1),
limit: int = Field(default=20, ge=1, le=100),
session: Annotated[Session, Depends(get_session)] = Depends(),
session: Annotated[Session, Depends(get_session)],
bounty_service: BountyService = Depends(get_bounty_service)
):
"""Search bounties by text"""

View File

@@ -11,7 +11,7 @@ from fastapi import APIRouter, HTTPException, Depends, Query
from pydantic import BaseModel, Field
from aitbc.logging import get_logger
from ..storage import Annotated[Session, Depends(get_session)], get_session
from ..storage import get_session
from ..services.certification_service import (
CertificationAndPartnershipService, CertificationSystem, PartnershipManager, BadgeSystem
)
@@ -120,7 +120,7 @@ class AgentCertificationSummary(BaseModel):
@router.post("/certify", response_model=CertificationResponse)
async def certify_agent(
certification_request: CertificationRequest,
session: Annotated[Session, Depends(get_session)] = Depends()
session: Annotated[Session, Depends(get_session)]
) -> CertificationResponse:
"""Certify an agent at a specific level"""
@@ -164,7 +164,7 @@ async def certify_agent(
async def renew_certification(
certification_id: str,
renewed_by: str,
session: Annotated[Session, Depends(get_session)] = Depends()
session: Annotated[Session, Depends(get_session)]
) -> Dict[str, Any]:
"""Renew an existing certification"""
@@ -197,7 +197,7 @@ async def renew_certification(
async def get_agent_certifications(
agent_id: str,
status: Optional[str] = Query(default=None, description="Filter by status"),
session: Annotated[Session, Depends(get_session)] = Depends()
session: Annotated[Session, Depends(get_session)]
) -> List[CertificationResponse]:
"""Get certifications for an agent"""
@@ -243,7 +243,7 @@ async def create_partnership_program(
tier_levels: List[str] = Field(default_factory=lambda: ["basic", "premium"]),
max_participants: Optional[int] = Field(default=None, description="Maximum participants"),
launch_immediately: bool = Field(default=False, description="Launch program immediately"),
session: Annotated[Session, Depends(get_session)] = Depends()
session: Annotated[Session, Depends(get_session)]
) -> Dict[str, Any]:
"""Create a new partnership program"""
@@ -281,7 +281,7 @@ async def create_partnership_program(
@router.post("/partnerships/apply", response_model=PartnershipResponse)
async def apply_for_partnership(
application: PartnershipApplicationRequest,
session: Annotated[Session, Depends(get_session)] = Depends()
session: Annotated[Session, Depends(get_session)]
) -> PartnershipResponse:
"""Apply for a partnership program"""
@@ -324,7 +324,7 @@ async def get_agent_partnerships(
agent_id: str,
status: Optional[str] = Query(default=None, description="Filter by status"),
partnership_type: Optional[str] = Query(default=None, description="Filter by partnership type"),
session: Annotated[Session, Depends(get_session)] = Depends()
session: Annotated[Session, Depends(get_session)]
) -> List[PartnershipResponse]:
"""Get partnerships for an agent"""
@@ -367,7 +367,7 @@ async def list_partnership_programs(
partnership_type: Optional[str] = Query(default=None, description="Filter by partnership type"),
status: Optional[str] = Query(default="active", description="Filter by status"),
limit: int = Query(default=50, ge=1, le=100, description="Number of results"),
session: Annotated[Session, Depends(get_session)] = Depends()
session: Annotated[Session, Depends(get_session)]
) -> List[Dict[str, Any]]:
"""List available partnership programs"""
@@ -408,7 +408,7 @@ async def list_partnership_programs(
@router.post("/badges")
async def create_badge(
badge_request: BadgeCreationRequest,
session: Annotated[Session, Depends(get_session)] = Depends()
session: Annotated[Session, Depends(get_session)]
) -> Dict[str, Any]:
"""Create a new achievement badge"""
@@ -446,7 +446,7 @@ async def create_badge(
@router.post("/badges/award", response_model=BadgeResponse)
async def award_badge(
badge_request: BadgeAwardRequest,
session: Annotated[Session, Depends(get_session)] = Depends()
session: Annotated[Session, Depends(get_session)]
) -> BadgeResponse:
"""Award a badge to an agent"""
@@ -497,7 +497,7 @@ async def get_agent_badges(
category: Optional[str] = Query(default=None, description="Filter by category"),
featured_only: bool = Query(default=False, description="Only featured badges"),
limit: int = Query(default=50, ge=1, le=100, description="Number of results"),
session: Annotated[Session, Depends(get_session)] = Depends()
session: Annotated[Session, Depends(get_session)]
) -> List[BadgeResponse]:
"""Get badges for an agent"""
@@ -550,7 +550,7 @@ async def list_available_badges(
rarity: Optional[str] = Query(default=None, description="Filter by rarity"),
active_only: bool = Query(default=True, description="Only active badges"),
limit: int = Query(default=50, ge=1, le=100, description="Number of results"),
session: Annotated[Session, Depends(get_session)] = Depends()
session: Annotated[Session, Depends(get_session)]
) -> List[Dict[str, Any]]:
"""List available badges"""
@@ -598,7 +598,7 @@ async def list_available_badges(
@router.post("/badges/{agent_id}/check-automatic")
async def check_automatic_badges(
agent_id: str,
session: Annotated[Session, Depends(get_session)] = Depends()
session: Annotated[Session, Depends(get_session)]
) -> Dict[str, Any]:
"""Check and award automatic badges for an agent"""
@@ -622,7 +622,7 @@ async def check_automatic_badges(
@router.get("/summary/{agent_id}", response_model=AgentCertificationSummary)
async def get_agent_summary(
agent_id: str,
session: Annotated[Session, Depends(get_session)] = Depends()
session: Annotated[Session, Depends(get_session)]
) -> AgentCertificationSummary:
"""Get comprehensive certification and partnership summary for an agent"""
@@ -644,7 +644,7 @@ async def get_verification_records(
verification_type: Optional[str] = Query(default=None, description="Filter by verification type"),
status: Optional[str] = Query(default=None, description="Filter by status"),
limit: int = Query(default=20, ge=1, le=100, description="Number of results"),
session: Annotated[Session, Depends(get_session)] = Depends()
session: Annotated[Session, Depends(get_session)]
) -> List[Dict[str, Any]]:
"""Get verification records for an agent"""
@@ -684,7 +684,7 @@ async def get_verification_records(
@router.get("/levels")
async def get_certification_levels(
session: Annotated[Session, Depends(get_session)] = Depends()
session: Annotated[Session, Depends(get_session)]
) -> List[Dict[str, Any]]:
"""Get available certification levels and requirements"""
@@ -712,7 +712,7 @@ async def get_certification_levels(
async def get_certification_requirements(
level: Optional[str] = Query(default=None, description="Filter by certification level"),
verification_type: Optional[str] = Query(default=None, description="Filter by verification type"),
session: Annotated[Session, Depends(get_session)] = Depends()
session: Annotated[Session, Depends(get_session)]
) -> List[Dict[str, Any]]:
"""Get certification requirements"""
@@ -756,7 +756,7 @@ async def get_certification_requirements(
async def get_certification_leaderboard(
category: str = Query(default="highest_level", description="Leaderboard category"),
limit: int = Query(default=50, ge=1, le=100, description="Number of results"),
session: Annotated[Session, Depends(get_session)] = Depends()
session: Annotated[Session, Depends(get_session)]
) -> List[Dict[str, Any]]:
"""Get certification leaderboard"""

View File

@@ -11,7 +11,7 @@ from ..types import JobState
from ..services import JobService
from ..services.payments import PaymentService
from ..config import settings
from ..storage import Annotated[Session, Depends(get_session)], get_session
from ..storage import get_session
from ..utils.cache import cached, get_cache_config
limiter = Limiter(key_func=get_remote_address)
@@ -23,7 +23,7 @@ router = APIRouter(tags=["client"])
async def submit_job(
req: JobCreate,
request: Request,
session: Annotated[Session, Depends(get_session)] = Depends(),
session: Annotated[Session, Depends(get_session)],
client_id: str = Depends(require_client_key()),
) -> JobView: # type: ignore[arg-type]
service = JobService(session)
@@ -51,7 +51,7 @@ async def submit_job(
@cached(**get_cache_config("job_list")) # Cache job status for 1 minute
async def get_job(
job_id: str,
session: Annotated[Session, Depends(get_session)] = Depends(),
session: Annotated[Session, Depends(get_session)],
client_id: str = Depends(require_client_key()),
) -> JobView: # type: ignore[arg-type]
service = JobService(session)
@@ -65,7 +65,7 @@ async def get_job(
@router.get("/jobs/{job_id}/result", response_model=JobResult, summary="Get job result")
async def get_job_result(
job_id: str,
session: Annotated[Session, Depends(get_session)] = Depends(),
session: Annotated[Session, Depends(get_session)],
client_id: str = Depends(require_client_key()),
) -> JobResult: # type: ignore[arg-type]
service = JobService(session)
@@ -84,7 +84,7 @@ async def get_job_result(
@router.post("/jobs/{job_id}/cancel", response_model=JobView, summary="Cancel job")
async def cancel_job(
job_id: str,
session: Annotated[Session, Depends(get_session)] = Depends(),
session: Annotated[Session, Depends(get_session)],
client_id: str = Depends(require_client_key()),
) -> JobView: # type: ignore[arg-type]
service = JobService(session)
@@ -103,7 +103,7 @@ async def cancel_job(
@router.get("/jobs/{job_id}/receipt", summary="Get latest signed receipt")
async def get_job_receipt(
job_id: str,
session: Annotated[Session, Depends(get_session)] = Depends(),
session: Annotated[Session, Depends(get_session)],
client_id: str = Depends(require_client_key()),
) -> dict: # type: ignore[arg-type]
service = JobService(session)
@@ -119,7 +119,7 @@ async def get_job_receipt(
@router.get("/jobs/{job_id}/receipts", summary="List signed receipts")
async def list_job_receipts(
job_id: str,
session: Annotated[Session, Depends(get_session)] = Depends(),
session: Annotated[Session, Depends(get_session)],
client_id: str = Depends(require_client_key()),
) -> dict: # type: ignore[arg-type]
service = JobService(session)
@@ -131,7 +131,7 @@ async def list_job_receipts(
@cached(**get_cache_config("job_list")) # Cache job list for 30 seconds
async def list_jobs(
request: Request,
session: Annotated[Session, Depends(get_session)] = Depends(),
session: Annotated[Session, Depends(get_session)],
client_id: str = Depends(require_client_key()),
limit: int = 20,
offset: int = 0,
@@ -171,7 +171,7 @@ async def list_jobs(
@cached(**get_cache_config("job_list")) # Cache job history for 30 seconds
async def get_job_history(
request: Request,
session: Annotated[Session, Depends(get_session)] = Depends(),
session: Annotated[Session, Depends(get_session)],
client_id: str = Depends(require_client_key()),
limit: int = 20,
offset: int = 0,
@@ -227,7 +227,7 @@ async def get_job_history(
@router.get("/blocks", summary="Get blockchain blocks")
async def get_blocks(
request: Request,
session: Annotated[Session, Depends(get_session)] = Depends(),
session: Annotated[Session, Depends(get_session)],
client_id: str = Depends(require_client_key()),
limit: int = 20,
offset: int = 0,

View File

@@ -11,7 +11,7 @@ from fastapi import APIRouter, HTTPException, Depends, Query, Body
from pydantic import BaseModel, Field
from aitbc.logging import get_logger
from ..storage import Annotated[Session, Depends(get_session)], get_session
from ..storage import get_session
from ..services.community_service import (
DeveloperEcosystemService, ThirdPartySolutionService,
InnovationLabService, CommunityPlatformService
@@ -70,7 +70,7 @@ class HackathonCreateRequest(BaseModel):
# Endpoints - Developer Ecosystem
@router.post("/developers", response_model=DeveloperProfile)
async def create_developer_profile(request: DeveloperProfileCreate, session: Annotated[Session, Depends(get_session)] = Depends()):
async def create_developer_profile(request: DeveloperProfileCreate, session: Annotated[Session, Depends(get_session)]):
"""Register a new developer in the OpenClaw ecosystem"""
service = DeveloperEcosystemService(session)
try:
@@ -86,7 +86,7 @@ async def create_developer_profile(request: DeveloperProfileCreate, session: Ann
raise HTTPException(status_code=500, detail=str(e))
@router.get("/developers/{developer_id}", response_model=DeveloperProfile)
async def get_developer_profile(developer_id: str, session: Annotated[Session, Depends(get_session)] = Depends()):
async def get_developer_profile(developer_id: str, session: Annotated[Session, Depends(get_session)]):
"""Get a developer's profile and reputation"""
service = DeveloperEcosystemService(session)
profile = await service.get_developer_profile(developer_id)
@@ -95,14 +95,14 @@ async def get_developer_profile(developer_id: str, session: Annotated[Session, D
return profile
@router.get("/sdk/latest")
async def get_latest_sdk(session: Annotated[Session, Depends(get_session)] = Depends()):
async def get_latest_sdk(session: Annotated[Session, Depends(get_session)]):
"""Get information about the latest OpenClaw SDK releases"""
service = DeveloperEcosystemService(session)
return await service.get_sdk_release_info()
# Endpoints - Marketplace Solutions
@router.post("/solutions/publish", response_model=AgentSolution)
async def publish_solution(request: SolutionPublishRequest, session: Annotated[Session, Depends(get_session)] = Depends()):
async def publish_solution(request: SolutionPublishRequest, session: Annotated[Session, Depends(get_session)]):
"""Publish a new third-party agent solution to the marketplace"""
service = ThirdPartySolutionService(session)
try:
@@ -122,7 +122,7 @@ async def list_solutions(
return await service.list_published_solutions(category, limit)
@router.post("/solutions/{solution_id}/purchase")
async def purchase_solution(solution_id: str, session: Annotated[Session, Depends(get_session)] = Depends(), buyer_id: str = Body(embed=True)):
async def purchase_solution(solution_id: str, session: Annotated[Session, Depends(get_session)], buyer_id: str = Body(embed=True)):
"""Purchase or install a third-party solution"""
service = ThirdPartySolutionService(session)
try:
@@ -148,7 +148,7 @@ async def propose_innovation_lab(
raise HTTPException(status_code=500, detail=str(e))
@router.post("/labs/{lab_id}/join")
async def join_innovation_lab(lab_id: str, session: Annotated[Session, Depends(get_session)] = Depends(), developer_id: str = Body(embed=True)):
async def join_innovation_lab(lab_id: str, session: Annotated[Session, Depends(get_session)], developer_id: str = Body(embed=True)):
"""Join an active innovation lab"""
service = InnovationLabService(session)
try:
@@ -158,7 +158,7 @@ async def join_innovation_lab(lab_id: str, session: Annotated[Session, Depends(g
raise HTTPException(status_code=404, detail=str(e))
@router.post("/labs/{lab_id}/fund")
async def fund_innovation_lab(lab_id: str, session: Annotated[Session, Depends(get_session)] = Depends(), amount: float = Body(embed=True)):
async def fund_innovation_lab(lab_id: str, session: Annotated[Session, Depends(get_session)], amount: float = Body(embed=True)):
"""Provide funding to a proposed innovation lab"""
service = InnovationLabService(session)
try:
@@ -191,7 +191,7 @@ async def get_community_feed(
return await service.get_feed(category, limit)
@router.post("/platform/posts/{post_id}/upvote")
async def upvote_community_post(post_id: str, session: Annotated[Session, Depends(get_session)] = Depends()):
async def upvote_community_post(post_id: str, session: Annotated[Session, Depends(get_session)]):
"""Upvote a community post (rewards author reputation)"""
service = CommunityPlatformService(session)
try:
@@ -217,7 +217,7 @@ async def create_hackathon(
raise HTTPException(status_code=500, detail=str(e))
@router.post("/hackathons/{hackathon_id}/register")
async def register_for_hackathon(hackathon_id: str, session: Annotated[Session, Depends(get_session)] = Depends(), developer_id: str = Body(embed=True)):
async def register_for_hackathon(hackathon_id: str, session: Annotated[Session, Depends(get_session)], developer_id: str = Body(embed=True)):
"""Register for an upcoming or ongoing hackathon"""
service = CommunityPlatformService(session)
try:

View File

@@ -13,7 +13,7 @@ from fastapi import status as http_status
from pydantic import BaseModel, Field
from sqlmodel import select, func
from ..storage import Annotated[Session, Depends(get_session)], get_session
from ..storage import get_session
from ..services.dynamic_pricing_engine import (
DynamicPricingEngine,
PricingStrategy,

View File

@@ -10,7 +10,7 @@ from typing import List, Optional, Dict, Any
from datetime import datetime, timedelta
from pydantic import BaseModel, Field
from ..storage import Annotated[Session, Depends(get_session)], get_session
from ..storage import get_session
from ..logging import get_logger
from ..domain.bounty import EcosystemMetrics, BountyStats, AgentMetrics
from ..services.ecosystem_service import EcosystemService
@@ -89,7 +89,7 @@ def get_ecosystem_service(session: Annotated[Session, Depends(get_session)]) ->
@router.get("/ecosystem/developer-earnings", response_model=DeveloperEarningsResponse)
async def get_developer_earnings(
period: str = Field(default="monthly", regex="^(daily|weekly|monthly)$"),
session: Annotated[Session, Depends(get_session)] = Depends(),
session: Annotated[Session, Depends(get_session)],
ecosystem_service: EcosystemService = Depends(get_ecosystem_service),
current_user: dict = Depends(get_current_user)
):
@@ -109,7 +109,7 @@ async def get_developer_earnings(
@router.get("/ecosystem/agent-utilization", response_model=AgentUtilizationResponse)
async def get_agent_utilization(
period: str = Field(default="monthly", regex="^(daily|weekly|monthly)$"),
session: Annotated[Session, Depends(get_session)] = Depends(),
session: Annotated[Session, Depends(get_session)],
ecosystem_service: EcosystemService = Depends(get_ecosystem_service)
):
"""Get agent utilization metrics"""
@@ -128,7 +128,7 @@ async def get_agent_utilization(
@router.get("/ecosystem/treasury-allocation", response_model=TreasuryAllocationResponse)
async def get_treasury_allocation(
period: str = Field(default="monthly", regex="^(daily|weekly|monthly)$"),
session: Annotated[Session, Depends(get_session)] = Depends(),
session: Annotated[Session, Depends(get_session)],
ecosystem_service: EcosystemService = Depends(get_ecosystem_service)
):
"""Get DAO treasury allocation metrics"""
@@ -147,7 +147,7 @@ async def get_treasury_allocation(
@router.get("/ecosystem/staking-metrics", response_model=StakingMetricsResponse)
async def get_staking_metrics(
period: str = Field(default="monthly", regex="^(daily|weekly|monthly)$"),
session: Annotated[Session, Depends(get_session)] = Depends(),
session: Annotated[Session, Depends(get_session)],
ecosystem_service: EcosystemService = Depends(get_ecosystem_service)
):
"""Get staking system metrics"""
@@ -166,7 +166,7 @@ async def get_staking_metrics(
@router.get("/ecosystem/bounty-analytics", response_model=BountyAnalyticsResponse)
async def get_bounty_analytics(
period: str = Field(default="monthly", regex="^(daily|weekly|monthly)$"),
session: Annotated[Session, Depends(get_session)] = Depends(),
session: Annotated[Session, Depends(get_session)],
ecosystem_service: EcosystemService = Depends(get_ecosystem_service)
):
"""Get bounty system analytics"""
@@ -185,7 +185,7 @@ async def get_bounty_analytics(
@router.get("/ecosystem/overview", response_model=EcosystemOverviewResponse)
async def get_ecosystem_overview(
period_type: str = Field(default="daily", regex="^(hourly|daily|weekly|monthly)$"),
session: Annotated[Session, Depends(get_session)] = Depends(),
session: Annotated[Session, Depends(get_session)],
ecosystem_service: EcosystemService = Depends(get_ecosystem_service)
):
"""Get comprehensive ecosystem overview"""
@@ -214,7 +214,7 @@ async def get_ecosystem_metrics(
start_date: Optional[datetime] = None,
end_date: Optional[datetime] = None,
limit: int = Field(default=100, ge=1, le=1000),
session: Annotated[Session, Depends(get_session)] = Depends(),
session: Annotated[Session, Depends(get_session)],
ecosystem_service: EcosystemService = Depends(get_ecosystem_service)
):
"""Get time-series ecosystem metrics"""
@@ -238,7 +238,7 @@ async def get_ecosystem_metrics(
@router.get("/ecosystem/health-score")
async def get_ecosystem_health_score(
session: Annotated[Session, Depends(get_session)] = Depends(),
session: Annotated[Session, Depends(get_session)],
ecosystem_service: EcosystemService = Depends(get_ecosystem_service)
):
"""Get overall ecosystem health score"""
@@ -259,7 +259,7 @@ async def get_ecosystem_health_score(
@router.get("/ecosystem/growth-indicators")
async def get_growth_indicators(
period: str = Field(default="monthly", regex="^(daily|weekly|monthly)$"),
session: Annotated[Session, Depends(get_session)] = Depends(),
session: Annotated[Session, Depends(get_session)],
ecosystem_service: EcosystemService = Depends(get_ecosystem_service)
):
"""Get ecosystem growth indicators"""
@@ -282,7 +282,7 @@ async def get_top_performers(
category: str = Field(default="all", regex="^(developers|agents|stakers|all)$"),
period: str = Field(default="monthly", regex="^(daily|weekly|monthly)$"),
limit: int = Field(default=50, ge=1, le=100),
session: Annotated[Session, Depends(get_session)] = Depends(),
session: Annotated[Session, Depends(get_session)],
ecosystem_service: EcosystemService = Depends(get_ecosystem_service)
):
"""Get top performers in different categories"""
@@ -308,7 +308,7 @@ async def get_top_performers(
async def get_ecosystem_predictions(
metric: str = Field(default="all", regex="^(earnings|staking|bounties|agents|all)$"),
horizon: int = Field(default=30, ge=1, le=365), # days
session: Annotated[Session, Depends(get_session)] = Depends(),
session: Annotated[Session, Depends(get_session)],
ecosystem_service: EcosystemService = Depends(get_ecosystem_service)
):
"""Get ecosystem predictions based on historical data"""
@@ -333,7 +333,7 @@ async def get_ecosystem_predictions(
@router.get("/ecosystem/alerts")
async def get_ecosystem_alerts(
severity: str = Field(default="all", regex="^(low|medium|high|critical|all)$"),
session: Annotated[Session, Depends(get_session)] = Depends(),
session: Annotated[Session, Depends(get_session)],
ecosystem_service: EcosystemService = Depends(get_ecosystem_service)
):
"""Get ecosystem alerts and anomalies"""
@@ -357,7 +357,7 @@ async def get_ecosystem_comparison(
compare_period: str = Field(default="previous", regex="^(previous|same_last_year|custom)$"),
custom_start_date: Optional[datetime] = None,
custom_end_date: Optional[datetime] = None,
session: Annotated[Session, Depends(get_session)] = Depends(),
session: Annotated[Session, Depends(get_session)],
ecosystem_service: EcosystemService = Depends(get_ecosystem_service)
):
"""Compare ecosystem metrics between periods"""
@@ -386,7 +386,7 @@ async def export_ecosystem_data(
period_type: str = Field(default="daily", regex="^(hourly|daily|weekly|monthly)$"),
start_date: Optional[datetime] = None,
end_date: Optional[datetime] = None,
session: Annotated[Session, Depends(get_session)] = Depends(),
session: Annotated[Session, Depends(get_session)],
ecosystem_service: EcosystemService = Depends(get_ecosystem_service)
):
"""Export ecosystem data in various formats"""
@@ -413,7 +413,7 @@ async def export_ecosystem_data(
@router.get("/ecosystem/real-time")
async def get_real_time_metrics(
session: Annotated[Session, Depends(get_session)] = Depends(),
session: Annotated[Session, Depends(get_session)],
ecosystem_service: EcosystemService = Depends(get_ecosystem_service)
):
"""Get real-time ecosystem metrics"""
@@ -432,7 +432,7 @@ async def get_real_time_metrics(
@router.get("/ecosystem/kpi-dashboard")
async def get_kpi_dashboard(
session: Annotated[Session, Depends(get_session)] = Depends(),
session: Annotated[Session, Depends(get_session)],
ecosystem_service: EcosystemService = Depends(get_ecosystem_service)
):
"""Get KPI dashboard with key performance indicators"""

View File

@@ -2,14 +2,14 @@ from sqlalchemy.orm import Session
from typing import Annotated
from typing import List, Optional
from fastapi import APIRouter, Depends, Query
from ..storage import Annotated[Session, Depends(get_session)], get_session
from ..storage import get_session
from ..domain.gpu_marketplace import ConsumerGPUProfile, GPUArchitecture, EdgeGPUMetrics
from ..services.edge_gpu_service import EdgeGPUService
router = APIRouter(prefix="/v1/marketplace/edge-gpu", tags=["edge-gpu"])
def get_edge_service(session: Annotated[Session, Depends(get_session)] = Depends()) -> EdgeGPUService:
def get_edge_service(session: Annotated[Session, Depends(get_session)]) -> EdgeGPUService:
return EdgeGPUService(session)

View File

@@ -1,6 +1,6 @@
from __future__ import annotations
from sqlalchemy.orm import Session
from typing import Annotated
from __future__ import annotations
from fastapi import APIRouter, Depends, Query
@@ -11,19 +11,19 @@ from ..schemas import (
ReceiptListResponse,
)
from ..services import ExplorerService
from ..storage import Annotated[Session, Depends(get_session)], get_session
from ..storage import get_session
router = APIRouter(prefix="/explorer", tags=["explorer"])
def _service(session: Annotated[Session, Depends(get_session)] = Depends()) -> ExplorerService:
def _service(session: Annotated[Session, Depends(get_session)]) -> ExplorerService:
return ExplorerService(session)
@router.get("/blocks", response_model=BlockListResponse, summary="List recent blocks")
async def list_blocks(
*,
session: Annotated[Session, Depends(get_session)] = Depends(),
session: Annotated[Session, Depends(get_session)],
limit: int = Query(default=20, ge=1, le=200),
offset: int = Query(default=0, ge=0),
) -> BlockListResponse:
@@ -37,7 +37,7 @@ async def list_blocks(
)
async def list_transactions(
*,
session: Annotated[Session, Depends(get_session)] = Depends(),
session: Annotated[Session, Depends(get_session)],
limit: int = Query(default=50, ge=1, le=200),
offset: int = Query(default=0, ge=0),
) -> TransactionListResponse:
@@ -47,7 +47,7 @@ async def list_transactions(
@router.get("/addresses", response_model=AddressListResponse, summary="List address summaries")
async def list_addresses(
*,
session: Annotated[Session, Depends(get_session)] = Depends(),
session: Annotated[Session, Depends(get_session)],
limit: int = Query(default=50, ge=1, le=200),
offset: int = Query(default=0, ge=0),
) -> AddressListResponse:
@@ -57,7 +57,7 @@ async def list_addresses(
@router.get("/receipts", response_model=ReceiptListResponse, summary="List job receipts")
async def list_receipts(
*,
session: Annotated[Session, Depends(get_session)] = Depends(),
session: Annotated[Session, Depends(get_session)],
job_id: str | None = Query(default=None, description="Filter by job identifier"),
limit: int = Query(default=50, ge=1, le=200),
offset: int = Query(default=0, ge=0),

View File

@@ -11,7 +11,7 @@ from fastapi import APIRouter, HTTPException, Depends, Query, Body
from pydantic import BaseModel, Field
from aitbc.logging import get_logger
from ..storage import Annotated[Session, Depends(get_session)], get_session
from ..storage import get_session
from ..services.governance_service import GovernanceService
from ..domain.governance import (
GovernanceProfile, Proposal, Vote, DaoTreasury, TransparencyReport,
@@ -45,7 +45,7 @@ class VoteRequest(BaseModel):
# Endpoints - Profile & Delegation
@router.post("/profiles", response_model=GovernanceProfile)
async def init_governance_profile(request: ProfileInitRequest, session: Annotated[Session, Depends(get_session)] = Depends()):
async def init_governance_profile(request: ProfileInitRequest, session: Annotated[Session, Depends(get_session)]):
"""Initialize a governance profile for a user"""
service = GovernanceService(session)
try:
@@ -56,7 +56,7 @@ async def init_governance_profile(request: ProfileInitRequest, session: Annotate
raise HTTPException(status_code=500, detail=str(e))
@router.post("/profiles/{profile_id}/delegate", response_model=GovernanceProfile)
async def delegate_voting_power(profile_id: str, request: DelegationRequest, session: Annotated[Session, Depends(get_session)] = Depends()):
async def delegate_voting_power(profile_id: str, request: DelegationRequest, session: Annotated[Session, Depends(get_session)]):
"""Delegate your voting power to another DAO member"""
service = GovernanceService(session)
try:
@@ -70,7 +70,7 @@ async def delegate_voting_power(profile_id: str, request: DelegationRequest, ses
# Endpoints - Proposals
@router.post("/proposals", response_model=Proposal)
async def create_proposal(
session: Annotated[Session, Depends(get_session)] = Depends(),
session: Annotated[Session, Depends(get_session)],
proposer_id: str = Query(...),
request: ProposalCreateRequest = Body(...)
):
@@ -87,7 +87,7 @@ async def create_proposal(
@router.post("/proposals/{proposal_id}/vote", response_model=Vote)
async def cast_vote(
proposal_id: str,
session: Annotated[Session, Depends(get_session)] = Depends(),
session: Annotated[Session, Depends(get_session)],
voter_id: str = Query(...),
request: VoteRequest = Body(...)
):
@@ -107,7 +107,7 @@ async def cast_vote(
raise HTTPException(status_code=500, detail=str(e))
@router.post("/proposals/{proposal_id}/process", response_model=Proposal)
async def process_proposal(proposal_id: str, session: Annotated[Session, Depends(get_session)] = Depends()):
async def process_proposal(proposal_id: str, session: Annotated[Session, Depends(get_session)]):
"""Manually trigger the lifecycle check of a proposal (e.g., tally votes when time ends)"""
service = GovernanceService(session)
try:
@@ -121,7 +121,7 @@ async def process_proposal(proposal_id: str, session: Annotated[Session, Depends
@router.post("/proposals/{proposal_id}/execute", response_model=Proposal)
async def execute_proposal(
proposal_id: str,
session: Annotated[Session, Depends(get_session)] = Depends(),
session: Annotated[Session, Depends(get_session)],
executor_id: str = Query(...)
):
"""Execute the payload of a succeeded proposal"""
@@ -137,7 +137,7 @@ async def execute_proposal(
# Endpoints - Analytics
@router.post("/analytics/reports", response_model=TransparencyReport)
async def generate_transparency_report(
session: Annotated[Session, Depends(get_session)] = Depends(),
session: Annotated[Session, Depends(get_session)],
period: str = Query(..., description="e.g., 2026-Q1")
):
"""Generate a governance analytics and transparency report"""

View File

@@ -12,7 +12,7 @@ import psutil
import subprocess
from typing import Dict, Any
from ..storage import Annotated[Session, Depends(get_session)], get_session
from ..storage import get_session
from ..services.multimodal_agent import MultiModalAgentService
from ..logging import get_logger
@@ -21,7 +21,7 @@ router = APIRouter()
@router.get("/health", tags=["health"], summary="GPU Multi-Modal Service Health")
async def gpu_multimodal_health(session: Annotated[Session, Depends(get_session)] = Depends()) -> Dict[str, Any]:
async def gpu_multimodal_health(session: Annotated[Session, Depends(get_session)]) -> Dict[str, Any]:
"""
Health check for GPU Multi-Modal Service (Port 8003)
"""
@@ -98,7 +98,7 @@ async def gpu_multimodal_health(session: Annotated[Session, Depends(get_session)
@router.get("/health/deep", tags=["health"], summary="Deep GPU Multi-Modal Service Health")
async def gpu_multimodal_deep_health(session: Annotated[Session, Depends(get_session)] = Depends()) -> Dict[str, Any]:
async def gpu_multimodal_deep_health(session: Annotated[Session, Depends(get_session)]) -> Dict[str, Any]:
"""
Deep health check with CUDA performance validation
"""

View File

@@ -1,6 +1,6 @@
from __future__ import annotations
from sqlalchemy.orm import Session
from typing import Annotated
from __future__ import annotations
from fastapi import APIRouter, Depends, HTTPException, Query, Request
from fastapi import status as http_status
@@ -9,7 +9,7 @@ from slowapi.util import get_remote_address
from ..schemas import MarketplaceBidRequest, MarketplaceOfferView, MarketplaceStatsView, MarketplaceBidView
from ..services import MarketplaceService
from ..storage import Annotated[Session, Depends(get_session)], get_session
from ..storage import get_session
from ..metrics import marketplace_requests_total, marketplace_errors_total
from ..utils.cache import cached, get_cache_config
from ..config import settings
@@ -20,7 +20,7 @@ limiter = Limiter(key_func=get_remote_address)
router = APIRouter(tags=["marketplace"])
def _get_service(session: Annotated[Session, Depends(get_session)] = Depends()) -> MarketplaceService:
def _get_service(session: Annotated[Session, Depends(get_session)]) -> MarketplaceService:
return MarketplaceService(session)
@@ -33,7 +33,7 @@ def _get_service(session: Annotated[Session, Depends(get_session)] = Depends())
async def list_marketplace_offers(
request: Request,
*,
session: Annotated[Session, Depends(get_session)] = Depends(),
session: Annotated[Session, Depends(get_session)],
status_filter: str | None = Query(default=None, alias="status", description="Filter by offer status"),
limit: int = Query(default=100, ge=1, le=500),
offset: int = Query(default=0, ge=0),
@@ -60,7 +60,7 @@ async def list_marketplace_offers(
async def get_marketplace_stats(
request: Request,
*,
session: Annotated[Session, Depends(get_session)] = Depends()
session: Annotated[Session, Depends(get_session)]
) -> MarketplaceStatsView:
marketplace_requests_total.labels(endpoint="/marketplace/stats", method="GET").inc()
service = _get_service(session)
@@ -80,7 +80,7 @@ async def get_marketplace_stats(
async def submit_marketplace_bid(
request: Request,
payload: MarketplaceBidRequest,
session: Annotated[Session, Depends(get_session)] = Depends(),
session: Annotated[Session, Depends(get_session)],
) -> dict[str, str]:
marketplace_requests_total.labels(endpoint="/marketplace/bids", method="POST").inc()
service = _get_service(session)
@@ -102,7 +102,7 @@ async def submit_marketplace_bid(
)
async def list_marketplace_bids(
*,
session: Annotated[Session, Depends(get_session)] = Depends(),
session: Annotated[Session, Depends(get_session)],
status_filter: str | None = Query(default=None, alias="status", description="Filter by bid status"),
provider_filter: str | None = Query(default=None, alias="provider", description="Filter by provider ID"),
limit: int = Query(default=100, ge=1, le=500),
@@ -127,7 +127,7 @@ async def list_marketplace_bids(
)
async def get_marketplace_bid(
bid_id: str,
session: Annotated[Session, Depends(get_session)] = Depends(),
session: Annotated[Session, Depends(get_session)],
) -> MarketplaceBidView:
marketplace_requests_total.labels(endpoint="/marketplace/bids/{bid_id}", method="GET").inc()
service = _get_service(session)

View File

@@ -13,7 +13,7 @@ from pydantic import BaseModel, Field
from ..domain import MarketplaceOffer
from ..services.marketplace_enhanced import EnhancedMarketplaceService, RoyaltyTier, LicenseType
from ..storage import Annotated[Session, Depends(get_session)], get_session
from ..storage import get_session
from ..deps import require_admin_key
from ..schemas.marketplace_enhanced import (
RoyaltyDistributionRequest, RoyaltyDistributionResponse,

View File

@@ -9,7 +9,7 @@ from fastapi.middleware.cors import CORSMiddleware
from .marketplace_enhanced_simple import router
from .marketplace_enhanced_health import router as health_router
from ..storage import Annotated[Session, Depends(get_session)], get_session
from ..storage import get_session
app = FastAPI(
title="AITBC Enhanced Marketplace Service",

View File

@@ -11,7 +11,7 @@ import sys
import psutil
from typing import Dict, Any
from ..storage import Annotated[Session, Depends(get_session)], get_session
from ..storage import get_session
from ..services.marketplace_enhanced import EnhancedMarketplaceService
from ..logging import get_logger
@@ -20,7 +20,7 @@ router = APIRouter()
@router.get("/health", tags=["health"], summary="Enhanced Marketplace Service Health")
async def marketplace_enhanced_health(session: Annotated[Session, Depends(get_session)] = Depends()) -> Dict[str, Any]:
async def marketplace_enhanced_health(session: Annotated[Session, Depends(get_session)]) -> Dict[str, Any]:
"""
Health check for Enhanced Marketplace Service (Port 8006)
"""
@@ -105,7 +105,7 @@ async def marketplace_enhanced_health(session: Annotated[Session, Depends(get_se
@router.get("/health/deep", tags=["health"], summary="Deep Enhanced Marketplace Service Health")
async def marketplace_enhanced_deep_health(session: Annotated[Session, Depends(get_session)] = Depends()) -> Dict[str, Any]:
async def marketplace_enhanced_deep_health(session: Annotated[Session, Depends(get_session)]) -> Dict[str, Any]:
"""
Deep health check with marketplace feature validation
"""

View File

@@ -12,7 +12,7 @@ from fastapi import APIRouter, HTTPException, Depends
from pydantic import BaseModel, Field
from ..services.marketplace_enhanced_simple import EnhancedMarketplaceService, RoyaltyTier, LicenseType, VerificationType
from ..storage import Annotated[Session, Depends(get_session)], get_session
from ..storage import get_session
from ..deps import require_admin_key
from sqlmodel import Session

View File

@@ -14,7 +14,7 @@ from pydantic import BaseModel, Field
from sqlmodel import select, func, col
from sqlalchemy.orm import Session
from ..storage import Annotated[Session, Depends(get_session)], get_session
from ..storage import get_session
from ..domain.gpu_marketplace import GPURegistry, GPUBooking, GPUReview
from ..services.dynamic_pricing_engine import DynamicPricingEngine, PricingStrategy, ResourceType
from ..services.market_data_collector import MarketDataCollector
@@ -132,7 +132,7 @@ def _get_gpu_or_404(session, gpu_id: str) -> GPURegistry:
@router.post("/marketplace/gpu/register")
async def register_gpu(
request: Dict[str, Any],
session: Annotated[Session, Depends(get_session)] = Depends(),
session: Annotated[Session, Depends(get_session)],
engine: DynamicPricingEngine = Depends(get_pricing_engine)
) -> Dict[str, Any]:
"""Register a GPU in the marketplace with dynamic pricing."""
@@ -187,7 +187,7 @@ async def register_gpu(
@router.get("/marketplace/gpu/list")
async def list_gpus(
session: Annotated[Session, Depends(get_session)] = Depends(),
session: Annotated[Session, Depends(get_session)],
available: Optional[bool] = Query(default=None),
price_max: Optional[float] = Query(default=None),
region: Optional[str] = Query(default=None),
@@ -213,7 +213,7 @@ async def list_gpus(
@router.get("/marketplace/gpu/{gpu_id}")
async def get_gpu_details(gpu_id: str, session: Annotated[Session, Depends(get_session)] = Depends()) -> Dict[str, Any]:
async def get_gpu_details(gpu_id: str, session: Annotated[Session, Depends(get_session)]) -> Dict[str, Any]:
"""Get GPU details."""
gpu = _get_gpu_or_404(session, gpu_id)
result = _gpu_to_dict(gpu)
@@ -239,7 +239,7 @@ async def get_gpu_details(gpu_id: str, session: Annotated[Session, Depends(get_s
async def book_gpu(
gpu_id: str,
request: GPUBookRequest,
session: Annotated[Session, Depends(get_session)] = Depends(),
session: Annotated[Session, Depends(get_session)],
engine: DynamicPricingEngine = Depends(get_pricing_engine)
) -> Dict[str, Any]:
"""Book a GPU with dynamic pricing."""
@@ -321,7 +321,7 @@ async def book_gpu(
@router.post("/marketplace/gpu/{gpu_id}/release")
async def release_gpu(gpu_id: str, session: Annotated[Session, Depends(get_session)] = Depends()) -> Dict[str, Any]:
async def release_gpu(gpu_id: str, session: Annotated[Session, Depends(get_session)]) -> Dict[str, Any]:
"""Release a booked GPU."""
gpu = _get_gpu_or_404(session, gpu_id)
@@ -465,7 +465,7 @@ async def send_payment(
@router.get("/marketplace/gpu/{gpu_id}/reviews")
async def get_gpu_reviews(
gpu_id: str,
session: Annotated[Session, Depends(get_session)] = Depends(),
session: Annotated[Session, Depends(get_session)],
limit: int = Query(default=10, ge=1, le=100),
) -> Dict[str, Any]:
"""Get GPU reviews."""
@@ -495,7 +495,7 @@ async def get_gpu_reviews(
@router.post("/marketplace/gpu/{gpu_id}/reviews", status_code=http_status.HTTP_201_CREATED)
async def add_gpu_review(
gpu_id: str, request: GPUReviewRequest, session: Annotated[Session, Depends(get_session)] = Depends()
gpu_id: str, request: GPUReviewRequest, session: Annotated[Session, Depends(get_session)]
) -> Dict[str, Any]:
"""Add a review for a GPU."""
gpu = _get_gpu_or_404(session, gpu_id)
@@ -532,7 +532,7 @@ async def add_gpu_review(
@router.get("/marketplace/orders")
async def list_orders(
session: Annotated[Session, Depends(get_session)] = Depends(),
session: Annotated[Session, Depends(get_session)],
status: Optional[str] = Query(default=None),
limit: int = Query(default=100, ge=1, le=500),
) -> List[Dict[str, Any]]:
@@ -563,7 +563,7 @@ async def list_orders(
@router.get("/marketplace/pricing/{model}")
async def get_pricing(
model: str,
session: Annotated[Session, Depends(get_session)] = Depends(),
session: Annotated[Session, Depends(get_session)],
engine: DynamicPricingEngine = Depends(get_pricing_engine),
collector: MarketDataCollector = Depends(get_market_collector)
) -> Dict[str, Any]:

View File

@@ -11,14 +11,14 @@ from sqlmodel import Session, select
from ..deps import require_admin_key
from ..domain import MarketplaceOffer, Miner
from ..schemas import MarketplaceOfferView
from ..storage import Annotated[Session, Depends(get_session)], get_session
from ..storage import get_session
router = APIRouter(tags=["marketplace-offers"])
@router.post("/marketplace/sync-offers", summary="Create offers from registered miners")
async def sync_offers(
session: Annotated[Session, Depends(get_session)] = Depends(),
session: Annotated[Session, Depends(get_session)],
admin_key: str = Depends(require_admin_key()),
) -> dict[str, Any]:
"""Create marketplace offers from all registered miners"""
@@ -66,7 +66,7 @@ async def sync_offers(
@router.get("/marketplace/miner-offers", summary="List all miner offers", response_model=list[MarketplaceOfferView])
async def list_miner_offers(session: Annotated[Session, Depends(get_session)] = Depends()) -> list[MarketplaceOfferView]:
async def list_miner_offers(session: Annotated[Session, Depends(get_session)]) -> list[MarketplaceOfferView]:
"""List all offers created from miners"""
# Get all offers with miner details

View File

@@ -12,7 +12,7 @@ from fastapi import APIRouter, HTTPException, Depends, Query, BackgroundTasks
from pydantic import BaseModel, Field
from aitbc.logging import get_logger
from ..storage import Annotated[Session, Depends(get_session)], get_session
from ..storage import get_session
import sys
import os
sys.path.append(os.path.join(os.path.dirname(__file__), "../../../../../gpu_acceleration"))

View File

@@ -12,7 +12,7 @@ from ..schemas import AssignedJob, JobFailSubmit, JobResultSubmit, JobState, Min
from ..services import JobService, MinerService
from ..services.receipts import ReceiptService
from ..config import settings
from ..storage import Annotated[Session, Depends(get_session)], get_session
from ..storage import get_session
from aitbc.logging import get_logger
logger = get_logger(__name__)
@@ -25,7 +25,7 @@ router = APIRouter(tags=["miner"])
async def register(
req: MinerRegister,
request: Request,
session: Annotated[Session, Depends(get_session)] = Depends(),
session: Annotated[Session, Depends(get_session)],
miner_id: str = Depends(get_miner_id()),
api_key: str = Depends(require_miner_key()),
) -> dict[str, Any]: # type: ignore[arg-type]
@@ -38,7 +38,7 @@ async def register(
async def heartbeat(
req: MinerHeartbeat,
request: Request,
session: Annotated[Session, Depends(get_session)] = Depends(),
session: Annotated[Session, Depends(get_session)],
miner_id: str = Depends(get_miner_id()),
api_key: str = Depends(require_miner_key()),
) -> dict[str, str]: # type: ignore[arg-type]
@@ -53,7 +53,7 @@ async def heartbeat(
@router.post("/miners/poll", response_model=AssignedJob, summary="Poll for next job")
async def poll(
req: PollRequest,
session: Annotated[Session, Depends(get_session)] = Depends(),
session: Annotated[Session, Depends(get_session)],
miner_id: str = Depends(require_miner_key()),
) -> AssignedJob | Response: # type: ignore[arg-type]
job = MinerService(session).poll(miner_id, req.max_wait_seconds)
@@ -66,7 +66,7 @@ async def poll(
async def submit_result(
job_id: str,
req: JobResultSubmit,
session: Annotated[Session, Depends(get_session)] = Depends(),
session: Annotated[Session, Depends(get_session)],
miner_id: str = Depends(require_miner_key()),
) -> dict[str, Any]: # type: ignore[arg-type]
job_service = JobService(session)
@@ -122,7 +122,7 @@ async def submit_result(
async def submit_failure(
job_id: str,
req: JobFailSubmit,
session: Annotated[Session, Depends(get_session)] = Depends(),
session: Annotated[Session, Depends(get_session)],
miner_id: str = Depends(require_miner_key()),
) -> dict[str, str]: # type: ignore[arg-type]
try:
@@ -141,7 +141,7 @@ async def list_miner_jobs(
job_type: str | None = None,
min_reward: float | None = None,
job_status: str | None = None,
session: Annotated[Session, Depends(get_session)] = Depends() = Annotated[Session, Depends(get_session)],
session: Annotated[Session, Depends(get_session)] = Annotated[Session, Depends(get_session)],
api_key: str = Depends(require_miner_key()),
) -> dict[str, Any]: # type: ignore[arg-type]
"""List jobs assigned to a specific miner"""
@@ -190,7 +190,7 @@ async def get_miner_earnings(
miner_id: str,
from_time: str | None = None,
to_time: str | None = None,
session: Annotated[Session, Depends(get_session)] = Depends() = Annotated[Session, Depends(get_session)],
session: Annotated[Session, Depends(get_session)] = Annotated[Session, Depends(get_session)],
api_key: str = Depends(require_miner_key()),
) -> dict[str, Any]: # type: ignore[arg-type]
"""Get earnings for a specific miner"""
@@ -225,7 +225,7 @@ async def get_miner_earnings(
async def update_miner_capabilities(
miner_id: str,
req: MinerRegister,
session: Annotated[Session, Depends(get_session)] = Depends() = Annotated[Session, Depends(get_session)],
session: Annotated[Session, Depends(get_session)] = Annotated[Session, Depends(get_session)],
api_key: str = Depends(require_miner_key()),
) -> dict[str, Any]: # type: ignore[arg-type]
"""Update capabilities for a registered miner"""
@@ -248,7 +248,7 @@ async def update_miner_capabilities(
@router.delete("/miners/{miner_id}", summary="Deregister miner")
async def deregister_miner(
miner_id: str,
session: Annotated[Session, Depends(get_session)] = Depends() = Annotated[Session, Depends(get_session)],
session: Annotated[Session, Depends(get_session)] = Annotated[Session, Depends(get_session)],
api_key: str = Depends(require_miner_key()),
) -> dict[str, str]: # type: ignore[arg-type]
"""Deregister a miner from the coordinator"""

View File

@@ -1,7 +1,7 @@
from sqlalchemy.orm import Session
from typing import Annotated
from fastapi import APIRouter, Depends, HTTPException
from ..storage import Annotated[Session, Depends(get_session)], get_session
from ..storage import get_session
from ..services.zk_proofs import ZKProofService
from ..services.fhe_service import FHEService

View File

@@ -11,7 +11,7 @@ import sys
import psutil
from typing import Dict, Any
from ..storage import Annotated[Session, Depends(get_session)], get_session
from ..storage import get_session
from ..services.multimodal_agent import MultiModalAgentService
from ..logging import get_logger
@@ -20,7 +20,7 @@ router = APIRouter()
@router.get("/health", tags=["health"], summary="Modality Optimization Service Health")
async def modality_optimization_health(session: Annotated[Session, Depends(get_session)] = Depends()) -> Dict[str, Any]:
async def modality_optimization_health(session: Annotated[Session, Depends(get_session)]) -> Dict[str, Any]:
"""
Health check for Modality Optimization Service (Port 8004)
"""
@@ -98,7 +98,7 @@ async def modality_optimization_health(session: Annotated[Session, Depends(get_s
@router.get("/health/deep", tags=["health"], summary="Deep Modality Optimization Service Health")
async def modality_optimization_deep_health(session: Annotated[Session, Depends(get_session)] = Depends()) -> Dict[str, Any]:
async def modality_optimization_deep_health(session: Annotated[Session, Depends(get_session)]) -> Dict[str, Any]:
"""
Deep health check with optimization strategy validation
"""

View File

@@ -12,7 +12,7 @@ import asyncio
import httpx
from typing import Dict, Any, List
from ..storage import Annotated[Session, Depends(get_session)], get_session
from ..storage import get_session
from ..logging import get_logger
logger = get_logger(__name__)
@@ -69,7 +69,7 @@ SERVICES = {
@router.get("/dashboard", tags=["monitoring"], summary="Enhanced Services Dashboard")
async def monitoring_dashboard(request: Request, session: Annotated[Session, Depends(get_session)] = Depends()) -> Dict[str, Any]:
async def monitoring_dashboard(request: Request, session: Annotated[Session, Depends(get_session)]) -> Dict[str, Any]:
"""
Unified monitoring dashboard for all enhanced services
"""

View File

@@ -11,7 +11,7 @@ from fastapi import APIRouter, Depends, HTTPException, Query, BackgroundTasks, W
from pydantic import BaseModel, Field
from aitbc.logging import get_logger
from ..storage import Annotated[Session, Depends(get_session)], get_session
from ..storage import get_session
from ..services.multi_modal_fusion import MultiModalFusionEngine
from ..services.advanced_reinforcement_learning import AdvancedReinforcementLearningEngine, MarketplaceStrategyOptimizer, CrossDomainCapabilityIntegrator
from ..domain.agent_performance import (
@@ -140,7 +140,7 @@ class CapabilityIntegrationResponse(BaseModel):
@router.post("/fusion/models", response_model=FusionModelResponse)
async def create_fusion_model(
fusion_request: FusionModelRequest,
session: Annotated[Session, Depends(get_session)] = Depends()
session: Annotated[Session, Depends(get_session)]
) -> FusionModelResponse:
"""Create multi-modal fusion model"""
@@ -180,7 +180,7 @@ async def create_fusion_model(
async def fuse_modalities(
fusion_id: str,
fusion_request: FusionRequest,
session: Annotated[Session, Depends(get_session)] = Depends()
session: Annotated[Session, Depends(get_session)]
) -> FusionResponse:
"""Fuse modalities using trained model"""
@@ -213,7 +213,7 @@ async def fuse_modalities(
@router.get("/fusion/models")
async def list_fusion_models(
session: Annotated[Session, Depends(get_session)] = Depends(),
session: Annotated[Session, Depends(get_session)],
status: Optional[str] = Query(default=None, description="Filter by status"),
fusion_type: Optional[str] = Query(default=None, description="Filter by fusion type"),
limit: int = Query(default=50, ge=1, le=100, description="Number of results")
@@ -263,7 +263,7 @@ async def list_fusion_models(
@router.post("/rl/agents", response_model=RLAgentResponse)
async def create_rl_agent(
agent_request: RLAgentRequest,
session: Annotated[Session, Depends(get_session)] = Depends()
session: Annotated[Session, Depends(get_session)]
) -> RLAgentResponse:
"""Create RL agent for marketplace strategies"""
@@ -301,7 +301,7 @@ async def create_rl_agent(
async def fuse_modalities_stream(
websocket: WebSocket,
fusion_id: str,
session: Annotated[Session, Depends(get_session)] = Depends()
session: Annotated[Session, Depends(get_session)]
):
"""Stream modalities and receive fusion results via WebSocket for high performance"""
await websocket.accept()
@@ -351,7 +351,7 @@ async def fuse_modalities_stream(
@router.get("/rl/agents/{agent_id}")
async def get_rl_agents(
agent_id: str,
session: Annotated[Session, Depends(get_session)] = Depends(),
session: Annotated[Session, Depends(get_session)],
status: Optional[str] = Query(default=None, description="Filter by status"),
algorithm: Optional[str] = Query(default=None, description="Filter by algorithm"),
limit: int = Query(default=20, ge=1, le=100, description="Number of results")
@@ -408,7 +408,7 @@ async def get_rl_agents(
@router.post("/rl/optimize-strategy", response_model=StrategyOptimizationResponse)
async def optimize_strategy(
optimization_request: StrategyOptimizationRequest,
session: Annotated[Session, Depends(get_session)] = Depends()
session: Annotated[Session, Depends(get_session)]
) -> StrategyOptimizationResponse:
"""Optimize agent strategy using RL"""
@@ -443,7 +443,7 @@ async def optimize_strategy(
async def deploy_strategy(
config_id: str,
deployment_context: Dict[str, Any],
session: Annotated[Session, Depends(get_session)] = Depends()
session: Annotated[Session, Depends(get_session)]
) -> Dict[str, Any]:
"""Deploy trained strategy"""
@@ -468,7 +468,7 @@ async def deploy_strategy(
@router.post("/capabilities/integrate", response_model=CapabilityIntegrationResponse)
async def integrate_capabilities(
integration_request: CapabilityIntegrationRequest,
session: Annotated[Session, Depends(get_session)] = Depends()
session: Annotated[Session, Depends(get_session)]
) -> CapabilityIntegrationResponse:
"""Integrate capabilities across domains"""
@@ -516,7 +516,7 @@ async def integrate_capabilities(
@router.get("/capabilities/{agent_id}/domains")
async def get_agent_domain_capabilities(
agent_id: str,
session: Annotated[Session, Depends(get_session)] = Depends(),
session: Annotated[Session, Depends(get_session)],
domain: Optional[str] = Query(default=None, description="Filter by domain"),
limit: int = Query(default=50, ge=1, le=100, description="Number of results")
) -> List[Dict[str, Any]]:
@@ -573,7 +573,7 @@ async def get_agent_domain_capabilities(
@router.get("/creative-capabilities/{agent_id}")
async def get_creative_capabilities(
agent_id: str,
session: Annotated[Session, Depends(get_session)] = Depends(),
session: Annotated[Session, Depends(get_session)],
creative_domain: Optional[str] = Query(default=None, description="Filter by creative domain"),
limit: int = Query(default=50, ge=1, le=100, description="Number of results")
) -> List[Dict[str, Any]]:
@@ -626,7 +626,7 @@ async def get_creative_capabilities(
@router.get("/analytics/fusion-performance")
async def get_fusion_performance_analytics(
session: Annotated[Session, Depends(get_session)] = Depends(),
session: Annotated[Session, Depends(get_session)],
agent_ids: Optional[List[str]] = Query(default=[], description="List of agent IDs"),
fusion_type: Optional[str] = Query(default=None, description="Filter by fusion type"),
period: str = Query(default="7d", description="Time period")
@@ -714,7 +714,7 @@ async def get_fusion_performance_analytics(
@router.get("/analytics/rl-performance")
async def get_rl_performance_analytics(
session: Annotated[Session, Depends(get_session)] = Depends(),
session: Annotated[Session, Depends(get_session)],
agent_ids: Optional[List[str]] = Query(default=[], description="List of agent IDs"),
algorithm: Optional[str] = Query(default=None, description="Filter by algorithm"),
environment_type: Optional[str] = Query(default=None, description="Filter by environment type"),

View File

@@ -11,7 +11,7 @@ import sys
import psutil
from typing import Dict, Any
from ..storage import Annotated[Session, Depends(get_session)], get_session
from ..storage import get_session
from ..services.multimodal_agent import MultiModalAgentService
from ..logging import get_logger
@@ -20,7 +20,7 @@ router = APIRouter()
@router.get("/health", tags=["health"], summary="Multi-Modal Agent Service Health")
async def multimodal_health(session: Annotated[Session, Depends(get_session)] = Depends()) -> Dict[str, Any]:
async def multimodal_health(session: Annotated[Session, Depends(get_session)]) -> Dict[str, Any]:
"""
Health check for Multi-Modal Agent Service (Port 8002)
"""
@@ -95,7 +95,7 @@ async def multimodal_health(session: Annotated[Session, Depends(get_session)] =
@router.get("/health/deep", tags=["health"], summary="Deep Multi-Modal Service Health")
async def multimodal_deep_health(session: Annotated[Session, Depends(get_session)] = Depends()) -> Dict[str, Any]:
async def multimodal_deep_health(session: Annotated[Session, Depends(get_session)]) -> Dict[str, Any]:
"""
Deep health check with detailed multi-modal processing tests
"""

View File

@@ -13,7 +13,7 @@ from pydantic import BaseModel, Field
from ..domain import AIAgentWorkflow, AgentExecution, AgentStatus
from ..services.openclaw_enhanced import OpenClawEnhancedService, SkillType, ExecutionMode
from ..storage import Annotated[Session, Depends(get_session)], get_session
from ..storage import get_session
from ..deps import require_admin_key
from ..schemas.openclaw_enhanced import (
SkillRoutingRequest, SkillRoutingResponse,

View File

@@ -9,7 +9,7 @@ from fastapi.middleware.cors import CORSMiddleware
from .openclaw_enhanced_simple import router
from .openclaw_enhanced_health import router as health_router
from ..storage import Annotated[Session, Depends(get_session)], get_session
from ..storage import get_session
app = FastAPI(
title="AITBC OpenClaw Enhanced Service",

View File

@@ -12,7 +12,7 @@ import psutil
import subprocess
from typing import Dict, Any
from ..storage import Annotated[Session, Depends(get_session)], get_session
from ..storage import get_session
from ..services.openclaw_enhanced import OpenClawEnhancedService
from ..logging import get_logger
@@ -21,7 +21,7 @@ router = APIRouter()
@router.get("/health", tags=["health"], summary="OpenClaw Enhanced Service Health")
async def openclaw_enhanced_health(session: Annotated[Session, Depends(get_session)] = Depends()) -> Dict[str, Any]:
async def openclaw_enhanced_health(session: Annotated[Session, Depends(get_session)]) -> Dict[str, Any]:
"""
Health check for OpenClaw Enhanced Service (Port 8007)
"""
@@ -110,7 +110,7 @@ async def openclaw_enhanced_health(session: Annotated[Session, Depends(get_sessi
@router.get("/health/deep", tags=["health"], summary="Deep OpenClaw Enhanced Service Health")
async def openclaw_enhanced_deep_health(session: Annotated[Session, Depends(get_session)] = Depends()) -> Dict[str, Any]:
async def openclaw_enhanced_deep_health(session: Annotated[Session, Depends(get_session)]) -> Dict[str, Any]:
"""
Deep health check with OpenClaw ecosystem validation
"""

View File

@@ -12,7 +12,7 @@ from fastapi import APIRouter, HTTPException, Depends
from pydantic import BaseModel, Field
from ..services.openclaw_enhanced_simple import OpenClawEnhancedService, SkillType, ExecutionMode
from ..storage import Annotated[Session, Depends(get_session)], get_session
from ..storage import get_session
from ..deps import require_admin_key
from sqlmodel import Session

View File

@@ -12,7 +12,7 @@ import secrets
import hashlib
from ..schemas import UserProfile
from ..storage import Annotated[Session, Depends(get_session)], get_session
from ..storage import get_session
from sqlmodel import select
router = APIRouter(tags=["partners"])
@@ -60,7 +60,7 @@ WEBHOOKS_DB = {}
@router.post("/partners/register", response_model=PartnerResponse)
async def register_partner(
partner: PartnerRegister,
session: Annotated[Session, Depends(get_session)] = Depends()
session: Annotated[Session, Depends(get_session)]
) -> PartnerResponse:
"""Register a new partner application"""
@@ -105,7 +105,7 @@ async def register_partner(
@router.get("/partners/{partner_id}")
async def get_partner(
partner_id: str,
session: Annotated[Session, Depends(get_session)] = Depends(),
session: Annotated[Session, Depends(get_session)],
api_key: str
) -> Dict[str, Any]:
"""Get partner information"""
@@ -129,7 +129,7 @@ async def get_partner(
@router.post("/partners/webhooks", response_model=WebhookResponse)
async def create_webhook(
webhook: WebhookCreate,
session: Annotated[Session, Depends(get_session)] = Depends(),
session: Annotated[Session, Depends(get_session)],
api_key: str
) -> WebhookResponse:
"""Create a webhook subscription"""
@@ -180,7 +180,7 @@ async def create_webhook(
@router.get("/partners/webhooks")
async def list_webhooks(
session: Annotated[Session, Depends(get_session)] = Depends(),
session: Annotated[Session, Depends(get_session)],
api_key: str
) -> List[WebhookResponse]:
"""List partner webhooks"""
@@ -208,7 +208,7 @@ async def list_webhooks(
@router.delete("/partners/webhooks/{webhook_id}")
async def delete_webhook(
webhook_id: str,
session: Annotated[Session, Depends(get_session)] = Depends(),
session: Annotated[Session, Depends(get_session)],
api_key: str
) -> Dict[str, str]:
"""Delete a webhook"""
@@ -231,7 +231,7 @@ async def delete_webhook(
@router.get("/partners/analytics/usage")
async def get_usage_analytics(
session: Annotated[Session, Depends(get_session)] = Depends(),
session: Annotated[Session, Depends(get_session)],
api_key: str,
period: str = "24h"
) -> Dict[str, Any]:

View File

@@ -15,7 +15,7 @@ from ..schemas import (
RefundRequest
)
from ..services.payments import PaymentService
from ..storage import Annotated[Session, Depends(get_session)], get_session
from ..storage import get_session
router = APIRouter(tags=["payments"])
@@ -23,7 +23,7 @@ router = APIRouter(tags=["payments"])
@router.post("/payments", response_model=JobPaymentView, status_code=status.HTTP_201_CREATED, summary="Create payment for a job")
async def create_payment(
payment_data: JobPaymentCreate,
session: Annotated[Session, Depends(get_session)] = Depends(),
session: Annotated[Session, Depends(get_session)],
client_id: str = Depends(require_client_key()),
) -> JobPaymentView:
"""Create a payment for a job"""
@@ -37,7 +37,7 @@ async def create_payment(
@router.get("/payments/{payment_id}", response_model=JobPaymentView, summary="Get payment details")
async def get_payment(
payment_id: str,
session: Annotated[Session, Depends(get_session)] = Depends(),
session: Annotated[Session, Depends(get_session)],
client_id: str = Depends(require_client_key()),
) -> JobPaymentView:
"""Get payment details by ID"""
@@ -57,7 +57,7 @@ async def get_payment(
@router.get("/jobs/{job_id}/payment", response_model=JobPaymentView, summary="Get payment for a job")
async def get_job_payment(
job_id: str,
session: Annotated[Session, Depends(get_session)] = Depends(),
session: Annotated[Session, Depends(get_session)],
client_id: str = Depends(require_client_key()),
) -> JobPaymentView:
"""Get payment information for a specific job"""
@@ -78,7 +78,7 @@ async def get_job_payment(
async def release_payment(
payment_id: str,
release_data: EscrowRelease,
session: Annotated[Session, Depends(get_session)] = Depends(),
session: Annotated[Session, Depends(get_session)],
client_id: str = Depends(require_client_key()),
) -> dict:
"""Release payment from escrow (for completed jobs)"""
@@ -112,7 +112,7 @@ async def release_payment(
async def refund_payment(
payment_id: str,
refund_data: RefundRequest,
session: Annotated[Session, Depends(get_session)] = Depends(),
session: Annotated[Session, Depends(get_session)],
client_id: str = Depends(require_client_key()),
) -> dict:
"""Refund payment (for failed or cancelled jobs)"""
@@ -145,7 +145,7 @@ async def refund_payment(
@router.get("/payments/{payment_id}/receipt", response_model=PaymentReceipt, summary="Get payment receipt")
async def get_payment_receipt(
payment_id: str,
session: Annotated[Session, Depends(get_session)] = Depends(),
session: Annotated[Session, Depends(get_session)],
client_id: str = Depends(require_client_key()),
) -> PaymentReceipt:
"""Get payment receipt with verification status"""

View File

@@ -11,7 +11,7 @@ from fastapi import APIRouter, HTTPException, Depends, Query
from pydantic import BaseModel, Field
from aitbc.logging import get_logger
from ..storage import Annotated[Session, Depends(get_session)], get_session
from ..storage import get_session
from ..services.reputation_service import ReputationService
from ..domain.reputation import (
AgentReputation, CommunityFeedback, ReputationLevel,
@@ -123,7 +123,7 @@ class ReputationMetricsResponse(BaseModel):
@router.get("/profile/{agent_id}", response_model=ReputationProfileResponse)
async def get_reputation_profile(
agent_id: str,
session: Annotated[Session, Depends(get_session)] = Depends()
session: Annotated[Session, Depends(get_session)]
) -> ReputationProfileResponse:
"""Get comprehensive reputation profile for an agent"""
@@ -145,7 +145,7 @@ async def get_reputation_profile(
@router.post("/profile/{agent_id}")
async def create_reputation_profile(
agent_id: str,
session: Annotated[Session, Depends(get_session)] = Depends()
session: Annotated[Session, Depends(get_session)]
) -> Dict[str, Any]:
"""Create a new reputation profile for an agent"""
@@ -171,7 +171,7 @@ async def create_reputation_profile(
async def add_community_feedback(
agent_id: str,
feedback_request: FeedbackRequest,
session: Annotated[Session, Depends(get_session)] = Depends()
session: Annotated[Session, Depends(get_session)]
) -> FeedbackResponse:
"""Add community feedback for an agent"""
@@ -209,7 +209,7 @@ async def add_community_feedback(
@router.post("/job-completion")
async def record_job_completion(
job_request: JobCompletionRequest,
session: Annotated[Session, Depends(get_session)] = Depends()
session: Annotated[Session, Depends(get_session)]
) -> Dict[str, Any]:
"""Record job completion and update reputation"""
@@ -242,7 +242,7 @@ async def record_job_completion(
@router.get("/trust-score/{agent_id}", response_model=TrustScoreResponse)
async def get_trust_score_breakdown(
agent_id: str,
session: Annotated[Session, Depends(get_session)] = Depends()
session: Annotated[Session, Depends(get_session)]
) -> TrustScoreResponse:
"""Get detailed trust score breakdown for an agent"""
@@ -283,7 +283,7 @@ async def get_reputation_leaderboard(
category: str = Query(default="trust_score", description="Category to rank by"),
limit: int = Query(default=50, ge=1, le=100, description="Number of results"),
region: Optional[str] = Query(default=None, description="Filter by region"),
session: Annotated[Session, Depends(get_session)] = Depends()
session: Annotated[Session, Depends(get_session)]
) -> List[LeaderboardEntry]:
"""Get reputation leaderboard"""
@@ -305,7 +305,7 @@ async def get_reputation_leaderboard(
@router.get("/metrics", response_model=ReputationMetricsResponse)
async def get_reputation_metrics(
session: Annotated[Session, Depends(get_session)] = Depends()
session: Annotated[Session, Depends(get_session)]
) -> ReputationMetricsResponse:
"""Get overall reputation system metrics"""
@@ -378,7 +378,7 @@ async def get_reputation_metrics(
async def get_agent_feedback(
agent_id: str,
limit: int = Query(default=10, ge=1, le=50),
session: Annotated[Session, Depends(get_session)] = Depends()
session: Annotated[Session, Depends(get_session)]
) -> List[FeedbackResponse]:
"""Get community feedback for an agent"""
@@ -422,7 +422,7 @@ async def get_agent_feedback(
async def get_reputation_events(
agent_id: str,
limit: int = Query(default=20, ge=1, le=100),
session: Annotated[Session, Depends(get_session)] = Depends()
session: Annotated[Session, Depends(get_session)]
) -> List[Dict[str, Any]]:
"""Get reputation change events for an agent"""
@@ -459,7 +459,7 @@ async def get_reputation_events(
async def update_specialization(
agent_id: str,
specialization_tags: List[str],
session: Annotated[Session, Depends(get_session)] = Depends()
session: Annotated[Session, Depends(get_session)]
) -> Dict[str, Any]:
"""Update agent specialization tags"""
@@ -495,7 +495,7 @@ async def update_specialization(
async def update_region(
agent_id: str,
region: str,
session: Annotated[Session, Depends(get_session)] = Depends()
session: Annotated[Session, Depends(get_session)]
) -> Dict[str, Any]:
"""Update agent geographic region"""
@@ -531,7 +531,7 @@ async def update_region(
@router.get("/{agent_id}/cross-chain")
async def get_cross_chain_reputation(
agent_id: str,
session: Annotated[Session, Depends(get_session)] = Depends(),
session: Annotated[Session, Depends(get_session)],
reputation_service: ReputationService = Depends()
) -> Dict[str, Any]:
"""Get cross-chain reputation data for an agent"""
@@ -580,7 +580,7 @@ async def get_cross_chain_reputation(
async def sync_cross_chain_reputation(
agent_id: str,
background_tasks: Any, # FastAPI BackgroundTasks
session: Annotated[Session, Depends(get_session)] = Depends(),
session: Annotated[Session, Depends(get_session)],
reputation_service: ReputationService = Depends()
) -> Dict[str, Any]:
"""Synchronize reputation across chains for an agent"""
@@ -614,7 +614,7 @@ async def sync_cross_chain_reputation(
async def get_cross_chain_leaderboard(
limit: int = Query(50, ge=1, le=100),
min_score: float = Query(0.0, ge=0.0, le=1.0),
session: Annotated[Session, Depends(get_session)] = Depends(),
session: Annotated[Session, Depends(get_session)],
reputation_service: ReputationService = Depends()
) -> Dict[str, Any]:
"""Get cross-chain reputation leaderboard"""
@@ -661,7 +661,7 @@ async def get_cross_chain_leaderboard(
async def submit_cross_chain_event(
event_data: Dict[str, Any],
background_tasks: Any, # FastAPI BackgroundTasks
session: Annotated[Session, Depends(get_session)] = Depends(),
session: Annotated[Session, Depends(get_session)],
reputation_service: ReputationService = Depends()
) -> Dict[str, Any]:
"""Submit a cross-chain reputation event"""
@@ -725,7 +725,7 @@ async def submit_cross_chain_event(
@router.get("/cross-chain/analytics")
async def get_cross_chain_analytics(
chain_id: Optional[int] = Query(None),
session: Annotated[Session, Depends(get_session)] = Depends(),
session: Annotated[Session, Depends(get_session)],
reputation_service: ReputationService = Depends()
) -> Dict[str, Any]:
"""Get cross-chain reputation analytics"""

View File

@@ -11,7 +11,7 @@ from fastapi import APIRouter, HTTPException, Depends, Query
from pydantic import BaseModel, Field
from aitbc.logging import get_logger
from ..storage import Annotated[Session, Depends(get_session)], get_session
from ..storage import get_session
from ..services.reward_service import RewardEngine
from ..domain.rewards import (
AgentRewardProfile, RewardTier, RewardType, RewardStatus
@@ -115,7 +115,7 @@ class MilestoneResponse(BaseModel):
@router.get("/profile/{agent_id}", response_model=RewardProfileResponse)
async def get_reward_profile(
agent_id: str,
session: Annotated[Session, Depends(get_session)] = Depends()
session: Annotated[Session, Depends(get_session)]
) -> RewardProfileResponse:
"""Get comprehensive reward profile for an agent"""
@@ -137,7 +137,7 @@ async def get_reward_profile(
@router.post("/profile/{agent_id}")
async def create_reward_profile(
agent_id: str,
session: Annotated[Session, Depends(get_session)] = Depends()
session: Annotated[Session, Depends(get_session)]
) -> Dict[str, Any]:
"""Create a new reward profile for an agent"""
@@ -162,7 +162,7 @@ async def create_reward_profile(
@router.post("/calculate-and-distribute", response_model=RewardResponse)
async def calculate_and_distribute_reward(
reward_request: RewardRequest,
session: Annotated[Session, Depends(get_session)] = Depends()
session: Annotated[Session, Depends(get_session)]
) -> RewardResponse:
"""Calculate and distribute reward for an agent"""
@@ -201,7 +201,7 @@ async def calculate_and_distribute_reward(
@router.get("/tier-progress/{agent_id}", response_model=TierProgressResponse)
async def get_tier_progress(
agent_id: str,
session: Annotated[Session, Depends(get_session)] = Depends()
session: Annotated[Session, Depends(get_session)]
) -> TierProgressResponse:
"""Get tier progress information for an agent"""
@@ -301,7 +301,7 @@ async def get_tier_progress(
@router.post("/batch-process", response_model=BatchProcessResponse)
async def batch_process_pending_rewards(
limit: int = Query(default=100, ge=1, le=1000, description="Maximum number of rewards to process"),
session: Annotated[Session, Depends(get_session)] = Depends()
session: Annotated[Session, Depends(get_session)]
) -> BatchProcessResponse:
"""Process pending reward distributions in batch"""
@@ -326,7 +326,7 @@ async def get_reward_analytics(
period_type: str = Query(default="daily", description="Period type: daily, weekly, monthly"),
start_date: Optional[str] = Query(default=None, description="Start date (ISO format)"),
end_date: Optional[str] = Query(default=None, description="End date (ISO format)"),
session: Annotated[Session, Depends(get_session)] = Depends()
session: Annotated[Session, Depends(get_session)]
) -> RewardAnalyticsResponse:
"""Get reward system analytics"""
@@ -359,7 +359,7 @@ async def get_reward_leaderboard(
tier: Optional[str] = Query(default=None, description="Filter by tier"),
period: str = Query(default="weekly", description="Period: daily, weekly, monthly"),
limit: int = Query(default=50, ge=1, le=100, description="Number of results"),
session: Annotated[Session, Depends(get_session)] = Depends()
session: Annotated[Session, Depends(get_session)]
) -> List[Dict[str, Any]]:
"""Get reward leaderboard"""
@@ -408,7 +408,7 @@ async def get_reward_leaderboard(
@router.get("/tiers")
async def get_reward_tiers(
session: Annotated[Session, Depends(get_session)] = Depends()
session: Annotated[Session, Depends(get_session)]
) -> List[Dict[str, Any]]:
"""Get reward tier configurations"""
@@ -445,7 +445,7 @@ async def get_reward_tiers(
async def get_agent_milestones(
agent_id: str,
include_completed: bool = Query(default=True, description="Include completed milestones"),
session: Annotated[Session, Depends(get_session)] = Depends()
session: Annotated[Session, Depends(get_session)]
) -> List[MilestoneResponse]:
"""Get milestones for an agent"""
@@ -489,7 +489,7 @@ async def get_reward_distributions(
agent_id: str,
limit: int = Query(default=20, ge=1, le=100),
status: Optional[str] = Query(default=None, description="Filter by status"),
session: Annotated[Session, Depends(get_session)] = Depends()
session: Annotated[Session, Depends(get_session)]
) -> List[Dict[str, Any]]:
"""Get reward distribution history for an agent"""
@@ -529,7 +529,7 @@ async def get_reward_distributions(
@router.post("/simulate-reward")
async def simulate_reward_calculation(
reward_request: RewardRequest,
session: Annotated[Session, Depends(get_session)] = Depends()
session: Annotated[Session, Depends(get_session)]
) -> Dict[str, Any]:
"""Simulate reward calculation without distributing"""

View File

@@ -22,7 +22,7 @@ from ..models.services import (
)
# from ..models.registry import ServiceRegistry, service_registry
from ..services import JobService
from ..storage import Annotated[Session, Depends(get_session)], get_session
from ..storage import get_session
router = APIRouter(tags=["services"])
@@ -37,7 +37,7 @@ router = APIRouter(tags=["services"])
async def submit_service_job(
service_type: ServiceType,
request_data: Dict[str, Any],
session: Annotated[Session, Depends(get_session)] = Depends(),
session: Annotated[Session, Depends(get_session)],
client_id: str = Depends(require_client_key()),
user_agent: str = Header(None),
) -> ServiceResponse:
@@ -120,7 +120,7 @@ async def submit_service_job(
)
async def whisper_transcribe(
request: WhisperRequest,
session: Annotated[Session, Depends(get_session)] = Depends(),
session: Annotated[Session, Depends(get_session)],
client_id: str = Depends(require_client_key()),
) -> ServiceResponse:
"""Transcribe audio file using Whisper"""
@@ -155,7 +155,7 @@ async def whisper_transcribe(
)
async def whisper_translate(
request: WhisperRequest,
session: Annotated[Session, Depends(get_session)] = Depends(),
session: Annotated[Session, Depends(get_session)],
client_id: str = Depends(require_client_key()),
) -> ServiceResponse:
"""Translate audio file using Whisper"""
@@ -193,7 +193,7 @@ async def whisper_translate(
)
async def stable_diffusion_generate(
request: StableDiffusionRequest,
session: Annotated[Session, Depends(get_session)] = Depends(),
session: Annotated[Session, Depends(get_session)],
client_id: str = Depends(require_client_key()),
) -> ServiceResponse:
"""Generate images using Stable Diffusion"""
@@ -228,7 +228,7 @@ async def stable_diffusion_generate(
)
async def stable_diffusion_img2img(
request: StableDiffusionRequest,
session: Annotated[Session, Depends(get_session)] = Depends(),
session: Annotated[Session, Depends(get_session)],
client_id: str = Depends(require_client_key()),
) -> ServiceResponse:
"""Image-to-image generation using Stable Diffusion"""
@@ -267,7 +267,7 @@ async def stable_diffusion_img2img(
)
async def llm_inference(
request: LLMRequest,
session: Annotated[Session, Depends(get_session)] = Depends(),
session: Annotated[Session, Depends(get_session)],
client_id: str = Depends(require_client_key()),
) -> ServiceResponse:
"""Run inference on a language model"""
@@ -300,7 +300,7 @@ async def llm_inference(
)
async def llm_stream(
request: LLMRequest,
session: Annotated[Session, Depends(get_session)] = Depends(),
session: Annotated[Session, Depends(get_session)],
client_id: str = Depends(require_client_key()),
):
"""Stream LLM inference response"""
@@ -340,7 +340,7 @@ async def llm_stream(
)
async def ffmpeg_transcode(
request: FFmpegRequest,
session: Annotated[Session, Depends(get_session)] = Depends(),
session: Annotated[Session, Depends(get_session)],
client_id: str = Depends(require_client_key()),
) -> ServiceResponse:
"""Transcode video using FFmpeg"""
@@ -377,7 +377,7 @@ async def ffmpeg_transcode(
)
async def blender_render(
request: BlenderRequest,
session: Annotated[Session, Depends(get_session)] = Depends(),
session: Annotated[Session, Depends(get_session)],
client_id: str = Depends(require_client_key()),
) -> ServiceResponse:
"""Render scene using Blender"""

View File

@@ -10,7 +10,7 @@ from typing import List, Optional, Dict, Any
from datetime import datetime, timedelta
from pydantic import BaseModel, Field, validator
from ..storage import Annotated[Session, Depends(get_session)], get_session
from ..storage import get_session
from ..logging import get_logger
from ..domain.bounty import (
AgentStake, AgentMetrics, StakingPool, StakeStatus,
@@ -149,7 +149,7 @@ def get_blockchain_service() -> BlockchainService:
async def create_stake(
request: StakeCreateRequest,
background_tasks: BackgroundTasks,
session: Annotated[Session, Depends(get_session)] = Depends(),
session: Annotated[Session, Depends(get_session)],
staking_service: StakingService = Depends(get_staking_service),
blockchain_service: BlockchainService = Depends(get_blockchain_service),
current_user: dict = Depends(get_current_user)
@@ -190,7 +190,7 @@ async def create_stake(
@router.get("/stake/{stake_id}", response_model=StakeResponse)
async def get_stake(
stake_id: str,
session: Annotated[Session, Depends(get_session)] = Depends(),
session: Annotated[Session, Depends(get_session)],
staking_service: StakingService = Depends(get_staking_service),
current_user: dict = Depends(get_current_user)
):
@@ -215,7 +215,7 @@ async def get_stake(
@router.get("/stakes", response_model=List[StakeResponse])
async def get_stakes(
filters: StakingFilterRequest = Depends(),
session: Annotated[Session, Depends(get_session)] = Depends(),
session: Annotated[Session, Depends(get_session)],
staking_service: StakingService = Depends(get_staking_service),
current_user: dict = Depends(get_current_user)
):
@@ -244,7 +244,7 @@ async def add_to_stake(
stake_id: str,
request: StakeUpdateRequest,
background_tasks: BackgroundTasks,
session: Annotated[Session, Depends(get_session)] = Depends(),
session: Annotated[Session, Depends(get_session)],
staking_service: StakingService = Depends(get_staking_service),
blockchain_service: BlockchainService = Depends(get_blockchain_service),
current_user: dict = Depends(get_current_user)
@@ -287,7 +287,7 @@ async def add_to_stake(
async def unbond_stake(
stake_id: str,
background_tasks: BackgroundTasks,
session: Annotated[Session, Depends(get_session)] = Depends(),
session: Annotated[Session, Depends(get_session)],
staking_service: StakingService = Depends(get_staking_service),
blockchain_service: BlockchainService = Depends(get_blockchain_service),
current_user: dict = Depends(get_current_user)
@@ -329,7 +329,7 @@ async def unbond_stake(
async def complete_unbonding(
stake_id: str,
background_tasks: BackgroundTasks,
session: Annotated[Session, Depends(get_session)] = Depends(),
session: Annotated[Session, Depends(get_session)],
staking_service: StakingService = Depends(get_staking_service),
blockchain_service: BlockchainService = Depends(get_blockchain_service),
current_user: dict = Depends(get_current_user)
@@ -372,7 +372,7 @@ async def complete_unbonding(
@router.get("/stake/{stake_id}/rewards")
async def get_stake_rewards(
stake_id: str,
session: Annotated[Session, Depends(get_session)] = Depends(),
session: Annotated[Session, Depends(get_session)],
staking_service: StakingService = Depends(get_staking_service),
current_user: dict = Depends(get_current_user)
):
@@ -407,7 +407,7 @@ async def get_stake_rewards(
@router.get("/agents/{agent_wallet}/metrics", response_model=AgentMetricsResponse)
async def get_agent_metrics(
agent_wallet: str,
session: Annotated[Session, Depends(get_session)] = Depends(),
session: Annotated[Session, Depends(get_session)],
staking_service: StakingService = Depends(get_staking_service)
):
"""Get agent performance metrics"""
@@ -427,7 +427,7 @@ async def get_agent_metrics(
@router.get("/agents/{agent_wallet}/staking-pool", response_model=StakingPoolResponse)
async def get_staking_pool(
agent_wallet: str,
session: Annotated[Session, Depends(get_session)] = Depends(),
session: Annotated[Session, Depends(get_session)],
staking_service: StakingService = Depends(get_staking_service)
):
"""Get staking pool information for an agent"""
@@ -448,7 +448,7 @@ async def get_staking_pool(
async def get_agent_apy(
agent_wallet: str,
lock_period: int = Field(default=30, ge=1, le=365),
session: Annotated[Session, Depends(get_session)] = Depends(),
session: Annotated[Session, Depends(get_session)],
staking_service: StakingService = Depends(get_staking_service)
):
"""Get current APY for staking on an agent"""
@@ -472,7 +472,7 @@ async def update_agent_performance(
agent_wallet: str,
request: AgentPerformanceUpdateRequest,
background_tasks: BackgroundTasks,
session: Annotated[Session, Depends(get_session)] = Depends(),
session: Annotated[Session, Depends(get_session)],
staking_service: StakingService = Depends(get_staking_service),
blockchain_service: BlockchainService = Depends(get_blockchain_service),
current_user: dict = Depends(get_current_user)
@@ -510,7 +510,7 @@ async def distribute_agent_earnings(
agent_wallet: str,
request: EarningsDistributionRequest,
background_tasks: BackgroundTasks,
session: Annotated[Session, Depends(get_session)] = Depends(),
session: Annotated[Session, Depends(get_session)],
staking_service: StakingService = Depends(get_staking_service),
blockchain_service: BlockchainService = Depends(get_blockchain_service),
current_user: dict = Depends(get_current_user)
@@ -553,7 +553,7 @@ async def get_supported_agents(
page: int = Field(default=1, ge=1),
limit: int = Field(default=50, ge=1, le=100),
tier: Optional[PerformanceTier] = None,
session: Annotated[Session, Depends(get_session)] = Depends(),
session: Annotated[Session, Depends(get_session)],
staking_service: StakingService = Depends(get_staking_service)
):
"""Get list of supported agents for staking"""
@@ -578,7 +578,7 @@ async def get_supported_agents(
@router.get("/staking/stats", response_model=StakingStatsResponse)
async def get_staking_stats(
period: str = Field(default="daily", regex="^(hourly|daily|weekly|monthly)$"),
session: Annotated[Session, Depends(get_session)] = Depends(),
session: Annotated[Session, Depends(get_session)],
staking_service: StakingService = Depends(get_staking_service)
):
"""Get staking system statistics"""
@@ -596,7 +596,7 @@ async def get_staking_leaderboard(
period: str = Field(default="weekly", regex="^(daily|weekly|monthly)$"),
metric: str = Field(default="total_staked", regex="^(total_staked|total_rewards|apy)$"),
limit: int = Field(default=50, ge=1, le=100),
session: Annotated[Session, Depends(get_session)] = Depends(),
session: Annotated[Session, Depends(get_session)],
staking_service: StakingService = Depends(get_staking_service)
):
"""Get staking leaderboard"""
@@ -619,7 +619,7 @@ async def get_my_staking_positions(
agent_wallet: Optional[str] = None,
page: int = Field(default=1, ge=1),
limit: int = Field(default=20, ge=1, le=100),
session: Annotated[Session, Depends(get_session)] = Depends(),
session: Annotated[Session, Depends(get_session)],
staking_service: StakingService = Depends(get_staking_service),
current_user: dict = Depends(get_current_user)
):
@@ -642,7 +642,7 @@ async def get_my_staking_positions(
@router.get("/staking/my-rewards")
async def get_my_staking_rewards(
period: str = Field(default="monthly", regex="^(daily|weekly|monthly)$"),
session: Annotated[Session, Depends(get_session)] = Depends(),
session: Annotated[Session, Depends(get_session)],
staking_service: StakingService = Depends(get_staking_service),
current_user: dict = Depends(get_current_user)
):
@@ -663,7 +663,7 @@ async def get_my_staking_rewards(
async def claim_staking_rewards(
stake_ids: List[str],
background_tasks: BackgroundTasks,
session: Annotated[Session, Depends(get_session)] = Depends(),
session: Annotated[Session, Depends(get_session)],
staking_service: StakingService = Depends(get_staking_service),
blockchain_service: BlockchainService = Depends(get_blockchain_service),
current_user: dict = Depends(get_current_user)
@@ -710,7 +710,7 @@ async def claim_staking_rewards(
@router.get("/staking/risk-assessment/{agent_wallet}")
async def get_risk_assessment(
agent_wallet: str,
session: Annotated[Session, Depends(get_session)] = Depends(),
session: Annotated[Session, Depends(get_session)],
staking_service: StakingService = Depends(get_staking_service)
):
"""Get risk assessment for staking on an agent"""

View File

@@ -11,7 +11,7 @@ from fastapi import APIRouter, HTTPException, Depends, Query
from pydantic import BaseModel, Field
from aitbc.logging import get_logger
from ..storage import Annotated[Session, Depends(get_session)], get_session
from ..storage import get_session
from ..services.trading_service import P2PTradingProtocol
from ..domain.trading import (
TradeRequest, TradeMatch, TradeNegotiation, TradeAgreement, TradeSettlement,
@@ -156,7 +156,7 @@ class TradingSummaryResponse(BaseModel):
@router.post("/requests", response_model=TradeRequestResponse)
async def create_trade_request(
request_data: TradeRequestRequest,
session: Annotated[Session, Depends(get_session)] = Depends()
session: Annotated[Session, Depends(get_session)]
) -> TradeRequestResponse:
"""Create a new trade request"""
@@ -218,7 +218,7 @@ async def create_trade_request(
@router.get("/requests/{request_id}", response_model=TradeRequestResponse)
async def get_trade_request(
request_id: str,
session: Annotated[Session, Depends(get_session)] = Depends()
session: Annotated[Session, Depends(get_session)]
) -> TradeRequestResponse:
"""Get trade request details"""
@@ -256,7 +256,7 @@ async def get_trade_request(
@router.post("/requests/{request_id}/matches")
async def find_matches(
request_id: str,
session: Annotated[Session, Depends(get_session)] = Depends()
session: Annotated[Session, Depends(get_session)]
) -> List[str]:
"""Find matching sellers for a trade request"""
@@ -276,7 +276,7 @@ async def find_matches(
@router.get("/requests/{request_id}/matches")
async def get_trade_matches(
request_id: str,
session: Annotated[Session, Depends(get_session)] = Depends()
session: Annotated[Session, Depends(get_session)]
) -> List[TradeMatchResponse]:
"""Get trade matches for a request"""
@@ -316,7 +316,7 @@ async def get_trade_matches(
@router.post("/negotiations", response_model=NegotiationResponse)
async def initiate_negotiation(
negotiation_data: NegotiationRequest,
session: Annotated[Session, Depends(get_session)] = Depends()
session: Annotated[Session, Depends(get_session)]
) -> NegotiationResponse:
"""Initiate negotiation between buyer and seller"""
@@ -354,7 +354,7 @@ async def initiate_negotiation(
@router.get("/negotiations/{negotiation_id}", response_model=NegotiationResponse)
async def get_negotiation(
negotiation_id: str,
session: Annotated[Session, Depends(get_session)] = Depends()
session: Annotated[Session, Depends(get_session)]
) -> NegotiationResponse:
"""Get negotiation details"""
@@ -391,7 +391,7 @@ async def get_negotiation(
@router.get("/matches/{match_id}")
async def get_trade_match(
match_id: str,
session: Annotated[Session, Depends(get_session)] = Depends()
session: Annotated[Session, Depends(get_session)]
) -> TradeMatchResponse:
"""Get trade match details"""
@@ -432,7 +432,7 @@ async def get_trade_match(
@router.get("/agents/{agent_id}/summary", response_model=TradingSummaryResponse)
async def get_trading_summary(
agent_id: str,
session: Annotated[Session, Depends(get_session)] = Depends()
session: Annotated[Session, Depends(get_session)]
) -> TradingSummaryResponse:
"""Get comprehensive trading summary for an agent"""
@@ -454,7 +454,7 @@ async def list_trade_requests(
trade_type: Optional[str] = Query(default=None, description="Filter by trade type"),
status: Optional[str] = Query(default=None, description="Filter by status"),
limit: int = Query(default=50, ge=1, le=100, description="Number of results"),
session: Annotated[Session, Depends(get_session)] = Depends()
session: Annotated[Session, Depends(get_session)]
) -> List[TradeRequestResponse]:
"""List trade requests with filters"""
@@ -502,7 +502,7 @@ async def list_trade_matches(
min_score: Optional[float] = Query(default=None, description="Minimum match score"),
status: Optional[str] = Query(default=None, description="Filter by status"),
limit: int = Query(default=50, ge=1, le=100, description="Number of results"),
session: Annotated[Session, Depends(get_session)] = Depends()
session: Annotated[Session, Depends(get_session)]
) -> List[TradeMatchResponse]:
"""List trade matches with filters"""
@@ -558,7 +558,7 @@ async def list_negotiations(
status: Optional[str] = Query(default=None, description="Filter by status"),
strategy: Optional[str] = Query(default=None, description="Filter by strategy"),
limit: int = Query(default=50, ge=1, le=100, description="Number of results"),
session: Annotated[Session, Depends(get_session)] = Depends()
session: Annotated[Session, Depends(get_session)]
) -> List[NegotiationResponse]:
"""List negotiations with filters"""
@@ -609,7 +609,7 @@ async def get_trading_analytics(
period_type: str = Query(default="daily", description="Period type: daily, weekly, monthly"),
start_date: Optional[str] = Query(default=None, description="Start date (ISO format)"),
end_date: Optional[str] = Query(default=None, description="End date (ISO format)"),
session: Annotated[Session, Depends(get_session)] = Depends()
session: Annotated[Session, Depends(get_session)]
) -> Dict[str, Any]:
"""Get P2P trading analytics"""
@@ -673,7 +673,7 @@ async def get_trading_analytics(
@router.post("/simulate-match")
async def simulate_trade_matching(
request_data: TradeRequestRequest,
session: Annotated[Session, Depends(get_session)] = Depends()
session: Annotated[Session, Depends(get_session)]
) -> Dict[str, Any]:
"""Simulate trade matching without creating actual request"""

View File

@@ -12,7 +12,7 @@ import time
import hashlib
from datetime import datetime, timedelta
from ..storage import Annotated[Session, Depends(get_session)], get_session
from ..storage import get_session
from ..domain import User, Wallet
from ..schemas import UserCreate, UserLogin, UserProfile, UserBalance
@@ -52,7 +52,7 @@ def verify_session_token(token: str) -> Optional[str]:
@router.post("/register", response_model=UserProfile)
async def register_user(
user_data: UserCreate,
session: Annotated[Session, Depends(get_session)] = Depends()
session: Annotated[Session, Depends(get_session)]
) -> Dict[str, Any]:
"""Register a new user"""
@@ -105,7 +105,7 @@ async def register_user(
@router.post("/login", response_model=UserProfile)
async def login_user(
login_data: UserLogin,
session: Annotated[Session, Depends(get_session)] = Depends()
session: Annotated[Session, Depends(get_session)]
) -> Dict[str, Any]:
"""Login user with wallet address"""
@@ -163,7 +163,7 @@ async def login_user(
@router.get("/users/me", response_model=UserProfile)
async def get_current_user(
token: str,
session: Annotated[Session, Depends(get_session)] = Depends()
session: Annotated[Session, Depends(get_session)]
) -> Dict[str, Any]:
"""Get current user profile"""
@@ -192,7 +192,7 @@ async def get_current_user(
@router.get("/users/{user_id}/balance", response_model=UserBalance)
async def get_user_balance(
user_id: str,
session: Annotated[Session, Depends(get_session)] = Depends()
session: Annotated[Session, Depends(get_session)]
) -> Dict[str, Any]:
"""Get user's AITBC balance"""
@@ -225,7 +225,7 @@ async def logout_user(token: str) -> Dict[str, str]:
@router.get("/users/{user_id}/transactions")
async def get_user_transactions(
user_id: str,
session: Annotated[Session, Depends(get_session)] = Depends()
session: Annotated[Session, Depends(get_session)]
) -> Dict[str, Any]:
"""Get user's transaction history"""

View File

@@ -13,7 +13,7 @@ from datetime import datetime
import json
from ..schemas import UserProfile
from ..storage import Annotated[Session, Depends(get_session)], get_session
from ..storage import get_session
router = APIRouter(tags=["zk-applications"])
@@ -50,7 +50,7 @@ class ZKComputationRequest(BaseModel):
@router.post("/zk/identity/commit")
async def create_identity_commitment(
user: UserProfile,
session: Annotated[Session, Depends(get_session)] = Depends(),
session: Annotated[Session, Depends(get_session)],
salt: Optional[str] = None
) -> Dict[str, str]:
"""Create a privacy-preserving identity commitment"""
@@ -74,7 +74,7 @@ async def create_identity_commitment(
@router.post("/zk/membership/verify")
async def verify_group_membership(
request: ZKMembershipRequest,
session: Annotated[Session, Depends(get_session)] = Depends()
session: Annotated[Session, Depends(get_session)]
) -> Dict[str, Any]:
"""
Verify that a user is a member of a group without revealing which user
@@ -113,7 +113,7 @@ async def verify_group_membership(
@router.post("/zk/marketplace/private-bid")
async def submit_private_bid(
request: PrivateBidRequest,
session: Annotated[Session, Depends(get_session)] = Depends()
session: Annotated[Session, Depends(get_session)]
) -> Dict[str, str]:
"""
Submit a bid to the marketplace without revealing the amount
@@ -139,7 +139,7 @@ async def submit_private_bid(
@router.get("/zk/marketplace/auctions/{auction_id}/bids")
async def get_auction_bids(
auction_id: str,
session: Annotated[Session, Depends(get_session)] = Depends(),
session: Annotated[Session, Depends(get_session)],
reveal: bool = False
) -> Dict[str, Any]:
"""
@@ -178,7 +178,7 @@ async def get_auction_bids(
@router.post("/zk/computation/verify")
async def verify_computation_proof(
request: ZKComputationRequest,
session: Annotated[Session, Depends(get_session)] = Depends()
session: Annotated[Session, Depends(get_session)]
) -> Dict[str, Any]:
"""
Verify that an AI computation was performed correctly without revealing inputs

View File

@@ -14,7 +14,7 @@ from enum import Enum
import numpy as np
import json
from ..storage import Annotated[Session, Depends(get_session)], get_session
from ..storage import get_session
from ..domain import AIAgentWorkflow, AgentExecution, AgentStatus
logger = get_logger(__name__)
@@ -390,7 +390,7 @@ class ReinforcementLearningAgent:
class AdaptiveLearningService:
"""Service for adaptive learning systems"""
def __init__(self, session: Annotated[Session, Depends(get_session)] = Depends()):
def __init__(self, session: Annotated[Session, Depends(get_session)]):
self.session = session
self.learning_agents = {}
self.environments = {}

View File

@@ -8,7 +8,7 @@ from fastapi import FastAPI, Depends
from fastapi.middleware.cors import CORSMiddleware
from .adaptive_learning import AdaptiveLearningService, LearningAlgorithm, RewardType
from ..storage import Annotated[Session, Depends(get_session)], get_session
from ..storage import get_session
from ..routers.adaptive_learning_health import router as health_router
app = FastAPI(
@@ -36,7 +36,7 @@ async def health():
async def create_learning_environment(
environment_id: str,
config: dict,
session: Annotated[Session, Depends(get_session)] = Depends() = None
session: Annotated[Session, Depends(get_session)] = None
):
"""Create safe learning environment"""
service = AdaptiveLearningService(session)
@@ -51,7 +51,7 @@ async def create_learning_agent(
agent_id: str,
algorithm: str,
config: dict,
session: Annotated[Session, Depends(get_session)] = Depends() = None
session: Annotated[Session, Depends(get_session)] = None
):
"""Create reinforcement learning agent"""
service = AdaptiveLearningService(session)
@@ -67,7 +67,7 @@ async def train_agent(
agent_id: str,
environment_id: str,
training_config: dict,
session: Annotated[Session, Depends(get_session)] = Depends() = None
session: Annotated[Session, Depends(get_session)] = None
):
"""Train agent in environment"""
service = AdaptiveLearningService(session)
@@ -81,7 +81,7 @@ async def train_agent(
@app.get("/agent-performance/{agent_id}")
async def get_agent_performance(
agent_id: str,
session: Annotated[Session, Depends(get_session)] = Depends() = None
session: Annotated[Session, Depends(get_session)] = None
):
"""Get agent performance metrics"""
service = AdaptiveLearningService(session)

View File

@@ -23,7 +23,7 @@ from .advanced_reinforcement_learning import AdvancedReinforcementLearningEngine
from .multi_modal_fusion import MultiModalFusionEngine
from .gpu_multimodal import GPUAcceleratedMultiModal
from .advanced_learning import AdvancedLearningService
from ..storage import Annotated[Session, Depends(get_session)], get_session
from ..storage import get_session
logger = get_logger(__name__)

View File

@@ -5,11 +5,11 @@ from typing import List, Optional
from sqlmodel import select
from ..domain.gpu_marketplace import ConsumerGPUProfile, GPUArchitecture, EdgeGPUMetrics
from ..data.consumer_gpu_profiles import CONSUMER_GPU_PROFILES
from ..storage import Annotated[Session, Depends(get_session)], get_session
from ..storage import get_session
class EdgeGPUService:
def __init__(self, session: Annotated[Session, Depends(get_session)] = Depends()):
def __init__(self, session: Annotated[Session, Depends(get_session)]):
self.session = session
def list_profiles(

View File

@@ -17,7 +17,7 @@ import numpy as np
from datetime import datetime
import time
from ..storage import Annotated[Session, Depends(get_session)], get_session
from ..storage import get_session
from .multimodal_agent import ModalityType, ProcessingMode
logger = get_logger(__name__)
@@ -289,7 +289,7 @@ class GPUAttentionOptimizer:
class GPUAcceleratedMultiModal:
"""GPU-accelerated multi-modal processing with enhanced CUDA optimization"""
def __init__(self, session: Annotated[Session, Depends(get_session)] = Depends()):
def __init__(self, session: Annotated[Session, Depends(get_session)]):
self.session = session
self.device = torch.device("cuda" if torch.cuda.is_available() else "cpu")
self._cuda_available = self._check_cuda_availability()

View File

@@ -8,7 +8,7 @@ from fastapi import FastAPI, Depends
from fastapi.middleware.cors import CORSMiddleware
from .gpu_multimodal import GPUAcceleratedMultiModal
from ..storage import Annotated[Session, Depends(get_session)], get_session
from ..storage import get_session
from ..routers.gpu_multimodal_health import router as health_router
app = FastAPI(
@@ -36,7 +36,7 @@ async def health():
async def cross_modal_attention(
modality_features: dict,
attention_config: dict = None,
session: Annotated[Session, Depends(get_session)] = Depends() = None
session: Annotated[Session, Depends(get_session)] = None
):
"""GPU-accelerated cross-modal attention"""
service = GPUAcceleratedMultiModal(session)

View File

@@ -15,7 +15,7 @@ from enum import Enum
import json
from .ipfs_storage_service import IPFSStorageService, MemoryMetadata, IPFSUploadResult
from ..storage import Annotated[Session, Depends(get_session)], get_session
from ..storage import get_session
logger = get_logger(__name__)

View File

@@ -13,7 +13,7 @@ from datetime import datetime
from enum import Enum
import numpy as np
from ..storage import Annotated[Session, Depends(get_session)], get_session
from ..storage import get_session
from .multimodal_agent import ModalityType
logger = get_logger(__name__)
@@ -30,7 +30,7 @@ class OptimizationStrategy(str, Enum):
class ModalityOptimizer:
"""Base class for modality-specific optimizers"""
def __init__(self, session: Annotated[Session, Depends(get_session)] = Depends()):
def __init__(self, session: Annotated[Session, Depends(get_session)]):
self.session = session
self._performance_history = {}
@@ -64,7 +64,7 @@ class ModalityOptimizer:
class TextOptimizer(ModalityOptimizer):
"""Text processing optimization strategies"""
def __init__(self, session: Annotated[Session, Depends(get_session)] = Depends()):
def __init__(self, session: Annotated[Session, Depends(get_session)]):
super().__init__(session)
self._token_cache = {}
self._embedding_cache = {}
@@ -318,7 +318,7 @@ class TextOptimizer(ModalityOptimizer):
class ImageOptimizer(ModalityOptimizer):
"""Image processing optimization strategies"""
def __init__(self, session: Annotated[Session, Depends(get_session)] = Depends()):
def __init__(self, session: Annotated[Session, Depends(get_session)]):
super().__init__(session)
self._feature_cache = {}
@@ -862,7 +862,7 @@ class VideoOptimizer(ModalityOptimizer):
class ModalityOptimizationManager:
"""Manager for all modality-specific optimizers"""
def __init__(self, session: Annotated[Session, Depends(get_session)] = Depends()):
def __init__(self, session: Annotated[Session, Depends(get_session)]):
self.session = session
self._optimizers = {
ModalityType.TEXT: TextOptimizer(session),

View File

@@ -8,7 +8,7 @@ from fastapi import FastAPI, Depends
from fastapi.middleware.cors import CORSMiddleware
from .modality_optimization import ModalityOptimizationManager, OptimizationStrategy, ModalityType
from ..storage import Annotated[Session, Depends(get_session)], get_session
from ..storage import get_session
from ..routers.modality_optimization_health import router as health_router
app = FastAPI(
@@ -37,7 +37,7 @@ async def optimize_modality(
modality: str,
data: dict,
strategy: str = "balanced",
session: Annotated[Session, Depends(get_session)] = Depends() = None
session: Annotated[Session, Depends(get_session)] = None
):
"""Optimize specific modality"""
manager = ModalityOptimizationManager(session)
@@ -52,7 +52,7 @@ async def optimize_modality(
async def optimize_multimodal(
multimodal_data: dict,
strategy: str = "balanced",
session: Annotated[Session, Depends(get_session)] = Depends() = None
session: Annotated[Session, Depends(get_session)] = None
):
"""Optimize multiple modalities"""
manager = ModalityOptimizationManager(session)

View File

@@ -13,7 +13,7 @@ from datetime import datetime
from enum import Enum
import json
from ..storage import Annotated[Session, Depends(get_session)], get_session
from ..storage import get_session
from ..domain import AIAgentWorkflow, AgentExecution, AgentStatus
logger = get_logger(__name__)
@@ -40,7 +40,7 @@ class ProcessingMode(str, Enum):
class MultiModalAgentService:
"""Service for advanced multi-modal agent capabilities"""
def __init__(self, session: Annotated[Session, Depends(get_session)] = Depends()):
def __init__(self, session: Annotated[Session, Depends(get_session)]):
self.session = session
self._modality_processors = {
ModalityType.TEXT: self._process_text,

View File

@@ -8,7 +8,7 @@ from fastapi import FastAPI, Depends
from fastapi.middleware.cors import CORSMiddleware
from .multimodal_agent import MultiModalAgentService
from ..storage import Annotated[Session, Depends(get_session)], get_session
from ..storage import get_session
from ..routers.multimodal_health import router as health_router
app = FastAPI(
@@ -37,7 +37,7 @@ async def process_multimodal(
agent_id: str,
inputs: dict,
processing_mode: str = "fusion",
session: Annotated[Session, Depends(get_session)] = Depends() = None
session: Annotated[Session, Depends(get_session)] = None
):
"""Process multi-modal input"""
service = MultiModalAgentService(session)

View File

@@ -16,7 +16,7 @@ from ..schemas import (
EscrowRelease,
RefundRequest
)
from ..storage import Annotated[Session, Depends(get_session)], get_session
from ..storage import get_session
logger = get_logger(__name__)
@@ -24,7 +24,7 @@ logger = get_logger(__name__)
class PaymentService:
"""Service for handling job payments"""
def __init__(self, session: Annotated[Session, Depends(get_session)] = Depends()):
def __init__(self, session: Annotated[Session, Depends(get_session)]):
self.session = session
self.wallet_base_url = "http://127.0.0.1:20000" # Wallet daemon URL
self.exchange_base_url = "http://127.0.0.1:23000" # Exchange API URL

View File

@@ -1,12 +1,10 @@
"""Persistence helpers for the coordinator API."""
from typing import Annotated
from fastapi import Depends
from sqlalchemy.orm import Session
from fastapi import Depends
from .db import get_session, init_db
# Concrete dependency annotation for FastAPI/Pydantic
SessionDep = Annotated[Session, Depends(get_session)]
__all__ = ["SessionDep", "get_session", "init_db"]
__all__ = ["get_session", "init_db", "SessionDep"]

View File

@@ -98,10 +98,6 @@ def get_session():
with Session(engine) as session:
yield session
# Annotated dependency for FastAPI/Pydantic compatibility
SessionDep = Annotated[Session, Depends(get_session)]
# Async support for future use
async def get_async_engine() -> AsyncEngine:
"""Get or create async database engine."""