Spaces:
Running
Running
Fix imports in backend/app/main.py to use relative imports
Browse files- backend/app/main.py +39 -39
backend/app/main.py
CHANGED
|
@@ -8,45 +8,45 @@ from fastapi.middleware.cors import CORSMiddleware
|
|
| 8 |
from fastapi.responses import JSONResponse
|
| 9 |
|
| 10 |
from .schemas import UserTask, AgentRunRequest, PromptUpdateRequest
|
| 11 |
-
from
|
| 12 |
-
from
|
| 13 |
-
from
|
| 14 |
APP_VERSION,
|
| 15 |
MEMORY_DIR,
|
| 16 |
PROMPTS_DIR,
|
| 17 |
load_prompt,
|
| 18 |
PRIMARY_PROVIDER,
|
| 19 |
)
|
| 20 |
-
from
|
| 21 |
-
from
|
| 22 |
-
from
|
| 23 |
-
from
|
| 24 |
-
from
|
| 25 |
-
from
|
| 26 |
-
from
|
| 27 |
-
from
|
| 28 |
-
from
|
| 29 |
-
from
|
| 30 |
-
from
|
| 31 |
-
from
|
| 32 |
-
from
|
| 33 |
-
from
|
| 34 |
-
from
|
| 35 |
-
from
|
| 36 |
-
from
|
| 37 |
-
from
|
| 38 |
-
from
|
| 39 |
router as learning_router,
|
| 40 |
init_learning_services,
|
| 41 |
start_scheduler_background,
|
| 42 |
)
|
| 43 |
-
from
|
| 44 |
-
from
|
| 45 |
-
from
|
| 46 |
-
from
|
| 47 |
-
from
|
| 48 |
-
from
|
| 49 |
-
from
|
| 50 |
import uuid
|
| 51 |
|
| 52 |
logging.basicConfig(level=logging.INFO)
|
|
@@ -55,7 +55,7 @@ logger = logging.getLogger(__name__)
|
|
| 55 |
app = FastAPI(title="Janus", version=APP_VERSION)
|
| 56 |
|
| 57 |
# Initialize domain packs
|
| 58 |
-
from
|
| 59 |
|
| 60 |
init_domain_packs()
|
| 61 |
|
|
@@ -171,7 +171,7 @@ async def on_startup():
|
|
| 171 |
# Step 5: Start sentinel scheduler (feature-gated)
|
| 172 |
if FEATURES.get("sentinel", False):
|
| 173 |
try:
|
| 174 |
-
from
|
| 175 |
|
| 176 |
start_sentinel_scheduler()
|
| 177 |
logger.info("Sentinel scheduler started")
|
|
@@ -215,7 +215,7 @@ def health_deep():
|
|
| 215 |
@app.get("/health/features")
|
| 216 |
def feature_status():
|
| 217 |
"""Get current feature flag status."""
|
| 218 |
-
from
|
| 219 |
|
| 220 |
return get_feature_status()
|
| 221 |
|
|
@@ -285,7 +285,7 @@ def submit_correction(data: dict):
|
|
| 285 |
@app.post("/self/learn")
|
| 286 |
def trigger_learning(max_gaps: int = 3, max_datasets: int = 2, max_samples: int = 50):
|
| 287 |
"""Trigger autonomous learning cycle — search HF datasets for gaps."""
|
| 288 |
-
from
|
| 289 |
|
| 290 |
result = autonomous_learner.run_learning_cycle(
|
| 291 |
max_gaps=max_gaps,
|
|
@@ -298,7 +298,7 @@ def trigger_learning(max_gaps: int = 3, max_datasets: int = 2, max_samples: int
|
|
| 298 |
@app.get("/self/learning-status")
|
| 299 |
def get_learning_status():
|
| 300 |
"""Get autonomous learner status."""
|
| 301 |
-
from
|
| 302 |
|
| 303 |
return autonomous_learner.get_status()
|
| 304 |
|
|
@@ -306,7 +306,7 @@ def get_learning_status():
|
|
| 306 |
@app.get("/self/fine-tuning")
|
| 307 |
def get_fine_tuning_stats():
|
| 308 |
"""Get fine-tuning dataset statistics."""
|
| 309 |
-
from
|
| 310 |
|
| 311 |
return fine_tuning_builder.get_stats()
|
| 312 |
|
|
@@ -314,7 +314,7 @@ def get_fine_tuning_stats():
|
|
| 314 |
@app.get("/self/datasets")
|
| 315 |
def get_available_datasets(topic: str = None):
|
| 316 |
"""Search HF Hub for relevant datasets."""
|
| 317 |
-
from
|
| 318 |
|
| 319 |
if topic:
|
| 320 |
return {"datasets": hf_dataset_searcher.search_for_gap(topic)}
|
|
@@ -330,7 +330,7 @@ def get_training_report():
|
|
| 330 |
@app.get("/self/continuous-training")
|
| 331 |
def get_continuous_training_status():
|
| 332 |
"""Get continuous self-training status."""
|
| 333 |
-
from
|
| 334 |
|
| 335 |
return continuous_self_trainer.get_status()
|
| 336 |
|
|
@@ -338,7 +338,7 @@ def get_continuous_training_status():
|
|
| 338 |
@app.post("/self/continuous-training/run")
|
| 339 |
def trigger_continuous_training():
|
| 340 |
"""Manually trigger a continuous training cycle."""
|
| 341 |
-
from
|
| 342 |
|
| 343 |
return continuous_self_trainer.run_training_cycle()
|
| 344 |
|
|
@@ -465,7 +465,7 @@ def _log_trace(
|
|
| 465 |
|
| 466 |
def _fire_and_forget_learning(payload: dict):
|
| 467 |
"""Fire-and-forget learning from a completed case."""
|
| 468 |
-
from
|
| 469 |
|
| 470 |
if _le:
|
| 471 |
try:
|
|
|
|
| 8 |
from fastapi.responses import JSONResponse
|
| 9 |
|
| 10 |
from .schemas import UserTask, AgentRunRequest, PromptUpdateRequest
|
| 11 |
+
from .graph import run_case
|
| 12 |
+
from .memory import save_case
|
| 13 |
+
from .config import (
|
| 14 |
APP_VERSION,
|
| 15 |
MEMORY_DIR,
|
| 16 |
PROMPTS_DIR,
|
| 17 |
load_prompt,
|
| 18 |
PRIMARY_PROVIDER,
|
| 19 |
)
|
| 20 |
+
from .services.case_store import list_cases, get_case, delete_case, memory_stats
|
| 21 |
+
from .services.prompt_store import list_prompts, get_prompt, update_prompt
|
| 22 |
+
from .services.health_service import deep_health
|
| 23 |
+
from .services.agent_registry import list_agents, get_agent, run_single_agent
|
| 24 |
+
from .services.query_classifier import QueryClassifier, QueryType
|
| 25 |
+
from .services.cache_manager import IntelligentCacheManager
|
| 26 |
+
from .services.learning_filter import LearningFilter
|
| 27 |
+
from .services.adaptive_intelligence import adaptive_intelligence
|
| 28 |
+
from .services.memory_graph import MemoryGraph
|
| 29 |
+
from .services.daemon import JanusDaemon
|
| 30 |
+
from .services.adaptive_pipeline import adaptive_pipeline
|
| 31 |
+
from .services.circadian_rhythm import CircadianRhythm
|
| 32 |
+
from .services.dream_processor import DreamCycleProcessor
|
| 33 |
+
from .services.context_engine import context_engine
|
| 34 |
+
from .services.reflex_layer import reflex_layer
|
| 35 |
+
from .services.self_reflection import self_reflection
|
| 36 |
+
from .services.self_training import self_training_engine
|
| 37 |
+
from .routers.simulation import router as simulation_router
|
| 38 |
+
from .routers.learning import (
|
| 39 |
router as learning_router,
|
| 40 |
init_learning_services,
|
| 41 |
start_scheduler_background,
|
| 42 |
)
|
| 43 |
+
from .routers.sentinel import router as sentinel_router
|
| 44 |
+
from .routers.finance import router as finance_router
|
| 45 |
+
from .config import get_config, FEATURES, ensure_data_dirs
|
| 46 |
+
from .services.dataset_persistence import load_on_startup, save_on_shutdown
|
| 47 |
+
from .services.observation import scorer, get_tracer
|
| 48 |
+
from .services.curation import curator, hf_pusher
|
| 49 |
+
from .services.domain_classifier import domain_classifier
|
| 50 |
import uuid
|
| 51 |
|
| 52 |
logging.basicConfig(level=logging.INFO)
|
|
|
|
| 55 |
app = FastAPI(title="Janus", version=APP_VERSION)
|
| 56 |
|
| 57 |
# Initialize domain packs
|
| 58 |
+
from .domain_packs.init_packs import init_domain_packs
|
| 59 |
|
| 60 |
init_domain_packs()
|
| 61 |
|
|
|
|
| 171 |
# Step 5: Start sentinel scheduler (feature-gated)
|
| 172 |
if FEATURES.get("sentinel", False):
|
| 173 |
try:
|
| 174 |
+
from .services.sentinel.scheduler import start_sentinel_scheduler
|
| 175 |
|
| 176 |
start_sentinel_scheduler()
|
| 177 |
logger.info("Sentinel scheduler started")
|
|
|
|
| 215 |
@app.get("/health/features")
|
| 216 |
def feature_status():
|
| 217 |
"""Get current feature flag status."""
|
| 218 |
+
from .config import get_feature_status
|
| 219 |
|
| 220 |
return get_feature_status()
|
| 221 |
|
|
|
|
| 285 |
@app.post("/self/learn")
|
| 286 |
def trigger_learning(max_gaps: int = 3, max_datasets: int = 2, max_samples: int = 50):
|
| 287 |
"""Trigger autonomous learning cycle — search HF datasets for gaps."""
|
| 288 |
+
from .services.autonomous_learner import autonomous_learner
|
| 289 |
|
| 290 |
result = autonomous_learner.run_learning_cycle(
|
| 291 |
max_gaps=max_gaps,
|
|
|
|
| 298 |
@app.get("/self/learning-status")
|
| 299 |
def get_learning_status():
|
| 300 |
"""Get autonomous learner status."""
|
| 301 |
+
from .services.autonomous_learner import autonomous_learner
|
| 302 |
|
| 303 |
return autonomous_learner.get_status()
|
| 304 |
|
|
|
|
| 306 |
@app.get("/self/fine-tuning")
|
| 307 |
def get_fine_tuning_stats():
|
| 308 |
"""Get fine-tuning dataset statistics."""
|
| 309 |
+
from .services.fine_tuning_builder import fine_tuning_builder
|
| 310 |
|
| 311 |
return fine_tuning_builder.get_stats()
|
| 312 |
|
|
|
|
| 314 |
@app.get("/self/datasets")
|
| 315 |
def get_available_datasets(topic: str = None):
|
| 316 |
"""Search HF Hub for relevant datasets."""
|
| 317 |
+
from .services.hf_dataset_searcher import hf_dataset_searcher
|
| 318 |
|
| 319 |
if topic:
|
| 320 |
return {"datasets": hf_dataset_searcher.search_for_gap(topic)}
|
|
|
|
| 330 |
@app.get("/self/continuous-training")
|
| 331 |
def get_continuous_training_status():
|
| 332 |
"""Get continuous self-training status."""
|
| 333 |
+
from .services.continuous_training import continuous_self_trainer
|
| 334 |
|
| 335 |
return continuous_self_trainer.get_status()
|
| 336 |
|
|
|
|
| 338 |
@app.post("/self/continuous-training/run")
|
| 339 |
def trigger_continuous_training():
|
| 340 |
"""Manually trigger a continuous training cycle."""
|
| 341 |
+
from .services.continuous_training import continuous_self_trainer
|
| 342 |
|
| 343 |
return continuous_self_trainer.run_training_cycle()
|
| 344 |
|
|
|
|
| 465 |
|
| 466 |
def _fire_and_forget_learning(payload: dict):
|
| 467 |
"""Fire-and-forget learning from a completed case."""
|
| 468 |
+
from .routers.learning import learning_engine as _le
|
| 469 |
|
| 470 |
if _le:
|
| 471 |
try:
|