get_official_package_info
Retrieve detailed information about official Arch Linux repository packages, including version, dependencies, and install size. Uses local pacman or API fallback.
Instructions
[DISCOVERY] Get information about an official Arch repository package (Core, Extra, etc.). Uses local pacman if available, otherwise queries archlinux.org API. Always prefer official packages over AUR when available. Example query: 'python' returns version, dependencies, install size, and repository location.
Input Schema
| Name | Required | Description | Default |
|---|---|---|---|
| package_name | Yes | Exact package name |
Implementation Reference
- src/arch_ops_server/pacman.py:29-53 (handler)The main async handler function for get_official_package_info. Uses hybrid approach: tries local pacman -Si on Arch Linux first, then falls back to querying archlinux.org API.
async def get_official_package_info(package_name: str) -> Dict[str, Any]: """ Get information about an official repository package. Uses hybrid approach: - If on Arch Linux: Execute `pacman -Si` for local database query - Otherwise: Query archlinux.org API Args: package_name: Package name Returns: Dict with package information """ logger.info(f"Fetching info for official package: {package_name}") # Try local pacman first if on Arch if IS_ARCH and check_command_exists("pacman"): info = await _get_package_info_local(package_name) if info is not None: return info logger.warning(f"Local pacman query failed for {package_name}, trying remote API") # Fallback to remote API return await _get_package_info_remote(package_name) - src/arch_ops_server/server.py:1115-1118 (registration)Tool registration/dispatch in call_tool() - routes incoming 'get_official_package_info' calls to the handler function.
elif name == "get_official_package_info": package_name = arguments["package_name"] result = await get_official_package_info(package_name) return [TextContent(type="text", text=json.dumps(result, indent=2))] - Tool definition with input schema requiring 'package_name' (string). Registered as a [DISCOVERY] read-only tool.
Tool( name="get_official_package_info", description="[DISCOVERY] Get information about an official Arch repository package (Core, Extra, etc.). Uses local pacman if available, otherwise queries archlinux.org API. Always prefer official packages over AUR when available. Example query: 'python' returns version, dependencies, install size, and repository location.", inputSchema={ "type": "object", "properties": { "package_name": { "type": "string", "description": "Exact package name" } }, "required": ["package_name"] }, annotations=ToolAnnotations(readOnlyHint=True) ), - ToolMetadata definition for get_official_package_info: discovery category, any platform, read permission, research workflow, related to search_aur and install_package_secure.
"get_official_package_info": ToolMetadata( name="get_official_package_info", category="discovery", platform="any", permission="read", workflow="research", related_tools=["search_aur", "install_package_secure"], prerequisite_tools=[] ), - src/arch_ops_server/pacman.py:56-89 (helper)Private helper _get_package_info_local - runs pacman -Si and parses output locally on Arch Linux systems.
async def _get_package_info_local(package_name: str) -> Optional[Dict[str, Any]]: """ Query package info using local pacman command. Args: package_name: Package name Returns: Package info dict or None if failed """ try: exit_code, stdout, stderr = await run_command( ["pacman", "-Si", package_name], timeout=5, check=False ) if exit_code != 0: logger.debug(f"pacman -Si failed for {package_name}") return None # Parse pacman output info = _parse_pacman_output(stdout) if info: info["source"] = "local" logger.info(f"Successfully fetched {package_name} info locally") return info return None except Exception as e: logger.warning(f"Local pacman query failed: {e}") return None