check_critical_news
Identify critical Arch Linux news requiring manual intervention by scanning recent announcements for keywords like 'action required' and 'breaking change'.
Instructions
[DISCOVERY] Check for critical Arch Linux news requiring manual intervention. Scans recent news for keywords: 'manual intervention', 'action required', 'breaking change', etc.
Input Schema
TableJSON Schema
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | Number of recent news items to check (default 20) |
Implementation Reference
- src/arch_ops_server/news.py:146-197 (handler)The main handler function that implements the check_critical_news tool. It fetches the latest Arch Linux news using get_latest_news, scans titles and summaries for critical keywords (defined in CRITICAL_KEYWORDS), identifies matching items, and returns a structured response indicating critical news presence and details.async def check_critical_news(limit: int = 20) -> Dict[str, Any]: """ Check for critical Arch Linux news requiring manual intervention. Args: limit: Number of recent news items to check (default 20) Returns: Dict with critical news items """ logger.info("Checking for critical Arch Linux news") result = await get_latest_news(limit=limit) if "error" in result: return result news_items = result.get("news", []) critical_items = [] # Scan for critical keywords for item in news_items: title_lower = item["title"].lower() summary_lower = item["summary"].lower() # Check if any critical keyword is in title or summary is_critical = any( keyword in title_lower or keyword in summary_lower for keyword in CRITICAL_KEYWORDS ) if is_critical: # Identify which keywords matched matched_keywords = [ keyword for keyword in CRITICAL_KEYWORDS if keyword in title_lower or keyword in summary_lower ] critical_items.append({ **item, "matched_keywords": matched_keywords, "severity": "critical" }) logger.info(f"Found {len(critical_items)} critical news items") return { "critical_count": len(critical_items), "has_critical": len(critical_items) > 0, "critical_news": critical_items, "checked_items": len(news_items) }
- src/arch_ops_server/server.py:970-983 (registration)MCP tool registration in @server.list_tools(). Defines the tool name, description, and input schema for the MCP protocol.name="check_critical_news", description="[DISCOVERY] Check for critical Arch Linux news requiring manual intervention. Scans recent news for keywords: 'manual intervention', 'action required', 'breaking change', etc.", inputSchema={ "type": "object", "properties": { "limit": { "type": "integer", "description": "Number of recent news items to check (default 20)", "default": 20 } }, "required": [] } ),
- Input schema definition for the check_critical_news tool, specifying the optional 'limit' parameter."type": "object", "properties": { "limit": { "type": "integer", "description": "Number of recent news items to check (default 20)", "default": 20 } }, "required": [] }
- src/arch_ops_server/server.py:1364-1367 (registration)Tool execution handler in @server.call_tool(). Dispatches the call to the actual check_critical_news function with parsed arguments.elif name == "check_critical_news": limit = arguments.get("limit", 20) result = await check_critical_news(limit=limit) return [TextContent(type="text", text=json.dumps(result, indent=2))]
- src/arch_ops_server/news.py:28-36 (helper)Constant list of keywords used to identify critical news items requiring manual intervention.CRITICAL_KEYWORDS = [ "manual intervention", "action required", "before upgrading", "breaking change", "manual action", "requires manual", "important notice" ]