Team Ai
Apppublic

Yash030/claude-code-proxy

sourceHugging Faceupdated 5mo agoView on Hugging Face
2likes
validation_log.py49 linesDownload Raw Back to api
1"""Safe metadata summaries for HTTP 422 validation logging (no raw text content)."""2 3from __future__ import annotations4 5from typing import Any6 7 8def summarize_request_validation_body(9    body: Any,10) -> tuple[list[dict[str, Any]], list[str]]:11    """Return message shape summary and tool name list for debug logs."""12    messages = body.get("messages") if isinstance(body, dict) else None13    message_summary: list[dict[str, Any]] = []14    if isinstance(messages, list):15        for msg in messages:16            if not isinstance(msg, dict):17                message_summary.append({"message_kind": type(msg).__name__})18                continue19            content = msg.get("content")20            item: dict[str, Any] = {21                "role": msg.get("role"),22                "content_kind": type(content).__name__,23            }24            if isinstance(content, list):25                item["block_types"] = [26                    block.get("type", "dict")27                    if isinstance(block, dict)28                    else type(block).__name__29                    for block in content[:12]30                ]31                item["block_keys"] = [32                    sorted(str(key) for key in block)[:12]33                    for block in content[:5]34                    if isinstance(block, dict)35                ]36            elif isinstance(content, str):37                item["content_length"] = len(content)38            message_summary.append(item)39 40    tool_names: list[str] = []41    if isinstance(body, dict) and isinstance(body.get("tools"), list):42        tool_names = [43            str(tool.get("name", ""))44            for tool in body["tools"]45            if isinstance(tool, dict)46        ]47 48    return message_summary, tool_names49