devibe
Version:
Intelligent repository cleanup with auto mode, AI learning, markdown consolidation, auto-consolidate workflow, context-aware classification, and cost optimization
181 lines • 5.44 kB
TypeScript
/**
* Convention Rules Configuration
*
* Flexible, opt-in system for pristine repo conventions.
* Users can customize which rules to enforce via .deviberc
*
* Philosophy:
* - Analyze ALL conventions (always inform)
* - Enforce ONLY what user enables
* - Provide presets but allow full customization
* - Never be restrictive by default
*/
export interface ConventionRuleConfig {
enabled: boolean;
severity: 'error' | 'warning' | 'info';
autofix?: boolean;
customConfig?: Record<string, any>;
}
export interface ConventionRules {
buildArtifacts?: {
detectOutputFolders: ConventionRuleConfig;
requireGitignore: ConventionRuleConfig;
autoCleanup: ConventionRuleConfig;
customOutputFolders?: string[];
};
environmentFiles?: {
detectEnvFiles: ConventionRuleConfig;
requireEnvExample: ConventionRuleConfig;
requireGitignore: ConventionRuleConfig;
scanForSecrets: ConventionRuleConfig;
};
dependencies?: {
detectNodeModules: ConventionRuleConfig;
detectVendor: ConventionRuleConfig;
detectVirtualEnv: ConventionRuleConfig;
requireGitignore: ConventionRuleConfig;
};
cacheFiles?: {
detectCacheFolders: ConventionRuleConfig;
detectSystemFiles: ConventionRuleConfig;
autoCleanup: ConventionRuleConfig;
customCacheFolders?: string[];
};
logFiles?: {
detectLogFiles: ConventionRuleConfig;
requireGitignore: ConventionRuleConfig;
autoCleanup: ConventionRuleConfig;
keepRecentLogs?: number;
};
ideFiles?: {
detectVSCode: ConventionRuleConfig;
detectIDEA: ConventionRuleConfig;
keepSharedConfigs: ConventionRuleConfig;
keepPersonalConfigs: ConventionRuleConfig;
};
monorepo?: {
enforcePackageStructure: ConventionRuleConfig;
enforceSharedFolders: ConventionRuleConfig;
perPackageDocs: ConventionRuleConfig;
};
assets?: {
enforceAssetsFolder: ConventionRuleConfig;
detectLargeFiles: ConventionRuleConfig;
maxFileSize?: number;
suggestOptimization: ConventionRuleConfig;
};
documentation?: {
enforceDocsFolder: ConventionRuleConfig;
enforceRootFiles: ConventionRuleConfig;
detectGeneratedDocs: ConventionRuleConfig;
requireGitignoreGenerated: ConventionRuleConfig;
};
cicd?: {
detectGithubActions: ConventionRuleConfig;
detectGitHooks: ConventionRuleConfig;
preserveCIConfig: ConventionRuleConfig;
};
}
/**
* Preset configurations for different strictness levels
*/
export declare const CONVENTION_PRESETS: Record<string, Partial<ConventionRules>>;
/**
* Default configuration (balanced approach)
*/
export declare const DEFAULT_CONVENTION_RULES: Partial<ConventionRules>;
/**
* Configuration file format (.deviberc.json)
*/
export interface DevibeConfig {
preset?: 'minimal' | 'balanced' | 'strict';
conventions?: Partial<ConventionRules>;
autoMode?: {
applyConventions: boolean;
requireConfirmation: boolean;
};
excludePatterns?: string[];
excludeFolders?: string[];
}
/**
* Example .deviberc.json configurations
*/
export declare const EXAMPLE_CONFIGS: {
strictTeam: {
preset: string;
conventions: {
environmentFiles: {
scanForSecrets: {
enabled: boolean;
severity: string;
autofix: boolean;
};
};
ideFiles: {
keepSharedConfigs: {
enabled: boolean;
severity: string;
autofix: boolean;
};
};
};
autoMode: {
applyConventions: boolean;
requireConfirmation: boolean;
};
excludeFolders: string[];
};
soloDev: {
preset: string;
conventions: {
buildArtifacts: {
detectOutputFolders: {
enabled: boolean;
severity: string;
autofix: boolean;
};
};
environmentFiles: {
scanForSecrets: {
enabled: boolean;
severity: string;
autofix: boolean;
};
};
};
autoMode: {
applyConventions: boolean;
requireConfirmation: boolean;
};
};
openSource: {
preset: string;
conventions: {
documentation: {
enforceRootFiles: {
enabled: boolean;
severity: string;
autofix: boolean;
};
enforceDocsFolder: {
enabled: boolean;
severity: string;
autofix: boolean;
};
};
cicd: {
preserveCIConfig: {
enabled: boolean;
severity: string;
autofix: boolean;
};
};
};
autoMode: {
applyConventions: boolean;
requireConfirmation: boolean;
};
excludeFolders: string[];
};
};
//# sourceMappingURL=convention-rules.d.ts.map