feat: add machine learning engineering workflow

(cherry picked from commit 4b0eeacd66b2f65b7b11d7f2c8bef056c50b08e4)
This commit is contained in:
Divyesh Thirukonda
2026-05-01 20:19:25 -05:00
committed by Affaan Mustafa
parent 54efa1a150
commit 240d52d27f
20 changed files with 1236 additions and 21 deletions

View File

@@ -83,6 +83,28 @@ function runTests() {
assert.match(result.stdout, /npx ecc plan --profile minimal --target claude --with capability:security/);
})) passed++; else failed++;
if (test('recommends machine-learning component and reviewer agent', () => {
const result = run(['mlops', 'training', 'model', 'deployment', '--json']);
assert.strictEqual(result.status, 0, result.stderr);
const payload = parseJson(result.stdout);
assert.strictEqual(payload.matches[0].componentId, 'capability:machine-learning');
assert.ok(payload.matches[0].installCommand.includes('--with capability:machine-learning'));
assert.ok(payload.matches.some(match => match.componentId === 'agent:mle-reviewer'));
assert.ok(!payload.profiles.some(profile => profile.id === 'mle'));
})) passed++; else failed++;
if (test('matches tokenized model review queries without making review a generic alias', () => {
const result = run(['model', 'review', '--json']);
assert.strictEqual(result.status, 0, result.stderr);
const payload = parseJson(result.stdout);
const reviewer = payload.matches.find(match => match.componentId === 'agent:mle-reviewer');
assert.ok(reviewer, 'Should include agent:mle-reviewer');
assert.ok(reviewer.reasons.includes('matched "model"'));
assert.ok(!reviewer.reasons.includes('matched "review"'));
})) passed++; else failed++;
if (test('works from outside the ECC repository', () => {
const projectDir = fs.mkdtempSync(path.join(os.tmpdir(), 'ecc-consult-project-'));
try {