pub async fn preflight_install(
manifest: &PluginManifest,
plugin_dir: &Path,
) -> PluginResult<Vec<McpServerConfig>>Expand description
Everything an install can validate/resolve WITHOUT touching AppState:
manifest validation, platform gating, per-entry MCP resolution (so a
malformed entry — e.g. an empty stdio command — fails fast before any
registration happens), and the provides.skills / provides.workflows
on-disk existence + authoritative checks (MAJOR 4).
Shared by LocalPluginInstaller and any real AppState-backed
installer (see PLUGIN_PLAN.md § Installer-core agent) so the two can
never drift apart. Returns the resolved MCP server configs (the caller
needs them anyway to register step 1) so a real installer doesn’t have to
re-resolve them a second time.