UNPKG

mcp-adr-analysis-server

Version:

MCP server for analyzing Architectural Decision Records and project architecture

92 lines 3.35 kB
/** * Conversation Snapshot Resource - Current conversation context * URI Pattern: adr://conversation/snapshot */ import { URLSearchParams } from 'url'; import { ResourceGenerationResult } from './index.js'; import type { ConversationMemoryManager } from '../utils/conversation-memory-manager.js'; import type { ConversationContextSnapshot } from '../types/conversation-memory.js'; export interface ConversationSnapshotData { snapshot: ConversationContextSnapshot | null; timestamp: string; recentTurnCount: number; } /** * Generate conversation snapshot resource showing current session context. * * Returns a snapshot of the active conversation session including: * - Recent conversation turns * - Active knowledge graph intents * - Recorded architectural decisions * - Current conversation focus and next steps * * **URI Pattern:** `adr://conversation/snapshot` * * **Query Parameters:** * - `recentTurnCount`: Number of recent turns to include (default: 5) * * @param params - URL path parameters (none for this resource) * @param searchParams - URL query parameters for customization * @param memoryManager - ConversationMemoryManager instance (injected by MCP server) * * @returns Promise resolving to resource generation result containing: * - data: Conversation snapshot with session context (null if no active session) * - contentType: "application/json" * - lastModified: ISO timestamp of generation * - cacheKey: Unique identifier "conversation-snapshot" * - ttl: Cache duration (10 seconds) * - etag: Entity tag for cache validation * * @throws {McpAdrError} When: * - RESOURCE_GENERATION_ERROR: Memory manager not provided or snapshot retrieval fails * * @example * ```typescript * // Get conversation snapshot with default settings * const snapshot = await generateConversationSnapshotResource( * {}, * new URLSearchParams(), * memoryManager * ); * * if (snapshot.data.snapshot) { * console.log(`Session: ${snapshot.data.snapshot.sessionId}`); * console.log(`Recent turns: ${snapshot.data.snapshot.recentTurns.length}`); * console.log(`Active intents: ${snapshot.data.snapshot.activeIntents.length}`); * } * * // Get snapshot with more recent turns * const detailed = await generateConversationSnapshotResource( * {}, * new URLSearchParams('recentTurnCount=10'), * memoryManager * ); * * // Expected output structure: * { * data: { * snapshot: { * sessionId: "session-123", * recentTurns: [...], * activeIntents: [...], * decisionsRecorded: [...], * conversationFocus: { * topic: "Database architecture", * phase: "Decision making", * nextSteps: ["Review options", "Make decision"] * } * }, * timestamp: "2025-12-16T04:30:00.000Z", * recentTurnCount: 5 * }, * contentType: "application/json", * cacheKey: "conversation-snapshot", * ttl: 10 * } * ``` * * @since v2.2.0 * @see {@link ConversationMemoryManager.getContextSnapshot} for snapshot generation logic */ export declare function generateConversationSnapshotResource(_params: Record<string, string>, searchParams: URLSearchParams, memoryManager?: ConversationMemoryManager): Promise<ResourceGenerationResult>; //# sourceMappingURL=conversation-snapshot-resource.d.ts.map