test-path-resolution.mjs 3.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384
  1. #!/usr/bin/env node
  2. /**
  3. * Test script to verify agent path resolution
  4. * Tests both old (flat) and new (category-based) formats
  5. */
  6. import { resolveAgentPath, normalizeAgentId, extractAgentCategory } from './dist/config.js';
  7. import { existsSync } from 'fs';
  8. import { join, dirname } from 'path';
  9. import { fileURLToPath } from 'url';
  10. const __filename = fileURLToPath(import.meta.url);
  11. const __dirname = dirname(__filename);
  12. const projectRoot = join(__dirname, '..', '..');
  13. console.log('🧪 Testing Agent Path Resolution\n');
  14. console.log('Project Root:', projectRoot);
  15. console.log('');
  16. // Test cases
  17. const testCases = [
  18. // Old format (flat structure)
  19. { agent: 'openagent', expected: 'core/openagent', category: undefined },
  20. { agent: 'opencoder', expected: 'core/opencoder', category: undefined },
  21. { agent: 'system-builder', expected: 'meta/system-builder', category: undefined },
  22. // New format (category-based)
  23. { agent: 'core/openagent', expected: 'core/openagent', category: 'core' },
  24. { agent: 'core/opencoder', expected: 'core/opencoder', category: 'core' },
  25. { agent: 'meta/system-builder', expected: 'meta/system-builder', category: 'meta' },
  26. { agent: 'development/frontend-specialist', expected: 'development/frontend-specialist', category: 'development' },
  27. { agent: 'development/backend-specialist', expected: 'development/backend-specialist', category: 'development' },
  28. { agent: 'content/copywriter', expected: 'content/copywriter', category: 'content' },
  29. // Subagents
  30. { agent: 'subagents/code/tester', expected: 'subagents/code/tester', category: 'subagents/code' },
  31. { agent: 'subagents/core/task-manager', expected: 'subagents/core/task-manager', category: 'subagents/core' },
  32. ];
  33. let passed = 0;
  34. let failed = 0;
  35. console.log('Testing path resolution and normalization:\n');
  36. for (const testCase of testCases) {
  37. const { agent, expected, category } = testCase;
  38. // Test normalization
  39. const normalized = normalizeAgentId(agent);
  40. const normalizePass = normalized === expected;
  41. // Test category extraction
  42. const extractedCategory = extractAgentCategory(agent);
  43. const categoryPass = extractedCategory === category;
  44. // Test path resolution
  45. const resolvedPath = resolveAgentPath(agent, projectRoot);
  46. const pathExists = existsSync(resolvedPath);
  47. const allPass = normalizePass && categoryPass;
  48. if (allPass) {
  49. console.log(`✅ ${agent}`);
  50. console.log(` Normalized: ${normalized}`);
  51. console.log(` Category: ${extractedCategory || 'none'}`);
  52. console.log(` Path: ${resolvedPath}`);
  53. console.log(` Exists: ${pathExists ? '✅' : '⚠️ (not created yet)'}`);
  54. passed++;
  55. } else {
  56. console.log(`❌ ${agent}`);
  57. console.log(` Expected normalized: ${expected}, got: ${normalized}`);
  58. console.log(` Expected category: ${category || 'none'}, got: ${extractedCategory || 'none'}`);
  59. failed++;
  60. }
  61. console.log('');
  62. }
  63. console.log('═══════════════════════════════════════');
  64. console.log(`Results: ${passed} passed, ${failed} failed`);
  65. console.log('═══════════════════════════════════════');
  66. if (failed > 0) {
  67. process.exit(1);
  68. }