UNPKG

aicm

Version:

A TypeScript CLI tool for managing AI IDE rules across different projects and teams

70 lines (69 loc) 2.7 kB
import { CosmiconfigResult } from "cosmiconfig"; export interface RawConfig { rulesDir?: string; targets?: string[]; presets?: string[]; overrides?: Record<string, string | false>; mcpServers?: MCPServers; workspaces?: boolean; skipInstall?: boolean; } export interface Config { rulesDir?: string; targets: string[]; presets?: string[]; overrides?: Record<string, string | false>; mcpServers?: MCPServers; workspaces?: boolean; skipInstall?: boolean; } export type MCPServer = { command: string; args?: string[]; env?: Record<string, string>; url?: never; } | { url: string; env?: Record<string, string>; command?: never; args?: never; } | false; export interface MCPServers { [serverName: string]: MCPServer; } export interface RuleFile { name: string; content: string; sourcePath: string; source: "local" | "preset"; presetName?: string; } export interface RuleCollection { [target: string]: RuleFile[]; } export interface ResolvedConfig { config: Config; rules: RuleFile[]; mcpServers: MCPServers; } export declare const ALLOWED_CONFIG_KEYS: readonly ["rulesDir", "targets", "presets", "overrides", "mcpServers", "workspaces", "skipInstall"]; export declare const SUPPORTED_TARGETS: readonly ["cursor", "windsurf", "codex"]; export type SupportedTarget = (typeof SUPPORTED_TARGETS)[number]; export declare function detectWorkspacesFromPackageJson(cwd: string): boolean; export declare function resolveWorkspaces(config: unknown, configFilePath: string, cwd: string): boolean; export declare function applyDefaults(config: RawConfig, workspaces: boolean): Config; export declare function validateConfig(config: unknown, configFilePath: string, cwd: string, isWorkspaceMode?: boolean): asserts config is Config; export declare function loadRulesFromDirectory(rulesDir: string, source: "local" | "preset", presetName?: string): Promise<RuleFile[]>; export declare function resolvePresetPath(presetPath: string, cwd: string): string | null; export declare function loadPreset(presetPath: string, cwd: string): Promise<{ config: Config; rulesDir: string; }>; export declare function loadAllRules(config: Config, cwd: string): Promise<{ rules: RuleFile[]; mcpServers: MCPServers; }>; export declare function applyOverrides(rules: RuleFile[], overrides: Record<string, string | false>, cwd: string): RuleFile[]; export declare function loadConfigFile(searchFrom?: string): Promise<CosmiconfigResult>; export declare function loadConfig(cwd?: string): Promise<ResolvedConfig | null>; export declare function saveConfig(config: Config, cwd?: string): boolean;