export class Inputs { systemMessage: string title: string description: string rawSummary: string shortSummary: string filename: string fileContent: string fileDiff: string patches: string diff: string commentChain: string comment: string suggestion: string error: string taskDescription: string codebaseStructure: string remedyContext: string constructor( systemMessage = '', title = 'no title provided', description = 'no description provided', rawSummary = '', shortSummary = '', filename = '', fileContent = 'file contents cannot be provided', fileDiff = 'file diff cannot be provided', patches = '', diff = 'no diff', commentChain = 'no other comments on this patch', comment = 'no comment provided', suggestion = '', error = '', taskDescription = '', codebaseStructure = '', remedyContext = '' ) { this.systemMessage = systemMessage this.title = title this.description = description this.rawSummary = rawSummary this.shortSummary = shortSummary this.filename = filename this.fileContent = fileContent this.fileDiff = fileDiff this.patches = patches this.diff = diff this.commentChain = commentChain this.comment = comment this.suggestion = suggestion this.error = error this.taskDescription = taskDescription this.codebaseStructure = codebaseStructure this.remedyContext = remedyContext } clone(): Inputs { return new Inputs( this.systemMessage, this.title, this.description, this.rawSummary, this.shortSummary, this.filename, this.fileContent, this.fileDiff, this.patches, this.diff, this.commentChain, this.comment, this.suggestion, this.error, this.taskDescription, this.codebaseStructure, this.remedyContext ) } render(content: string): string { if (!content) { return '' } if (this.systemMessage) { content = content.replace('$system_message', this.systemMessage) } if (this.title) { content = content.replace('$title', this.title) } if (this.description) { let desc = this.description if (desc.length > 8000) { desc = `${desc.substring(0, 8000)}\n\n[Note: PR Description truncated for token optimization]` } content = content.replace('$description', desc) } if (this.rawSummary) { content = content.replace('$raw_summary', this.rawSummary) } if (this.shortSummary) { content = content.replace('$short_summary', this.shortSummary) } if (this.filename) { content = content.replace('$filename', this.filename) } if (this.fileContent) { content = content.replace('$file_content', this.fileContent) } if (this.fileDiff) { content = content.replace('$file_diff', this.fileDiff) } if (this.patches) { content = content.replace('$patches', this.patches) } if (this.diff) { content = content.replace('$diff', this.diff) } if (this.taskDescription) { content = content.replace('$task_description', this.taskDescription) } if (this.codebaseStructure) { content = content.replace('$codebase_structure', this.codebaseStructure) } if (this.commentChain) { content = content.replace('$comment_chain', this.commentChain) } if (this.comment) { content = content.replace('$comment', this.comment) } if (this.suggestion) { content = content.replace('$suggestion', this.suggestion) } if (this.error) { content = content.replace('$error', this.error) } if (this.remedyContext) { content = content.replace('$remedy_context', this.remedyContext) } return content } }