@aaswe/codebase-ai
Version:
AI-Assisted Software Engineering (AASWE) - Rich codebase context for IDE LLMs
231 lines • 6.64 kB
TypeScript
/**
* Version Manager Types
*
* Defines types for Git-aligned knowledge versioning system that tracks
* knowledge graph states, RDF file changes, and provides rollback capabilities.
*/
export interface VersionMetadata {
/** Unique version identifier (Git commit hash) */
versionId: string;
/** Git commit hash this version is based on */
commitHash: string;
/** Repository name/identifier */
repositoryId: string;
/** Timestamp when version was created */
timestamp: Date;
/** Commit message from Git */
commitMessage: string;
/** Author information from Git commit */
author: {
name: string;
email: string;
};
/** Branch name where commit was made */
branch: string;
/** Parent version ID (previous commit) */
parentVersionId?: string;
/** Knowledge graph snapshot metadata */
knowledgeGraphSnapshot: {
nodeCount: number;
relationshipCount: number;
checksum: string;
};
/** RDF files tracked in this version */
rdfFiles: RDFFileMetadata[];
/** Version status */
status: 'active' | 'archived' | 'rollback';
/** Additional metadata */
metadata?: Record<string, any>;
}
export interface RDFFileMetadata {
/** Relative path to RDF file */
filePath: string;
/** File content checksum */
checksum: string;
/** File size in bytes */
size: number;
/** Last modified timestamp */
lastModified: Date;
/** Whether file was modified by developer */
developerModified: boolean;
/** Modification type */
modificationType: 'created' | 'updated' | 'deleted';
}
export interface VersionDiff {
/** Source version ID */
fromVersionId: string;
/** Target version ID */
toVersionId: string;
/** Knowledge graph changes */
knowledgeGraphDiff: {
nodesAdded: number;
nodesRemoved: number;
nodesModified: number;
relationshipsAdded: number;
relationshipsRemoved: number;
relationshipsModified: number;
};
/** RDF file changes */
rdfFileChanges: RDFFileChange[];
/** Diff generation timestamp */
timestamp: Date;
}
export interface RDFFileChange {
/** File path */
filePath: string;
/** Change type */
changeType: 'created' | 'updated' | 'deleted' | 'moved';
/** Old file path (for moves) */
oldFilePath?: string;
/** Content diff (for updates) */
contentDiff?: string;
/** File metadata changes */
metadataChanges: {
sizeChange: number;
checksumChanged: boolean;
developerModifiedChanged: boolean;
};
}
export interface RollbackOperation {
/** Rollback operation ID */
operationId: string;
/** Target version to rollback to */
targetVersionId: string;
/** Current version before rollback */
sourceVersionId: string;
/** Repository ID */
repositoryId: string;
/** Rollback timestamp */
timestamp: Date;
/** Rollback status */
status: 'pending' | 'in_progress' | 'completed' | 'failed' | 'cancelled';
/** Operations performed during rollback */
operations: RollbackStep[];
/** Error information if rollback failed */
error?: {
message: string;
stack?: string;
step?: string;
};
}
export interface RollbackStep {
/** Step identifier */
stepId: string;
/** Step description */
description: string;
/** Step status */
status: 'pending' | 'in_progress' | 'completed' | 'failed';
/** Step start time */
startTime: Date;
/** Step end time */
endTime?: Date;
/** Step result data */
result?: any;
/** Error information if step failed */
error?: {
message: string;
stack?: string;
};
}
export interface VersionQuery {
/** Repository ID filter */
repositoryId?: string;
/** Branch filter */
branch?: string;
/** Date range filter */
dateRange?: {
from: Date;
to: Date;
};
/** Author filter */
author?: string;
/** Status filter */
status?: VersionMetadata['status'];
/** Limit number of results */
limit?: number;
/** Offset for pagination */
offset?: number;
/** Sort order */
sortBy?: 'timestamp' | 'commitHash' | 'author';
/** Sort direction */
sortOrder?: 'asc' | 'desc';
}
export interface VersionManagerConfig {
/** Storage path for version metadata */
versionsFilePath: string;
/** Maximum number of versions to keep */
maxVersions: number;
/** Enable automatic cleanup of old versions */
autoCleanup: boolean;
/** Cleanup interval in milliseconds */
cleanupInterval: number;
/** Enable version compression */
enableCompression: boolean;
/** Backup configuration */
backup: {
enabled: boolean;
interval: number;
retentionDays: number;
backupPath: string;
};
}
export interface VersionManagerMetrics {
/** Total number of versions */
totalVersions: number;
/** Number of active versions */
activeVersions: number;
/** Number of archived versions */
archivedVersions: number;
/** Storage usage in bytes */
storageUsage: number;
/** Average version size */
averageVersionSize: number;
/** Most recent version timestamp */
lastVersionTimestamp: Date;
/** Repository statistics */
repositoryStats: Record<string, {
versionCount: number;
lastUpdate: Date;
storageUsage: number;
}>;
}
export interface SyncOperation {
/** Sync operation ID */
operationId: string;
/** Repository ID */
repositoryId: string;
/** Sync type */
syncType: 'rdf_to_graph' | 'graph_to_rdf' | 'bidirectional';
/** Files to sync */
filePaths: string[];
/** Sync timestamp */
timestamp: Date;
/** Sync status */
status: 'pending' | 'in_progress' | 'completed' | 'failed';
/** Sync results */
results: SyncResult[];
/** Error information if sync failed */
error?: {
message: string;
stack?: string;
filePath?: string;
};
}
export interface SyncResult {
/** File path */
filePath: string;
/** Sync status for this file */
status: 'success' | 'failed' | 'skipped';
/** Changes made */
changes: {
nodesAdded: number;
nodesUpdated: number;
nodesRemoved: number;
relationshipsAdded: number;
relationshipsUpdated: number;
relationshipsRemoved: number;
};
/** Error message if sync failed */
error?: string;
}
//# sourceMappingURL=types.d.ts.map