expand_memory
Retrieve and expand stored content from tiered responses using expandable IDs to access detailed architectural decision records and related context.
Instructions
Phase 3: Retrieve and expand stored content from a tiered response using its expandable ID
Input Schema
TableJSON Schema
| Name | Required | Description | Default |
|---|---|---|---|
| expandableId | Yes | Expandable ID from a tiered response | |
| section | No | Optional: specific section to expand | |
| includeContext | No | Include related conversation context and knowledge graph state |
Implementation Reference
- The core handler function for the 'expand_memory' tool. Retrieves full analysis content from a tiered response expandable ID using ConversationMemoryManager, formats it with metadata, related turns, and knowledge graph context.export async function expandMemory( args: { expandableId: string; section?: string; includeContext?: boolean; }, memoryManager: ConversationMemoryManager ): Promise<CallToolResult> { try { const request: MemoryExpansionRequest = { expandableId: args.expandableId, ...(args.section ? { section: args.section } : {}), includeContext: args.includeContext ?? true, }; const result = await memoryManager.expandContent(request); // Format the expanded content let output = `# Expanded Content: ${args.expandableId}\n\n`; // Show section or full content if (args.section && result.content.sections[args.section]) { output += `## Section: ${args.section}\n\n`; output += result.content.sections[args.section]; } else { output += `## Full Analysis\n\n`; output += result.content.content; } // Add metadata output += `\n\n---\n\n`; output += `**Tool**: ${result.content.metadata.toolName}\n`; output += `**Timestamp**: ${result.content.metadata.timestamp}\n`; output += `**Token Count**: ${result.content.metadata.tokenCount}\n`; // Add related turns if included if (result.relatedTurns && result.relatedTurns.length > 0) { output += `\n## Related Conversation Turns\n\n`; result.relatedTurns.forEach(turn => { output += `- **Turn ${turn.turnNumber}** (${turn.timestamp}): `; output += `${turn.request.toolName || 'message'}\n`; }); } // Add knowledge graph context if included if (result.knowledgeGraphContext && result.knowledgeGraphContext.length > 0) { output += `\n## Knowledge Graph Context\n\n`; result.knowledgeGraphContext.forEach(context => { output += `- **${context.intent}**: ${context.outcome} (${context.timestamp})\n`; }); } return { content: [ { type: 'text', text: output, }, ], }; } catch (error) { return { content: [ { type: 'text', text: `❌ Failed to expand content: ${error instanceof Error ? error.message : String(error)}`, }, ], isError: true, }; } }
- Type definition for MemoryExpansionRequest, which defines the input parameters for the expandMemory handler (expandableId, section, includeContext).export interface MemoryExpansionRequest { /** Expandable ID from tiered response */ expandableId: string; /** Optional: specific section to expand */ section?: string;
- src/tools/tool-catalog.ts:900-919 (registration)Metadata and approximate schema registration for the 'expand_memory' tool in the central tool catalog used for discovery and ListTools responses.TOOL_CATALOG.set('expand_memory', { name: 'expand_memory', shortDescription: 'Expand memory with new context', fullDescription: 'Expands memory with additional context information.', category: 'memory', complexity: 'simple', tokenCost: { min: 300, max: 800 }, hasCEMCPDirective: true, // Phase 4.3: Simple tool - memory storage relatedTools: ['memory_loading', 'get_memory_stats'], keywords: ['memory', 'expand', 'add', 'context'], requiresAI: false, inputSchema: { type: 'object', properties: { key: { type: 'string' }, value: { type: 'object' }, }, required: ['key', 'value'], }, });
- Function signature and dependencies showing integration with ConversationMemoryManager.export async function expandMemory( args: { expandableId: string; section?: string; includeContext?: boolean; }, memoryManager: ConversationMemoryManager ): Promise<CallToolResult> { try { const request: MemoryExpansionRequest = { expandableId: args.expandableId, ...(args.section ? { section: args.section } : {}), includeContext: args.includeContext ?? true, }; const result = await memoryManager.expandContent(request); // Format the expanded content let output = `# Expanded Content: ${args.expandableId}\n\n`; // Show section or full content if (args.section && result.content.sections[args.section]) { output += `## Section: ${args.section}\n\n`; output += result.content.sections[args.section]; } else { output += `## Full Analysis\n\n`; output += result.content.content; } // Add metadata output += `\n\n---\n\n`; output += `**Tool**: ${result.content.metadata.toolName}\n`; output += `**Timestamp**: ${result.content.metadata.timestamp}\n`; output += `**Token Count**: ${result.content.metadata.tokenCount}\n`; // Add related turns if included if (result.relatedTurns && result.relatedTurns.length > 0) { output += `\n## Related Conversation Turns\n\n`; result.relatedTurns.forEach(turn => { output += `- **Turn ${turn.turnNumber}** (${turn.timestamp}): `; output += `${turn.request.toolName || 'message'}\n`; }); } // Add knowledge graph context if included if (result.knowledgeGraphContext && result.knowledgeGraphContext.length > 0) { output += `\n## Knowledge Graph Context\n\n`; result.knowledgeGraphContext.forEach(context => { output += `- **${context.intent}**: ${context.outcome} (${context.timestamp})\n`; }); } return { content: [ { type: 'text', text: output, }, ], }; } catch (error) { return { content: [ { type: 'text', text: `❌ Failed to expand content: ${error instanceof Error ? error.message : String(error)}`, }, ], isError: true, }; } }
- Reference listing of the tool in server context generator with accurate description matching handler purpose.{ name: 'expand_memory', description: 'Retrieve and expand stored content from tiered responses',