fix+docs: Bug-Fixes, vollstaendige Dokumentation v8
Bug-Fixes: - hermes_agent.py: asyncio.get_event_loop() → get_running_loop() (Python 3.10+) - routers/hermes.py: Thread-Lock fuer Whisper-Init, HERMES_WINDOWS_USER Import, Piper stderr logging, __import__ Anti-Pattern entfernt - routers/memory.py: SQLite WAL-Mode, Kategorie-Enum-Validierung (user/instruction/stable/versioned/ephemeral) - HermesPanel.svelte: findLast() → reverse().find() (Browser-Kompatibilitaet) - ConnectPanel.svelte: Hardcoded Username durch Platzhalter ersetzt Docs: - CLAUDE.md: komplett aktualisiert (v7+v8, Hermes, Memory, alle Env-Vars) - ROADMAP.md: v7+v8 als erledigt, naechste Features (v8.1-v9.1) - README.md: komplett neu geschrieben (Agentic OS Konzept, alle Features) Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
This commit is contained in:
+12
-2
@@ -9,6 +9,7 @@ Alle MCP-Tools teilen denselben Speicher via mcp_memory.py-Wrapper.
|
||||
import sqlite3
|
||||
import uuid
|
||||
from datetime import datetime, timezone
|
||||
from enum import Enum
|
||||
from typing import Optional
|
||||
|
||||
from fastapi import APIRouter, Depends, HTTPException
|
||||
@@ -28,6 +29,7 @@ def _db() -> sqlite3.Connection:
|
||||
MEMORY_DB.parent.mkdir(parents=True, exist_ok=True)
|
||||
_db_conn = sqlite3.connect(str(MEMORY_DB), check_same_thread=False)
|
||||
_db_conn.row_factory = sqlite3.Row
|
||||
_db_conn.execute("PRAGMA journal_mode=WAL") # sicherer bei concurrent FastAPI-Threads
|
||||
_db_conn.execute("""
|
||||
CREATE TABLE IF NOT EXISTS memories (
|
||||
id TEXT PRIMARY KEY,
|
||||
@@ -47,15 +49,23 @@ def _db() -> sqlite3.Connection:
|
||||
return _db_conn
|
||||
|
||||
|
||||
class _MemCategory(str, Enum):
|
||||
user = "user"
|
||||
instruction = "instruction"
|
||||
stable = "stable"
|
||||
versioned = "versioned"
|
||||
ephemeral = "ephemeral"
|
||||
|
||||
|
||||
class _MemIn(BaseModel):
|
||||
content: str
|
||||
category: str = "stable" # stable | versioned | ephemeral
|
||||
category: _MemCategory = _MemCategory.stable
|
||||
source: str = "manual"
|
||||
|
||||
|
||||
class _MemUp(BaseModel):
|
||||
content: Optional[str] = None
|
||||
category: Optional[str] = None
|
||||
category: Optional[_MemCategory] = None
|
||||
|
||||
|
||||
def _row(r: sqlite3.Row) -> dict:
|
||||
|
||||
Reference in New Issue
Block a user