"""Shared imports/helpers for AI PMO decision runtime.""" from __future__ import annotations import re from typing import Any from ..ai_pmo_intent import ( INTENT_FOLLOWUP_CONFIRM, INTENT_FOLLOWUP_CONTINUE, INTENT_PROJECT_CREATE, INTENT_PROJECT_UPDATE, INTENT_PROJECT_ARCHIVE, INTENT_PROJECT_REOPEN, INTENT_PROJECT_DELETE, INTENT_QUERY, INTENT_TASK_CREATE, INTENT_TASK_UPDATE, INTENT_TASK_ASSIGN, INTENT_TASK_PRIORITIZE, INTENT_TASK_STATUS_TRANSITION, INTENT_TASK_DELETE, INTENT_PERSONNEL_ROLE_UPDATE, INTENT_PERSONNEL_WORKLOAD_UPDATE, INTENT_PERSONNEL_AVAILABILITY_UPDATE, INTENT_KNOWLEDGE_DOC_UPSERT, INTENT_KNOWLEDGE_CHUNK_UPSERT, INTENT_KNOWLEDGE_LINK_UPSERT, INTENT_KNOWLEDGE_REINDEX, INTENT_NOTIFICATION_CREATE, INTENT_NOTIFICATION_ACK, INTENT_NOTIFICATION_CLOSE, INTENT_SIGNAL_CREATE, INTENT_SIGNAL_SOURCE_ONBOARD, ROUTE_FAMILY_KNOWLEDGE, ROUTE_FAMILY_NOTIFICATION, ROUTE_FAMILY_PERSONNEL, ROUTE_FAMILY_PROJECT, ROUTE_PROJECT_SIGNAL_CANCEL, ROUTE_PROJECT_SIGNAL_COMMIT, ROUTE_PROJECT_SIGNAL_DISCOVER, ROUTE_PROJECT_SIGNAL_REFRESH, ROUTE_PROJECT_UPDATE, ROUTE_PROJECT_ARCHIVE, ROUTE_PROJECT_REOPEN, ROUTE_PROJECT_DELETE, ROUTE_TASK_UPDATE, ROUTE_TASK_ASSIGN, ROUTE_TASK_PRIORITIZE, ROUTE_TASK_STATUS_TRANSITION, ROUTE_TASK_DELETE, ROUTE_PERSONNEL_ROLE_UPDATE, ROUTE_PERSONNEL_WORKLOAD_UPDATE, ROUTE_PERSONNEL_AVAILABILITY_UPDATE, ROUTE_KNOWLEDGE_DOC_UPSERT, ROUTE_KNOWLEDGE_CHUNK_UPSERT, ROUTE_KNOWLEDGE_LINK_UPSERT, ROUTE_KNOWLEDGE_REINDEX, ROUTE_NOTIFICATION_CREATE, ROUTE_NOTIFICATION_ACK, ROUTE_NOTIFICATION_CLOSE, CanonicalIntent, ) def normalize_workload_ratio(value: Any) -> float: try: ratio = float(value or 0.0) except (TypeError, ValueError): return 0.0 if ratio <= 0: return 0.0 return ratio / 100.0 if ratio > 1.0 else ratio def safe_int(value: Any) -> int | None: try: if value is None or value == "": return None return int(value) except (TypeError, ValueError): return None __all__ = [ "Any", "CanonicalIntent", "INTENT_FOLLOWUP_CONFIRM", "INTENT_FOLLOWUP_CONTINUE", "INTENT_PROJECT_CREATE", "INTENT_PROJECT_UPDATE", "INTENT_PROJECT_ARCHIVE", "INTENT_PROJECT_REOPEN", "INTENT_PROJECT_DELETE", "INTENT_QUERY", "INTENT_TASK_CREATE", "INTENT_TASK_UPDATE", "INTENT_TASK_ASSIGN", "INTENT_TASK_PRIORITIZE", "INTENT_TASK_STATUS_TRANSITION", "INTENT_TASK_DELETE", "INTENT_PERSONNEL_ROLE_UPDATE", "INTENT_PERSONNEL_WORKLOAD_UPDATE", "INTENT_PERSONNEL_AVAILABILITY_UPDATE", "INTENT_KNOWLEDGE_DOC_UPSERT", "INTENT_KNOWLEDGE_CHUNK_UPSERT", "INTENT_KNOWLEDGE_LINK_UPSERT", "INTENT_KNOWLEDGE_REINDEX", "INTENT_NOTIFICATION_CREATE", "INTENT_NOTIFICATION_ACK", "INTENT_NOTIFICATION_CLOSE", "INTENT_SIGNAL_CREATE", "INTENT_SIGNAL_SOURCE_ONBOARD", "ROUTE_FAMILY_KNOWLEDGE", "ROUTE_FAMILY_NOTIFICATION", "ROUTE_FAMILY_PERSONNEL", "ROUTE_FAMILY_PROJECT", "ROUTE_PROJECT_SIGNAL_CANCEL", "ROUTE_PROJECT_SIGNAL_COMMIT", "ROUTE_PROJECT_SIGNAL_DISCOVER", "ROUTE_PROJECT_SIGNAL_REFRESH", "ROUTE_PROJECT_UPDATE", "ROUTE_PROJECT_ARCHIVE", "ROUTE_PROJECT_REOPEN", "ROUTE_PROJECT_DELETE", "ROUTE_TASK_UPDATE", "ROUTE_TASK_ASSIGN", "ROUTE_TASK_PRIORITIZE", "ROUTE_TASK_STATUS_TRANSITION", "ROUTE_TASK_DELETE", "ROUTE_PERSONNEL_ROLE_UPDATE", "ROUTE_PERSONNEL_WORKLOAD_UPDATE", "ROUTE_PERSONNEL_AVAILABILITY_UPDATE", "ROUTE_KNOWLEDGE_DOC_UPSERT", "ROUTE_KNOWLEDGE_CHUNK_UPSERT", "ROUTE_KNOWLEDGE_LINK_UPSERT", "ROUTE_KNOWLEDGE_REINDEX", "ROUTE_NOTIFICATION_CREATE", "ROUTE_NOTIFICATION_ACK", "ROUTE_NOTIFICATION_CLOSE", "normalize_workload_ratio", "re", "safe_int", ]