cortexweaver
Version:
CortexWeaver is a command-line interface (CLI) tool that orchestrates a swarm of specialized AI agents, powered by Claude Code and Gemini CLI, to assist in software development. It transforms a high-level project plan (plan.md) into a series of coordinate
134 lines • 6.04 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
exports.PrototyperAgent = void 0;
class PrototyperAgent {
constructor(claudeClient, cognitiveCanvas, mcpClient) {
this.claudeClient = claudeClient;
this.cognitiveCanvas = cognitiveCanvas;
this.mcpClient = mcpClient;
}
get role() {
return 'Prototyper';
}
get capabilities() {
return ['pseudocode-generation', 'logic-flow-design', 'mermaid-diagrams'];
}
async processContract(contractId) {
try {
// Get contract details from Cognitive Canvas
const contractData = await this.cognitiveCanvas.getContract(contractId);
if (!contractData) {
return {
success: false,
error: 'Contract not found'
};
}
// Get guide pheromones for patterns
const pheromones = await this.cognitiveCanvas.getPheromonesByType('guide');
// Generate pseudocode and collect token usage
const pseudocodeResponse = await this.generatePseudocodeWithUsage(contractData, pheromones);
const pseudocode = pseudocodeResponse.content;
// Generate flow diagram and collect token usage
const flowDiagramResponse = await this.generateFlowDiagramWithUsage(pseudocode);
const flowDiagram = flowDiagramResponse.content;
// Aggregate token usage
const totalTokenUsage = {
input_tokens: pseudocodeResponse.tokenUsage.inputTokens + flowDiagramResponse.tokenUsage.inputTokens,
output_tokens: pseudocodeResponse.tokenUsage.outputTokens + flowDiagramResponse.tokenUsage.outputTokens,
total_tokens: pseudocodeResponse.tokenUsage.totalTokens + flowDiagramResponse.tokenUsage.totalTokens
};
// Save to /prototypes directory
const outputPath = `/prototypes/${contractData.name || contractId}_prototype.md`;
const prototypeContent = `# ${contractData.name || contractId} Prototype\n\n## Pseudocode\n${pseudocode}\n\n## Flow Diagram\n${flowDiagram}`;
if (this.mcpClient) {
await this.mcpClient.writeFileToWorktree(outputPath, contractData.name || contractId, prototypeContent);
}
// Create prototype node in Cognitive Canvas
const prototypeNodeId = await this.cognitiveCanvas.createPrototypeNode({
contractId,
pseudocode,
flowDiagram,
outputPath
});
// Link to contract
await this.cognitiveCanvas.linkPrototypeToContract(prototypeNodeId, contractId);
return {
success: true,
pseudocode,
flowDiagram,
outputPath,
architectureReady: true,
implementationNotes: `Prototype contains detailed pseudocode ready for implementation`,
metadata: {
contractId,
complexity: 'medium',
dependencies: []
},
tokenUsage: totalTokenUsage
};
}
catch (error) {
return {
success: false,
error: `Failed to process contract: ${error instanceof Error ? error.message : 'Unknown error'}`
};
}
}
async generatePseudocode(contract, pheromones = []) {
try {
const prompt = this.buildPseudocodePrompt(contract, pheromones);
const response = await this.claudeClient.sendMessage(prompt);
return response.content;
}
catch (error) {
throw new Error(`Failed to generate pseudocode: ${error instanceof Error ? error.message : 'Unknown error'}`);
}
}
async generatePseudocodeWithUsage(contract, pheromones = []) {
try {
const prompt = this.buildPseudocodePrompt(contract, pheromones);
return await this.claudeClient.sendMessage(prompt);
}
catch (error) {
throw new Error(`Failed to generate pseudocode: ${error instanceof Error ? error.message : 'Unknown error'}`);
}
}
async generateFlowDiagram(pseudocode) {
try {
const prompt = `Convert the following pseudocode into a Mermaid flowchart diagram:\n\n${pseudocode}`;
const response = await this.claudeClient.sendMessage(prompt);
return response.content;
}
catch (error) {
throw new Error(`Failed to generate flow diagram: ${error instanceof Error ? error.message : 'Unknown error'}`);
}
}
async generateFlowDiagramWithUsage(pseudocode) {
try {
const prompt = `Convert the following pseudocode into a Mermaid flowchart diagram:\n\n${pseudocode}`;
return await this.claudeClient.sendMessage(prompt);
}
catch (error) {
throw new Error(`Failed to generate flow diagram: ${error instanceof Error ? error.message : 'Unknown error'}`);
}
}
buildPseudocodePrompt(contract, pheromones) {
let prompt = `Generate detailed pseudocode for the following contract:\n\n`;
prompt += `Contract: ${JSON.stringify(contract, null, 2)}\n\n`;
if (pheromones.length > 0) {
prompt += `Apply these successful patterns (guide pheromones):\n`;
pheromones.forEach(p => {
prompt += `- ${p.context} (strength: ${p.strength})\n`;
});
prompt += '\n';
}
prompt += `Please provide:\n`;
prompt += `1. Detailed pseudocode for each endpoint\n`;
prompt += `2. Error handling paths\n`;
prompt += `3. Input validation logic\n`;
prompt += `4. Return value specifications\n`;
return prompt;
}
}
exports.PrototyperAgent = PrototyperAgent;
//# sourceMappingURL=prototyper-simple.js.map