internal_alerts module

Internal alerts system for CodeBot (post-MVP).

  • Stores recent alerts in-memory for ChatOps consumption

  • Emits structured events via observability.emit_event

  • Optionally forwards alerts to sinks via alert_forwarder (Slack/Telegram) or directly to Telegram if alert_forwarder is unavailable.

Environment variables used by the Telegram fallback: - ALERT_TELEGRAM_BOT_TOKEN - ALERT_TELEGRAM_CHAT_ID

This module is intentionally lightweight and fail-open. It should never raise.

internal_alerts.emit_event(event, severity='info', **fields)[מקור]
פרמטרים:
internal_alerts.normalize_alert_details(**details)[מקור]

מחזיר את מטען ההתראה כמילון שטוח, משתי צורות הקריאה.

‏``emit_internal_alert`` מקבל את המטען דרך **details, ולכן קורא שמעביר אותו כ-details={...} מגיע לכאן כמילון מקונן. הצורה הזו אינה ”תמיכה לאחור לטסטים“ אלא הצורה הנכונה בכל מקום שבו מפתחות המטען אינם ידועים בנקודת הקריאה: מפתח ששמו name/severity/ summary היה מתנגש עם פרמטר של הפונקציה ומפיל אותה ב-TypeError.

הכלל חי כאן ולא משוכפל: גם קוד הייצור וגם דמויות בטסטים קוראים לו, כדי שדמה לא תראה מבנה אחר ממה שהפונקציה האמיתית רואה.

Return type:

Dict[str, Any]

פרמטרים:

details (Any)

internal_alerts.emit_internal_alert(name, severity='info', summary='', **details)[מקור]

Emit an internal alert: store in-memory, forward to sinks, and log.

severity: ”info“ | ”warn“ | ”error“ | ”critical“ | ”anomaly“

המטען מתקבל גם כ-**details וגם כ-details={...}; ראה normalize_alert_details.

Return type:

None

פרמטרים:
internal_alerts.get_recent_alerts(limit=5)[מקור]
Return type:

List[Dict[str, Any]]

פרמטרים:

limit (int)