feat(ai): add Grok CLI as a Desktop no-API-key provider
* feat(ai): add Grok CLI as a Desktop no-API-key provider Add grok-cli alongside Codex/Claude Code/Pi, with path/env settings, isolated MCP-scoped headless runs, model listing, and connection test. * feat(ai): expose Grok CLI reasoning effort like Codex Attach low/medium/high effort capabilities to Grok models for the assistant effort menu, wire resolve_model_effort for grok-cli, and use the monochrome Grok mark icon. * i18n: add Grok CLI error messages for remaining locales Fill grokCli* cliErrors strings in es, it, ja, ko, pt-BR, and zh-TW to match en/zh-CN and satisfy i18n autofill CI. * fix(ai): align Grok CLI headless with official Build flags Address review feedback on PR #5494: - Use streaming-json + CliAgentJsonlDialect::GrokStreamingJson - Switch permission to --always-approve and MCPTool(dbx__*) rules - Prefer --effort over --reasoning-effort; keep --prompt-file Verified with unit tests and a local headless e2e against grok 1.0. * style(ai): fix rustfmt for Grok CLI provider files * test(ai): fix Grok CLI entry in provider ordering spec * fix(ai): harden grok CLI error wording and config schema Add 'not signed in' to classify_grok_run_error and test_grok_connection auth detection — real @xai-official/grok 1.0.0 emits this exact wording on headless auth failure (verified against the shipped binary). Remove invalid config.toml fields: permission_mode='always-approve' (not a valid enum; auto-approve is driven by --always-approve flag) and startup_timeout_sec/tool_timeout_sec/enabled_tools (not mcp_servers schema fields per 'grok mcp add'). --------- Co-authored-by: t8y2 <1156263951@qq.com>
This commit is contained in:
1 parent
fff07ada83
commit
d08189ba7d
34 files changed
+1156
-14
No files matched your search
@@ -241,6 +241,7 @@ fn resolve_cli_provider_config(mut config: AiConfig) -> AiConfig {
|
||||
AiProvider::PiAgentCli => (&mut config.pi_agent_cli_path, "pi"),
|
||||
AiProvider::OpenCodeCli => (&mut config.opencode_cli_path, "opencode"),
|
||||
AiProvider::CursorCli => (&mut config.cursor_cli_path, "agent"),
|
||||
AiProvider::GrokCli => (&mut config.grok_cli_path, "grok"),
|
||||
_ => return config,
|
||||
};
|
||||
let command = path_slot.as_deref().map(str::trim).filter(|path| !path.is_empty()).unwrap_or(default_command);
|
||||
@@ -330,6 +331,8 @@ mod tests {
|
||||
opencode_cli_env: Default::default(),
|
||||
cursor_cli_path: None,
|
||||
cursor_cli_env: Default::default(),
|
||||
grok_cli_path: None,
|
||||
grok_cli_env: Default::default(),
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
Reference in new issue
Block a user