feat(#2095): migrate Kimi CLI onto EoS imperative adapter + native hook-bus + background dispatch (ADR-1239)
Fold all runtime==='kimi'/isKimi logic branches into descriptor-driven hostBehaviors (localInstallDeferred, verificationStyle, agentManifestStyle, reapplyCommand, doneBannerStyle) + add 'kimi' to _DESCRIPTOR_AGENTS_RUNTIMES. Kimi's skills/kimi-agents dispatch was already descriptor-driven (converter-by- name + kimi-agents kind). Zero isKimi/runtime==='kimi' branches remain. UPGRADE 1 (native hook bus): new hooksSurface 'kimi-hooks-toml' + a marker- delimited config.toml [[hooks]] emitter (buildKimiHooksTomlBlock/writeKimiHooksToml in runtime-hooks-surface.cts; resolveKimiHooksTomlDir in runtime-homes.cts). GSD's lifecycle hooks now wire into Kimi's native ~/.kimi/config.toml (Context7- confirmed path) at SessionStart/PreToolUse/Stop/PreCompact/SubagentStart/ SubagentStop — kimi becomes a hooks/ consumer (the 3 && !isKimi exclusion guards removed). config.toml holds absolute install paths so it's golden-excluded via an exact relative-path (.kimi/config.toml), not a basename (which would blind Codex's config.toml). New hooksSurface value added to the closed enum in capability-validator + runtime-config-adapter-registry. UPGRADE 2 (background dispatch): flip dispatch.backgroundDispatch true (Kimi's Agent tool takes run_in_background; root agent already gets the Agent tool), so negotiation no longer flattens dispatch. subagentToolkit stays 'undocumented' per AC (coder/explore/plan have distinct tool policies). MCP transport explicitly deferred (no installer-driven MCP for any runtime). Golden: only kimi.json changes (hooks/ scripts now installed); all 15 others + claude-local byte-identical (kilo/zcode keep their own exclusions). Tests: kimi-imperative-reference (adapter/axes/fail-closed/hostBehaviors + source-grep guard) + kimi-upgrades (config.toml [[hooks]] SessionStart + marker idempotency + backgroundDispatch negotiation). CONTEXT.md glossary + matrix + how-to updated; changeset (Added). Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
This commit is contained in:
@@ -505,6 +505,14 @@ function convertGsdCommandReferencesToKimiSkillInvocations(content, cmdNames) {
|
||||
.replace(hyphenPattern, (_, cmd) => `/skill:gsd-${cmd}`);
|
||||
}
|
||||
|
||||
// DEFECT.GENERATIVE-FIX: this body is mirrored in bin/install.js's
|
||||
// convertClaudeCommandToKimiSkill (kept for bin/install.js's own
|
||||
// module-level export/test surface; dead for the live skills-install path,
|
||||
// which routes here via install-engine.cts's SKILLS_CONVERTER_REGISTRY
|
||||
// through the kimi capability descriptor's artifactLayout
|
||||
// `converter: "convertClaudeCommandToKimiSkill"`). Neither copy re-exports
|
||||
// the other — mirror any behavior change into both. Guarded by the
|
||||
// output-parity test in tests/runtime-converters.test.cjs (#2095).
|
||||
function convertClaudeCommandToKimiSkill(content, skillName, _runtime = null, cmdNames = null) {
|
||||
const { frontmatter, body } = extractFrontmatterAndBody(content);
|
||||
const kimiSkillName = normalizeKimiSkillName(skillName);
|
||||
@@ -649,6 +657,15 @@ function buildKimiSubagentYaml({ name, description, tools }) {
|
||||
return `${lines.join('\n')}\n`;
|
||||
}
|
||||
|
||||
// DEFECT.GENERATIVE-FIX: this body is mirrored in bin/install.js's
|
||||
// buildKimiAgentArtifacts (kept for bin/install.js's own module-level
|
||||
// export/test surface; dead for the live install path, which routes here via
|
||||
// runtime-artifact-layout.cts's kimiAgentsKind through a dynamic
|
||||
// `conversionExports['buildKimiAgentArtifacts']` lookup against this
|
||||
// compiled module). Neither copy re-exports the other — mirror any behavior
|
||||
// change into both, including the kimi_cli.tools.agent:Agent grant that
|
||||
// enables background dispatch (#2095 Upgrade 2). Guarded by the
|
||||
// output-parity test in tests/runtime-converters.test.cjs (#2095).
|
||||
function buildKimiAgentArtifacts({
|
||||
rootAgent = '',
|
||||
subagents = [],
|
||||
|
||||
Reference in New Issue
Block a user