test-minimal.ts 2.1 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182
  1. #!/usr/bin/env bun
  2. /**
  3. * Minimal Test Script
  4. *
  5. * Quick validation that the minimal plugin works
  6. */
  7. import { loadAbilities } from './src/loader/index.js'
  8. import { validateAbility } from './src/validator/index.js'
  9. import { executeAbility } from './src/executor/index.js'
  10. import type { ExecutorContext } from './src/types/index.js'
  11. async function test() {
  12. console.log('🧪 Testing minimal abilities plugin...\n')
  13. // Test 1: Load ability
  14. console.log('Test 1: Loading test ability...')
  15. const abilities = await loadAbilities({
  16. projectDir: './examples/test',
  17. includeGlobal: false,
  18. })
  19. if (abilities.size === 0) {
  20. console.error('❌ No abilities loaded')
  21. process.exit(1)
  22. }
  23. const testAbility = abilities.get('test')
  24. if (!testAbility) {
  25. console.error('❌ Test ability not found')
  26. process.exit(1)
  27. }
  28. console.log('✅ Loaded ability:', testAbility.ability.name)
  29. console.log()
  30. // Test 2: Validate ability
  31. console.log('Test 2: Validating ability...')
  32. const validation = validateAbility(testAbility.ability)
  33. if (!validation.valid) {
  34. console.error('❌ Validation failed:', validation.errors)
  35. process.exit(1)
  36. }
  37. console.log('✅ Ability is valid')
  38. console.log()
  39. // Test 3: Execute ability
  40. console.log('Test 3: Executing ability...')
  41. const ctx: ExecutorContext = {
  42. cwd: process.cwd(),
  43. env: {},
  44. }
  45. const execution = await executeAbility(
  46. testAbility.ability,
  47. { message: 'Test message from script' },
  48. ctx
  49. )
  50. console.log('Status:', execution.status)
  51. console.log('Steps completed:', execution.completedSteps.length)
  52. console.log()
  53. for (const step of execution.completedSteps) {
  54. const icon = step.status === 'completed' ? '✅' : '❌'
  55. console.log(`${icon} ${step.stepId}: ${step.status}`)
  56. if (step.output) {
  57. console.log(` Output: ${step.output.trim()}`)
  58. }
  59. }
  60. if (execution.status === 'completed') {
  61. console.log('\n✅ All tests passed!')
  62. } else {
  63. console.log('\n❌ Execution failed:', execution.error)
  64. process.exit(1)
  65. }
  66. }
  67. test().catch((err) => {
  68. console.error('❌ Test failed:', err)
  69. process.exit(1)
  70. })