feat: Implement stale validation cleanup and improve GitHub issue handling

- Added a scheduled task to clean up stale validation entries every hour, preventing memory leaks.
- Enhanced the `getAllValidations` function to read validation files in parallel for improved performance.
- Updated the `fetchLinkedPRs` function to use `spawn` for safer execution of GitHub CLI commands, mitigating shell injection risks.
- Modified event handling in the GitHub issues view to utilize the model for validation, ensuring consistency and reducing stale closure issues.
- Introduced a new property in the issue validation event to track the model used for validation.
This commit is contained in:
Kacper
2025-12-23 22:21:08 +01:00
parent 0c9f05ee38
commit d1418aa054
7 changed files with 85 additions and 27 deletions

View File

@@ -67,31 +67,33 @@ export async function readValidation(
* @returns Array of stored validations
*/
export async function getAllValidations(projectPath: string): Promise<StoredValidation[]> {
const validations: StoredValidation[] = [];
const validationsDir = getValidationsDir(projectPath);
try {
const dirs = await secureFs.readdir(validationsDir, { withFileTypes: true });
for (const dir of dirs) {
if (dir.isDirectory()) {
// Read all validation files in parallel for better performance
const promises = dirs
.filter((dir) => dir.isDirectory())
.map((dir) => {
const issueNumber = parseInt(dir.name, 10);
if (!isNaN(issueNumber)) {
const validation = await readValidation(projectPath, issueNumber);
if (validation) {
validations.push(validation);
}
return readValidation(projectPath, issueNumber);
}
}
}
return Promise.resolve(null);
});
const results = await Promise.all(promises);
const validations = results.filter((v): v is StoredValidation => v !== null);
// Sort by issue number
validations.sort((a, b) => a.issueNumber - b.issueNumber);
return validations;
} catch {
// Directory doesn't exist
return [];
}
// Sort by issue number
validations.sort((a, b) => a.issueNumber - b.issueNumber);
return validations;
}
/**