§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:
@@ -1,6 +1,6 @@
|
||||
# Custom Hooks Guide
|
||||
|
||||
Hooks let you run custom scripts or HTTP requests at key moments during a Grok session — for example, before or after a tool runs, when a session starts or ends, or when the agent sends a notification.
|
||||
Hooks let you run custom scripts or HTTP requests at key moments during a Kigi session — for example, before or after a tool runs, when a session starts or ends, or when the agent sends a notification.
|
||||
|
||||
They are perfect for automation, safety checks, logging, notifications, and integrating with your own tools.
|
||||
|
||||
@@ -29,7 +29,7 @@ Common use cases:
|
||||
"SessionStart": [
|
||||
{
|
||||
"hooks": [
|
||||
{ "type": "command", "command": "echo \"🚀 Grok session started in $(pwd)\"" }
|
||||
{ "type": "command", "command": "echo \"🚀 Kigi session started in $(pwd)\"" }
|
||||
]
|
||||
}
|
||||
]
|
||||
@@ -37,7 +37,7 @@ Common use cases:
|
||||
}
|
||||
```
|
||||
|
||||
3. Start (or restart) a Grok session. The hook runs automatically on `SessionStart`.
|
||||
3. Start (or restart) a Kigi session. The hook runs automatically on `SessionStart`.
|
||||
|
||||
Try it: press `Ctrl+L` on non–VS Code family (or run `/hooks` anywhere — preferred on VS Code / Cursor / Windsurf / Zed) and check the Hooks tab to confirm it's loaded.
|
||||
|
||||
@@ -89,7 +89,7 @@ Key fields:
|
||||
- **command**: Path to executable (relative to the JSON file) or inline shell command.
|
||||
- **timeout**: Seconds before killing the hook (default: 5). Hooks fail open on timeout.
|
||||
|
||||
**Tool name aliases**: Claude-style names like `Bash`, `Edit`, `Read` automatically match Grok's internal names (`run_terminal_cmd`, `search_replace`, `read_file`).
|
||||
**Tool name aliases**: Claude-style names like `Bash`, `Edit`, `Read` automatically match Kigi's internal names (`run_terminal_cmd`, `search_replace`, `read_file`).
|
||||
|
||||
## Writing Hook Scripts
|
||||
|
||||
@@ -124,7 +124,7 @@ For events like `SessionStart` or `PostToolUse`, stdout is ignored. Just exit 0
|
||||
|
||||
### Useful Environment Variables
|
||||
|
||||
Grok injects the following variables into every hook process:
|
||||
Kigi injects the following variables into every hook process:
|
||||
|
||||
- `KIGI_HOOK_EVENT` — the event name (e.g. `pre_tool_use`, `session_start`, `post_tool_use`)
|
||||
- `KIGI_HOOK_NAME` — the full configured name of this hook
|
||||
@@ -168,13 +168,13 @@ config-load time:
|
||||
```json
|
||||
{
|
||||
"type": "command",
|
||||
"command": "${HOME}/.config/grok-hooks/check.sh"
|
||||
"command": "${HOME}/.config/kigi-hooks/check.sh"
|
||||
}
|
||||
```
|
||||
|
||||
Lookup order for each reference:
|
||||
1. The handler's own `env` map.
|
||||
2. The current process environment (the env Grok itself sees).
|
||||
2. The current process environment (the env Kigi itself sees).
|
||||
|
||||
If a reference is unset in both, it's **preserved verbatim** (e.g. `${UNSET}`
|
||||
stays as the literal string). The runtime `sh -c` branch may resolve it later
|
||||
@@ -230,7 +230,7 @@ Hooks from `~/.kigi/hooks/` appear under **Global**, project ones under **Projec
|
||||
Instead of a local script, call a remote endpoint:
|
||||
|
||||
```json
|
||||
{ "type": "http", "url": "https://hooks.example.com/grok-event", "timeout": 15 }
|
||||
{ "type": "http", "url": "https://hooks.example.com/kigi-event", "timeout": 15 }
|
||||
```
|
||||
|
||||
The full event envelope is POSTed as JSON. Useful for webhooks, analytics, or serverless functions.
|
||||
|
||||
Reference in New Issue
Block a user