@codervisor/devlog-core
Version:
Core devlog management functionality
55 lines • 2.13 kB
TypeScript
/**
* Comprehensive field change tracking utilities
* Extends the existing acceptance criteria tracking to all devlog fields
*/
import type { DevlogEntry, DevlogNote } from '../types/core.js';
import type { ChangeRecord, FieldChange, ChangeType, ChangeSource, TrackedUpdateRequest } from '../types/change-tracking.js';
/**
* Compare two values and generate a field change record
*/
export declare function createFieldChange(fieldName: keyof DevlogEntry, previousValue: any, newValue: any): FieldChange | null;
/**
* Detect all field changes between two devlog entries
*/
export declare function detectFieldChanges(previousEntry: DevlogEntry, updatedEntry: DevlogEntry): FieldChange[];
/**
* Create a comprehensive change record
*/
export declare function createChangeRecord(devlogId: number, changes: FieldChange[], changeType: ChangeType, source: ChangeSource, options?: {
reason?: string;
sourceDetails?: string;
metadata?: Record<string, any>;
}): ChangeRecord;
/**
* Create a change tracking note from field changes
*/
export declare function createFieldChangeNote(changes: FieldChange[], changeRecord: ChangeRecord): Omit<DevlogNote, 'id' | 'timestamp'>;
/**
* Extract change tracking context from update request
*/
export declare function extractChangeContext(updateRequest: TrackedUpdateRequest): {
source: ChangeSource;
sourceDetails?: string;
reason?: string;
trackChanges: boolean;
};
/**
* Remove change tracking metadata from update request
*/
export declare function cleanUpdateRequest(updateRequest: TrackedUpdateRequest): any;
/**
* Check if a field should be tracked based on configuration
*/
export declare function shouldTrackField(fieldName: keyof DevlogEntry): boolean;
/**
* Get all trackable field names
*/
export declare function getTrackableFields(): (keyof DevlogEntry)[];
/**
* Validate that a rollback is safe (no conflicts with newer changes)
*/
export declare function validateRollback(targetEntry: DevlogEntry, changesSinceTarget: ChangeRecord[]): {
isValid: boolean;
conflicts: string[];
};
//# sourceMappingURL=field-change-tracking.d.ts.map