refactor: hard-fork GSD -> MSD (Make Software Done)
Mechanical rename produced by scripts/msd-rename.cjs: gsd/Gsd/GSD -> msd/Msd/MSD across contents and paths, upstream package/repo coordinates -> @golem15/msd-core and golem15com/msd-core. Deep links into upstream history, sibling upstream packages, the GSD-2 import feature, CHANGELOG.md and .changeset/ are kept as-is. Hand edits on top: MSD block-letter banner and logos, LICENSE copyright line, package/plugin identity, regenerated lockfile, install-tree fixtures, derived registries and benchmark baseline; migration checksum baseline re-locked (MSD keeps its own install state, so no install had applied the old sums); sort-order and regex-escaped expectations in tests adjusted.
This commit is contained in:
@@ -19,7 +19,7 @@ const assert = require('node:assert/strict');
|
||||
const fs = require('node:fs');
|
||||
const path = require('node:path');
|
||||
|
||||
const { createImperativeAdapter } = require('../gsd-core/bin/lib/adapter-imperative.cjs');
|
||||
const { createImperativeAdapter } = require('../msd-core/bin/lib/adapter-imperative.cjs');
|
||||
const {
|
||||
profileOf,
|
||||
negotiateHostCapabilities,
|
||||
@@ -27,7 +27,7 @@ const {
|
||||
extensionEventSurfaceFor,
|
||||
PROFILE_BASELINES,
|
||||
UNDOCUMENTED,
|
||||
} = require('../gsd-core/bin/lib/host-integration.cjs');
|
||||
} = require('../msd-core/bin/lib/host-integration.cjs');
|
||||
|
||||
const OC_CAP = JSON.parse(
|
||||
fs.readFileSync(path.join(__dirname, '..', 'capabilities', 'opencode', 'capability.json'), 'utf8'),
|
||||
@@ -71,7 +71,7 @@ test('synchronous dispatch force-flattens; the retracted axes would not have', (
|
||||
// negotiation is built to fail CLOSED, so an unavailable concurrency
|
||||
// capability must serialize rather than be trusted.
|
||||
assert.equal(shouldFlattenDispatch(OC_AXES.dispatch), true,
|
||||
'with background:false, GSD must force-flatten opencode dispatch (fail closed)');
|
||||
'with background:false, MSD must force-flatten opencode dispatch (fail closed)');
|
||||
// #2939: pin the retracted contract so a silent re-flip is caught. Under the depth-aware
|
||||
// rule, flipping ONLY the two background booleans is no longer sufficient to background —
|
||||
// opencode's axes lack nested:true + subagentToolkit:"full" + a depth budget > 1, so even
|
||||
@@ -114,10 +114,10 @@ test('opencode descriptor declares runtime.hostBehaviors (the folded-in behavior
|
||||
const hb = OC_CAP.runtime.hostBehaviors;
|
||||
assert.ok(hb && typeof hb === 'object');
|
||||
assert.equal(hb.combinedFamilyInstall, true, 'commands+skills+plugin install runs through the engine (adapter)');
|
||||
assert.equal(hb.reapplyCommand, '/gsd-update --reapply');
|
||||
assert.equal(hb.reapplyCommand, '/msd-update --reapply');
|
||||
assert.equal(hb.attributionConfigResolver, 'opencode');
|
||||
// #2329: OpenCode discovers commands from the PLURAL `commands/` dir; the
|
||||
// singular `command/` made all /gsd-* commands invisible to OpenCode.
|
||||
// singular `command/` made all /msd-* commands invisible to OpenCode.
|
||||
assert.equal(hb.flatCommandDir, 'commands');
|
||||
assert.equal(hb.frontmatterDialect, 'opencode');
|
||||
assert.equal(hb.skipHomePrefixSubstitution, true);
|
||||
@@ -128,8 +128,8 @@ test('opencode descriptor declares runtime.hostBehaviors (the folded-in behavior
|
||||
// verbatim from a pre-skills-layout era and flagged every staged skill as
|
||||
// user-added on every update).
|
||||
assert.equal(hb.skipCodexSkillsManifest, undefined);
|
||||
assert.equal(hb.nativePlugin.file, 'gsd-core.js');
|
||||
assert.equal(hb.nativePlugin.source, '.opencode/plugins/gsd-core.js');
|
||||
assert.equal(hb.nativePlugin.file, 'msd-core.js');
|
||||
assert.equal(hb.nativePlugin.source, '.opencode/plugins/msd-core.js');
|
||||
});
|
||||
|
||||
test('no `runtime === "opencode"` string-equality branch remains in the install source (AC2)', () => {
|
||||
@@ -146,7 +146,7 @@ test('no `runtime === "opencode"` string-equality branch remains in the install
|
||||
|
||||
// ─── #4738: the opencode manifest must record the skills it stages ───────────
|
||||
|
||||
const { cleanup, runGsdTools, createTempDir } = require('./helpers.cjs');
|
||||
const { cleanup, runMsdTools, createTempDir } = require('./helpers.cjs');
|
||||
const { writeManifest } = require(path.join(__dirname, '..', 'bin', 'install.js'));
|
||||
const { runMinimalInstall } = require('./helpers/install-shared.cjs');
|
||||
|
||||
@@ -154,34 +154,34 @@ describe('#4738: writeManifest records staged skills for opencode', () => {
|
||||
let tmpDir;
|
||||
|
||||
beforeEach(() => {
|
||||
tmpDir = createTempDir('gsd-4738-manifest-');
|
||||
tmpDir = createTempDir('msd-4738-manifest-');
|
||||
});
|
||||
|
||||
afterEach(() => {
|
||||
cleanup(tmpDir);
|
||||
});
|
||||
|
||||
test('manifest includes skills/gsd-xxx/SKILL.md entries for opencode (mirrors the kilo sibling)', () => {
|
||||
test('manifest includes skills/msd-xxx/SKILL.md entries for opencode (mirrors the kilo sibling)', () => {
|
||||
// Stage the structure an opencode install creates: converted skills under
|
||||
// skills/gsd-*/SKILL.md (convertClaudeCommandToOpencodeSkill) plus the
|
||||
// gsd-core directory writeManifest always records.
|
||||
const skillDir = path.join(tmpDir, 'skills', 'gsd-next');
|
||||
// skills/msd-*/SKILL.md (convertClaudeCommandToOpencodeSkill) plus the
|
||||
// msd-core directory writeManifest always records.
|
||||
const skillDir = path.join(tmpDir, 'skills', 'msd-next');
|
||||
fs.mkdirSync(skillDir, { recursive: true });
|
||||
fs.writeFileSync(path.join(skillDir, 'SKILL.md'), 'skill content');
|
||||
const gsdDir = path.join(tmpDir, 'gsd-core');
|
||||
fs.mkdirSync(gsdDir, { recursive: true });
|
||||
fs.writeFileSync(path.join(gsdDir, 'test.md'), 'test');
|
||||
const msdDir = path.join(tmpDir, 'msd-core');
|
||||
fs.mkdirSync(msdDir, { recursive: true });
|
||||
fs.writeFileSync(path.join(msdDir, 'test.md'), 'test');
|
||||
|
||||
writeManifest(tmpDir, 'opencode');
|
||||
|
||||
const manifest = JSON.parse(
|
||||
fs.readFileSync(path.join(tmpDir, 'gsd-file-manifest.json'), 'utf8'),
|
||||
fs.readFileSync(path.join(tmpDir, 'msd-file-manifest.json'), 'utf8'),
|
||||
);
|
||||
const skillEntries = Object.keys(manifest.files).filter((k) => k.startsWith('skills/'));
|
||||
assert.ok(skillEntries.length > 0, 'manifest has skills/ entries for opencode');
|
||||
assert.ok(
|
||||
skillEntries.includes('skills/gsd-next/SKILL.md'),
|
||||
'manifest records the staged skills/gsd-next/SKILL.md',
|
||||
skillEntries.includes('skills/msd-next/SKILL.md'),
|
||||
'manifest records the staged skills/msd-next/SKILL.md',
|
||||
);
|
||||
});
|
||||
});
|
||||
@@ -201,7 +201,7 @@ describe('#4738: a clean opencode install is invisible to detect-custom-files',
|
||||
assert.ok(fs.existsSync(path.join(configDir, rel)), `staged file exists: ${rel}`);
|
||||
}
|
||||
|
||||
const result = runGsdTools(['detect-custom-files', '--config-dir', configDir], root);
|
||||
const result = runMsdTools(['detect-custom-files', '--config-dir', configDir], root);
|
||||
assert.ok(result.success, `detector failed: ${result.error}`);
|
||||
const json = JSON.parse(result.output);
|
||||
assert.ok(Array.isArray(json.custom_files), 'the detector must emit a custom_files array');
|
||||
|
||||
Reference in New Issue
Block a user