Files
Profa b56dad4f4c feat: complete OpenCode integration — all 40 tasks across 5 workstreams
Implements the full AQE-OpenCode integration plan:

WS0 Foundation: shared types (aqe-opencode-types), monorepo packages
WS1 MCP Server: transport factory (SSE/WS/HTTP routing), output compaction
  middleware, health endpoint, opencode.json template with SSE config
WS2 Plugin: 4 lifecycle hooks, config schema (Zod), session lifecycle,
  graceful degradation middleware, context budget manager, LSP bridge
WS3 Agent/Skill: 10 agent configs, 15 QE skills, 5 QCSD swarm skills,
  5 tool wrappers, permissions.yaml, generator scripts
WS4 Provider: capability matrix, skill tier registry (75 skills classified),
  degradation middleware, output format adapters
WS5 Testing: integration, unit, validation, E2E smoke tests (31 passing),
  integration guide, tool compatibility docs

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-24 18:54:19 +00:00

80 lines
2.5 KiB
TypeScript

import { z } from 'zod';
export default {
name: 'qe-defect-scan',
description: 'Run defect prediction and code indexing for comprehensive defect intelligence analysis',
parameters: z.object({
target: z.string().describe('Target path to scan for potential defects'),
indexCode: z.boolean().default(true).describe('Index code into knowledge graph before prediction'),
includePatterns: z.boolean().default(true).describe('Query memory for known defect patterns'),
}),
execute: async (
params: { target: string; indexCode: boolean; includePatterns: boolean },
ctx: any,
) => {
const startTime = Date.now();
const results: Record<string, any> = {};
// Step 1: Index code for knowledge graph (if requested)
if (params.indexCode) {
try {
results.index = await ctx.callTool('mcp:agentic-qe:code_index', {
target: params.target,
});
} catch (err: any) {
results.index = { error: `Code indexing failed: ${err.message}` };
}
}
// Step 2: Run defect prediction
try {
results.prediction = await ctx.callTool('mcp:agentic-qe:defect_predict', {
target: params.target,
});
} catch (err: any) {
return {
error: `Defect prediction failed: ${err.message}`,
phase: 'predict',
};
}
// Step 3: Query memory for known patterns (if requested)
if (params.includePatterns) {
try {
results.knownPatterns = await ctx.callTool('mcp:agentic-qe:memory_query', {
pattern: 'defect-patterns/*',
namespace: 'qe-defects',
});
} catch (err: any) {
results.knownPatterns = { error: `Pattern query failed: ${err.message}` };
}
}
const elapsed = Date.now() - startTime;
// Store scan results for learning
try {
await ctx.callTool('mcp:agentic-qe:memory_store', {
key: `defect-scan/${params.target}/${Date.now()}`,
namespace: 'qe-defects',
value: {
target: params.target,
prediction: results.prediction,
timestamp: new Date().toISOString(),
},
});
} catch {
// Non-critical
}
return {
target: params.target,
codeIndex: results.index,
prediction: results.prediction,
knownPatterns: results.knownPatterns,
elapsedMs: elapsed,
summary: `Defect scan completed for ${params.target} in ${elapsed}ms.`,
};
},
};