refactor(#190): collapse SDK sync bridge and remove synckit seam

This commit is contained in:
Tom Boucher
2026-05-25 10:30:34 -04:00
parent d2634bf570
commit 4fa13cf9de
20 changed files with 72 additions and 1992 deletions

View File

@@ -3,10 +3,6 @@
const { VALIDATE_SUBCOMMANDS } = require('./command-aliases.cjs');
const { formatGsdSlash, resolveRuntime } = require('./runtime-slash.cjs');
const { routeCjsCommandFamily } = require('./cjs-command-router-adapter.cjs');
const { output } = require('./core.cjs');
// ─── SDK bridge (Phase 6) — shared loader via cjs-sdk-bridge.cjs ──────────────
const { tryLoadSdk, getExecuteForCjs } = require('./cjs-sdk-bridge.cjs');
/**
* Manifest-backed validate subcommand router.
@@ -25,44 +21,8 @@ const { tryLoadSdk, getExecuteForCjs } = require('./cjs-sdk-bridge.cjs');
* SDK-only (unsupported in CJS router): none.
*/
function routeValidateCommand({ verify, args, cwd, raw, parseNamedArgs, output: outputFn, error }) {
const activeWorkstream = process.env.GSD_WORKSTREAM;
const sdkAvailable = !activeWorkstream && tryLoadSdk();
function sdkHandler(registryCommand, registryArgs, legacyArgs, cjsFallback) {
if (!sdkAvailable) return cjsFallback;
return () => {
let result;
try {
result = getExecuteForCjs()({
registryCommand,
registryArgs,
legacyCommand: 'validate',
legacyArgs,
// #3631: under --raw, request mode:'raw' so the bridge runs the SDK's
// raw projection (formatQueryRawOutput) and returns the scalar string
// CJS callers used to print. We then bypass output()'s JSON-stringify
// path by passing rawValue (the third positional). With mode:'json',
// output() emits the JSON IR as before.
mode: raw ? 'raw' : 'json',
projectDir: cwd,
});
} catch {
// Bridge threw (e.g. synckit worker crash, Atomics failure on Windows).
// Fall through to CJS handler — the CJS path is the designed safety net.
return cjsFallback();
}
if (!result.ok) {
error(result.errorDetails && result.errorDetails.message
? result.errorDetails.message
: `validate ${registryCommand} failed (${result.errorKind})`);
return;
}
if (raw) {
output(null, true, typeof result.data === 'string' ? result.data : String(result.data ?? ''));
} else {
output(result.data);
}
};
function sdkHandler(_registryCommand, _registryArgs, _legacyArgs, cjsFallback) {
return cjsFallback;
}
routeCjsCommandFamily({