* refactor(#1294): T-final — delete the core.cjs re-export spine (epic #1267 complete) After T0–T6 nothing imports core, so retire the spine and its scaffolding: - delete src/core.cts (and the gitignored gsd-core/bin/lib/core.cjs artifact; remove its .gitignore + eslint-ignore entries) - delete scripts/lint-core-spine-imports.cjs + its allowlist; drop it from the package.json lint:ci chain - regenerate docs/INVENTORY-MANIFEST.json (drops the core.cjs surface) - sweep stale references: CONTEXT.md glossary back-compat clauses (spine retired, callers import the leaf directly), planning-config.md CONFIG_DEFAULTS owner, and false present-tense core.cjs claims in leaf-module docstrings The ADR-857 decomposition is complete: the former Core god-module is fully dissolved into its leaf modules; no re-export spine remains. No behaviour change. Closes #1294 Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com> * fix(#1294): migrate the computed-path core.cjs importers the literal grep missed bin/install.js used require(path.join(_gsdLibDir, 'core.cjs')) (a computed path, and bin/install.js was never in the convergence lint's scan roots), and ~8 test files referenced core.cjs via path.join/readFileSync/existsSync/FILE_ARG forms the literal-string migration grep missed. Route install.js's symbols to their leaves (RUNTIME_PROFILE_MAP->model-catalog, resolveTierEntry/EFFORT_SET-> model-resolver) and repoint/adjust the test references to the leaves. Recovers the 161 'Cannot find module core.cjs' failures from the spine deletion. Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com> --------- Co-authored-by: Claude Opus 4.8 <noreply@anthropic.com>
64 lines
2.1 KiB
TypeScript
64 lines
2.1 KiB
TypeScript
/**
|
|
* Thin adapter — sources schema data from the manifest via the generated
|
|
* Configuration Module. All inline literals have been removed; the manifest
|
|
* at gsd-core/bin/shared/config-schema.manifest.json is the single source of truth.
|
|
*
|
|
* Imported by:
|
|
* - config.cjs (isValidConfigKey validator)
|
|
* - many tests (config-schema.property.test.cjs, bug-*, feat-*, etc.)
|
|
* (core.cjs re-export spine retired in epic #1267)
|
|
*
|
|
* See Phase 2 Cycle 5 (#3536) — schema manifest migration.
|
|
*
|
|
* ADR-457 build-at-publish: the hand-written bin/lib/config-schema.cjs collapsed
|
|
* to a TypeScript source of truth. Behaviour is preserved byte-for-behaviour from
|
|
* the prior hand-written .cjs; only types are added.
|
|
*/
|
|
|
|
import {
|
|
VALID_CONFIG_KEYS,
|
|
RUNTIME_STATE_KEYS,
|
|
DYNAMIC_KEY_PATTERNS,
|
|
} from './configuration.cjs';
|
|
|
|
// eslint-disable-next-line @typescript-eslint/no-require-imports
|
|
const capabilityRegistry = require('./capability-registry.cjs') as {
|
|
configSchema?: Record<string, unknown>;
|
|
};
|
|
|
|
function isCapabilityConfigKey(keyPath: string): boolean {
|
|
if (typeof keyPath !== 'string') return false;
|
|
const schema = capabilityRegistry.configSchema;
|
|
if (!schema || typeof schema !== 'object') return false;
|
|
return Object.prototype.hasOwnProperty.call(schema, keyPath);
|
|
}
|
|
|
|
/**
|
|
* Returns true for keys owned by the central schema adapter rather than a
|
|
* federated Capability config slice.
|
|
*/
|
|
function isCentralConfigKey(keyPath: string): boolean {
|
|
if (typeof keyPath !== 'string') return false;
|
|
if (VALID_CONFIG_KEYS.has(keyPath)) return true;
|
|
if (RUNTIME_STATE_KEYS.has(keyPath)) return true;
|
|
return DYNAMIC_KEY_PATTERNS.some((p) => p.test(keyPath));
|
|
}
|
|
|
|
/**
|
|
* Returns true if keyPath is a valid central, runtime-state, dynamic, or
|
|
* federated Capability config key.
|
|
*/
|
|
function isValidConfigKey(keyPath: string): boolean {
|
|
if (isCentralConfigKey(keyPath)) return true;
|
|
return isCapabilityConfigKey(keyPath);
|
|
}
|
|
|
|
export = {
|
|
VALID_CONFIG_KEYS,
|
|
RUNTIME_STATE_KEYS,
|
|
DYNAMIC_KEY_PATTERNS,
|
|
isCapabilityConfigKey,
|
|
isCentralConfigKey,
|
|
isValidConfigKey,
|
|
};
|