from __future__ import annotations import logging from typing import Any, Dict from ..state import AgentState _LOGGER_NAME = "agentic_multiwriter" def get_logger() -> logging.Logger: logger = logging.getLogger(_LOGGER_NAME) if not logger.handlers: handler = logging.StreamHandler() formatter = logging.Formatter( "[%(asctime)s] %(levelname)s - %(message)s", "%Y-%m-%d %H:%M:%S" ) handler.setFormatter(formatter) logger.addHandler(handler) logger.setLevel(logging.INFO) return logger def log_state_summary(state: AgentState, prefix: str = "") -> None: logger = get_logger() topic = state.get("topic", "") mode = state.get("mode", "") n_snippets = len(state.get("research_snippets", []) or []) logger.info( "%sState summary - topic='%s', mode='%s', research_snippets=%d", f"{prefix} " if prefix else "", topic, mode, n_snippets, ) meta: Dict[str, Any] = state.get("meta", {}) or {} if meta: logger.info("%sMeta: %s", prefix, meta)