§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:
@@ -17,7 +17,7 @@ Agents and personas both customize behavior, but they operate at different level
|
||||
| **How you set them** | At startup, or with agent definitions (`.md` files in `.kigi/agents/` or `~/.kigi/agents/`) | In `config.toml` (`[subagents.personas]`) or `.toml` files under `.kigi/personas/`; applied during subagent resolution |
|
||||
| **What they control** | Model, tool availability, prompt body, skills | Tone, output format, task focus, and input/output contracts |
|
||||
| **Who edits them** | You -- create, delete, or toggle them in the agents modal or by editing files | You -- define custom personas in config or files; bundled personas are read-only |
|
||||
| **Examples** | `grok-build`, `explore`, `plan` | `researcher`, `concise` |
|
||||
| **Examples** | `kigi`, `explore`, `plan` | `researcher`, `concise` |
|
||||
|
||||
An agent defines the session itself. A persona shapes how a subagent behaves within a session. A subagent always runs as an agent type (for example, `general-purpose`), and resolution can layer a persona on top.
|
||||
|
||||
@@ -79,7 +79,7 @@ instructions = "You are a thorough researcher. Always cite specific file paths."
|
||||
description = "Deep investigator."
|
||||
```
|
||||
|
||||
Grok Build discovers file-based personas from these locations, in priority order:
|
||||
Kigi discovers file-based personas from these locations, in priority order:
|
||||
|
||||
- `.kigi/personas/*.toml` (project)
|
||||
- `~/.kigi/personas/*.toml` (user)
|
||||
@@ -89,7 +89,7 @@ Each file defines one persona, and the file name (without the extension) becomes
|
||||
|
||||
Manage personas in the Personas tab of the agents modal (`/personas`). Bundled personas are read-only; personas you define are editable.
|
||||
|
||||
> **Note:** Grok Build applies personas through subagent resolution and roles, not through a `spawn_subagent` parameter. The main agent does not pass a persona name when it spawns a child.
|
||||
> **Note:** Kigi applies personas through subagent resolution and roles, not through a `spawn_subagent` parameter. The main agent does not pass a persona name when it spawns a child.
|
||||
|
||||
### Persona Fields
|
||||
|
||||
@@ -125,7 +125,7 @@ Each field has a `name`, an `io_type` (defaults to `file`), a `required` flag, a
|
||||
|
||||
### Persona Resolution
|
||||
|
||||
When a persona applies, Grok Build resolves the effective model and reasoning effort in this order, highest priority first:
|
||||
When a persona applies, Kigi resolves the effective model and reasoning effort in this order, highest priority first:
|
||||
|
||||
1. Explicit spawn-time override
|
||||
2. Role default
|
||||
@@ -193,7 +193,7 @@ For tasks that modify files, run a subagent in an isolated git worktree with `is
|
||||
- Its changes stay isolated from the parent until you merge them.
|
||||
- The subagent's result includes the worktree path.
|
||||
|
||||
Grok Build manages worktrees through the `x.ai/git/worktree/*` extension methods, including an apply operation that merges changes back into the main working directory.
|
||||
Kigi manages worktrees through the `x.ai/git/worktree/*` extension methods, including an apply operation that merges changes back into the main working directory.
|
||||
|
||||
---
|
||||
|
||||
@@ -209,7 +209,7 @@ explore = true # default -- omit to keep enabled
|
||||
plan = false # disable the plan subagent
|
||||
|
||||
[subagents.models]
|
||||
explore = "grok-build" # route explore to a specific model
|
||||
explore = "kigi" # route explore to a specific model
|
||||
```
|
||||
|
||||
Per-type model overrides apply for any parent. Without an override, a subagent inherits the parent's model.
|
||||
@@ -222,7 +222,7 @@ Define custom roles with their own capability and model defaults:
|
||||
[subagents.roles.researcher]
|
||||
description = "Deep research agent"
|
||||
default_capability_mode = "read-only"
|
||||
model = "grok-build"
|
||||
model = "kigi"
|
||||
prompt_file = ".kigi/prompts/researcher.md"
|
||||
```
|
||||
|
||||
@@ -234,13 +234,13 @@ instructions = "Be concise. No filler words."
|
||||
# instructions_file = ".kigi/personas/concise.md" # or load from a file
|
||||
```
|
||||
|
||||
Grok Build also discovers roles from `.kigi/roles/*.toml` and personas from `.kigi/personas/*.toml`. Inline `config.toml` definitions take precedence over files.
|
||||
Kigi also discovers roles from `.kigi/roles/*.toml` and personas from `.kigi/personas/*.toml`. Inline `config.toml` definitions take precedence over files.
|
||||
|
||||
---
|
||||
|
||||
## The Tasks Pane (TUI)
|
||||
|
||||
Grok Build shows running and finished work in side panes on the agent screen:
|
||||
Kigi shows running and finished work in side panes on the agent screen:
|
||||
|
||||
- Press `Ctrl+B` to toggle the tasks pane, which lists active and completed subagents and background commands with their status.
|
||||
- Press `Ctrl+T` to toggle the separate todo pane.
|
||||
@@ -259,7 +259,7 @@ Subagents appear in several places in the interactive TUI:
|
||||
|
||||
When a subagent is spawned, a compact lifecycle block is added to the *parent's* scrollback:
|
||||
|
||||
- `Subagent running: "do the thing" (Implementer · grok-3) — Thinking`
|
||||
- `Subagent running: "do the thing" (Implementer · kigi-3) — Thinking`
|
||||
- Or for background subagents: `Subagent started: "..."`
|
||||
|
||||
While running, the block shows a live activity suffix (e.g. "Running: cargo test", "Compacting", "Retrying (2/3)") pulled from the child's turn tracker. The bullet animates (or is colored) according to state.
|
||||
|
||||
Reference in New Issue
Block a user