# Context truncation: total messages character limit (approx 100k tokens)
MAX_TOTAL_CONTEXT_CHARS = 400000

# Read-only tools safe for parallel execution
PARALLEL_SAFE_TOOLS = frozenset(
    {
        "view_file",
        "view_directory",
        "grep_search",
        "glob",
        "find_symbol",
        "search_symbol",
        "list_symbols",
        "get_type",
        "call_graph",
    }
)

# Maximum parallel workers (official recommendation: 4-12 tool calls per turn)
MAX_PARALLEL_WORKERS = 12

# Chars Budget Tracking (reference: MorphLLM Warp Grep implementation)
# 160K chars ≈ 40K tokens, recommended context budget for search agent
MAX_CONTEXT_BUDGET_CHARS = 160_000
