import { ComponentType, CodingAgent, RegistryItem, RegistryManifest } from '@seedr/shared'; export { CodingAgent, ComponentType, RegistryItem, RegistryManifest } from '@seedr/shared'; type InstallScope = "project" | "user" | "local"; type InstallMethod = "symlink" | "copy"; interface ContentTypeConfig { /** * Relative path from the agent root (e.g. "skills"). The only field anything * reads — `getContentPath` is the sole consumer. Layout facts that looked * configurable here (extension, structure, mergeTarget, mergeField) were * never read: each handler owns its own format, so the table said one thing * and the code did another. */ path: string; } interface CodingAgentConfig { /** Display name (e.g., "Claude Code") */ name: string; /** Short identifier (e.g., "claude") */ shortName: string; /** Project root directory (e.g., ".claude") */ projectRoot: string; /** User root directory (e.g., "~/.claude") */ userRoot: string; /** Content type configurations */ contentTypes: Partial>; } interface InstallOptions { skill?: string; agents?: string[] | "all"; scope?: InstallScope; method?: InstallMethod; yes?: boolean; force?: boolean; } interface InstalledItem { slug: string; type: string; agent: string; scope: InstallScope; method: InstallMethod; path: string; installedAt: string; } /** Where each agent keeps what. */ declare const CODING_AGENTS: Record; /** The agents `--agents all` expands to: canonical ids only. */ declare const ALL_AGENTS: CodingAgent[]; declare function getAgentConfig(agent: CodingAgent): CodingAgentConfig; /** The agent's skills directory. Used by detection and `init`. */ declare function getAgentPath(agent: CodingAgent, scope: "project" | "user", cwd?: string): string; declare function loadManifest(): Promise; declare function getItem(slug: string, type?: ComponentType): Promise; declare function listItems(type?: ComponentType): Promise; declare function searchItems(query: string): Promise; /** * Fetch the main content file for an item (e.g., SKILL.md). * * A local checkout is read directly. Remote content goes through * `fetchItemToDestination` into a temporary directory so it is subject to the * same pinning and digest verification as a full install. */ declare function getItemContent(item: RegistryItem): Promise; interface InstallResult { agent: CodingAgent; success: boolean; path: string; error?: string; /** * The version that landed, when it differs from the registry item's own. * A plugin carries its version in its manifest and the registry item carries * a separate one for the catalogue entry — recording the item's would say * "1.0.20" for a plugin every agent knows as 0.16.2. */ version?: string; } declare function installSkill(item: RegistryItem, agents: CodingAgent[], scope: InstallScope, method: InstallMethod, force: boolean, cwd?: string): Promise; declare function uninstallSkill(slug: string, agent: CodingAgent, scope: InstallScope, cwd?: string): Promise; declare function getInstalledSkills(agent: CodingAgent, scope: InstallScope, cwd?: string): Promise; interface DetectedAgent { agent: CodingAgent; scope: InstallScope; path: string; } declare function detectInstalledAgents(cwd?: string): Promise; declare function detectProjectAgents(cwd?: string): Promise; declare function isAgentInstalled(agent: CodingAgent, scope: InstallScope, cwd?: string): Promise; export { ALL_AGENTS, CODING_AGENTS, type CodingAgentConfig, type InstallMethod, type InstallOptions, type InstallScope, type InstalledItem, detectInstalledAgents, detectProjectAgents, getAgentConfig, getAgentPath, getInstalledSkills, getItem, getItemContent, installSkill, isAgentInstalled, listItems, loadManifest, searchItems, uninstallSkill };