* docs: align PR-FLOW push gate from gsd-test-summary to gsd-test gsd-test is the application (open-gsd/gsd-test-runner); gsd-test-summary is the legacy local wrapper. RULESET.PR-FLOW.docker-before-push now names gsd-test as the pre-push gate (exit 0 / verdict outcome 'passed'). * docs: drop WORKTREE.SEAM local node --test rule; align PROC dispatch to gsd-test - Remove WORKTREE.SEAM.execution-rule (prefer local node --test) — contradicts CLAUDE.md 'NEVER run node --test locally'; CLAUDE.md wins. - PROC.PARALLEL-FIX-DISPATCH: gsd-test-summary --both -> gsd-test (app; --both was a legacy wrapper flag). * feat(#1682): OpenCode companion-MCP binding (mcp.gsd) — Phase 5 Slice 1a configureOpencodePermissions registers the Phase-4 companion MCP server (gsd-mcp-server) as opencode mcp.gsd, so OpenCode connects to GSD's command (point 1) + state-IO (point 5) with no bespoke plugin (ADR-1239 Phase D). Idempotent + non-clobbering (add-if-absent; respects a user-defined mcp.gsd). Local-stdio schema per OpenCode config (packages/core/src/config/mcp.ts); `-p @opengsd/gsd-core` resolves the bin (name != package) under npx. Tests: registers-on-object-config; does-not-clobber-user-entry. * docs(changeset): OpenCode companion-MCP binding (#1682) * fix(#1682): use PACKAGE_NAME single-source (#516) + refresh opencode golden parity - mcp.gsd command: replace hardcoded '@opengsd/gsd-core' literal with PACKAGE_NAME from gsd-core/bin/lib/package-identity.cjs (#516 single-source). - opencode golden-install-parity fixture: refresh opencode.json hash for the added mcp.gsd block (configureOpencodePermissions output change). * docs(changeset): add docs-exempt marker (Phase 5 slice) * docs(changeset): backfill PR #1929
This commit is contained in:
@@ -374,6 +374,7 @@ const {
|
||||
} = require(path.join(__dirname, '..', 'gsd-core', 'bin', 'lib', 'legacy-cleanup.cjs'));
|
||||
const {
|
||||
updateCacheFileName,
|
||||
PACKAGE_NAME,
|
||||
} = require(path.join(__dirname, '..', 'gsd-core', 'bin', 'lib', 'package-identity.cjs'));
|
||||
|
||||
// ADR-1239 Phase B: runtime-artifact install cluster extracted to install-engine.cjs.
|
||||
@@ -7718,7 +7719,7 @@ function configureOpencodePermissions(isGlobal = true, configDir = null) {
|
||||
modified = true;
|
||||
}
|
||||
|
||||
// Configure external_directory permission (the safety guard for paths outside project)
|
||||
// Configure external_directory permission (the safety guard for paths outside)
|
||||
if (!config.permission.external_directory || typeof config.permission.external_directory !== 'object') {
|
||||
config.permission.external_directory = {};
|
||||
}
|
||||
@@ -7727,6 +7728,25 @@ function configureOpencodePermissions(isGlobal = true, configDir = null) {
|
||||
modified = true;
|
||||
}
|
||||
|
||||
// ADR-1239 Phase D / #1682 — register the companion MCP server (Phase 4) so
|
||||
// OpenCode connects to GSD's command (point 1) + state-IO (point 5) surface
|
||||
// with NO bespoke plugin. Idempotent + non-clobbering: only added when
|
||||
// `mcp.gsd` is absent (a user-defined `mcp.gsd` is respected — Hyrum's Law).
|
||||
// Local-stdio schema per OpenCode config (packages/core/src/config/mcp.ts).
|
||||
// `-p @opengsd/gsd-core` resolves the `gsd-mcp-server` bin from this package
|
||||
// (bin name != package name) regardless of global-install state.
|
||||
if (!config.mcp || typeof config.mcp !== 'object') {
|
||||
config.mcp = {};
|
||||
}
|
||||
if (config.mcp.gsd === undefined) {
|
||||
config.mcp.gsd = {
|
||||
type: 'local',
|
||||
command: ['npx', '-y', '-p', PACKAGE_NAME, 'gsd-mcp-server'],
|
||||
enabled: true,
|
||||
};
|
||||
modified = true;
|
||||
}
|
||||
|
||||
if (!modified) {
|
||||
return; // Already configured
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user