/** * Bootstrap check: ensure every **manifest** Senpi skill exists in the skills * directory on first plugin activation. The expected set is the manifest set * (`getManifestSkillNames`), the single source of truth — not `config.skills`. */ import { cloneSkillsRepo } from "./fetcher.js"; import { installSkill } from "./writer.js"; import type { LoggerLike, SkillsManagerConfig } from "./types.js"; type CloneSkillsRepoDep = typeof cloneSkillsRepo; type InstallSkillDep = typeof installSkill; export interface BootstrapDeps { cloneSkillsRepoDep?: CloneSkillsRepoDep; installSkillDep?: InstallSkillDep; /** * Override the managed skill set. **Test-only seam** — production always * uses the manifest (`getManifestSkillNames`). */ listManagedSkills?: () => string[]; } /** * Install any **manifest** skills that are absent from `skillsDir`. * * The set comes from the manifest (`getManifestSkillNames`), the single source * of truth — `config.skills` is no longer consulted. A single shared clone per * (repo, branch) group covers all missing skills to minimise network * round-trips. Per-skill install failures are logged as warnings and do not * abort the remaining installs. */ export declare function bootstrapSkillsIfNeeded(config: SkillsManagerConfig, logger: LoggerLike, deps?: BootstrapDeps): Promise; export {}; //# sourceMappingURL=bootstrap.d.ts.map