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:
@@ -131,7 +131,7 @@ describe('#2665: TEST_ENV_BASE config-location coverage', () => {
|
||||
// Guards the guard: an empty/renamed registry shape would make the
|
||||
// assertion below vacuously true and silently retire this test.
|
||||
assert.ok(
|
||||
declared.length >= 15,
|
||||
declared.length >= 5,
|
||||
`expected the registry to declare many configHome env vars, got ${declared.length} — ` +
|
||||
'if the registry shape changed, this derivation needs updating, not deleting',
|
||||
);
|
||||
@@ -173,22 +173,15 @@ describe('#2665: TEST_ENV_BASE config-location coverage', () => {
|
||||
NON_REGISTRY_CONFIG_HOME_DESCRIPTORS,
|
||||
} = require('../msd-core/bin/lib/runtime-homes.cjs');
|
||||
|
||||
// Round 3. kimi owns TWO config homes: KIMI_CONFIG_DIR (registry-visible) and
|
||||
// KIMI_SHARE_DIR (a hardcoded descriptor inside resolveKimiHooksTomlDir, which
|
||||
// decides where its native config.toml — carrying MSD's [[hooks]] block — is
|
||||
// written). The registry-only derivation reached the first and not the second,
|
||||
// so it looked structurally complete while missing a live write surface.
|
||||
// Round 3. A runtime can own a config home that is NOT registry-visible (a
|
||||
// hardcoded descriptor inside a resolver). The registry-only derivation
|
||||
// would miss it, so the non-registry set is walked too. The set may be
|
||||
// empty (no such descriptor is shipped today) — then this is trivially
|
||||
// satisfied, and the reversion-sensitive sentinel test below proves the
|
||||
// walk itself still reaches a descriptor when one exists.
|
||||
const declared = [
|
||||
...new Set(NON_REGISTRY_CONFIG_HOME_DESCRIPTORS.flatMap((d) => d?.env ?? [])),
|
||||
];
|
||||
assert.ok(
|
||||
declared.length >= 1,
|
||||
'expected at least one non-registry descriptor — an empty array makes this vacuous',
|
||||
);
|
||||
assert.ok(
|
||||
declared.includes('KIMI_SHARE_DIR'),
|
||||
`KIMI_SHARE_DIR must come from the descriptor set, got ${declared.join(', ')}`,
|
||||
);
|
||||
|
||||
const missing = declared.filter((k) => !(k in TEST_ENV_BASE));
|
||||
assert.deepStrictEqual(
|
||||
@@ -203,8 +196,8 @@ describe('#2665: TEST_ENV_BASE config-location coverage', () => {
|
||||
// descriptor (skillsHome → resolveSkillsBaseFromDescriptor), which carries
|
||||
// its own env array. Walking configHome.env alone is the identical
|
||||
// walk-one-field gap-shape rounds 2-3 closed for the registry and the
|
||||
// non-registry set. Inert today — only kilo declares skillsHome, with
|
||||
// env: [] — so this asserts the DERIVATION reaches the field, not that any
|
||||
// non-registry set. Inert today — no shipped runtime declares skillsHome
|
||||
// env vars — so this asserts the DERIVATION reaches the field, not that any
|
||||
// var currently flows from it: every skillsHome-declared var (registry and
|
||||
// non-registry alike) must land in TEST_ENV_BASE the moment one exists.
|
||||
const { runtimes } = require('../msd-core/bin/lib/capability-registry.cjs');
|
||||
@@ -223,17 +216,6 @@ describe('#2665: TEST_ENV_BASE config-location coverage', () => {
|
||||
]),
|
||||
];
|
||||
|
||||
// Anti-vacuity: at least one runtime must actually DECLARE skillsHome, or a
|
||||
// registry reshape could rename the field and retire this test silently.
|
||||
const declaringRuntimes = Object.values(runtimes).filter(
|
||||
(r) => r?.runtime?.configHome?.skillsHome !== undefined,
|
||||
);
|
||||
assert.ok(
|
||||
declaringRuntimes.length >= 1,
|
||||
'expected at least one registry runtime to declare configHome.skillsHome — ' +
|
||||
'if the field moved, this derivation needs updating, not deleting',
|
||||
);
|
||||
|
||||
const missing = declared.filter((k) => !(k in TEST_ENV_BASE));
|
||||
assert.deepStrictEqual(
|
||||
missing,
|
||||
@@ -321,9 +303,9 @@ describe('#2665 round 4: the skillsHome walk is reversion-sensitive', () => {
|
||||
'use strict';
|
||||
const reg = require(${JSON.stringify(regPath)});
|
||||
const rh = require(${JSON.stringify(rhPath)});
|
||||
// Rung 1 (registry): give one runtime a skillsHome env var. kilo already
|
||||
// declares skillsHome (env: []); push a sentinel into whichever runtime
|
||||
// declares it, or graft one onto the first runtime if none does.
|
||||
// Rung 1 (registry): give one runtime a skillsHome env var. Push a
|
||||
// sentinel into whichever runtime declares skillsHome, or graft one onto
|
||||
// the first runtime if none does.
|
||||
const declaring = Object.values(reg.runtimes).find(
|
||||
(r) => r?.runtime?.configHome?.skillsHome,
|
||||
) ?? Object.values(reg.runtimes)[0];
|
||||
@@ -331,7 +313,11 @@ describe('#2665 round 4: the skillsHome walk is reversion-sensitive', () => {
|
||||
declaring.runtime.configHome.skillsHome = { kind: 'dot-home', name: '.x', env: [] };
|
||||
}
|
||||
declaring.runtime.configHome.skillsHome.env = ['MSD_TEST_SENTINEL_REGISTRY_SKILLS'];
|
||||
// Rung 2 (non-registry): graft a skillsHome onto the first descriptor.
|
||||
// Rung 2 (non-registry): graft a skillsHome onto the first descriptor
|
||||
// (the shipped set is empty, so seed one if needed).
|
||||
if (rh.NON_REGISTRY_CONFIG_HOME_DESCRIPTORS.length === 0) {
|
||||
rh.NON_REGISTRY_CONFIG_HOME_DESCRIPTORS.push({ kind: 'dot-home', name: '.x', env: [] });
|
||||
}
|
||||
rh.NON_REGISTRY_CONFIG_HOME_DESCRIPTORS[0].skillsHome = {
|
||||
kind: 'dot-home', name: '.x', env: ['MSD_TEST_SENTINEL_NONREG_SKILLS'],
|
||||
};
|
||||
|
||||
Reference in New Issue
Block a user