refactor: drop 12 runtimes, keep Claude, Codex, OpenCode, Cursor, ZCode, Antigravity
Removes kilo, kimi, kimi-code, copilot, windsurf, augment, trae, qwen, hermes, cline, codebuddy and pi end to end: capability descriptors, installer branches and converters (bin/install.js 14.9k -> 11.2k lines), TypeScript converters, hook surfaces and runtime homes, review lanes qwen/kimi-code, the two pi migrations, Kimi payload normalization in the hook guards, dead hostBehaviors vocabulary, launcher home probes, fixtures, runtime-specific tests and the prose that presented them as supported. Installer output for the six kept runtimes is byte-identical to before the prune. The Kimi tool-vocabulary tests in workflow-guard, read-guard and read-injection-scanner are left in place pending a decision.
This commit is contained in:
@@ -19,19 +19,7 @@ fi
|
||||
INPUT=$(cat)
|
||||
|
||||
# Extract file_path from JSON using Node (handles escaping correctly).
|
||||
# #2304: Kimi CLI registers this hook with matcher 'WriteFile|StrReplaceFile'
|
||||
# and its file tools name the field `path`, not `file_path` (kimi-cli
|
||||
# src/kimi_cli/tools/file/write.py + replace.py) — fall back to tool_input.path
|
||||
# when file_path is absent, mirroring normalizeKimiPayload in the JS guards.
|
||||
# #2752: `path` is AUTHORITATIVE (kimi-cli executes on it; it sends `path` only,
|
||||
# never `file_path`). `file_path` is model-controlled on Kimi, so consulting it
|
||||
# first let a model-supplied decoy suppress/fabricate the reminder. `path` wins,
|
||||
# `file_path` is the fallback (Claude Code emits `file_path` and no `path`, so the
|
||||
# fallback must remain). The JS guards reach the same "path authoritative" outcome
|
||||
# via an upstream normalizeKimiPayload step (copies path→file_path before any guard
|
||||
# reads); this shell hook parses tool_input once, raw, so it applies the precedence
|
||||
# directly at the read site.
|
||||
FILE=$(echo "$INPUT" | node -e "let d='';process.stdin.on('data',c=>d+=c);process.stdin.on('end',()=>{try{const i=JSON.parse(d).tool_input||{};process.stdout.write((typeof i.path==='string'&&i.path)||(typeof i.file_path==='string'&&i.file_path)||'')}catch{}})" 2>/dev/null)
|
||||
FILE=$(echo "$INPUT" | node -e "let d='';process.stdin.on('data',c=>d+=c);process.stdin.on('end',()=>{try{const i=JSON.parse(d).tool_input||{};process.stdout.write((typeof i.file_path==='string'&&i.file_path)||'')}catch{}})" 2>/dev/null)
|
||||
|
||||
# Emit a structured JSON envelope (#2974). additionalContext carries the
|
||||
# user-visible reminder text; the typed `planning_modified` boolean and
|
||||
|
||||
Reference in New Issue
Block a user