()
| 259 | } |
| 260 | |
| 261 | async function main() { |
| 262 | if (!existsSync(RAW_FILE)) { |
| 263 | console.error(`Raw file not found: ${RAW_FILE}`); |
| 264 | console.error('Run `pnpm download` first.'); |
| 265 | process.exit(1); |
| 266 | } |
| 267 | |
| 268 | console.log('Reading events from:', RAW_FILE); |
| 269 | |
| 270 | const fileStream = createReadStream(RAW_FILE); |
| 271 | const rl = createInterface({ |
| 272 | input: fileStream, |
| 273 | crlfDelay: Infinity, |
| 274 | }); |
| 275 | |
| 276 | let count = 0; |
| 277 | for await (const line of rl) { |
| 278 | if (!line.trim()) continue; |
| 279 | try { |
| 280 | const event = JSON.parse(line) as GitHubEvent; |
| 281 | processEvent(event); |
| 282 | count++; |
| 283 | if (count % 100000 === 0) { |
| 284 | console.log(`Processed ${count} events...`); |
| 285 | } |
| 286 | } catch { |
| 287 | // Skip malformed lines |
| 288 | } |
| 289 | } |
| 290 | |
| 291 | console.log(`\nTotal events processed: ${count}`); |
| 292 | console.log(`Unique repos: ${reposMap.size}`); |
| 293 | console.log(`Issues: ${issuesMap.size}`); |
| 294 | console.log(`Pull requests: ${pullsMap.size}`); |
| 295 | console.log(`Users: ${usersMap.size}`); |
| 296 | |
| 297 | // Build the final data structure |
| 298 | const data: CodemodeData = { |
| 299 | repos: Array.from(reposMap.values()), |
| 300 | users: Array.from(usersMap.values()), |
| 301 | issues: Array.from(issuesMap.values()), |
| 302 | pulls: Array.from(pullsMap.values()), |
| 303 | }; |
| 304 | |
| 305 | console.log('\nWriting codemode.json...'); |
| 306 | writeFileSync(OUTPUT_FILE, JSON.stringify(data)); |
| 307 | |
| 308 | const stats = statSync(OUTPUT_FILE); |
| 309 | const sizeMB = (stats.size / 1024 / 1024).toFixed(1); |
| 310 | console.log(`Output: ${OUTPUT_FILE} (${sizeMB} MB)`); |
| 311 | |
| 312 | console.log('\nDone! Run `pnpm eval:codemode` to test the codemode agent.'); |
| 313 | } |
| 314 | |
| 315 | main(); |
no test coverage detected