mirror of
https://github.com/affaan-m/everything-claude-code.git
synced 2026-04-09 19:03:28 +08:00
fix: restore agent yaml command export
This commit is contained in:
79
tests/ci/agent-yaml-surface.test.js
Normal file
79
tests/ci/agent-yaml-surface.test.js
Normal file
@@ -0,0 +1,79 @@
|
||||
#!/usr/bin/env node
|
||||
/**
|
||||
* Validate agent.yaml exports the legacy command shim surface.
|
||||
*/
|
||||
|
||||
const assert = require('assert');
|
||||
const fs = require('fs');
|
||||
const path = require('path');
|
||||
|
||||
const REPO_ROOT = path.join(__dirname, '..', '..');
|
||||
const AGENT_YAML_PATH = path.join(REPO_ROOT, 'agent.yaml');
|
||||
const COMMANDS_DIR = path.join(REPO_ROOT, 'commands');
|
||||
|
||||
function extractTopLevelList(yamlSource, key) {
|
||||
const lines = yamlSource.replace(/^\uFEFF/, '').split(/\r?\n/);
|
||||
const results = [];
|
||||
let collecting = false;
|
||||
|
||||
for (const line of lines) {
|
||||
if (!collecting) {
|
||||
if (line.trim() === `${key}:`) {
|
||||
collecting = true;
|
||||
}
|
||||
continue;
|
||||
}
|
||||
|
||||
if (/^[A-Za-z0-9_-]+:\s*/.test(line)) {
|
||||
break;
|
||||
}
|
||||
|
||||
const match = line.match(/^\s*-\s+(.+?)\s*$/);
|
||||
if (match) {
|
||||
results.push(match[1]);
|
||||
}
|
||||
}
|
||||
|
||||
return results;
|
||||
}
|
||||
|
||||
function test(name, fn) {
|
||||
try {
|
||||
fn();
|
||||
console.log(` ✓ ${name}`);
|
||||
return true;
|
||||
} catch (error) {
|
||||
console.log(` ✗ ${name}`);
|
||||
console.log(` Error: ${error.message}`);
|
||||
return false;
|
||||
}
|
||||
}
|
||||
|
||||
function run() {
|
||||
console.log('\n=== Testing agent.yaml export surface ===\n');
|
||||
|
||||
let passed = 0;
|
||||
let failed = 0;
|
||||
|
||||
const yamlSource = fs.readFileSync(AGENT_YAML_PATH, 'utf8');
|
||||
const declaredCommands = extractTopLevelList(yamlSource, 'commands').sort();
|
||||
const actualCommands = fs.readdirSync(COMMANDS_DIR)
|
||||
.filter(file => file.endsWith('.md'))
|
||||
.map(file => path.basename(file, '.md'))
|
||||
.sort();
|
||||
|
||||
if (test('agent.yaml declares commands export surface', () => {
|
||||
assert.ok(declaredCommands.length > 0, 'Expected non-empty commands list in agent.yaml');
|
||||
})) passed++; else failed++;
|
||||
|
||||
if (test('agent.yaml commands stay in sync with commands/ directory', () => {
|
||||
assert.deepStrictEqual(declaredCommands, actualCommands);
|
||||
})) passed++; else failed++;
|
||||
|
||||
console.log(`\nPassed: ${passed}`);
|
||||
console.log(`Failed: ${failed}`);
|
||||
|
||||
process.exit(failed > 0 ? 1 : 0);
|
||||
}
|
||||
|
||||
run();
|
||||
Reference in New Issue
Block a user