91 lines
2.8 KiB
Python
91 lines
2.8 KiB
Python
"""Memory Gateway v2 workflow API."""
|
|
from __future__ import annotations
|
|
|
|
from typing import Optional
|
|
|
|
from fastapi import APIRouter, Depends, Query
|
|
|
|
from .schemas_v2 import (
|
|
BackendRefStatus,
|
|
BackendType,
|
|
CommitJobView,
|
|
CommitRequest,
|
|
CommitResponse,
|
|
FeedbackRequest,
|
|
FeedbackResponse,
|
|
IngestRequest,
|
|
IngestResponse,
|
|
MemoryRefType,
|
|
MemoryRefView,
|
|
OutboxProcessResponse,
|
|
RetrieveRequest,
|
|
RetrieveResponse,
|
|
)
|
|
from .server_auth import verify_api_key_compat
|
|
from .services_v2 import v2_service
|
|
|
|
router = APIRouter(prefix="/v2", tags=["memory-v2"], dependencies=[Depends(verify_api_key_compat)])
|
|
|
|
|
|
@router.post("/conversations/ingest", response_model=IngestResponse)
|
|
async def ingest_conversation(request: IngestRequest):
|
|
return await v2_service.ingest_conversation_turn(request)
|
|
|
|
|
|
@router.post("/conversations/{session_id}/commit", response_model=CommitResponse)
|
|
async def commit_conversation(session_id: str, request: CommitRequest):
|
|
return await v2_service.commit_session(session_id, request)
|
|
|
|
|
|
@router.get("/jobs/{job_id}", response_model=CommitJobView)
|
|
async def get_commit_job(job_id: str):
|
|
return v2_service.get_commit_job_view(job_id)
|
|
|
|
|
|
@router.post("/context/retrieve", response_model=RetrieveResponse)
|
|
async def retrieve_context(request: RetrieveRequest):
|
|
return await v2_service.retrieve_context(request)
|
|
|
|
|
|
@router.get("/memory/refs", response_model=list[MemoryRefView])
|
|
async def list_memory_refs(
|
|
workspace_id: Optional[str] = Query(default=None),
|
|
user_id: Optional[str] = Query(default=None),
|
|
agent_id: Optional[str] = Query(default=None),
|
|
session_id: Optional[str] = Query(default=None),
|
|
namespace: Optional[str] = Query(default=None),
|
|
backend_type: Optional[BackendType] = Query(default=None),
|
|
ref_type: Optional[MemoryRefType] = Query(default=None),
|
|
status: Optional[BackendRefStatus] = Query(default=None),
|
|
limit: int = Query(default=100, ge=1, le=1000),
|
|
):
|
|
return v2_service.list_memory_refs(
|
|
workspace_id=workspace_id,
|
|
user_id=user_id,
|
|
agent_id=agent_id,
|
|
session_id=session_id,
|
|
namespace=namespace,
|
|
backend_type=backend_type,
|
|
ref_type=ref_type,
|
|
status=status,
|
|
limit=limit,
|
|
)
|
|
|
|
|
|
@router.post("/memory/feedback", response_model=FeedbackResponse)
|
|
async def memory_feedback(request: FeedbackRequest):
|
|
return await v2_service.record_memory_feedback(request)
|
|
|
|
|
|
@router.post("/admin/outbox/process", response_model=OutboxProcessResponse, tags=["memory-v2-admin"])
|
|
async def process_outbox(
|
|
limit: int = Query(default=100, ge=1, le=1000),
|
|
worker_id: Optional[str] = Query(default=None),
|
|
lease_seconds: int = Query(default=300, ge=1, le=3600),
|
|
):
|
|
return await v2_service.process_pending_outbox_events_summary(
|
|
limit=limit,
|
|
worker_id=worker_id,
|
|
lease_seconds=lease_seconds,
|
|
)
|