import asyncio
import json
import sys
from simulate_all import PureVectorEmbedder, qdrant_score
from inspect_mem0 import inspect_live_mem0

if hasattr(sys.stdout, "reconfigure"):
    sys.stdout.reconfigure(encoding="utf-8", errors="replace")

async def test_q8():
    dscons_mems, non_dscons_mems = await inspect_live_mem0()
    embedder = PureVectorEmbedder()
    
    embedded_non_dscons = []
    for m in non_dscons_mems:
        v = embedder.embed(m.get("memory", ""))
        embedded_non_dscons.append((m, v))
        
    query = "MCP tools protocol"
    qv = embedder.embed(query)
    
    # 1. Boosted RULE-ROOT-04
    text_boost_r04 = r"""[DSCons Rule: Mandatory MCP Tools Protocol | MCP Tools Protocol Ecosystem Architecture | Ma Trận Khai Thác MCP Tools Protocol] Agent làm việc tại DSCons ERP bắt buộc tuân thủ giao thức MCP tools protocol, ưu tiên 100% sử dụng các công cụ chuyên trách từ MCP server có sẵn: lsp-mcp (lsp_definition, lsp_references, lsp_diagnostics) cho duyệt code và refactor symbol; chrome-devtools-mcp cho nghiệm thu trình duyệt thực tế và bắt lỗi console/network; markitdown cho đọc bóc tách tài liệu dự toán PDF/Excel; memory cho Knowledge Graph kiến trúc; StitchMCP cho thiết kế UI; gemini-api-docs cho tra cứu SDK."""
    score_r04 = qdrant_score(qv, embedder.embed(text_boost_r04))
    print(f"Boosted RULE-ROOT-04: {score_r04:.4f}")

    # 2. Boosted RULE-WORKFLOW-05
    text_boost_w05 = r"""[DSCons Testing & Quality: Real Browser Automation Gate & AST Boundary | Chrome DevTools MCP Tools Protocol | Kiểm Thử Trình Duyệt Thực Tế] Toàn bộ tính năng UI/UX và mô hình bản vẽ/BIM bắt buộc kiểm thử trực tiếp trên trình duyệt thực tế qua giao thức MCP tools protocol (Real Browser Gate qua Chrome DevTools MCP hoặc Playwright), xác nhận 0 lỗi console JavaScript, FPS > 30 và chụp ảnh nghiệm thu. Đồng thời mọi thay đổi backend bắt buộc vượt qua bộ kiểm tra ranh giới AST tự động: pytest tests/test_architecture_boundary_enforcement.py đạt 100% Passed."""
    score_w05 = qdrant_score(qv, embedder.embed(text_boost_w05))
    print(f"Boosted RULE-WORKFLOW-05: {score_w05:.4f}")

    # 3. Boosted RULE-ROOT-01
    text_boost_r01 = r"""[DSCons Rule: Root Standards & 7 Core Laws | DSCons Rule Immutable Directives | Seven Core Laws Bảy Điều Luật Cốt Lõi DSCons Rule | MCP Tools Protocol Mandatory] DSCons ERP tuân thủ tuyệt đối Bảy Điều luật cốt lõi bất biến (DSCons rule core laws): (1) Nghiêm cấm 100% dữ liệu ảo/mock synthetic data; (2) Hàng rào kiểm thử hồi quy pytest 100% Passed; (3) Kiểm thử giao diện trên trình duyệt thực tế browser testing; (4) Vòng đời máy chủ Uvicorn luôn chạy --reload; (5) Chống hội chứng Bus Factor bằng tài liệu hóa giải thích rõ ràng; (6) Tuân thủ kiến trúc lục giác Hexagonal Architecture và DDD; (7) Bắt buộc khai thác tối đa hệ sinh thái MCP Server theo đúng MCP tools protocol (lsp-mcp, chrome-devtools-mcp, markitdown, memory, StitchMCP)."""
    score_r01 = qdrant_score(qv, embedder.embed(text_boost_r01))
    print(f"Boosted RULE-ROOT-01: {score_r01:.4f}")

    # Top non-dscons
    scored = [(qdrant_score(qv, mv), m.get("id"), m.get("memory", "")[:60]) for m, mv in embedded_non_dscons]
    scored.sort(key=lambda x: x[0], reverse=True)
    print("Top non-dscons #1:", scored[0])
    print("Top non-dscons #2:", scored[1])

if __name__ == "__main__":
    asyncio.run(test_q8())
