(required: list[str], optional: list[str] | None = None)
| 228 | |
| 229 | |
| 230 | def tool_preflight(required: list[str], optional: list[str] | None = None) -> dict[str, Any]: |
| 231 | optional = optional or [] |
| 232 | checked = [] |
| 233 | for name in required + optional: |
| 234 | checked.append(executable_status(name)) |
| 235 | missing_required = [item["name"] for item in checked[: len(required)] if not item["present"]] |
| 236 | return { |
| 237 | "ok": not missing_required, |
| 238 | "required": required, |
| 239 | "optional": optional, |
| 240 | "checked": checked, |
| 241 | "missing_required": missing_required, |
| 242 | } |
| 243 | |
| 244 | |
| 245 | def software_versions(commands: dict[str, list[str]]) -> dict[str, str | None]: |
no test coverage detected