Add Dalidou storage foundation and deployment prep
This commit is contained in:
@@ -5,6 +5,7 @@ from pathlib import Path
|
||||
from fastapi import APIRouter, HTTPException
|
||||
from pydantic import BaseModel
|
||||
|
||||
import atocore.config as _config
|
||||
from atocore.context.builder import (
|
||||
build_context,
|
||||
get_last_context_pack,
|
||||
@@ -16,7 +17,13 @@ from atocore.context.project_state import (
|
||||
invalidate_state,
|
||||
set_state,
|
||||
)
|
||||
from atocore.ingestion.pipeline import ingest_file, ingest_folder, get_ingestion_stats
|
||||
from atocore.ingestion.pipeline import (
|
||||
get_ingestion_stats,
|
||||
get_source_status,
|
||||
ingest_configured_sources,
|
||||
ingest_file,
|
||||
ingest_folder,
|
||||
)
|
||||
from atocore.memory.service import (
|
||||
MEMORY_TYPES,
|
||||
create_memory,
|
||||
@@ -44,6 +51,10 @@ class IngestResponse(BaseModel):
|
||||
results: list[dict]
|
||||
|
||||
|
||||
class IngestSourcesResponse(BaseModel):
|
||||
results: list[dict]
|
||||
|
||||
|
||||
class QueryRequest(BaseModel):
|
||||
prompt: str
|
||||
top_k: int = 10
|
||||
@@ -126,6 +137,17 @@ def api_ingest(req: IngestRequest) -> IngestResponse:
|
||||
return IngestResponse(results=results)
|
||||
|
||||
|
||||
@router.post("/ingest/sources", response_model=IngestSourcesResponse)
|
||||
def api_ingest_sources() -> IngestSourcesResponse:
|
||||
"""Ingest enabled configured source directories."""
|
||||
try:
|
||||
results = ingest_configured_sources()
|
||||
except Exception as e:
|
||||
log.error("ingest_sources_failed", error=str(e))
|
||||
raise HTTPException(status_code=500, detail=f"Configured source ingestion failed: {e}")
|
||||
return IngestSourcesResponse(results=results)
|
||||
|
||||
|
||||
@router.post("/query", response_model=QueryResponse)
|
||||
def api_query(req: QueryRequest) -> QueryResponse:
|
||||
"""Retrieve relevant chunks for a prompt."""
|
||||
@@ -304,10 +326,34 @@ def api_invalidate_project_state(req: ProjectStateInvalidateRequest) -> dict:
|
||||
def api_health() -> dict:
|
||||
"""Health check."""
|
||||
store = get_vector_store()
|
||||
source_status = get_source_status()
|
||||
return {
|
||||
"status": "ok",
|
||||
"version": "0.1.0",
|
||||
"vectors_count": store.count,
|
||||
"env": _config.settings.env,
|
||||
"machine_paths": {
|
||||
"db_path": str(_config.settings.db_path),
|
||||
"chroma_path": str(_config.settings.chroma_path),
|
||||
"log_dir": str(_config.settings.resolved_log_dir),
|
||||
"backup_dir": str(_config.settings.resolved_backup_dir),
|
||||
"run_dir": str(_config.settings.resolved_run_dir),
|
||||
},
|
||||
"sources_ready": all(
|
||||
(not source["enabled"]) or (source["exists"] and source["is_dir"])
|
||||
for source in source_status
|
||||
),
|
||||
"source_status": source_status,
|
||||
}
|
||||
|
||||
|
||||
@router.get("/sources")
|
||||
def api_sources() -> dict:
|
||||
"""Return configured ingestion source directories and readiness."""
|
||||
return {
|
||||
"sources": get_source_status(),
|
||||
"vault_enabled": _config.settings.source_vault_enabled,
|
||||
"drive_enabled": _config.settings.source_drive_enabled,
|
||||
}
|
||||
|
||||
|
||||
|
||||
Reference in New Issue
Block a user