21 lines
1.2 KiB
JavaScript
21 lines
1.2 KiB
JavaScript
|
|
#!/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')));
|
|||
|
|
}
|