import type { RawSkillsManagerConfig, SkillsManagerConfig, SkillsManagerState, SkillState } from "./types.js"; /** * Canonical default list of managed skill names when the user omits the * `skills` field — sourced from the **manifest** (`skills-manifest.json`), the * single source of truth for the managed set. No longer a hardcoded list. * * Semantics for the resolved `skills` array: * - Field omitted entirely → defaults to the manifest skill set. Partial * configs like `{ enabled: true }` get every manifest skill bootstrapped * automatically without repeating the array in JSON. * - Field present and non-empty → use the provided names (filtered for * non-empty strings) as a subset/override; each still resolves its source * (repo/branch/path) from the manifest. * - Field present and explicitly empty (`"skills": []`) → legacy discovery * mode: scan subdirs under `skillsDir`. Retained for backward compatibility; * the manifest is the preferred source. */ export declare const DEFAULT_MANAGED_SKILLS: readonly string[]; /** * Parses and normalises the raw `skillsManager` config block from the plugin * config into a fully-resolved {@link SkillsManagerConfig}. * * Any missing or null fields fall back to safe defaults so callers never have * to guard against undefined values. * * @param value - The optional raw config block from the plugin config. * @returns A fully-populated {@link SkillsManagerConfig} with all defaults applied. */ export declare function resolveSkillsManagerConfig(value?: RawSkillsManagerConfig | null): SkillsManagerConfig; /** * Creates a blank {@link SkillsManagerState} with no tracked skills. * Used as the merge base when loading persisted state, and as the fallback * when state is corrupt. * * @returns An empty {@link SkillsManagerState}. */ export declare function createDefaultSkillsManagerState(): SkillsManagerState; /** * Creates a zeroed-out {@link SkillState} for a skill that has not yet been * tracked. All version fields are null and the failure counter starts at zero. * * @param name - The skill name (directory name under `skillsDir`). * @returns A fresh {@link SkillState} for the given skill. */ export declare function createDefaultSkillState(name: string): SkillState; /** Formats an unknown thrown value as a short string for log messages. */ export declare function formatErr(e: unknown): string; /** * Normalise the raw `skillsDir` value into a non-empty `string[]` (the * "search path" form used internally). * * Resolution rules: * - Single string → wrap as `[value]` (legacy single-dir form) * - Array → filter out non-strings and empty/whitespace entries; if anything * survives, use the filtered array * - Anything else (undefined, null, empty array post-filter, wrong type) → * fall back to `DEFAULT_SKILLS_DIRS` (which itself reads `SENPI_SKILLS_DIR` * as a comma-separated list, or the canonical install path as the final * fallback) * * Always returns a non-empty array — callers can rely on `[0]` existing as * the *primary* (writes go here; reads scan in order). */ export declare function normalizeSkillsDir(value: unknown): string[]; //# sourceMappingURL=utils.d.ts.map