50 lines
1.4 KiB
TypeScript
50 lines
1.4 KiB
TypeScript
// Conversation tracking types for maintaining context across interactions
|
|
|
|
export interface ConversationMessage {
|
|
id: string;
|
|
role: 'user' | 'assistant';
|
|
content: string;
|
|
timestamp: number;
|
|
metadata?: {
|
|
editedFiles?: string[]; // Files edited in this interaction
|
|
addedPackages?: string[]; // Packages added in this interaction
|
|
editType?: string; // Type of edit performed
|
|
sandboxId?: string; // Sandbox ID at time of message
|
|
};
|
|
}
|
|
|
|
export interface ConversationEdit {
|
|
timestamp: number;
|
|
userRequest: string;
|
|
editType: string;
|
|
targetFiles: string[];
|
|
confidence: number;
|
|
outcome: 'success' | 'partial' | 'failed';
|
|
errorMessage?: string;
|
|
}
|
|
|
|
export interface ConversationContext {
|
|
messages: ConversationMessage[];
|
|
edits: ConversationEdit[];
|
|
currentTopic?: string; // Current focus area (e.g., "header styling", "hero section")
|
|
projectEvolution: {
|
|
initialState?: string; // Description of initial project state
|
|
majorChanges: Array<{
|
|
timestamp: number;
|
|
description: string;
|
|
filesAffected: string[];
|
|
}>;
|
|
};
|
|
userPreferences: {
|
|
editStyle?: 'targeted' | 'comprehensive'; // How the user prefers edits
|
|
commonRequests?: string[]; // Common patterns in user requests
|
|
packagePreferences?: string[]; // Commonly used packages
|
|
};
|
|
}
|
|
|
|
export interface ConversationState {
|
|
conversationId: string;
|
|
startedAt: number;
|
|
lastUpdated: number;
|
|
context: ConversationContext;
|
|
} |