#!/usr/bin/env python3
from pathlib import Path

src = Path("scripts/safe_oi_api.py")
tmp = Path("scripts/safe_oi_api.py.memory.tmp")
text = src.read_text(encoding="utf-8")

old_marker = (
    '    user_message = f"{system_instruction}\\n\\n{prefix}{req.message}"\n'
    '    logger.info(f"[{thread_id}] {mode} | {resolved_model} | {user_message[:80]}...")'
)

# Error message s jednoduchými uvozovkami uvnitř
error_msg = 'Za prikazem \'zapamatuj si\' musi nasledovat text k ulozeni.'

new_marker = (
    '    # CB26_SAFE_OI_API_MEMORY_V1\n'
    '    # Do dlouhodobe pameti se ukladaji pouze explicitni prikazy "zapamatuj si ...".\n'
    '    normalized_message = req.message.strip()\n'
    '    memory_saved = None\n'
    '\n'
    '    if normalized_message.lower().startswith("zapamatuj si"):\n'
    '        memory_content = normalized_message[len("zapamatuj si"):].lstrip(" ,:-")\n'
    '        if not memory_content:\n'
    f'            return {{"error": "{error_msg}"}}\n'
    '        try:\n'
    '            from memory_core import remember\n'
    '            record = remember(\n'
    '                content=memory_content,\n'
    '                kind="fact",\n'
    '                source="safe-oi-api-explicit",\n'
    '                confidence="user_confirmed",\n'
    '            )\n'
    '            memory_saved = {\n'
    '                "id": record["id"],\n'
    '                "content": record["content"],\n'
    '                "kind": record["metadata"]["kind"],\n'
    '            }\n'
    '        except Exception as exc:\n'
    '            return {"error": f"Nepodarilo se ulozit pamet: {exc}"}\n'
    '\n'
    '    # Nacteni relevantni pameti do systemoveho kontextu\n'
    '    memory_context = ""\n'
    '    try:\n'
    '        from memory_core import retrieve_active_context\n'
    '        records = retrieve_active_context(query=normalized_message, limit=8)\n'
    '        if records:\n'
    '            memory_text = "\\n".join(f"- {{item[\'content\']}}" for item in records)\n'
    '            memory_context = (\n'
    '                "\\n\\nRelevantni dlouhodoba pamet CyberBrain26. "\n'
    '                "Pouzij ji jako kontext. Netvrd, ze je neco ulozene, "\n'
    '                "pokud to neni v tomto seznamu:\\n" + memory_text\n'
    '            )\n'
    '    except Exception:\n'
    '        pass\n'
    '\n'
    '    user_message = f"{{system_instruction}}{{memory_context}}\\n\\n{{prefix}}{{req.message}}"\n'
    '    logger.info(f"[{thread_id}] {mode} | {resolved_model} | {user_message[:80]}...")'
)

if old_marker not in text:
    raise SystemExit("CHYBA: old_marker nenalezen. Puvodni soubor se nemeni.")

text = text.replace(old_marker, new_marker, 1)

old_return = (
    '        return {\n'
    '            "thread_id": thread_id,\n'
    '            "reply": reply,\n'
    '            "mode": mode,\n'
    '            "model": req.model,\n'
    '            "auto_run": auto_run,\n'
    '            "has_approval": has_approval,\n'
    '            "approval_id": approval_id\n'
    '        }'
)

new_return = (
    '        result = {\n'
    '            "thread_id": thread_id,\n'
    '            "reply": reply,\n'
    '            "mode": mode,\n'
    '            "model": req.model,\n'
    '            "auto_run": auto_run,\n'
    '            "has_approval": has_approval,\n'
    '            "approval_id": approval_id\n'
    '        }\n'
    '        if memory_saved:\n'
    '            result["memory_saved"] = memory_saved\n'
    '        return result'
)

if old_return not in text:
    raise SystemExit("CHYBA: Nenalezen ocekavany navrat chat funkce. Puvodni soubor se nemeni.")

text = text.replace(old_return, new_return, 1)
tmp.write_text(text, encoding="utf-8")
print("OK: scripts/safe_oi_api.py.memory.tmp pripraven.")
