§9 acceptance: grep-zero sweep — every internal x.ai/grok identifier renamed

The PRD's first acceptance gate now holds: grep -RinE '\bx\.ai\b|grok'
crates/ --include='*.rs' → 0 matches (exempt: NOTICE and third-party
license archives, README provenance, and the required 'Based on Grok
Build Open Source' attribution, now sourced from version_attribution.txt).

Wire-visible renames (both sides in this repo, changed in lockstep):
- Auth method id 'grok.com' → 'kimi-code' (AuthMethodKind::KimiCode).
- Every x.ai/* and _x.ai/* ACP ext method and meta key → kigi/* /
  _kigi/* (~200 names; grokShell → kigiShell). Session-file replay keeps
  a read-side alias for the legacy '_x.ai/session/update' method so
  existing updates.jsonl histories load; writes emit only the new name
  (both directions test-pinned).
- Agent types grok-build* → kigi* with a documented legacy-prefix alias
  at resolution time so persisted sessions keep resolving.
- ToolNamespace/BuiltinAgentName GrokBuild* → Kigi* (wire snake_case
  kigi/kigi_concise/kigi_hashline; schema regenerated); grok_build
  implementation dirs renamed to kigi*.
- x-grok-* headers → x-kigi-*, __GROK_* sentinels → __KIGI_*, themes
  grokday/groknight → kigiday/kiginight (old persisted values fall back
  to the default theme), web_fetch allowlist xAI hosts → kimi.com +
  moonshot platforms, changelog CDN → this repo, grok-build changelog
  archives deleted.
- BYOK default endpoint removed: [endpoints] api_base_url is now truly
  optional with NO default — consumers fail fast with the flag name when
  unset (no silent x.ai egress). Mock harnesses inject it explicitly.
- System-prompt identity fixed: 'released by xAI' → 'an unofficial
  community CLI for Kimi' (template + regenerated encrypted form).

Also repaired pre-existing grok-era test debt found by the sweep: the
stale trace_classify default-model pin, the grok-pager UA label test,
pty-harness stale-binary reuse and non-hermetic moonshot routing (a PTY
test could previously reach the real api.moonshot.cn), and the outdated
oauth fixture scope key.

Gates: §9 grep 0; fmt clean; workspace check/clippy 0/0 (-D warnings);
FULL cargo test --workspace: 234 suites, 21,961 passed, 0 failed;
deny advisories ok.
This commit is contained in:
ZacharyZhang-NY committed 2026-07-18 02:48:46 -04:00
1 parent 86e3724310
commit 6f31415ed6
1056 files changed
+8410 -18307

No files matched your search

+56 -56
View File
@@ -200,7 +200,7 @@ pub(crate) fn execute(
if chat_kind || session_flags.chat_mode {
meta.get_or_insert_with(acp::Meta::new)
.insert(
"x.ai/session".into(),
"kigi/session".into(),
serde_json::json!({ "kind" : "chat" }),
);
}
@@ -238,7 +238,7 @@ pub(crate) fn execute(
payload["gitRef"] = serde_json::Value::String(r.clone());
}
let ext_req = acp::ExtRequest::new(
"x.ai/git/worktree/resume_session",
"kigi/git/worktree/resume_session",
serde_json::value::to_raw_value(&payload)
.expect("serialize resume params")
.into(),
@@ -342,7 +342,7 @@ pub(crate) fn execute(
params["gitRef"] = serde_json::Value::String(r.clone());
}
let ext_req = acp::ExtRequest::new(
"x.ai/git/worktree/create_from_worktree_sync",
"kigi/git/worktree/create_from_worktree_sync",
serde_json::value::to_raw_value(&params)
.expect("serialize worktree params")
.into(),
@@ -470,7 +470,7 @@ pub(crate) fn execute(
}
if let Some(true) = session_flags.restore_code {
meta.get_or_insert_with(acp::Meta::new)
.insert("x.ai/restore_code".into(), serde_json::Value::Bool(true));
.insert("kigi/restore_code".into(), serde_json::Value::Bool(true));
}
let cwd = session_cwd.unwrap_or_else(|| cwd.to_path_buf());
let mcp_started = std::time::Instant::now();
@@ -670,7 +670,7 @@ pub(crate) fn execute(
params["query"] = serde_json::Value::String(q.clone());
}
let request = acp::ExtRequest::new(
"x.ai/session/list",
"kigi/session/list",
serde_json::value::to_raw_value(&params)
.expect("serialize session list params")
.into(),
@@ -725,7 +725,7 @@ pub(crate) fn execute(
tasks
.spawn(async move {
let request = acp::ExtRequest::new(
"x.ai/sessions/list",
"kigi/sessions/list",
serde_json::value::to_raw_value(&serde_json::json!({}))
.expect("serialize roster list params")
.into(),
@@ -743,7 +743,7 @@ pub(crate) fn execute(
}
None => {
tracing::warn!(
"failed to parse x.ai/sessions/list response"
"failed to parse kigi/sessions/list response"
);
TaskResult::RosterFailed {
error: "parse error".to_string(),
@@ -768,7 +768,7 @@ pub(crate) fn execute(
{ "cwd" : cwd.to_string_lossy(), "limit" : 30, }
);
let request = acp::ExtRequest::new(
"x.ai/session/list",
"kigi/session/list",
serde_json::value::to_raw_value(&params)
.expect("serialize session list params")
.into(),
@@ -1211,7 +1211,7 @@ pub(crate) fn execute(
{ "sessionId" : session_id.0.to_string(), }
);
let notification = acp::ExtNotification::new(
"x.ai/toggle_plan_mode",
"kigi/toggle_plan_mode",
serde_json::value::to_raw_value(&params)
.expect("serialize toggle_plan_mode params")
.into(),
@@ -1233,7 +1233,7 @@ pub(crate) fn execute(
"expectedVersion" : expected_version, }
);
let notification = acp::ExtNotification::new(
"x.ai/queue/remove",
"kigi/queue/remove",
serde_json::value::to_raw_value(&params)
.expect("serialize queue/remove params")
.into(),
@@ -1253,7 +1253,7 @@ pub(crate) fn execute(
ordered_ids, }
);
let notification = acp::ExtNotification::new(
"x.ai/queue/reorder",
"kigi/queue/reorder",
serde_json::value::to_raw_value(&params)
.expect("serialize queue/reorder params")
.into(),
@@ -1272,7 +1272,7 @@ pub(crate) fn execute(
{ "sessionId" : session_id.0.to_string(), }
);
let notification = acp::ExtNotification::new(
"x.ai/queue/clear",
"kigi/queue/clear",
serde_json::value::to_raw_value(&params)
.expect("serialize queue/clear params")
.into(),
@@ -1292,7 +1292,7 @@ pub(crate) fn execute(
new_text, }
);
let notification = acp::ExtNotification::new(
"x.ai/queue/edit",
"kigi/queue/edit",
serde_json::value::to_raw_value(&params)
.expect("serialize queue/edit params")
.into(),
@@ -1315,7 +1315,7 @@ pub(crate) fn execute(
params["newText"] = serde_json::Value::String(new_text);
}
let notification = acp::ExtNotification::new(
"x.ai/queue/interject",
"kigi/queue/interject",
serde_json::value::to_raw_value(&params)
.expect("serialize queue/interject params")
.into(),
@@ -1396,7 +1396,7 @@ pub(crate) fn execute(
{ "sessionId" : session_id.0.to_string(), }
);
let req = acp::ExtRequest::new(
"x.ai/compact_conversation",
"kigi/compact_conversation",
serde_json::value::to_raw_value(&params)
.expect("serialize compact params")
.into(),
@@ -1419,7 +1419,7 @@ pub(crate) fn execute(
session_id, }
);
let req = acp::ExtRequest::new(
"x.ai/prompt_history",
"kigi/prompt_history",
serde_json::value::to_raw_value(&params)
.expect("serialize prompt_history params")
.into(),
@@ -1467,7 +1467,7 @@ pub(crate) fn execute(
task_id: task_id.clone(),
};
let req = acp::ExtRequest::new(
"x.ai/task/kill",
"kigi/task/kill",
serde_json::value::to_raw_value(&params)
.expect("serialize kill params")
.into(),
@@ -1500,7 +1500,7 @@ pub(crate) fn execute(
subagent_id, }
);
let req = acp::ExtRequest::new(
"x.ai/subagent/cancel",
"kigi/subagent/cancel",
serde_json::value::to_raw_value(&params)
.expect("serialize cancel params")
.into(),
@@ -1527,7 +1527,7 @@ pub(crate) fn execute(
{ "sessionId" : session_id.0.to_string(), "taskId" : task_id, }
);
let req = acp::ExtRequest::new(
"x.ai/scheduler/delete",
"kigi/scheduler/delete",
serde_json::value::to_raw_value(&params)
.expect("serialize scheduler delete params")
.into(),
@@ -1547,7 +1547,7 @@ pub(crate) fn execute(
tool_call_id, }
);
let req = acp::ExtRequest::new(
"x.ai/terminal/background",
"kigi/terminal/background",
serde_json::value::to_raw_value(&params)
.expect("serialize background params")
.into(),
@@ -1862,7 +1862,7 @@ pub(crate) fn execute(
}
let params = serde_json::json!({});
let req = acp::ExtRequest::new(
"x.ai/auth/get_url",
"kigi/auth/get_url",
serde_json::value::to_raw_value(&params)
.expect("serialize auth_url params")
.into(),
@@ -1901,7 +1901,7 @@ pub(crate) fn execute(
.spawn(async move {
let params = serde_json::json!({ "code" : code });
let req = acp::ExtRequest::new(
"x.ai/auth/submit_code",
"kigi/auth/submit_code",
serde_json::value::to_raw_value(&params)
.expect("serialize auth code params")
.into(),
@@ -1935,7 +1935,7 @@ pub(crate) fn execute(
{ "sessionId" : session_id.0.to_string(), "cache" : cache, }
);
let req = acp::ExtRequest::new(
"x.ai/mcp/list",
"kigi/mcp/list",
serde_json::value::to_raw_value(&params)
.expect("serialize mcp/list params")
.into(),
@@ -1976,7 +1976,7 @@ pub(crate) fn execute(
server_name, }
);
let req = acp::ExtRequest::new(
"x.ai/mcp/auth_trigger",
"kigi/mcp/auth_trigger",
serde_json::value::to_raw_value(&params)
.expect("serialize mcp/auth_trigger params")
.into(),
@@ -2024,7 +2024,7 @@ pub(crate) fn execute(
{ "sessionId" : session_id.0.to_string(), }
);
let req = acp::ExtRequest::new(
"x.ai/hooks/list",
"kigi/hooks/list",
serde_json::value::to_raw_value(&params)
.expect("serialize hooks/list params")
.into(),
@@ -2061,7 +2061,7 @@ pub(crate) fn execute(
{ "sessionId" : session_id.0.to_string(), }
);
let req = acp::ExtRequest::new(
"x.ai/plugins/list",
"kigi/plugins/list",
serde_json::value::to_raw_value(&params)
.expect("serialize plugins/list params")
.into(),
@@ -2099,7 +2099,7 @@ pub(crate) fn execute(
action,
};
let req = acp::ExtRequest::new(
"x.ai/hooks/action",
"kigi/hooks/action",
serde_json::value::to_raw_value(&req_body)
.expect("serialize hooks/action params")
.into(),
@@ -2139,7 +2139,7 @@ pub(crate) fn execute(
action,
};
let req = acp::ExtRequest::new(
"x.ai/plugins/action",
"kigi/plugins/action",
serde_json::value::to_raw_value(&req_body)
.expect("serialize plugins/action params")
.into(),
@@ -2176,7 +2176,7 @@ pub(crate) fn execute(
.spawn(async move {
let params = serde_json::json!({ "cwd" : "." });
let req = acp::ExtRequest::new(
"x.ai/skills/list",
"kigi/skills/list",
serde_json::value::to_raw_value(&params)
.expect("serialize skills/list params")
.into(),
@@ -2215,7 +2215,7 @@ pub(crate) fn execute(
{ "name" : skill_name, "enabled" : enabled, "cwd" : ".", }
);
let req = acp::ExtRequest::new(
"x.ai/skills/toggle",
"kigi/skills/toggle",
serde_json::value::to_raw_value(&params)
.expect("serialize skills/toggle params")
.into(),
@@ -2235,7 +2235,7 @@ pub(crate) fn execute(
.map_err(|_| "couldn't toggle skill".to_string());
if parsed.is_ok() {
let refresh = acp::ExtRequest::new(
"x.ai/skills/refresh-baseline",
"kigi/skills/refresh-baseline",
serde_json::value::to_raw_value(&serde_json::json!({}))
.expect("serialize empty params")
.into(),
@@ -2273,7 +2273,7 @@ pub(crate) fn execute(
config: *config,
};
let req = acp::ExtRequest::new(
"x.ai/mcp/upsert",
"kigi/mcp/upsert",
serde_json::value::to_raw_value(&req_body)
.expect("serialize mcp/upsert params")
.into(),
@@ -2308,7 +2308,7 @@ pub(crate) fn execute(
server_name,
};
let req = acp::ExtRequest::new(
"x.ai/mcp/delete",
"kigi/mcp/delete",
serde_json::value::to_raw_value(&req_body)
.expect("serialize mcp/delete params")
.into(),
@@ -2337,7 +2337,7 @@ pub(crate) fn execute(
server_name, "enabled" : enabled, }
);
let req = acp::ExtRequest::new(
"x.ai/mcp/toggle",
"kigi/mcp/toggle",
serde_json::value::to_raw_value(&params)
.expect("serialize mcp/toggle params")
.into(),
@@ -2367,7 +2367,7 @@ pub(crate) fn execute(
server_name, "tool_name" : tool_name, "enabled" : enabled, }
);
let req = acp::ExtRequest::new(
"x.ai/mcp/toggle_tool",
"kigi/mcp/toggle_tool",
serde_json::value::to_raw_value(&params)
.expect("serialize mcp/toggle_tool params")
.into(),
@@ -2446,7 +2446,7 @@ pub(crate) fn execute(
cwd: String,
}
let request = acp::ExtRequest::new(
"x.ai/session/rename",
"kigi/session/rename",
serde_json::value::to_raw_value(
&RenameRequest {
session_id: session_id.0.to_string(),
@@ -2503,7 +2503,7 @@ pub(crate) fn execute(
cwd: String,
}
let request = acp::ExtRequest::new(
"x.ai/session/delete",
"kigi/session/delete",
serde_json::value::to_raw_value(
&DeleteRequest {
session_id: session_id.clone(),
@@ -2605,7 +2605,7 @@ pub(crate) fn execute(
}
};
let request = acp::ExtRequest::new(
"x.ai/feedback",
"kigi/feedback",
raw_params.into(),
);
match acp_send(request, &tx).await {
@@ -2636,7 +2636,7 @@ pub(crate) fn execute(
tasks
.spawn(async move {
let request = acp::ExtRequest::new(
"x.ai/memory/rewrite",
"kigi/memory/rewrite",
serde_json::value::to_raw_value(
&serde_json::json!(
{ "sessionId" : session_id.0.to_string(), "rawText" :
@@ -2703,7 +2703,7 @@ pub(crate) fn execute(
tasks
.spawn(async move {
let request = acp::ExtRequest::new(
"x.ai/btw",
"kigi/btw",
serde_json::value::to_raw_value(
&serde_json::json!(
{ "sessionId" : session_id.0.to_string(), "question" :
@@ -2746,7 +2746,7 @@ pub(crate) fn execute(
tasks
.spawn(async move {
let request = acp::ExtRequest::new(
"x.ai/recap",
"kigi/recap",
serde_json::value::to_raw_value(
&serde_json::json!(
{ "sessionId" : session_id.0.to_string(), "auto" : auto, }
@@ -2790,7 +2790,7 @@ pub(crate) fn execute(
blocks.as_deref(),
);
let request = acp::ExtRequest::new(
"x.ai/interject",
"kigi/interject",
serde_json::value::to_raw_value(&params)
.expect("serialize interject params")
.into(),
@@ -2820,7 +2820,7 @@ pub(crate) fn execute(
.spawn(async move {
let params = serde_json::json!({ "kind" : kind, "name" : name });
let request = acp::ExtRequest::new(
"x.ai/bundle/entry/get",
"kigi/bundle/entry/get",
serde_json::value::to_raw_value(&params)
.expect("serialize bundle/entry/get params")
.into(),
@@ -2876,7 +2876,7 @@ pub(crate) fn execute(
tasks
.spawn(async move {
let request = acp::ExtRequest::new(
"x.ai/bundle/status",
"kigi/bundle/status",
serde_json::value::to_raw_value(&serde_json::json!({}))
.expect("serialize bundle/status params")
.into(),
@@ -2935,7 +2935,7 @@ pub(crate) fn execute(
.spawn(async move {
let params = serde_json::json!({ "cwd" : cwd });
let req = acp::ExtRequest::new(
"x.ai/commands/list",
"kigi/commands/list",
serde_json::value::to_raw_value(&params)
.expect("serialize commands/list params")
.into(),
@@ -2971,7 +2971,7 @@ pub(crate) fn execute(
tasks
.spawn(async move {
let request = acp::ExtRequest::new(
"x.ai/rewind/points",
"kigi/rewind/points",
serde_json::value::to_raw_value(
&serde_json::json!(
{ "sessionId" : session_id.0.to_string() }
@@ -3030,7 +3030,7 @@ pub(crate) fn execute(
tasks
.spawn(async move {
let request = acp::ExtRequest::new(
"x.ai/rewind/execute",
"kigi/rewind/execute",
serde_json::value::to_raw_value(
&serde_json::json!(
{ "sessionId" : session_id.0.to_string(),
@@ -3084,7 +3084,7 @@ pub(crate) fn execute(
tasks
.spawn(async move {
let request = acp::ExtRequest::new(
"x.ai/rewind/execute",
"kigi/rewind/execute",
serde_json::value::to_raw_value(
&serde_json::json!(
{ "sessionId" : session_id.0.to_string(),
@@ -3144,7 +3144,7 @@ pub(crate) fn execute(
{ "query" : query, "limit" : 20, "includeContent" : true, }
);
let request = acp::ExtRequest::new(
"x.ai/session/search",
"kigi/session/search",
serde_json::value::to_raw_value(&params)
.expect("serialize deep search params")
.into(),
@@ -3229,7 +3229,7 @@ pub(crate) fn execute(
parent_is_worktree,
);
let req = acp::ExtRequest::new(
"x.ai/session/fork",
"kigi/session/fork",
serde_json::value::to_raw_value(&payload)
.expect("serialize fork params")
.into(),
@@ -3308,7 +3308,7 @@ pub(crate) fn execute(
tasks
.spawn(async move {
let req = acp::ExtRequest::new(
"x.ai/billing",
"kigi/billing",
serde_json::value::to_raw_value(&serde_json::json!({}))
.expect("serialize usage params")
.into(),
@@ -3362,7 +3362,7 @@ pub(crate) fn execute(
token_only, }
);
let req = acp::ExtRequest::new(
"x.ai/suggest",
"kigi/suggest",
serde_json::value::to_raw_value(&params)
.expect("serialize suggest params")
.into(),
@@ -3401,7 +3401,7 @@ pub(crate) fn execute(
session_id, }
);
let req = acp::ExtRequest::new(
"x.ai/suggestPrompt",
"kigi/suggestPrompt",
serde_json::value::to_raw_value(&params)
.expect("serialize suggestPrompt params")
.into(),
@@ -3428,13 +3428,13 @@ pub(crate) fn execute(
}
(false, meta)
}
/// Fetch session info from ACP via `x.ai/session/info`.
/// Fetch session info from ACP via `kigi/session/info`.
async fn fetch_session_info(
session_id: &acp::SessionId,
tx: &AcpAgentTx,
) -> Result<SessionInfoResponse, String> {
let request = acp::ExtRequest::new(
"x.ai/session/info",
"kigi/session/info",
serde_json::value::to_raw_value(
&serde_json::json!({ "sessionId" : session_id.0.to_string() }),
)
@@ -3584,7 +3584,7 @@ fn prompt_request_meta(
}
serde_json::Value::Object(map)
}
/// Build the `x.ai/interject` params. The optional structured `content`
/// Build the `kigi/interject` params. The optional structured `content`
/// (text + images) is omitted ENTIRELY when `None` so the legacy wire
/// shape stays byte-identical. Extracted from the spawn for testability.
fn build_interject_params(