feat: Restore mood system and implement comprehensive memory editor UI
MOOD SYSTEM FIX: - Mount bot/moods directory in docker-compose.yml for Cat container access - Update miku_personality plugin to load mood descriptions from .txt files - Add Cat logger for debugging mood loading (replaces print statements) - Moods now dynamically loaded from working_memory instead of hardcoded neutral
This commit is contained in:
53
bot/api.py
53
bot/api.py
@@ -2777,6 +2777,17 @@ def set_voice_debug_mode(enabled: bool = Form(...)):
|
||||
class MemoryDeleteRequest(BaseModel):
|
||||
confirmation: str
|
||||
|
||||
class MemoryEditRequest(BaseModel):
|
||||
content: str
|
||||
metadata: Optional[dict] = None
|
||||
|
||||
class MemoryCreateRequest(BaseModel):
|
||||
content: str
|
||||
collection: str # 'declarative' or 'episodic'
|
||||
user_id: Optional[str] = None
|
||||
source: Optional[str] = None
|
||||
metadata: Optional[dict] = None
|
||||
|
||||
@app.get("/memory/status")
|
||||
async def get_cat_memory_status():
|
||||
"""Get Cheshire Cat connection status and feature flag."""
|
||||
@@ -2899,6 +2910,48 @@ async def delete_single_memory_point(collection: str, point_id: str):
|
||||
else:
|
||||
return {"success": False, "error": f"Failed to delete point {point_id}"}
|
||||
|
||||
@app.put("/memory/point/{collection}/{point_id}")
|
||||
async def edit_memory_point(collection: str, point_id: str, request: MemoryEditRequest):
|
||||
"""Edit an existing memory point's content and/or metadata."""
|
||||
from utils.cat_client import cat_adapter
|
||||
success = await cat_adapter.update_memory_point(
|
||||
collection=collection,
|
||||
point_id=point_id,
|
||||
content=request.content,
|
||||
metadata=request.metadata
|
||||
)
|
||||
if success:
|
||||
return {"success": True, "updated": point_id}
|
||||
else:
|
||||
return {"success": False, "error": f"Failed to update point {point_id}"}
|
||||
|
||||
@app.post("/memory/create")
|
||||
async def create_memory_point(request: MemoryCreateRequest):
|
||||
"""
|
||||
Manually create a new memory (declarative fact or episodic memory).
|
||||
|
||||
For declarative facts, this allows you to teach Miku new knowledge.
|
||||
For episodic memories, this allows you to inject conversation context.
|
||||
"""
|
||||
from utils.cat_client import cat_adapter
|
||||
|
||||
if request.collection not in ['declarative', 'episodic']:
|
||||
return {"success": False, "error": "Collection must be 'declarative' or 'episodic'"}
|
||||
|
||||
# Create the memory point
|
||||
result = await cat_adapter.create_memory_point(
|
||||
collection=request.collection,
|
||||
content=request.content,
|
||||
user_id=request.user_id or "manual_admin",
|
||||
source=request.source or "manual_web_ui",
|
||||
metadata=request.metadata or {}
|
||||
)
|
||||
|
||||
if result:
|
||||
return {"success": True, "point_id": result, "collection": request.collection}
|
||||
else:
|
||||
return {"success": False, "error": "Failed to create memory point"}
|
||||
|
||||
|
||||
def start_api():
|
||||
import uvicorn
|
||||
|
||||
Reference in New Issue
Block a user