test-evaluators.js 2.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109
  1. /**
  2. * Test evaluators with real OpenCode session data
  3. */
  4. const {
  5. createConfig,
  6. SessionReader,
  7. TimelineBuilder,
  8. EvaluatorRunner,
  9. ApprovalGateEvaluator,
  10. ContextLoadingEvaluator,
  11. DelegationEvaluator,
  12. ToolUsageEvaluator
  13. } = require('./dist');
  14. async function main() {
  15. console.log('='.repeat(80));
  16. console.log('EVALUATOR TEST');
  17. console.log('='.repeat(80));
  18. console.log('');
  19. // Create config
  20. const config = createConfig({
  21. projectPath: '/Users/darrenhinde/Documents/GitHub/opencode-agents'
  22. });
  23. console.log(`Project path: ${config.projectPath}`);
  24. console.log(`Session storage: ${config.sessionStoragePath}`);
  25. console.log('');
  26. // Create session reader and timeline builder
  27. const sessionReader = new SessionReader(config.projectPath, config.sessionStoragePath);
  28. const timelineBuilder = new TimelineBuilder(sessionReader);
  29. // List available sessions
  30. console.log('Finding sessions...');
  31. const sessions = sessionReader.listSessions();
  32. console.log(`Found ${sessions.length} sessions`);
  33. console.log('');
  34. if (sessions.length === 0) {
  35. console.log('No sessions found. Exiting.');
  36. return;
  37. }
  38. // Pick the most recent session
  39. const latestSession = sessions[0];
  40. console.log(`Testing with session: ${latestSession.id}`);
  41. console.log(`Title: ${latestSession.title}`);
  42. const createdDate = new Date(latestSession.created);
  43. console.log(`Created: ${isNaN(createdDate.getTime()) ? 'Unknown' : createdDate.toISOString()}`);
  44. console.log('');
  45. // Create evaluators
  46. const evaluators = [
  47. new ApprovalGateEvaluator(),
  48. new ContextLoadingEvaluator(),
  49. new DelegationEvaluator(),
  50. new ToolUsageEvaluator()
  51. ];
  52. console.log(`Registered ${evaluators.length} evaluators:`);
  53. evaluators.forEach((e, idx) => {
  54. console.log(` ${idx + 1}. ${e.name} - ${e.description}`);
  55. });
  56. console.log('');
  57. // Create runner
  58. const runner = new EvaluatorRunner({
  59. sessionReader,
  60. timelineBuilder,
  61. evaluators
  62. });
  63. // Run evaluators
  64. console.log('-'.repeat(80));
  65. console.log('Running evaluators...');
  66. console.log('-'.repeat(80));
  67. console.log('');
  68. const result = await runner.runAll(latestSession.id);
  69. // Generate and print report
  70. console.log('');
  71. console.log(runner.generateReport(result));
  72. // Test batch evaluation with first 3 sessions
  73. if (sessions.length > 1) {
  74. console.log('');
  75. console.log('');
  76. console.log('='.repeat(80));
  77. console.log('BATCH EVALUATION TEST (first 3 sessions)');
  78. console.log('='.repeat(80));
  79. console.log('');
  80. const sessionIds = sessions.slice(0, Math.min(3, sessions.length)).map(s => s.id);
  81. const batchResults = await runner.runBatch(sessionIds);
  82. console.log('');
  83. console.log(runner.generateBatchSummary(batchResults));
  84. }
  85. console.log('');
  86. console.log('✓ Evaluator test complete!');
  87. }
  88. main().catch(error => {
  89. console.error('Error running evaluator test:', error);
  90. process.exit(1);
  91. });