M2 audit: excise managed connectors and xAI media-gen tools
Managed connectors (grok.com MCP admin) removed root-and-branch: - The managed-MCP fetch/injection pipeline is gone, including the whole kigi-shell-session-support crate (managed-config fetch client, gateway tool catalog + dispatch, header injection, refresh task), reactive managed re-auth, mcp_doctor's grok.com-source discovery, and the [managed_mcps] config surface. - TUI: the 'Managed by grok.com' section, connectors URL/deep-link, Action::OpenManagedConnectors, and session_team_id are gone. Local MCP management (list/toggle/add/remove/auth/tools) is fully intact. - Kept as LOCAL policy: managed-settings.json MCP allow/deny enforcement, the multi-source local MCP merge, folder-trust gating. PluginOrigin Project/User labels kept (they tag locally discovered plugin dirs). imagine/media-gen tools (xAI image/video generation) removed: - image_gen, image_edit, video_gen, image_to_video, reference_to_video implementations, registrations, ToolKind/ToolInput/Output variants (serde-safe), config plumbing end to end, ZDR video machinery, /imagine + /imagine-video commands and guidance text, the bundled imagine skill (added to legacy cleanup so user installs delete it), and the media-gen render path. - Kept: image INPUT (paste/attach, [Image #N] meta, pdf/image fetch, clipboard wrap), generic media-ref rendering, and the generic tool 401-retry machinery (tests renamed, assertions unweakened). - deploy_app stays: it is a permanently-disabled local stub deploying nowhere. 121 files changed, 8 deleted. Gates: workspace check/clippy 0/0, fmt, deny ok; suites green (tools 2554, shell 4862, tui 6608, workspace 1042). Remaining grok.com strings live only in the auth-method ids and changelog archives (§9/M3 sweep).
This commit is contained in:
@@ -7,8 +7,6 @@ use std::sync::Arc;
|
||||
use kigi_tools::types::config_source::ConfigSource;
|
||||
use serde::Serialize;
|
||||
|
||||
use crate::auth::KimiCodeConfig;
|
||||
use crate::session::managed_mcp;
|
||||
use crate::session::mcp_servers;
|
||||
|
||||
// ── Report types ────────────────────────────────────────────────
|
||||
@@ -238,85 +236,6 @@ fn discover_servers(cwd: &Path) -> (Vec<ConfigSourceStatus>, Vec<DiscoveredServe
|
||||
(sources, servers)
|
||||
}
|
||||
|
||||
// ── Managed (grok.com) server discovery ─────────────────────────
|
||||
|
||||
const MANAGED_SOURCE_LABEL: &str = "grok.com";
|
||||
|
||||
fn managed_skipped(reason: impl Into<String>) -> (ConfigSourceStatus, Vec<DiscoveredServer>) {
|
||||
(
|
||||
ConfigSourceStatus {
|
||||
path: MANAGED_SOURCE_LABEL.to_string(),
|
||||
status: ConfigSourceState::Skipped {
|
||||
reason: reason.into(),
|
||||
},
|
||||
},
|
||||
vec![],
|
||||
)
|
||||
}
|
||||
|
||||
fn managed_found(
|
||||
count: usize,
|
||||
servers: Vec<DiscoveredServer>,
|
||||
) -> (ConfigSourceStatus, Vec<DiscoveredServer>) {
|
||||
(
|
||||
ConfigSourceStatus {
|
||||
path: MANAGED_SOURCE_LABEL.to_string(),
|
||||
status: ConfigSourceState::Found {
|
||||
server_count: count,
|
||||
},
|
||||
},
|
||||
servers,
|
||||
)
|
||||
}
|
||||
|
||||
/// Discover managed `grok_com_*` servers if the user has xAI auth on disk.
|
||||
async fn try_discover_managed_servers() -> (ConfigSourceStatus, Vec<DiscoveredServer>) {
|
||||
let kigi_home = kigi_tools::util::kigi_home::kigi_home();
|
||||
let kimi_code_config = KimiCodeConfig::default();
|
||||
let auth_manager = Arc::new(crate::auth::AuthManager::new(&kigi_home, kimi_code_config));
|
||||
|
||||
let Some(snapshot) = auth_manager.current_or_expired() else {
|
||||
return managed_skipped("not logged in");
|
||||
};
|
||||
if !snapshot.is_session_auth() {
|
||||
return managed_skipped(format!("{:?} auth (not xAI OIDC)", snapshot.auth_mode));
|
||||
}
|
||||
|
||||
let token = match auth_manager.get_valid_token().await {
|
||||
Ok(key) => key,
|
||||
Err(_) => return managed_skipped("auth expired — run `kigi login`"),
|
||||
};
|
||||
|
||||
let proxy_url = crate::agent::config::EndpointsConfig::from_effective_config().proxy_url();
|
||||
|
||||
let configs = match managed_mcp::fetch_managed_configs(&proxy_url, &token).await {
|
||||
Ok(configs) => configs,
|
||||
Err(e) => return managed_skipped(format!("fetch failed: {e}")),
|
||||
};
|
||||
if configs.is_empty() {
|
||||
return managed_found(0, vec![]);
|
||||
}
|
||||
|
||||
let mut servers: Vec<agent_client_protocol::McpServer> = vec![];
|
||||
managed_mcp::auto_inject_managed_servers_with_disabled(
|
||||
&mut servers,
|
||||
&configs,
|
||||
&Default::default(),
|
||||
);
|
||||
managed_mcp::inject_managed_headers(&mut servers, &configs);
|
||||
|
||||
let source = ConfigSource::Managed { path: None };
|
||||
let discovered: Vec<DiscoveredServer> = servers
|
||||
.into_iter()
|
||||
.map(|server| DiscoveredServer {
|
||||
server,
|
||||
source: source.clone(),
|
||||
})
|
||||
.collect();
|
||||
|
||||
managed_found(discovered.len(), discovered)
|
||||
}
|
||||
|
||||
// ── Check functions ─────────────────────────────────────────────
|
||||
|
||||
fn resolve_command(command: &str) -> Option<String> {
|
||||
@@ -558,11 +477,7 @@ pub async fn run_auth(cwd: &Path, name: &str) -> Result<usize, String> {
|
||||
}
|
||||
|
||||
pub async fn run_doctor(cwd: &Path, name_filter: Option<&str>) -> DoctorReport {
|
||||
let (mut sources, mut discovered) = discover_servers(cwd);
|
||||
|
||||
let (managed_source, managed_servers) = try_discover_managed_servers().await;
|
||||
sources.push(managed_source);
|
||||
discovered.extend(managed_servers);
|
||||
let (mut sources, discovered) = discover_servers(cwd);
|
||||
|
||||
let allowlist = &kigi_workspace::permission::resolution::managed_settings().mcp_allowlist;
|
||||
if allowlist.is_restricted() {
|
||||
|
||||
Reference in New Issue
Block a user