memory-engineering
Version:
Advanced Memory-Aware Code Context System with claude-flow-inspired architecture, showcasing MongoDB + Voyage AI strategic positioning
76 lines ⢠3.5 kB
JavaScript
/**
* Memory Project Brief Tool
* Using claude-flow-inspired MemoryManager for conflict-free operations
*/
import { generateMemoryId } from '../utils/id-generator.js';
import { logger } from '../utils/logger.js';
export const memoryProjectBriefTool = {
name: 'memory_project_brief',
description: 'Store project requirements and core purpose',
inputSchema: {
type: 'object',
properties: {
projectPath: { type: 'string', description: 'Project path' },
projectName: { type: 'string', description: 'Project name' },
corePurpose: { type: 'string', description: 'Core purpose' },
requirements: { type: 'array', items: { type: 'string' } },
constraints: { type: 'array', items: { type: 'string' } },
successCriteria: { type: 'array', items: { type: 'string' } }
},
required: ['projectPath', 'projectName', 'corePurpose', 'requirements', 'constraints', 'successCriteria']
}
};
export function createMemoryProjectBriefHandler(memoryManager) {
return async (args) => {
try {
const { projectPath, projectName, corePurpose, requirements, constraints, successCriteria } = args;
const content = { projectName, corePurpose, requirements, constraints, successCriteria };
const searchableText = `${projectName} ${corePurpose} ${requirements.join(' ')} ${constraints.join(' ')} ${successCriteria.join(' ')}`;
const memoryId = generateMemoryId(projectPath, 'brief');
const existing = await memoryManager.retrieve(memoryId);
const memoryEntry = {
id: memoryId,
projectPath,
memoryType: 'brief',
content,
context: {
projectName,
requirementsCount: requirements.length,
constraintsCount: constraints.length,
successCriteriaCount: successCriteria.length
},
timestamp: new Date(),
tags: ['brief', 'requirements', 'project-definition'],
version: existing ? (existing.version + 1) : 1,
metadata: {
created: existing?.metadata?.created || new Date(),
lastUpdated: new Date(),
},
searchableText
};
const storedId = await memoryManager.store(memoryEntry);
logger.info('Project brief saved', {
projectPath,
projectName,
memoryId: storedId,
isNew: !existing,
version: memoryEntry.version
});
return {
content: [{
type: 'text',
text: 'ā
Project brief saved!\n\nYour project identity is established.\n\nšÆ Next: Use \'memory_product_context\' to define:\n- Problems being solved\n- User goals\n- Key features\n- Value proposition\n\nThis helps maintain focus on user needs.'
}],
isError: false
};
}
catch (error) {
logger.error('Failed to save project brief', error);
return {
content: [{ type: 'text', text: `ā Error: ${error instanceof Error ? error.message : 'Unknown error'}` }],
isError: true
};
}
};
}
//# sourceMappingURL=memory-project-brief.js.map