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:
@@ -37,7 +37,7 @@
|
||||
* - Runtime selection for rows 6/7 (orchestrator-worktree / none) uses the
|
||||
* real capability-registry.cjs shipped alongside the hook, selected via
|
||||
* MSD_RUNTIME (the same precedence resolveIsolationState implements):
|
||||
* codex → orchestrator-worktree, windsurf → none. No fixture/mock
|
||||
* codex → orchestrator-worktree, zcode → none. No fixture/mock
|
||||
* registry is substituted — this is the real hook reading its real
|
||||
* sibling data file, per the "drive the real hook entry point" mandate.
|
||||
*/
|
||||
@@ -137,7 +137,7 @@ function writeConfig(dir, content) {
|
||||
describe('msd-agent-isolation-guard.js: applicability matrix (#3045)', () => {
|
||||
let harnessProject; // MSD project resolving to harness-worktree (claude)
|
||||
let orchestratorProject; // resolves to orchestrator-worktree (codex)
|
||||
let noneProject; // resolves to none (windsurf)
|
||||
let noneProject; // resolves to none (zcode)
|
||||
let noMsdProject; // not a MSD project at all
|
||||
let unreadableConfigProject; // config.json is a directory (EISDIR)
|
||||
let corruptConfigProject; // config.json is invalid JSON
|
||||
@@ -217,7 +217,7 @@ describe('msd-agent-isolation-guard.js: applicability matrix (#3045)', () => {
|
||||
});
|
||||
|
||||
test('row 7: resolved mode none -> allow', () => {
|
||||
const r = runHook(agentPayload(), noneProject, { MSD_RUNTIME: 'windsurf' });
|
||||
const r = runHook(agentPayload(), noneProject, { MSD_RUNTIME: 'zcode' });
|
||||
assert.equal(r.status, 0, `stdout: ${r.stdout}`);
|
||||
assert.equal(r.stdout, '');
|
||||
});
|
||||
@@ -517,7 +517,7 @@ describe('msd-agent-isolation-guard.js: #3045 BLOCKER 2 — default-install fail
|
||||
fs.mkdirSync(path.join(home, '.msd'), { recursive: true });
|
||||
// defaults.json says a runtime with NO harness-worktree capability;
|
||||
// config.json's own `runtime: claude` must take precedence.
|
||||
fs.writeFileSync(path.join(home, '.msd', 'defaults.json'), JSON.stringify({ runtime: 'windsurf' }));
|
||||
fs.writeFileSync(path.join(home, '.msd', 'defaults.json'), JSON.stringify({ runtime: 'zcode' }));
|
||||
|
||||
const r = runHook(agentPayload(), harnessProject, { HOME: home });
|
||||
assert.equal(r.status, 2, `stdout: ${r.stdout} stderr: ${r.stderr}`);
|
||||
@@ -729,7 +729,7 @@ describe('msd-agent-isolation-guard.js: #3566 — per-install .msd-runtime marke
|
||||
const { resolveRuntimeNameFromCandidates } = require('../msd-core/bin/lib/runtime-name-policy.cjs');
|
||||
|
||||
// Distinct canonical runtimes so the precedence oracle is unambiguous.
|
||||
const IDENTITY_POOL = ['claude', 'codex', 'windsurf', 'opencode'];
|
||||
const IDENTITY_POOL = ['claude', 'codex', 'zcode', 'opencode'];
|
||||
|
||||
let savedHome;
|
||||
let savedUserProfile;
|
||||
@@ -816,8 +816,8 @@ describe('msd-agent-isolation-guard.js: #3566 — per-install .msd-runtime marke
|
||||
});
|
||||
|
||||
test('#3566: MSD_RUNTIME env still outranks the install marker', (t) => {
|
||||
setWorld(t, { marker: 'claude', envRuntime: 'windsurf' });
|
||||
assert.deepEqual(identity(), { runtimeId: 'windsurf', confident: true });
|
||||
setWorld(t, { marker: 'claude', envRuntime: 'zcode' });
|
||||
assert.deepEqual(identity(), { runtimeId: 'zcode', confident: true });
|
||||
});
|
||||
|
||||
test('#3566: empty marker is no signal — falls through to the defaults rung', (t) => {
|
||||
@@ -1278,22 +1278,23 @@ describe('#3045 MAJOR — --harness-flag can now accept a bare CLI-flag value (C
|
||||
});
|
||||
|
||||
test('record-dispatch-isolation --harness-flag=<bare-flag> persists ANY bare-CLI-flag-shaped value verbatim (parser is not Cursor-specific)', (t) => {
|
||||
// A prior draft of this test asserted `runtimes.windsurf.runtime.harnessIsolationFlag
|
||||
// === '--worktree'`, assuming Windsurf's registry entry mirrors Cursor's.
|
||||
// It does not: Windsurf's `hostIntegration.dispatch.isolation` is 'none'
|
||||
// and it declares NO `harnessIsolationFlag` at all — per ADR-1239
|
||||
// (docs/adr/1239-msd-embeddable-orchestration-engine.md:247,250),
|
||||
// `pi`/`zcode`/`windsurf` "genuinely cannot benefit and correctly stay
|
||||
// none" because they lack named/concurrent subagent dispatch, so there is
|
||||
// no per-dispatch isolation flag for Windsurf to record. That was a wrong
|
||||
// test expectation (a fabricated registry precondition), not a production
|
||||
// defect — corrected here to prove the `--harness-flag=<value>` parser
|
||||
// generalizes to any bare-CLI-flag-shaped value, not merely Cursor's
|
||||
// specific '--worktree' string (which the sub-test above already pins).
|
||||
// A prior draft of this test asserted a non-Cursor runtime's
|
||||
// `harnessIsolationFlag === '--worktree'`, assuming its registry entry
|
||||
// mirrors Cursor's. It does not: zcode's `hostIntegration.dispatch.isolation`
|
||||
// is 'none' and it declares NO `harnessIsolationFlag` at all — per ADR-1239
|
||||
// (docs/adr/1239-msd-embeddable-orchestration-engine.md:247,250), such
|
||||
// runtimes "genuinely cannot benefit and correctly stay none" because they
|
||||
// lack concurrent subagent dispatch isolation, so there is no per-dispatch
|
||||
// isolation flag for them to record. That was a wrong test expectation (a
|
||||
// fabricated registry precondition), not a production defect — corrected
|
||||
// here to prove the `--harness-flag=<value>` parser generalizes to any
|
||||
// bare-CLI-flag-shaped value, not merely Cursor's specific '--worktree'
|
||||
// string (which the sub-test above already pins). (Originally pinned on
|
||||
// windsurf, retired in prune-runtimes.)
|
||||
assert.equal(
|
||||
runtimes.windsurf.runtime.harnessIsolationFlag,
|
||||
runtimes.zcode.runtime.harnessIsolationFlag,
|
||||
undefined,
|
||||
'precondition: windsurf declares no harnessIsolationFlag (isolation: "none", ADR-1239)',
|
||||
'precondition: zcode declares no harnessIsolationFlag (isolation: "none", ADR-1239)',
|
||||
);
|
||||
|
||||
const dir = createTempProject('msd-3045-resolver-');
|
||||
|
||||
Reference in New Issue
Block a user