UNPKG

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
/** * 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