Files
brain/tools/registry-initial-inputs.mjs
T

21 lines
1.2 KiB
JavaScript
Raw Normal View History

#!/usr/bin/env node
/**
* registry-initial-inputs — токены-данности задачи (initialInputs для машины охвата).
* Источник истины — словарь capability-vocabulary.json (поле category:"given"): входы,
* которые не производит ни один навык (приходят от задачи). Чистая выборка, без LLM.
*/
import fsDefault from 'node:fs';
/** Данности задачи = токены словаря с category:"given". Чистая, пустой/битый словарь → []. */
export function givenTokens(vocabRaw) {
const toks = vocabRaw && Array.isArray(vocabRaw.tokens) ? vocabRaw.tokens : [];
return toks
.filter((t) => t && t.category === 'given' && typeof t.token === 'string' && t.token.trim())
.map((t) => t.token);
}
/** Загрузить данности с диска (fs инъектируется). Бросает на битом JSON / отсутствии файла. */
export function loadInitialInputs({ path = 'docs/registry/capability-vocabulary.json', fsImpl = fsDefault } = {}) {
return givenTokens(JSON.parse(fsImpl.readFileSync(path, 'utf8')));
}