Compare commits

...

2 Commits

2 changed files with 14 additions and 6 deletions
+12 -5
View File
@@ -4,7 +4,7 @@ Wraps graphiti-core in a FastAPI service to avoid asyncio event loop conflicts.
Port 8001 (internal only). No OpenAI dependency. Port 8001 (internal only). No OpenAI dependency.
""" """
import os, logging, sys import os, logging, sys, traceback
from contextlib import asynccontextmanager from contextlib import asynccontextmanager
from datetime import datetime from datetime import datetime
from pathlib import Path from pathlib import Path
@@ -15,7 +15,14 @@ from pydantic import BaseModel
load_dotenv(Path.home() / "aaronai" / ".env") load_dotenv(Path.home() / "aaronai" / ".env")
logging.basicConfig(level=logging.INFO, format="%(asctime)s - %(name)s - %(levelname)s - %(message)s") logging.basicConfig(
level=logging.INFO,
format="%(asctime)s - %(name)s - %(levelname)s - %(message)s",
handlers=[
logging.FileHandler("/var/log/aaronai/graphiti-sidecar.log"),
logging.StreamHandler(),
]
)
log = logging.getLogger("graphiti-sidecar") log = logging.getLogger("graphiti-sidecar")
GROUP_ID = os.getenv("GRAPHITI_GROUP_ID", "aaron") GROUP_ID = os.getenv("GRAPHITI_GROUP_ID", "aaron")
@@ -116,7 +123,7 @@ async def add_episode(req: EpisodeRequest):
) )
return {"ok": True} return {"ok": True}
except Exception as e: except Exception as e:
log.error(f"Episode ingestion failed: {e}") log.error(f"Episode ingestion failed: {e}\n{traceback.format_exc()}")
raise HTTPException(status_code=500, detail=str(e)) raise HTTPException(status_code=500, detail=str(e))
@app.post("/episodes/bulk") @app.post("/episodes/bulk")
@@ -142,7 +149,7 @@ async def add_episodes_bulk(req: BulkEpisodeRequest):
) )
return {"ok": True, "count": len(raw_episodes)} return {"ok": True, "count": len(raw_episodes)}
except Exception as e: except Exception as e:
log.error(f"Bulk ingestion failed: {e}") log.error(f"Bulk ingestion failed: {e}\n{traceback.format_exc()}")
raise HTTPException(status_code=500, detail=str(e)) raise HTTPException(status_code=500, detail=str(e))
@@ -168,7 +175,7 @@ async def search(query: str, limit: int = 8, group_id: str | None = None):
] ]
} }
except Exception as e: except Exception as e:
log.error(f"Search failed: {e}") log.error(f"Search failed: {e}\n{traceback.format_exc()}")
raise HTTPException(status_code=500, detail=str(e)) raise HTTPException(status_code=500, detail=str(e))
if __name__ == "__main__": if __name__ == "__main__":
+2 -1
View File
@@ -107,7 +107,8 @@ def ingest_to_graphiti(source, full_text, orientation):
payload = {"episodes": episodes, "group_id": "aaron", "saga": source} payload = {"episodes": episodes, "group_id": "aaron", "saga": source}
resp = requests.post(f"{GRAPHITI_URL}/episodes/bulk", json=payload, timeout=INGEST_TIMEOUT) resp = requests.post(f"{GRAPHITI_URL}/episodes/bulk", json=payload, timeout=INGEST_TIMEOUT)
resp.raise_for_status() if not resp.ok:
raise RuntimeError(f"Sidecar {resp.status_code}: {resp.text[:500]}")
return resp.json() return resp.json()