remcode
Version:
Turn your AI assistant into a codebase expert. Intelligent code analysis, semantic search, and software engineering guidance through MCP integration.
203 lines (202 loc) • 5.2 kB
TypeScript
/**
* Available embedding models
*/
/**
* Available embedding models (Inference API compatible)
*/
export declare enum EmbeddingModel {
CODEBERT = "microsoft/codebert-base",
BGE_BASE = "BAAI/bge-base-en-v1.5",
BGE_SMALL = "BAAI/bge-small-en-v1.5",
MINILM = "sentence-transformers/all-MiniLM-L12-v2",
GRAPHCODEBERT = "microsoft/graphcodebert-base",
UNIXCODER = "microsoft/unixcoder-base",
CODELLAMA = "codellama/CodeLlama-7b-hf"
}
/**
* Vector DB providers
*/
export declare enum VectorProvider {
PINECONE = "pinecone",
QDRANT = "qdrant",
MILVUS = "milvus",
OPENSEARCH = "opensearch"
}
/**
* Processing status values
*/
export declare enum ProcessingStatus {
PENDING = "pending",
PROCESSING = "processing",
COMPLETED = "completed",
FAILED = "failed"
}
/**
* Repository configuration
*/
export interface RepositoryConfig {
name: string;
owner: string;
url: string;
defaultBranch: string;
visibility?: 'public' | 'private';
description?: string;
}
/**
* Processing configuration
*/
export interface ProcessingConfig {
lastCommit: string;
lastUpdate: string;
status: ProcessingStatus;
error?: string;
lastProcessingDuration?: number;
}
/**
* Vectorization configuration
*/
export interface VectorizationConfig {
provider: VectorProvider;
indexName: string;
namespace: string;
embeddingModel: EmbeddingModel | string;
embeddingModelName?: string;
embeddingDimension: number;
chunkSize?: number;
modelHealthy?: boolean;
lastModelCheck?: string;
availableModels?: Array<{
id: string;
name: string;
isHealthy: boolean;
}>;
}
/**
* Statistics configuration
*/
export interface StatisticsConfig {
filesProcessed: number;
chunksCreated: number;
vectorsStored: number;
lastUpdated?: string;
totalTokens?: number;
processingTime?: number;
}
/**
* Advanced configuration options
*/
export interface AdvancedConfig {
ignorePaths?: string[];
includeExtensions?: string[];
excludeExtensions?: string[];
maxFileSize?: number;
customPrompts?: Record<string, string>;
useCache?: boolean;
webhooks?: WebhookConfig[];
}
/**
* Webhook configuration
*/
export interface WebhookConfig {
url: string;
events: string[];
secret?: string;
active: boolean;
}
/**
* Complete Remcode configuration
*/
export interface RemcodeConfig {
version: string;
initialized: string;
repository: RepositoryConfig;
processing: ProcessingConfig;
vectorization: VectorizationConfig;
statistics: StatisticsConfig;
advanced?: AdvancedConfig;
lastModified?: string;
}
/**
* Configuration validation result
*/
export interface ConfigValidationResult {
valid: boolean;
errors: string[];
warnings: string[];
}
/**
* Class to manage Remcode configuration
*/
export declare class RemcodeConfigManager {
private repoPath;
private configPath;
private readonly currentVersion;
/**
* Constructor
* @param repoPath Path to the repository
*/
constructor(repoPath?: string);
/**
* Create initial configuration file
* @param owner Repository owner
* @param repo Repository name
* @param options Additional configuration options
* @returns The created configuration
*/
createInitialConfig(owner: string, repo: string, options?: Partial<RemcodeConfig>): Promise<RemcodeConfig>;
/**
* Read configuration from file
* @returns The current configuration
*/
readConfig(): RemcodeConfig;
/**
* Update configuration with new values
* @param updates Configuration updates
* @returns The updated configuration
*/
updateConfig(updates?: Partial<RemcodeConfig>): RemcodeConfig;
/**
* Update processing status and statistics
* @param status New processing status
* @param stats Updated statistics
* @param commit Last processed commit hash
* @returns The updated configuration
*/
updateProcessingStatus(status: ProcessingStatus, stats?: Partial<StatisticsConfig>, commit?: string): RemcodeConfig;
/**
* Validate configuration
* @param config Configuration to validate
* @returns Validation result
*/
validateConfig(config: RemcodeConfig): ConfigValidationResult;
/**
* Build initial configuration
* @param owner Repository owner
* @param repo Repository name
* @param options Additional configuration options
* @returns Initial configuration
*/
private buildInitialConfig;
/**
* Deep merge two objects
* @param target Target object
* @param source Source object
* @returns Merged object
*/
private deepMerge;
/**
* Upgrade configuration to the latest version
* @param config Configuration to upgrade
*/
private upgradeConfig;
/**
* Check if configuration exists
* @returns True if configuration exists
*/
configExists(): boolean;
/**
* Delete configuration file
* @returns True if configuration was deleted
*/
deleteConfig(): boolean;
}