auto_save_context
Automatically saves and compresses AI session context for backup, including progress, decisions, and code snippets, to preserve work and enable recovery.
Instructions
commit|checkpoint|backup|compress|auto-save - Auto-save and compress context
Input Schema
TableJSON Schema
| Name | Required | Description | Default |
|---|---|---|---|
| urgency | Yes | Urgency level | |
| contextType | Yes | Type of context to save | |
| sessionId | No | Current session identifier | |
| summary | No | Brief summary of current context | |
| fullContext | No | Full context to compress and save | |
| compress | No | Enable smart compression (default: true) |
Implementation Reference
- The primary handler function that executes the auto_save_context tool. It compresses context if provided, saves it to MemoryManager with priority based on urgency, and returns a success message with compression stats if applicable.export async function autoSaveContext(args: { urgency: string; contextType: string; sessionId?: string; summary?: string; fullContext?: string; compress?: boolean; }): Promise<ToolResult> { const { urgency, contextType, sessionId, summary, fullContext, compress = true } = args; try { const memoryManager = MemoryManager.getInstance(); let contextToSave = summary || ''; let compressionStats = null; // Apply smart compression if full context provided and compression enabled if (fullContext && compress) { const targetTokens = urgency === 'critical' ? 8000 : urgency === 'high' ? 7000 : 4000; const compressionResult = ContextCompressor.compress(fullContext, targetTokens); contextToSave = compressionResult.compressed; compressionStats = { originalTokens: ContextCompressor.estimateTokens(fullContext), compressedTokens: ContextCompressor.estimateTokens(compressionResult.compressed), ratio: Math.round(compressionResult.compressionRatio * 100), removed: compressionResult.removedSections.length }; } else if (fullContext) { contextToSave = fullContext; } const contextData = { timestamp: new Date().toISOString(), urgency, contextType, sessionId, summary, context: contextToSave, compressed: compress && !!fullContext, compressionStats }; const priority = urgency === 'high' || urgency === 'critical' ? 2 : urgency === 'medium' ? 1 : 0; const contextKey = sessionId ? `context:session_${sessionId}_${Date.now()}` : `context:${Date.now()}`; memoryManager.save(contextKey, JSON.stringify(contextData), 'context', priority); let resultText = `✓ Context saved: ${contextType} (${urgency})`; if (sessionId) resultText += `\nSession: ${sessionId}`; if (compressionStats) { resultText += `\nCompressed: ${compressionStats.originalTokens} → ${compressionStats.compressedTokens} tokens (${compressionStats.ratio}%)`; resultText += `\nRemoved: ${compressionStats.removed} low-priority sections`; } if (summary) resultText += `\n${summary}`; return { content: [{ type: 'text', text: resultText }] }; } catch (error) { return { content: [{ type: 'text', text: `✗ Error: ${error instanceof Error ? error.message : 'Unknown error'}` }] }; } }
- Defines the tool schema including name, description, inputSchema for parameters like urgency and contextType, and annotations.export const autoSaveContextDefinition: ToolDefinition = { name: 'auto_save_context', description: 'commit|checkpoint|backup|compress|auto-save - Auto-save and compress context', inputSchema: { type: 'object', properties: { urgency: { type: 'string', description: 'Urgency level', enum: ['low', 'medium', 'high', 'critical'] }, contextType: { type: 'string', description: 'Type of context to save', enum: ['progress', 'decisions', 'code-snippets', 'debugging', 'planning'] }, sessionId: { type: 'string', description: 'Current session identifier' }, summary: { type: 'string', description: 'Brief summary of current context' }, fullContext: { type: 'string', description: 'Full context to compress and save' }, compress: { type: 'boolean', description: 'Enable smart compression (default: true)' } }, required: ['urgency', 'contextType'] }, annotations: { title: 'Auto-Save Context', audience: ['user', 'assistant'] } };
- src/index.ts:104-160 (registration)Registers the autoSaveContextDefinition in the comprehensive tools array provided to the MCP server's listTools handler for tool discovery.const tools: ToolDefinition[] = [ // Time Utility Tools getCurrentTimeDefinition, // Semantic Code Analysis Tools (Serena-inspired) findSymbolDefinition, findReferencesDefinition, // Sequential Thinking Tools createThinkingChainDefinition, analyzeProblemDefinition, stepByStepAnalysisDefinition, breakDownProblemDefinition, thinkAloudProcessDefinition, formatAsPlanDefinition, // Browser Development Tools monitorConsoleLogsDefinition, inspectNetworkRequestsDefinition, // Memory Management Tools saveMemoryDefinition, recallMemoryDefinition, listMemoriesDefinition, deleteMemoryDefinition, searchMemoriesDefinition, updateMemoryDefinition, autoSaveContextDefinition, restoreSessionContextDefinition, prioritizeMemoryDefinition, startSessionDefinition, // Convention Tools getCodingGuideDefinition, applyQualityRulesDefinition, validateCodeQualityDefinition, analyzeComplexityDefinition, checkCouplingCohesionDefinition, suggestImprovementsDefinition, // Planning Tools generatePrdDefinition, createUserStoriesDefinition, analyzeRequirementsDefinition, featureRoadmapDefinition, // Prompt Enhancement Tools enhancePromptDefinition, analyzePromptDefinition, enhancePromptGeminiDefinition, // Reasoning Tools applyReasoningFrameworkDefinition, // UI Preview Tools previewUiAsciiDefinition ];
- src/index.ts:648-649 (registration)Registers the handler dispatch in the central executeToolCall switch statement within the CallToolRequestSchema handler.case 'auto_save_context': return await autoSaveContext(args as any) as CallToolResult;
- src/index.ts:59-59 (registration)Imports the handler function and tool definition from the implementation file.import { autoSaveContext, autoSaveContextDefinition } from './tools/memory/autoSaveContext.js';