import { EmbedderContract } from "../contracts/embedder.contract.mjs"; import { SkillCatalogEntry, SkillRecord } from "./contracts/skill-record.type.mjs"; import { SkillsStoreContract } from "./contracts/skills-store.contract.mjs"; //#region ../ai/src/skills/catalog.d.ts /** * Merge every source's `list()` into one de-duplicated catalog. Sources * are merged in order; a LATER source wins on a name collision (explicit, * documented precedence). Candidates are already filtered by each store's * `list()`, so the merged catalog never carries an inert candidate. */ declare function buildCatalog(stores: SkillsStoreContract[], scope?: { tags?: string[]; }): Promise; /** * Render the catalog as one line per skill — `name`, `version`, * `description` — matching the projection `scripts/generate-llms.mjs` * emits for `llms.txt` so the runtime catalog and the docs index read * identically. Returns an empty string when no skills are in scope so the * agent prepends nothing. */ declare function renderCatalogPrompt(name: string, entries: SkillCatalogEntry[]): string; /** * Load the full record for `name` across the merged sources, honoring the * later-source-wins precedence: the FIRST store (iterating in reverse) to * return a hit owns the name. A pinned `version` narrows the lookup. * Returns `undefined` when no source has the skill. */ declare function loadRecord(stores: SkillsStoreContract[], name: string, version?: number): Promise; /** * Rank the in-scope catalog by cosine similarity to `input` and return the * full `SkillRecord`s for the top `topK` clearing `threshold`. * * Embeds `input` and every catalog `description` via the resolved * embedder (explicit `inject.embedder`, else the lazy provider), scores by * cosine similarity, sorts descending, applies the optional floor, slices * to `topK`, then loads those bodies. The embedder is the only optional * dependency this whole feature carries. */ declare function semanticPreselect(stores: SkillsStoreContract[], input: string, topK: number, options?: { embedder?: EmbedderContract; threshold?: number; scope?: { tags?: string[]; }; }): Promise; //#endregion export { buildCatalog, loadRecord, renderCatalogPrompt, semanticPreselect }; //# sourceMappingURL=catalog.d.mts.map