@lanonasis/mem-intel-sdk 1.0.0 → 1.0.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (47) hide show
  1. package/CHANGELOG.md +16 -0
  2. package/README.md +50 -21
  3. package/dist/core/client.d.ts +2 -2
  4. package/dist/core/client.d.ts.map +1 -1
  5. package/dist/core/index.cjs.map +1 -1
  6. package/dist/core/index.d.ts +3 -3
  7. package/dist/core/index.d.ts.map +1 -1
  8. package/dist/core/index.js.map +1 -1
  9. package/dist/index-sdk.d.ts +3 -3
  10. package/dist/index-sdk.d.ts.map +1 -1
  11. package/dist/index.cjs.map +1 -1
  12. package/dist/index.js.map +1 -1
  13. package/dist/node/client.d.ts +2 -2
  14. package/dist/node/client.d.ts.map +1 -1
  15. package/dist/node/index.cjs.map +1 -1
  16. package/dist/node/index.d.ts +3 -3
  17. package/dist/node/index.d.ts.map +1 -1
  18. package/dist/node/index.js.map +1 -1
  19. package/dist/react/context/MemoryIntelligenceProvider.d.ts +2 -2
  20. package/dist/react/context/MemoryIntelligenceProvider.d.ts.map +1 -1
  21. package/dist/react/hooks/useMemoryIntelligence.d.ts +2 -2
  22. package/dist/react/hooks/useMemoryIntelligence.d.ts.map +1 -1
  23. package/dist/react/index.cjs +3 -6
  24. package/dist/react/index.cjs.map +1 -1
  25. package/dist/react/index.d.ts +4 -4
  26. package/dist/react/index.d.ts.map +1 -1
  27. package/dist/react/index.js +3 -6
  28. package/dist/react/index.js.map +1 -1
  29. package/dist/server/index.cjs.map +1 -1
  30. package/dist/server/index.d.ts +3 -3
  31. package/dist/server/index.d.ts.map +1 -1
  32. package/dist/server/index.js.map +1 -1
  33. package/dist/server/mcp-server.d.ts +1 -1
  34. package/dist/server/mcp-server.d.ts.map +1 -1
  35. package/dist/utils/embeddings.d.ts +1 -1
  36. package/dist/utils/embeddings.d.ts.map +1 -1
  37. package/dist/utils/formatting.d.ts +1 -1
  38. package/dist/utils/formatting.d.ts.map +1 -1
  39. package/dist/utils/index.d.ts +5 -5
  40. package/dist/utils/index.d.ts.map +1 -1
  41. package/dist/vue/composables/useMemoryIntelligence.d.ts +1 -1
  42. package/dist/vue/composables/useMemoryIntelligence.d.ts.map +1 -1
  43. package/dist/vue/index.cjs.map +1 -1
  44. package/dist/vue/index.d.ts +3 -3
  45. package/dist/vue/index.d.ts.map +1 -1
  46. package/dist/vue/index.js.map +1 -1
  47. package/package.json +4 -4
@@ -1 +1 @@
1
- {"version":3,"sources":["../../src/core/errors.ts","../../src/utils/http-client.ts","../../src/core/client.ts","../../src/core/types.ts","../../src/utils/formatting.ts","../../src/server/mcp-server.ts"],"names":["z","McpServer"],"mappings":"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","file":"index.cjs","sourcesContent":["/**\n * SDK-specific error classes\n */\n\nexport class MemoryIntelligenceError extends Error {\n constructor(message: string) {\n super(message);\n this.name = \"MemoryIntelligenceError\";\n }\n}\n\nexport class ConfigurationError extends MemoryIntelligenceError {\n constructor(message: string) {\n super(message);\n this.name = \"ConfigurationError\";\n }\n}\n\nexport class MemoryNotFoundError extends MemoryIntelligenceError {\n constructor(memoryId: string) {\n super(`Memory not found: ${memoryId}`);\n this.name = \"MemoryNotFoundError\";\n }\n}\n\nexport class DatabaseError extends MemoryIntelligenceError {\n constructor(message: string, public originalError?: Error) {\n super(message);\n this.name = \"DatabaseError\";\n }\n}\n\nexport class EmbeddingError extends MemoryIntelligenceError {\n constructor(message: string, public originalError?: Error) {\n super(message);\n this.name = \"EmbeddingError\";\n }\n}\n\nexport class ValidationError extends MemoryIntelligenceError {\n constructor(message: string) {\n super(message);\n this.name = \"ValidationError\";\n }\n}\n","/**\n * HTTP client for Lanonasis API\n */\n\nimport { ConfigurationError } from \"../core/errors\";\n\nexport interface HttpClientConfig {\n apiUrl: string;\n apiKey: string;\n timeout?: number;\n headers?: Record<string, string>;\n}\n\nexport interface ApiResponse<T = any> {\n data?: T;\n error?: {\n message: string;\n code?: string;\n };\n status: number;\n}\n\nexport class HttpClient {\n private apiUrl: string;\n private apiKey: string;\n private timeout: number;\n private headers: Record<string, string>;\n\n constructor(config: HttpClientConfig) {\n if (!config.apiKey) {\n throw new ConfigurationError(\"API key is required\");\n }\n\n if (!config.apiKey.startsWith(\"lano_\")) {\n throw new ConfigurationError(\n \"Invalid API key format. API key should start with 'lano_'\"\n );\n }\n\n this.apiUrl = config.apiUrl.replace(/\\/$/, \"\"); // Remove trailing slash\n this.apiKey = config.apiKey;\n this.timeout = config.timeout || 30000;\n this.headers = {\n \"Content-Type\": \"application/json\",\n \"X-API-Key\": this.apiKey,\n ...config.headers,\n };\n }\n\n private async request<T>(\n method: string,\n endpoint: string,\n data?: any\n ): Promise<ApiResponse<T>> {\n const url = `${this.apiUrl}${endpoint}`;\n const controller = new AbortController();\n const timeoutId = setTimeout(() => controller.abort(), this.timeout);\n\n try {\n const options: RequestInit = {\n method,\n headers: this.headers,\n signal: controller.signal,\n };\n\n if (data && (method === \"POST\" || method === \"PUT\" || method === \"PATCH\")) {\n options.body = JSON.stringify(data);\n }\n\n const response = await fetch(url, options);\n clearTimeout(timeoutId);\n\n const responseData = await response.json() as any;\n\n if (!response.ok) {\n return {\n status: response.status,\n error: {\n message: responseData?.message || responseData?.error || \"Request failed\",\n code: responseData?.code,\n },\n };\n }\n\n return {\n status: response.status,\n data: responseData as T,\n };\n } catch (error) {\n clearTimeout(timeoutId);\n\n if (error instanceof Error) {\n if (error.name === \"AbortError\") {\n return {\n status: 408,\n error: {\n message: `Request timeout after ${this.timeout}ms`,\n code: \"TIMEOUT\",\n },\n };\n }\n\n return {\n status: 0,\n error: {\n message: error.message,\n code: \"NETWORK_ERROR\",\n },\n };\n }\n\n return {\n status: 0,\n error: {\n message: \"Unknown error occurred\",\n code: \"UNKNOWN_ERROR\",\n },\n };\n }\n }\n\n async get<T>(endpoint: string): Promise<ApiResponse<T>> {\n return this.request<T>(\"GET\", endpoint);\n }\n\n async post<T>(endpoint: string, data?: any): Promise<ApiResponse<T>> {\n return this.request<T>(\"POST\", endpoint, data);\n }\n\n async put<T>(endpoint: string, data?: any): Promise<ApiResponse<T>> {\n return this.request<T>(\"PUT\", endpoint, data);\n }\n\n async patch<T>(endpoint: string, data?: any): Promise<ApiResponse<T>> {\n return this.request<T>(\"PATCH\", endpoint, data);\n }\n\n async delete<T>(endpoint: string): Promise<ApiResponse<T>> {\n return this.request<T>(\"DELETE\", endpoint);\n }\n}\n","/**\n * Core Memory Intelligence Client\n */\n\nimport {\n MemoryIntelligenceConfig,\n AnalyzePatternsParams,\n PatternAnalysis,\n SuggestTagsParams,\n TagSuggestionsResult,\n FindRelatedParams,\n RelatedMemoriesResult,\n DetectDuplicatesParams,\n DuplicatesResult,\n ExtractInsightsParams,\n InsightsResult,\n HealthCheckParams,\n MemoryHealth,\n QueryMemoriesOptions,\n MemoryEntry,\n} from \"./types\";\nimport { ConfigurationError, DatabaseError } from \"./errors\";\nimport { HttpClient } from \"../utils/http-client\";\n\nconst DEFAULT_API_URL = \"https://api.lanonasis.com/api/v1\";\n\nexport class MemoryIntelligenceClient {\n private httpClient: HttpClient;\n private defaultResponseFormat: \"json\" | \"markdown\";\n\n constructor(config: MemoryIntelligenceConfig) {\n // Validate configuration\n if (!config.apiKey) {\n throw new ConfigurationError(\n \"Missing required configuration: apiKey is required (format: lano_xxxxxxxxxx)\"\n );\n }\n\n this.httpClient = new HttpClient({\n apiUrl: config.apiUrl || DEFAULT_API_URL,\n apiKey: config.apiKey,\n timeout: config.timeout,\n headers: config.headers,\n });\n\n this.defaultResponseFormat = config.responseFormat || \"markdown\";\n }\n\n /**\n * Get HTTP client for direct API access\n */\n public getHttpClient(): HttpClient {\n return this.httpClient;\n }\n\n /**\n * Query memories from the API\n */\n public async queryMemories(\n userId: string,\n options: QueryMemoriesOptions = {}\n ): Promise<MemoryEntry[]> {\n const { type, limit = 100, offset = 0 } = options;\n\n const params = new URLSearchParams({\n user_id: userId,\n limit: limit.toString(),\n offset: offset.toString(),\n });\n\n if (type) {\n params.append(\"type\", type);\n }\n\n const response = await this.httpClient.get<{ memories: MemoryEntry[] }>(\n `/intelligence/memories?${params.toString()}`\n );\n\n if (response.error) {\n throw new DatabaseError(`Failed to query memories: ${response.error.message}`);\n }\n\n return response.data?.memories || [];\n }\n\n /**\n * Analyze usage patterns and trends in memory collection\n */\n async analyzePatterns(params: AnalyzePatternsParams): Promise<PatternAnalysis> {\n const response = await this.httpClient.post<PatternAnalysis>(\n \"/intelligence/analyze-patterns\",\n {\n ...params,\n responseFormat: params.responseFormat || this.defaultResponseFormat,\n }\n );\n\n if (response.error) {\n throw new DatabaseError(`Failed to analyze patterns: ${response.error.message}`);\n }\n\n return response.data!;\n }\n\n /**\n * Get AI-powered tag suggestions for a memory\n */\n async suggestTags(params: SuggestTagsParams): Promise<TagSuggestionsResult> {\n const response = await this.httpClient.post<TagSuggestionsResult>(\n \"/intelligence/suggest-tags\",\n {\n ...params,\n responseFormat: params.responseFormat || this.defaultResponseFormat,\n }\n );\n\n if (response.error) {\n throw new DatabaseError(`Failed to suggest tags: ${response.error.message}`);\n }\n\n return response.data!;\n }\n\n /**\n * Find semantically related memories using vector similarity\n */\n async findRelated(params: FindRelatedParams): Promise<RelatedMemoriesResult> {\n const response = await this.httpClient.post<RelatedMemoriesResult>(\n \"/intelligence/find-related\",\n {\n ...params,\n responseFormat: params.responseFormat || this.defaultResponseFormat,\n }\n );\n\n if (response.error) {\n throw new DatabaseError(`Failed to find related memories: ${response.error.message}`);\n }\n\n return response.data!;\n }\n\n /**\n * Detect potential duplicate memories\n */\n async detectDuplicates(params: DetectDuplicatesParams): Promise<DuplicatesResult> {\n const response = await this.httpClient.post<DuplicatesResult>(\n \"/intelligence/detect-duplicates\",\n {\n ...params,\n responseFormat: params.responseFormat || this.defaultResponseFormat,\n }\n );\n\n if (response.error) {\n throw new DatabaseError(`Failed to detect duplicates: ${response.error.message}`);\n }\n\n return response.data!;\n }\n\n /**\n * Extract insights and patterns from memories\n */\n async extractInsights(params: ExtractInsightsParams): Promise<InsightsResult> {\n const response = await this.httpClient.post<InsightsResult>(\n \"/intelligence/extract-insights\",\n {\n ...params,\n responseFormat: params.responseFormat || this.defaultResponseFormat,\n }\n );\n\n if (response.error) {\n throw new DatabaseError(`Failed to extract insights: ${response.error.message}`);\n }\n\n return response.data!;\n }\n\n /**\n * Check the health and organization quality of memories\n */\n async healthCheck(params: HealthCheckParams): Promise<MemoryHealth> {\n const response = await this.httpClient.post<MemoryHealth>(\n \"/intelligence/health-check\",\n {\n ...params,\n responseFormat: params.responseFormat || this.defaultResponseFormat,\n }\n );\n\n if (response.error) {\n throw new DatabaseError(`Failed to check health: ${response.error.message}`);\n }\n\n return response.data!;\n }\n}\n","/**\n * Type definitions for Memory Intelligence SDK\n */\n\nimport { z } from \"zod\";\n\n// Response format enum\nexport const ResponseFormat = {\n JSON: \"json\",\n MARKDOWN: \"markdown\",\n} as const;\n\nexport type ResponseFormatType = (typeof ResponseFormat)[keyof typeof ResponseFormat];\n\n// Memory type enum\nexport const MemoryType = z.enum([\n \"context\",\n \"project\",\n \"knowledge\",\n \"reference\",\n \"personal\",\n \"workflow\",\n]);\n\nexport type MemoryTypeValue = z.infer<typeof MemoryType>;\n\n// Configuration interface\nexport interface MemoryIntelligenceConfig {\n apiUrl?: string; // Lanonasis API URL (default: https://api.lanonasis.com/api/v1)\n apiKey: string; // Lanonasis API key (format: lano_xxxxxxxxxx)\n timeout?: number; // Request timeout in milliseconds (default: 30000)\n responseFormat?: ResponseFormatType;\n headers?: Record<string, string>; // Custom headers\n}\n\n// Tool parameter interfaces\nexport interface AnalyzePatternsParams {\n userId: string;\n timeRangeDays?: number;\n responseFormat?: ResponseFormatType;\n}\n\nexport interface SuggestTagsParams {\n memoryId: string;\n userId: string;\n maxSuggestions?: number;\n includeExistingTags?: boolean;\n responseFormat?: ResponseFormatType;\n}\n\nexport interface FindRelatedParams {\n memoryId: string;\n userId: string;\n limit?: number;\n similarityThreshold?: number;\n responseFormat?: ResponseFormatType;\n}\n\nexport interface DetectDuplicatesParams {\n userId: string;\n similarityThreshold?: number;\n maxPairs?: number;\n responseFormat?: ResponseFormatType;\n}\n\nexport interface ExtractInsightsParams {\n userId: string;\n topic?: string;\n memoryType?: MemoryTypeValue;\n maxMemories?: number;\n responseFormat?: ResponseFormatType;\n}\n\nexport interface HealthCheckParams {\n userId: string;\n responseFormat?: ResponseFormatType;\n}\n\n// Tool result interfaces\nexport interface PatternAnalysis {\n total_memories: number;\n memories_by_type: Record<string, number>;\n memories_by_day_of_week: Record<string, number>;\n peak_creation_hours: number[];\n average_content_length: number;\n most_common_tags: Array<{ tag: string; count: number }>;\n creation_velocity: {\n daily_average: number;\n trend: \"increasing\" | \"stable\" | \"decreasing\";\n };\n insights: string[];\n}\n\nexport interface TagSuggestion {\n tag: string;\n confidence: number;\n reasoning: string;\n}\n\nexport interface TagSuggestionsResult {\n memory_id: string;\n existing_tags: string[];\n suggestions: TagSuggestion[];\n context: {\n memory_type: string;\n related_memories_analyzed: number;\n };\n}\n\nexport interface RelatedMemory {\n id: string;\n title: string;\n type: string;\n similarity_score: number;\n shared_tags: string[];\n content_preview: string;\n}\n\nexport interface RelatedMemoriesResult {\n source_memory: {\n id: string;\n title: string;\n type: string;\n };\n related_memories: RelatedMemory[];\n total_found: number;\n}\n\nexport interface DuplicatePair {\n memory_1: {\n id: string;\n title: string;\n created_at: string;\n };\n memory_2: {\n id: string;\n title: string;\n created_at: string;\n };\n similarity_score: number;\n recommendation: \"keep_newer\" | \"keep_older\" | \"merge\" | \"review_manually\";\n reasoning: string;\n}\n\nexport interface DuplicatesResult {\n total_memories_analyzed: number;\n duplicate_pairs_found: number;\n duplicate_pairs: DuplicatePair[];\n estimated_storage_savings: string;\n}\n\nexport interface Insight {\n category: \"pattern\" | \"learning\" | \"opportunity\" | \"risk\" | \"action_item\";\n title: string;\n description: string;\n confidence: number;\n supporting_memories: string[];\n}\n\nexport interface InsightsResult {\n total_memories_analyzed: number;\n insights: Insight[];\n summary: string;\n topic_filter?: string;\n type_filter?: string;\n}\n\nexport interface MemoryHealth {\n user_id: string;\n health_score: number;\n metrics: {\n total_memories: number;\n memories_with_embeddings: number;\n embedding_coverage_percentage: number;\n memories_with_tags: number;\n tagging_percentage: number;\n average_tags_per_memory: number;\n memories_by_type: Record<string, number>;\n };\n issues: string[];\n recommendations: string[];\n analysis_date: string;\n}\n\n// Memory entry interface (from database)\nexport interface MemoryEntry {\n id: string;\n user_id: string;\n title: string;\n content: string;\n type: MemoryTypeValue;\n tags?: string[];\n metadata?: Record<string, any>;\n embedding?: number[];\n created_at: string;\n updated_at: string;\n}\n\n// Query options for internal use\nexport interface QueryMemoriesOptions {\n type?: string;\n limit?: number;\n offset?: number;\n includeEmbeddings?: boolean;\n}\n","/**\n * Response formatting utilities\n */\n\nimport { ResponseFormat, ResponseFormatType } from \"../core/types\";\n\n// Character limit for responses\nconst CHARACTER_LIMIT = 50000;\n\n/**\n * Format response based on requested format\n */\nexport function formatResponse<T>(\n data: T,\n format: ResponseFormatType,\n markdownFormatter: (data: T) => string\n): string {\n if (format === ResponseFormat.JSON) {\n return JSON.stringify(data, null, 2);\n }\n return markdownFormatter(data);\n}\n\n/**\n * Truncate response if too long\n */\nexport function truncateIfNeeded(text: string): string {\n if (text.length > CHARACTER_LIMIT) {\n return (\n text.substring(0, CHARACTER_LIMIT) +\n `\\n\\n... (truncated, ${text.length - CHARACTER_LIMIT} characters omitted)`\n );\n }\n return text;\n}\n","/**\n * MCP Server wrapper using the SDK\n */\n\nimport { McpServer } from \"@modelcontextprotocol/sdk/server/mcp.js\";\nimport { z } from \"zod\";\nimport { MemoryIntelligenceClient } from \"../core/client\";\nimport { MemoryIntelligenceConfig, ResponseFormat } from \"../core/types\";\nimport { formatResponse, truncateIfNeeded } from \"../utils/formatting\";\n\nexport function createMCPServer(config: MemoryIntelligenceConfig) {\n const client = new MemoryIntelligenceClient(config);\n const server = new McpServer({\n name: \"memory-intelligence-mcp-server\",\n version: \"1.0.0\",\n });\n\n // Register analyze patterns tool\n server.registerTool(\n \"memory_analyze_patterns\",\n {\n title: \"Analyze Memory Patterns\",\n description: `Analyze usage patterns and trends in the user's memory collection.`,\n inputSchema: z.object({\n user_id: z.string().uuid(),\n time_range_days: z.number().int().min(1).max(365).default(30),\n response_format: z\n .enum([ResponseFormat.JSON, ResponseFormat.MARKDOWN])\n .default(ResponseFormat.MARKDOWN),\n }).strict(),\n annotations: {\n readOnlyHint: true,\n destructiveHint: false,\n idempotentHint: true,\n openWorldHint: true,\n },\n },\n async (rawParams: any) => {\n try {\n const params = {\n userId: rawParams.user_id,\n timeRangeDays: rawParams.time_range_days,\n responseFormat: rawParams.response_format,\n };\n\n const analysis = await client.analyzePatterns(params);\n const responseText = formatResponse(\n analysis,\n params.responseFormat || \"markdown\",\n (data) => {\n let md = `# Memory Pattern Analysis\\n\\n`;\n md += `**Time Range:** Last ${params.timeRangeDays || 30} days\\n`;\n md += `**Total Memories:** ${data.total_memories}\\n\\n`;\n md += `## Distribution by Type\\n`;\n for (const [type, count] of Object.entries(data.memories_by_type)) {\n const percentage = ((count / data.total_memories) * 100).toFixed(1);\n md += `- **${type}**: ${count} (${percentage}%)\\n`;\n }\n md += `\\n## Activity Patterns\\n`;\n md += `- **Peak Hours (UTC):** ${data.peak_creation_hours.join(\", \")}\\n`;\n md += `- **Daily Average:** ${data.creation_velocity.daily_average} memories/day\\n`;\n md += `- **Trend:** ${data.creation_velocity.trend}\\n`;\n md += `\\n## Top Tags\\n`;\n for (const { tag, count } of data.most_common_tags.slice(0, 5)) {\n md += `- **${tag}**: ${count} uses\\n`;\n }\n md += `\\n## AI Insights\\n`;\n for (const insight of data.insights) {\n md += `${insight}\\n`;\n }\n return md;\n }\n );\n\n return {\n content: [{ type: \"text\" as const, text: truncateIfNeeded(responseText) }],\n };\n } catch (error) {\n return {\n isError: true,\n content: [\n {\n type: \"text\" as const,\n text: `Error: ${error instanceof Error ? error.message : \"Unknown error\"}`,\n },\n ],\n };\n }\n }\n );\n\n // Register suggest tags tool\n server.registerTool(\n \"memory_suggest_tags\",\n {\n title: \"Suggest Tags for Memory\",\n description: `AI-powered tag suggestions for a memory.`,\n inputSchema: z.object({\n memory_id: z.string().uuid(),\n user_id: z.string().uuid(),\n max_suggestions: z.number().int().min(1).max(20).default(5),\n include_existing_tags: z.boolean().default(true),\n response_format: z\n .enum([ResponseFormat.JSON, ResponseFormat.MARKDOWN])\n .default(ResponseFormat.MARKDOWN),\n }).strict(),\n annotations: {\n readOnlyHint: true,\n destructiveHint: false,\n idempotentHint: false,\n openWorldHint: true,\n },\n },\n async (rawParams: any) => {\n try {\n const params = {\n memoryId: rawParams.memory_id,\n userId: rawParams.user_id,\n maxSuggestions: rawParams.max_suggestions,\n includeExistingTags: rawParams.include_existing_tags,\n responseFormat: rawParams.response_format,\n };\n\n const result = await client.suggestTags(params);\n const responseText = formatResponse(\n result,\n params.responseFormat || \"markdown\",\n (data) => {\n let md = `# Tag Suggestions\\n\\n`;\n md += `**Existing Tags:** ${data.existing_tags.join(\", \") || \"none\"}\\n\\n`;\n md += `## Suggested Tags\\n`;\n for (const suggestion of data.suggestions) {\n md += `\\n### \\`${suggestion.tag}\\`\\n`;\n md += `**Confidence:** ${(suggestion.confidence * 100).toFixed(0)}%\\n`;\n md += `**Reason:** ${suggestion.reasoning}\\n`;\n }\n return md;\n }\n );\n\n return {\n content: [{ type: \"text\" as const, text: truncateIfNeeded(responseText) }],\n };\n } catch (error) {\n return {\n isError: true,\n content: [\n {\n type: \"text\" as const,\n text: `Error: ${error instanceof Error ? error.message : \"Unknown error\"}`,\n },\n ],\n };\n }\n }\n );\n\n // Register find related tool\n server.registerTool(\n \"memory_find_related\",\n {\n title: \"Find Related Memories\",\n description: `Find semantically related memories using vector similarity.`,\n inputSchema: z.object({\n memory_id: z.string().uuid(),\n user_id: z.string().uuid(),\n limit: z.number().int().min(1).max(50).default(10),\n similarity_threshold: z.number().min(0).max(1).default(0.7),\n response_format: z\n .enum([ResponseFormat.JSON, ResponseFormat.MARKDOWN])\n .default(ResponseFormat.MARKDOWN),\n }).strict(),\n annotations: {\n readOnlyHint: true,\n destructiveHint: false,\n idempotentHint: true,\n openWorldHint: true,\n },\n },\n async (rawParams: any) => {\n try {\n const params = {\n memoryId: rawParams.memory_id,\n userId: rawParams.user_id,\n limit: rawParams.limit,\n similarityThreshold: rawParams.similarity_threshold,\n responseFormat: rawParams.response_format,\n };\n\n const result = await client.findRelated(params);\n const responseText = formatResponse(\n result,\n params.responseFormat || \"markdown\",\n (data) => {\n let md = `# Related Memories\\n\\n`;\n md += `**Source:** ${data.source_memory.title}\\n`;\n md += `**Found:** ${data.total_found} related memories\\n\\n`;\n for (const mem of data.related_memories) {\n md += `## ${mem.title}\\n`;\n md += `**Similarity:** ${(mem.similarity_score * 100).toFixed(1)}%\\n`;\n if (mem.shared_tags.length > 0) {\n md += `**Shared Tags:** ${mem.shared_tags.join(\", \")}\\n`;\n }\n md += `**Preview:** ${mem.content_preview}\\n\\n`;\n }\n return md;\n }\n );\n\n return {\n content: [{ type: \"text\" as const, text: truncateIfNeeded(responseText) }],\n };\n } catch (error) {\n return {\n isError: true,\n content: [\n {\n type: \"text\" as const,\n text: `Error: ${error instanceof Error ? error.message : \"Unknown error\"}`,\n },\n ],\n };\n }\n }\n );\n\n // Register detect duplicates tool\n server.registerTool(\n \"memory_detect_duplicates\",\n {\n title: \"Detect Duplicate Memories\",\n description: `Find potential duplicate memories.`,\n inputSchema: z.object({\n user_id: z.string().uuid(),\n similarity_threshold: z.number().min(0.8).max(0.99).default(0.9),\n max_pairs: z.number().int().min(1).max(100).default(20),\n response_format: z\n .enum([ResponseFormat.JSON, ResponseFormat.MARKDOWN])\n .default(ResponseFormat.MARKDOWN),\n }).strict(),\n annotations: {\n readOnlyHint: true,\n destructiveHint: false,\n idempotentHint: true,\n openWorldHint: true,\n },\n },\n async (rawParams: any) => {\n try {\n const params = {\n userId: rawParams.user_id,\n similarityThreshold: rawParams.similarity_threshold,\n maxPairs: rawParams.max_pairs,\n responseFormat: rawParams.response_format,\n };\n\n const result = await client.detectDuplicates(params);\n const responseText = formatResponse(\n result,\n params.responseFormat || \"markdown\",\n (data) => {\n let md = `# Duplicate Detection\\n\\n`;\n md += `**Memories Analyzed:** ${data.total_memories_analyzed}\\n`;\n md += `**Duplicate Pairs Found:** ${data.duplicate_pairs_found}\\n`;\n md += `**Storage Savings:** ${data.estimated_storage_savings}\\n\\n`;\n for (const pair of data.duplicate_pairs) {\n md += `### Similarity: ${(pair.similarity_score * 100).toFixed(1)}%\\n`;\n md += `**Memory 1:** ${pair.memory_1.title}\\n`;\n md += `**Memory 2:** ${pair.memory_2.title}\\n`;\n md += `**Recommendation:** ${pair.recommendation}\\n\\n`;\n }\n return md;\n }\n );\n\n return {\n content: [{ type: \"text\" as const, text: truncateIfNeeded(responseText) }],\n };\n } catch (error) {\n return {\n isError: true,\n content: [\n {\n type: \"text\" as const,\n text: `Error: ${error instanceof Error ? error.message : \"Unknown error\"}`,\n },\n ],\n };\n }\n }\n );\n\n // Register extract insights tool\n server.registerTool(\n \"memory_extract_insights\",\n {\n title: \"Extract Insights from Memories\",\n description: `Extract key insights and patterns from memories.`,\n inputSchema: z.object({\n user_id: z.string().uuid(),\n topic: z.string().optional(),\n memory_type: z.string().optional(),\n max_memories: z.number().int().min(5).max(100).default(20),\n response_format: z\n .enum([ResponseFormat.JSON, ResponseFormat.MARKDOWN])\n .default(ResponseFormat.MARKDOWN),\n }).strict(),\n annotations: {\n readOnlyHint: true,\n destructiveHint: false,\n idempotentHint: false,\n openWorldHint: true,\n },\n },\n async (rawParams: any) => {\n try {\n const params = {\n userId: rawParams.user_id,\n topic: rawParams.topic,\n memoryType: rawParams.memory_type,\n maxMemories: rawParams.max_memories,\n responseFormat: rawParams.response_format,\n };\n\n const result = await client.extractInsights(params);\n const responseText = formatResponse(\n result,\n params.responseFormat || \"markdown\",\n (data) => {\n let md = `# Memory Insights\\n\\n`;\n md += `**Memories Analyzed:** ${data.total_memories_analyzed}\\n`;\n if (data.topic_filter) {\n md += `**Topic:** ${data.topic_filter}\\n`;\n }\n md += `\\n## Summary\\n${data.summary}\\n\\n`;\n md += `## Insights\\n`;\n for (const insight of data.insights) {\n const icon = {\n pattern: \"🔄\",\n learning: \"💡\",\n opportunity: \"🚀\",\n risk: \"⚠️\",\n action_item: \"✅\",\n }[insight.category] || \"📌\";\n md += `\\n### ${icon} ${insight.title}\\n`;\n md += `${insight.description}\\n`;\n md += `**Confidence:** ${(insight.confidence * 100).toFixed(0)}%\\n`;\n }\n return md;\n }\n );\n\n return {\n content: [{ type: \"text\" as const, text: truncateIfNeeded(responseText) }],\n };\n } catch (error) {\n return {\n isError: true,\n content: [\n {\n type: \"text\" as const,\n text: `Error: ${error instanceof Error ? error.message : \"Unknown error\"}`,\n },\n ],\n };\n }\n }\n );\n\n // Register health check tool\n server.registerTool(\n \"memory_health_check\",\n {\n title: \"Memory Health Check\",\n description: `Analyze the health and organization quality of memories.`,\n inputSchema: z.object({\n user_id: z.string().uuid(),\n response_format: z\n .enum([ResponseFormat.JSON, ResponseFormat.MARKDOWN])\n .default(ResponseFormat.MARKDOWN),\n }).strict(),\n annotations: {\n readOnlyHint: true,\n destructiveHint: false,\n idempotentHint: true,\n openWorldHint: true,\n },\n },\n async (rawParams: any) => {\n try {\n const params = {\n userId: rawParams.user_id,\n responseFormat: rawParams.response_format,\n };\n\n const result = await client.healthCheck(params);\n const responseText = formatResponse(\n result,\n params.responseFormat || \"markdown\",\n (data) => {\n let md = `# Memory Health Check\\n\\n`;\n md += `**Health Score:** ${data.health_score}/100\\n\\n`;\n md += `## Metrics\\n`;\n md += `- **Total Memories:** ${data.metrics.total_memories}\\n`;\n md += `- **Embedding Coverage:** ${data.metrics.embedding_coverage_percentage}%\\n`;\n md += `- **Tagging Rate:** ${data.metrics.tagging_percentage}%\\n`;\n md += `- **Avg Tags/Memory:** ${data.metrics.average_tags_per_memory}\\n\\n`;\n if (data.issues.length > 0) {\n md += `## Issues\\n`;\n for (const issue of data.issues) {\n md += `- ${issue}\\n`;\n }\n md += `\\n`;\n }\n md += `## Recommendations\\n`;\n for (const rec of data.recommendations) {\n md += `- ${rec}\\n`;\n }\n return md;\n }\n );\n\n return {\n content: [{ type: \"text\" as const, text: truncateIfNeeded(responseText) }],\n };\n } catch (error) {\n return {\n isError: true,\n content: [\n {\n type: \"text\" as const,\n text: `Error: ${error instanceof Error ? error.message : \"Unknown error\"}`,\n },\n ],\n };\n }\n }\n );\n\n return server;\n}\n"]}
1
+ {"version":3,"sources":["../../src/core/errors.ts","../../src/utils/http-client.ts","../../src/core/client.ts","../../src/core/types.ts","../../src/utils/formatting.ts","../../src/server/mcp-server.ts"],"names":["z","McpServer"],"mappings":"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","file":"index.cjs","sourcesContent":["/**\n * SDK-specific error classes\n */\n\nexport class MemoryIntelligenceError extends Error {\n constructor(message: string) {\n super(message);\n this.name = \"MemoryIntelligenceError\";\n }\n}\n\nexport class ConfigurationError extends MemoryIntelligenceError {\n constructor(message: string) {\n super(message);\n this.name = \"ConfigurationError\";\n }\n}\n\nexport class MemoryNotFoundError extends MemoryIntelligenceError {\n constructor(memoryId: string) {\n super(`Memory not found: ${memoryId}`);\n this.name = \"MemoryNotFoundError\";\n }\n}\n\nexport class DatabaseError extends MemoryIntelligenceError {\n constructor(message: string, public originalError?: Error) {\n super(message);\n this.name = \"DatabaseError\";\n }\n}\n\nexport class EmbeddingError extends MemoryIntelligenceError {\n constructor(message: string, public originalError?: Error) {\n super(message);\n this.name = \"EmbeddingError\";\n }\n}\n\nexport class ValidationError extends MemoryIntelligenceError {\n constructor(message: string) {\n super(message);\n this.name = \"ValidationError\";\n }\n}\n","/**\n * HTTP client for Lanonasis API\n */\n\nimport { ConfigurationError } from \"../core/errors.js\";\n\nexport interface HttpClientConfig {\n apiUrl: string;\n apiKey: string;\n timeout?: number;\n headers?: Record<string, string>;\n}\n\nexport interface ApiResponse<T = any> {\n data?: T;\n error?: {\n message: string;\n code?: string;\n };\n status: number;\n}\n\nexport class HttpClient {\n private apiUrl: string;\n private apiKey: string;\n private timeout: number;\n private headers: Record<string, string>;\n\n constructor(config: HttpClientConfig) {\n if (!config.apiKey) {\n throw new ConfigurationError(\"API key is required\");\n }\n\n if (!config.apiKey.startsWith(\"lano_\")) {\n throw new ConfigurationError(\n \"Invalid API key format. API key should start with 'lano_'\"\n );\n }\n\n this.apiUrl = config.apiUrl.replace(/\\/$/, \"\"); // Remove trailing slash\n this.apiKey = config.apiKey;\n this.timeout = config.timeout || 30000;\n this.headers = {\n \"Content-Type\": \"application/json\",\n \"X-API-Key\": this.apiKey,\n ...config.headers,\n };\n }\n\n private async request<T>(\n method: string,\n endpoint: string,\n data?: any\n ): Promise<ApiResponse<T>> {\n const url = `${this.apiUrl}${endpoint}`;\n const controller = new AbortController();\n const timeoutId = setTimeout(() => controller.abort(), this.timeout);\n\n try {\n const options: RequestInit = {\n method,\n headers: this.headers,\n signal: controller.signal,\n };\n\n if (data && (method === \"POST\" || method === \"PUT\" || method === \"PATCH\")) {\n options.body = JSON.stringify(data);\n }\n\n const response = await fetch(url, options);\n clearTimeout(timeoutId);\n\n const responseData = await response.json() as any;\n\n if (!response.ok) {\n return {\n status: response.status,\n error: {\n message: responseData?.message || responseData?.error || \"Request failed\",\n code: responseData?.code,\n },\n };\n }\n\n return {\n status: response.status,\n data: responseData as T,\n };\n } catch (error) {\n clearTimeout(timeoutId);\n\n if (error instanceof Error) {\n if (error.name === \"AbortError\") {\n return {\n status: 408,\n error: {\n message: `Request timeout after ${this.timeout}ms`,\n code: \"TIMEOUT\",\n },\n };\n }\n\n return {\n status: 0,\n error: {\n message: error.message,\n code: \"NETWORK_ERROR\",\n },\n };\n }\n\n return {\n status: 0,\n error: {\n message: \"Unknown error occurred\",\n code: \"UNKNOWN_ERROR\",\n },\n };\n }\n }\n\n async get<T>(endpoint: string): Promise<ApiResponse<T>> {\n return this.request<T>(\"GET\", endpoint);\n }\n\n async post<T>(endpoint: string, data?: any): Promise<ApiResponse<T>> {\n return this.request<T>(\"POST\", endpoint, data);\n }\n\n async put<T>(endpoint: string, data?: any): Promise<ApiResponse<T>> {\n return this.request<T>(\"PUT\", endpoint, data);\n }\n\n async patch<T>(endpoint: string, data?: any): Promise<ApiResponse<T>> {\n return this.request<T>(\"PATCH\", endpoint, data);\n }\n\n async delete<T>(endpoint: string): Promise<ApiResponse<T>> {\n return this.request<T>(\"DELETE\", endpoint);\n }\n}\n","/**\n * Core Memory Intelligence Client\n */\n\nimport {\n MemoryIntelligenceConfig,\n AnalyzePatternsParams,\n PatternAnalysis,\n SuggestTagsParams,\n TagSuggestionsResult,\n FindRelatedParams,\n RelatedMemoriesResult,\n DetectDuplicatesParams,\n DuplicatesResult,\n ExtractInsightsParams,\n InsightsResult,\n HealthCheckParams,\n MemoryHealth,\n QueryMemoriesOptions,\n MemoryEntry,\n} from \"./types.js\";\nimport { ConfigurationError, DatabaseError } from \"./errors.js\";\nimport { HttpClient } from \"../utils/http-client.js\";\n\nconst DEFAULT_API_URL = \"https://api.lanonasis.com/api/v1\";\n\nexport class MemoryIntelligenceClient {\n private httpClient: HttpClient;\n private defaultResponseFormat: \"json\" | \"markdown\";\n\n constructor(config: MemoryIntelligenceConfig) {\n // Validate configuration\n if (!config.apiKey) {\n throw new ConfigurationError(\n \"Missing required configuration: apiKey is required (format: lano_xxxxxxxxxx)\"\n );\n }\n\n this.httpClient = new HttpClient({\n apiUrl: config.apiUrl || DEFAULT_API_URL,\n apiKey: config.apiKey,\n timeout: config.timeout,\n headers: config.headers,\n });\n\n this.defaultResponseFormat = config.responseFormat || \"markdown\";\n }\n\n /**\n * Get HTTP client for direct API access\n */\n public getHttpClient(): HttpClient {\n return this.httpClient;\n }\n\n /**\n * Query memories from the API\n */\n public async queryMemories(\n userId: string,\n options: QueryMemoriesOptions = {}\n ): Promise<MemoryEntry[]> {\n const { type, limit = 100, offset = 0 } = options;\n\n const params = new URLSearchParams({\n user_id: userId,\n limit: limit.toString(),\n offset: offset.toString(),\n });\n\n if (type) {\n params.append(\"type\", type);\n }\n\n const response = await this.httpClient.get<{ memories: MemoryEntry[] }>(\n `/intelligence/memories?${params.toString()}`\n );\n\n if (response.error) {\n throw new DatabaseError(`Failed to query memories: ${response.error.message}`);\n }\n\n return response.data?.memories || [];\n }\n\n /**\n * Analyze usage patterns and trends in memory collection\n */\n async analyzePatterns(params: AnalyzePatternsParams): Promise<PatternAnalysis> {\n const response = await this.httpClient.post<PatternAnalysis>(\n \"/intelligence/analyze-patterns\",\n {\n ...params,\n responseFormat: params.responseFormat || this.defaultResponseFormat,\n }\n );\n\n if (response.error) {\n throw new DatabaseError(`Failed to analyze patterns: ${response.error.message}`);\n }\n\n return response.data!;\n }\n\n /**\n * Get AI-powered tag suggestions for a memory\n */\n async suggestTags(params: SuggestTagsParams): Promise<TagSuggestionsResult> {\n const response = await this.httpClient.post<TagSuggestionsResult>(\n \"/intelligence/suggest-tags\",\n {\n ...params,\n responseFormat: params.responseFormat || this.defaultResponseFormat,\n }\n );\n\n if (response.error) {\n throw new DatabaseError(`Failed to suggest tags: ${response.error.message}`);\n }\n\n return response.data!;\n }\n\n /**\n * Find semantically related memories using vector similarity\n */\n async findRelated(params: FindRelatedParams): Promise<RelatedMemoriesResult> {\n const response = await this.httpClient.post<RelatedMemoriesResult>(\n \"/intelligence/find-related\",\n {\n ...params,\n responseFormat: params.responseFormat || this.defaultResponseFormat,\n }\n );\n\n if (response.error) {\n throw new DatabaseError(`Failed to find related memories: ${response.error.message}`);\n }\n\n return response.data!;\n }\n\n /**\n * Detect potential duplicate memories\n */\n async detectDuplicates(params: DetectDuplicatesParams): Promise<DuplicatesResult> {\n const response = await this.httpClient.post<DuplicatesResult>(\n \"/intelligence/detect-duplicates\",\n {\n ...params,\n responseFormat: params.responseFormat || this.defaultResponseFormat,\n }\n );\n\n if (response.error) {\n throw new DatabaseError(`Failed to detect duplicates: ${response.error.message}`);\n }\n\n return response.data!;\n }\n\n /**\n * Extract insights and patterns from memories\n */\n async extractInsights(params: ExtractInsightsParams): Promise<InsightsResult> {\n const response = await this.httpClient.post<InsightsResult>(\n \"/intelligence/extract-insights\",\n {\n ...params,\n responseFormat: params.responseFormat || this.defaultResponseFormat,\n }\n );\n\n if (response.error) {\n throw new DatabaseError(`Failed to extract insights: ${response.error.message}`);\n }\n\n return response.data!;\n }\n\n /**\n * Check the health and organization quality of memories\n */\n async healthCheck(params: HealthCheckParams): Promise<MemoryHealth> {\n const response = await this.httpClient.post<MemoryHealth>(\n \"/intelligence/health-check\",\n {\n ...params,\n responseFormat: params.responseFormat || this.defaultResponseFormat,\n }\n );\n\n if (response.error) {\n throw new DatabaseError(`Failed to check health: ${response.error.message}`);\n }\n\n return response.data!;\n }\n}\n","/**\n * Type definitions for Memory Intelligence SDK\n */\n\nimport { z } from \"zod\";\n\n// Response format enum\nexport const ResponseFormat = {\n JSON: \"json\",\n MARKDOWN: \"markdown\",\n} as const;\n\nexport type ResponseFormatType = (typeof ResponseFormat)[keyof typeof ResponseFormat];\n\n// Memory type enum\nexport const MemoryType = z.enum([\n \"context\",\n \"project\",\n \"knowledge\",\n \"reference\",\n \"personal\",\n \"workflow\",\n]);\n\nexport type MemoryTypeValue = z.infer<typeof MemoryType>;\n\n// Configuration interface\nexport interface MemoryIntelligenceConfig {\n apiUrl?: string; // Lanonasis API URL (default: https://api.lanonasis.com/api/v1)\n apiKey: string; // Lanonasis API key (format: lano_xxxxxxxxxx)\n timeout?: number; // Request timeout in milliseconds (default: 30000)\n responseFormat?: ResponseFormatType;\n headers?: Record<string, string>; // Custom headers\n}\n\n// Tool parameter interfaces\nexport interface AnalyzePatternsParams {\n userId: string;\n timeRangeDays?: number;\n responseFormat?: ResponseFormatType;\n}\n\nexport interface SuggestTagsParams {\n memoryId: string;\n userId: string;\n maxSuggestions?: number;\n includeExistingTags?: boolean;\n responseFormat?: ResponseFormatType;\n}\n\nexport interface FindRelatedParams {\n memoryId: string;\n userId: string;\n limit?: number;\n similarityThreshold?: number;\n responseFormat?: ResponseFormatType;\n}\n\nexport interface DetectDuplicatesParams {\n userId: string;\n similarityThreshold?: number;\n maxPairs?: number;\n responseFormat?: ResponseFormatType;\n}\n\nexport interface ExtractInsightsParams {\n userId: string;\n topic?: string;\n memoryType?: MemoryTypeValue;\n maxMemories?: number;\n responseFormat?: ResponseFormatType;\n}\n\nexport interface HealthCheckParams {\n userId: string;\n responseFormat?: ResponseFormatType;\n}\n\n// Tool result interfaces\nexport interface PatternAnalysis {\n total_memories: number;\n memories_by_type: Record<string, number>;\n memories_by_day_of_week: Record<string, number>;\n peak_creation_hours: number[];\n average_content_length: number;\n most_common_tags: Array<{ tag: string; count: number }>;\n creation_velocity: {\n daily_average: number;\n trend: \"increasing\" | \"stable\" | \"decreasing\";\n };\n insights: string[];\n}\n\nexport interface TagSuggestion {\n tag: string;\n confidence: number;\n reasoning: string;\n}\n\nexport interface TagSuggestionsResult {\n memory_id: string;\n existing_tags: string[];\n suggestions: TagSuggestion[];\n context: {\n memory_type: string;\n related_memories_analyzed: number;\n };\n}\n\nexport interface RelatedMemory {\n id: string;\n title: string;\n type: string;\n similarity_score: number;\n shared_tags: string[];\n content_preview: string;\n}\n\nexport interface RelatedMemoriesResult {\n source_memory: {\n id: string;\n title: string;\n type: string;\n };\n related_memories: RelatedMemory[];\n total_found: number;\n}\n\nexport interface DuplicatePair {\n memory_1: {\n id: string;\n title: string;\n created_at: string;\n };\n memory_2: {\n id: string;\n title: string;\n created_at: string;\n };\n similarity_score: number;\n recommendation: \"keep_newer\" | \"keep_older\" | \"merge\" | \"review_manually\";\n reasoning: string;\n}\n\nexport interface DuplicatesResult {\n total_memories_analyzed: number;\n duplicate_pairs_found: number;\n duplicate_pairs: DuplicatePair[];\n estimated_storage_savings: string;\n}\n\nexport interface Insight {\n category: \"pattern\" | \"learning\" | \"opportunity\" | \"risk\" | \"action_item\";\n title: string;\n description: string;\n confidence: number;\n supporting_memories: string[];\n}\n\nexport interface InsightsResult {\n total_memories_analyzed: number;\n insights: Insight[];\n summary: string;\n topic_filter?: string;\n type_filter?: string;\n}\n\nexport interface MemoryHealth {\n user_id: string;\n health_score: number;\n metrics: {\n total_memories: number;\n memories_with_embeddings: number;\n embedding_coverage_percentage: number;\n memories_with_tags: number;\n tagging_percentage: number;\n average_tags_per_memory: number;\n memories_by_type: Record<string, number>;\n };\n issues: string[];\n recommendations: string[];\n analysis_date: string;\n}\n\n// Memory entry interface (from database)\nexport interface MemoryEntry {\n id: string;\n user_id: string;\n title: string;\n content: string;\n type: MemoryTypeValue;\n tags?: string[];\n metadata?: Record<string, any>;\n embedding?: number[];\n created_at: string;\n updated_at: string;\n}\n\n// Query options for internal use\nexport interface QueryMemoriesOptions {\n type?: string;\n limit?: number;\n offset?: number;\n includeEmbeddings?: boolean;\n}\n","/**\n * Response formatting utilities\n */\n\nimport { ResponseFormat, ResponseFormatType } from \"../core/types.js\";\n\n// Character limit for responses\nconst CHARACTER_LIMIT = 50000;\n\n/**\n * Format response based on requested format\n */\nexport function formatResponse<T>(\n data: T,\n format: ResponseFormatType,\n markdownFormatter: (data: T) => string\n): string {\n if (format === ResponseFormat.JSON) {\n return JSON.stringify(data, null, 2);\n }\n return markdownFormatter(data);\n}\n\n/**\n * Truncate response if too long\n */\nexport function truncateIfNeeded(text: string): string {\n if (text.length > CHARACTER_LIMIT) {\n return (\n text.substring(0, CHARACTER_LIMIT) +\n `\\n\\n... (truncated, ${text.length - CHARACTER_LIMIT} characters omitted)`\n );\n }\n return text;\n}\n","/**\n * MCP Server wrapper using the SDK\n */\n\nimport { McpServer } from \"@modelcontextprotocol/sdk/server/mcp.js\";\nimport { z } from \"zod\";\nimport { MemoryIntelligenceClient } from \"../core/client.js\";\nimport { MemoryIntelligenceConfig, ResponseFormat } from \"../core/types.js\";\nimport { formatResponse, truncateIfNeeded } from \"../utils/formatting.js\";\n\nexport function createMCPServer(config: MemoryIntelligenceConfig) {\n const client = new MemoryIntelligenceClient(config);\n const server = new McpServer({\n name: \"memory-intelligence-mcp-server\",\n version: \"1.0.0\",\n });\n\n // Register analyze patterns tool\n server.registerTool(\n \"memory_analyze_patterns\",\n {\n title: \"Analyze Memory Patterns\",\n description: `Analyze usage patterns and trends in the user's memory collection.`,\n inputSchema: z.object({\n user_id: z.string().uuid(),\n time_range_days: z.number().int().min(1).max(365).default(30),\n response_format: z\n .enum([ResponseFormat.JSON, ResponseFormat.MARKDOWN])\n .default(ResponseFormat.MARKDOWN),\n }).strict(),\n annotations: {\n readOnlyHint: true,\n destructiveHint: false,\n idempotentHint: true,\n openWorldHint: true,\n },\n },\n async (rawParams: any) => {\n try {\n const params = {\n userId: rawParams.user_id,\n timeRangeDays: rawParams.time_range_days,\n responseFormat: rawParams.response_format,\n };\n\n const analysis = await client.analyzePatterns(params);\n const responseText = formatResponse(\n analysis,\n params.responseFormat || \"markdown\",\n (data) => {\n let md = `# Memory Pattern Analysis\\n\\n`;\n md += `**Time Range:** Last ${params.timeRangeDays || 30} days\\n`;\n md += `**Total Memories:** ${data.total_memories}\\n\\n`;\n md += `## Distribution by Type\\n`;\n for (const [type, count] of Object.entries(data.memories_by_type)) {\n const percentage = ((count / data.total_memories) * 100).toFixed(1);\n md += `- **${type}**: ${count} (${percentage}%)\\n`;\n }\n md += `\\n## Activity Patterns\\n`;\n md += `- **Peak Hours (UTC):** ${data.peak_creation_hours.join(\", \")}\\n`;\n md += `- **Daily Average:** ${data.creation_velocity.daily_average} memories/day\\n`;\n md += `- **Trend:** ${data.creation_velocity.trend}\\n`;\n md += `\\n## Top Tags\\n`;\n for (const { tag, count } of data.most_common_tags.slice(0, 5)) {\n md += `- **${tag}**: ${count} uses\\n`;\n }\n md += `\\n## AI Insights\\n`;\n for (const insight of data.insights) {\n md += `${insight}\\n`;\n }\n return md;\n }\n );\n\n return {\n content: [{ type: \"text\" as const, text: truncateIfNeeded(responseText) }],\n };\n } catch (error) {\n return {\n isError: true,\n content: [\n {\n type: \"text\" as const,\n text: `Error: ${error instanceof Error ? error.message : \"Unknown error\"}`,\n },\n ],\n };\n }\n }\n );\n\n // Register suggest tags tool\n server.registerTool(\n \"memory_suggest_tags\",\n {\n title: \"Suggest Tags for Memory\",\n description: `AI-powered tag suggestions for a memory.`,\n inputSchema: z.object({\n memory_id: z.string().uuid(),\n user_id: z.string().uuid(),\n max_suggestions: z.number().int().min(1).max(20).default(5),\n include_existing_tags: z.boolean().default(true),\n response_format: z\n .enum([ResponseFormat.JSON, ResponseFormat.MARKDOWN])\n .default(ResponseFormat.MARKDOWN),\n }).strict(),\n annotations: {\n readOnlyHint: true,\n destructiveHint: false,\n idempotentHint: false,\n openWorldHint: true,\n },\n },\n async (rawParams: any) => {\n try {\n const params = {\n memoryId: rawParams.memory_id,\n userId: rawParams.user_id,\n maxSuggestions: rawParams.max_suggestions,\n includeExistingTags: rawParams.include_existing_tags,\n responseFormat: rawParams.response_format,\n };\n\n const result = await client.suggestTags(params);\n const responseText = formatResponse(\n result,\n params.responseFormat || \"markdown\",\n (data) => {\n let md = `# Tag Suggestions\\n\\n`;\n md += `**Existing Tags:** ${data.existing_tags.join(\", \") || \"none\"}\\n\\n`;\n md += `## Suggested Tags\\n`;\n for (const suggestion of data.suggestions) {\n md += `\\n### \\`${suggestion.tag}\\`\\n`;\n md += `**Confidence:** ${(suggestion.confidence * 100).toFixed(0)}%\\n`;\n md += `**Reason:** ${suggestion.reasoning}\\n`;\n }\n return md;\n }\n );\n\n return {\n content: [{ type: \"text\" as const, text: truncateIfNeeded(responseText) }],\n };\n } catch (error) {\n return {\n isError: true,\n content: [\n {\n type: \"text\" as const,\n text: `Error: ${error instanceof Error ? error.message : \"Unknown error\"}`,\n },\n ],\n };\n }\n }\n );\n\n // Register find related tool\n server.registerTool(\n \"memory_find_related\",\n {\n title: \"Find Related Memories\",\n description: `Find semantically related memories using vector similarity.`,\n inputSchema: z.object({\n memory_id: z.string().uuid(),\n user_id: z.string().uuid(),\n limit: z.number().int().min(1).max(50).default(10),\n similarity_threshold: z.number().min(0).max(1).default(0.7),\n response_format: z\n .enum([ResponseFormat.JSON, ResponseFormat.MARKDOWN])\n .default(ResponseFormat.MARKDOWN),\n }).strict(),\n annotations: {\n readOnlyHint: true,\n destructiveHint: false,\n idempotentHint: true,\n openWorldHint: true,\n },\n },\n async (rawParams: any) => {\n try {\n const params = {\n memoryId: rawParams.memory_id,\n userId: rawParams.user_id,\n limit: rawParams.limit,\n similarityThreshold: rawParams.similarity_threshold,\n responseFormat: rawParams.response_format,\n };\n\n const result = await client.findRelated(params);\n const responseText = formatResponse(\n result,\n params.responseFormat || \"markdown\",\n (data) => {\n let md = `# Related Memories\\n\\n`;\n md += `**Source:** ${data.source_memory.title}\\n`;\n md += `**Found:** ${data.total_found} related memories\\n\\n`;\n for (const mem of data.related_memories) {\n md += `## ${mem.title}\\n`;\n md += `**Similarity:** ${(mem.similarity_score * 100).toFixed(1)}%\\n`;\n if (mem.shared_tags.length > 0) {\n md += `**Shared Tags:** ${mem.shared_tags.join(\", \")}\\n`;\n }\n md += `**Preview:** ${mem.content_preview}\\n\\n`;\n }\n return md;\n }\n );\n\n return {\n content: [{ type: \"text\" as const, text: truncateIfNeeded(responseText) }],\n };\n } catch (error) {\n return {\n isError: true,\n content: [\n {\n type: \"text\" as const,\n text: `Error: ${error instanceof Error ? error.message : \"Unknown error\"}`,\n },\n ],\n };\n }\n }\n );\n\n // Register detect duplicates tool\n server.registerTool(\n \"memory_detect_duplicates\",\n {\n title: \"Detect Duplicate Memories\",\n description: `Find potential duplicate memories.`,\n inputSchema: z.object({\n user_id: z.string().uuid(),\n similarity_threshold: z.number().min(0.8).max(0.99).default(0.9),\n max_pairs: z.number().int().min(1).max(100).default(20),\n response_format: z\n .enum([ResponseFormat.JSON, ResponseFormat.MARKDOWN])\n .default(ResponseFormat.MARKDOWN),\n }).strict(),\n annotations: {\n readOnlyHint: true,\n destructiveHint: false,\n idempotentHint: true,\n openWorldHint: true,\n },\n },\n async (rawParams: any) => {\n try {\n const params = {\n userId: rawParams.user_id,\n similarityThreshold: rawParams.similarity_threshold,\n maxPairs: rawParams.max_pairs,\n responseFormat: rawParams.response_format,\n };\n\n const result = await client.detectDuplicates(params);\n const responseText = formatResponse(\n result,\n params.responseFormat || \"markdown\",\n (data) => {\n let md = `# Duplicate Detection\\n\\n`;\n md += `**Memories Analyzed:** ${data.total_memories_analyzed}\\n`;\n md += `**Duplicate Pairs Found:** ${data.duplicate_pairs_found}\\n`;\n md += `**Storage Savings:** ${data.estimated_storage_savings}\\n\\n`;\n for (const pair of data.duplicate_pairs) {\n md += `### Similarity: ${(pair.similarity_score * 100).toFixed(1)}%\\n`;\n md += `**Memory 1:** ${pair.memory_1.title}\\n`;\n md += `**Memory 2:** ${pair.memory_2.title}\\n`;\n md += `**Recommendation:** ${pair.recommendation}\\n\\n`;\n }\n return md;\n }\n );\n\n return {\n content: [{ type: \"text\" as const, text: truncateIfNeeded(responseText) }],\n };\n } catch (error) {\n return {\n isError: true,\n content: [\n {\n type: \"text\" as const,\n text: `Error: ${error instanceof Error ? error.message : \"Unknown error\"}`,\n },\n ],\n };\n }\n }\n );\n\n // Register extract insights tool\n server.registerTool(\n \"memory_extract_insights\",\n {\n title: \"Extract Insights from Memories\",\n description: `Extract key insights and patterns from memories.`,\n inputSchema: z.object({\n user_id: z.string().uuid(),\n topic: z.string().optional(),\n memory_type: z.string().optional(),\n max_memories: z.number().int().min(5).max(100).default(20),\n response_format: z\n .enum([ResponseFormat.JSON, ResponseFormat.MARKDOWN])\n .default(ResponseFormat.MARKDOWN),\n }).strict(),\n annotations: {\n readOnlyHint: true,\n destructiveHint: false,\n idempotentHint: false,\n openWorldHint: true,\n },\n },\n async (rawParams: any) => {\n try {\n const params = {\n userId: rawParams.user_id,\n topic: rawParams.topic,\n memoryType: rawParams.memory_type,\n maxMemories: rawParams.max_memories,\n responseFormat: rawParams.response_format,\n };\n\n const result = await client.extractInsights(params);\n const responseText = formatResponse(\n result,\n params.responseFormat || \"markdown\",\n (data) => {\n let md = `# Memory Insights\\n\\n`;\n md += `**Memories Analyzed:** ${data.total_memories_analyzed}\\n`;\n if (data.topic_filter) {\n md += `**Topic:** ${data.topic_filter}\\n`;\n }\n md += `\\n## Summary\\n${data.summary}\\n\\n`;\n md += `## Insights\\n`;\n for (const insight of data.insights) {\n const icon = {\n pattern: \"🔄\",\n learning: \"💡\",\n opportunity: \"🚀\",\n risk: \"⚠️\",\n action_item: \"✅\",\n }[insight.category] || \"📌\";\n md += `\\n### ${icon} ${insight.title}\\n`;\n md += `${insight.description}\\n`;\n md += `**Confidence:** ${(insight.confidence * 100).toFixed(0)}%\\n`;\n }\n return md;\n }\n );\n\n return {\n content: [{ type: \"text\" as const, text: truncateIfNeeded(responseText) }],\n };\n } catch (error) {\n return {\n isError: true,\n content: [\n {\n type: \"text\" as const,\n text: `Error: ${error instanceof Error ? error.message : \"Unknown error\"}`,\n },\n ],\n };\n }\n }\n );\n\n // Register health check tool\n server.registerTool(\n \"memory_health_check\",\n {\n title: \"Memory Health Check\",\n description: `Analyze the health and organization quality of memories.`,\n inputSchema: z.object({\n user_id: z.string().uuid(),\n response_format: z\n .enum([ResponseFormat.JSON, ResponseFormat.MARKDOWN])\n .default(ResponseFormat.MARKDOWN),\n }).strict(),\n annotations: {\n readOnlyHint: true,\n destructiveHint: false,\n idempotentHint: true,\n openWorldHint: true,\n },\n },\n async (rawParams: any) => {\n try {\n const params = {\n userId: rawParams.user_id,\n responseFormat: rawParams.response_format,\n };\n\n const result = await client.healthCheck(params);\n const responseText = formatResponse(\n result,\n params.responseFormat || \"markdown\",\n (data) => {\n let md = `# Memory Health Check\\n\\n`;\n md += `**Health Score:** ${data.health_score}/100\\n\\n`;\n md += `## Metrics\\n`;\n md += `- **Total Memories:** ${data.metrics.total_memories}\\n`;\n md += `- **Embedding Coverage:** ${data.metrics.embedding_coverage_percentage}%\\n`;\n md += `- **Tagging Rate:** ${data.metrics.tagging_percentage}%\\n`;\n md += `- **Avg Tags/Memory:** ${data.metrics.average_tags_per_memory}\\n\\n`;\n if (data.issues.length > 0) {\n md += `## Issues\\n`;\n for (const issue of data.issues) {\n md += `- ${issue}\\n`;\n }\n md += `\\n`;\n }\n md += `## Recommendations\\n`;\n for (const rec of data.recommendations) {\n md += `- ${rec}\\n`;\n }\n return md;\n }\n );\n\n return {\n content: [{ type: \"text\" as const, text: truncateIfNeeded(responseText) }],\n };\n } catch (error) {\n return {\n isError: true,\n content: [\n {\n type: \"text\" as const,\n text: `Error: ${error instanceof Error ? error.message : \"Unknown error\"}`,\n },\n ],\n };\n }\n }\n );\n\n return server;\n}\n"]}
@@ -1,7 +1,7 @@
1
1
  /**
2
2
  * MCP Server entry point
3
3
  */
4
- export { createMCPServer } from "./mcp-server";
5
- export * from "../core/types";
6
- export * from "../core/errors";
4
+ export { createMCPServer } from "./mcp-server.js";
5
+ export * from "../core/types.js";
6
+ export * from "../core/errors.js";
7
7
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/server/index.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,EAAE,eAAe,EAAE,MAAM,cAAc,CAAC;AAC/C,cAAc,eAAe,CAAC;AAC9B,cAAc,gBAAgB,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/server/index.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,EAAE,eAAe,EAAE,MAAM,iBAAiB,CAAC;AAClD,cAAc,kBAAkB,CAAC;AACjC,cAAc,mBAAmB,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"sources":["../../src/core/errors.ts","../../src/utils/http-client.ts","../../src/core/client.ts","../../src/core/types.ts","../../src/utils/formatting.ts","../../src/server/mcp-server.ts"],"names":["z"],"mappings":"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","file":"index.js","sourcesContent":["/**\n * SDK-specific error classes\n */\n\nexport class MemoryIntelligenceError extends Error {\n constructor(message: string) {\n super(message);\n this.name = \"MemoryIntelligenceError\";\n }\n}\n\nexport class ConfigurationError extends MemoryIntelligenceError {\n constructor(message: string) {\n super(message);\n this.name = \"ConfigurationError\";\n }\n}\n\nexport class MemoryNotFoundError extends MemoryIntelligenceError {\n constructor(memoryId: string) {\n super(`Memory not found: ${memoryId}`);\n this.name = \"MemoryNotFoundError\";\n }\n}\n\nexport class DatabaseError extends MemoryIntelligenceError {\n constructor(message: string, public originalError?: Error) {\n super(message);\n this.name = \"DatabaseError\";\n }\n}\n\nexport class EmbeddingError extends MemoryIntelligenceError {\n constructor(message: string, public originalError?: Error) {\n super(message);\n this.name = \"EmbeddingError\";\n }\n}\n\nexport class ValidationError extends MemoryIntelligenceError {\n constructor(message: string) {\n super(message);\n this.name = \"ValidationError\";\n }\n}\n","/**\n * HTTP client for Lanonasis API\n */\n\nimport { ConfigurationError } from \"../core/errors\";\n\nexport interface HttpClientConfig {\n apiUrl: string;\n apiKey: string;\n timeout?: number;\n headers?: Record<string, string>;\n}\n\nexport interface ApiResponse<T = any> {\n data?: T;\n error?: {\n message: string;\n code?: string;\n };\n status: number;\n}\n\nexport class HttpClient {\n private apiUrl: string;\n private apiKey: string;\n private timeout: number;\n private headers: Record<string, string>;\n\n constructor(config: HttpClientConfig) {\n if (!config.apiKey) {\n throw new ConfigurationError(\"API key is required\");\n }\n\n if (!config.apiKey.startsWith(\"lano_\")) {\n throw new ConfigurationError(\n \"Invalid API key format. API key should start with 'lano_'\"\n );\n }\n\n this.apiUrl = config.apiUrl.replace(/\\/$/, \"\"); // Remove trailing slash\n this.apiKey = config.apiKey;\n this.timeout = config.timeout || 30000;\n this.headers = {\n \"Content-Type\": \"application/json\",\n \"X-API-Key\": this.apiKey,\n ...config.headers,\n };\n }\n\n private async request<T>(\n method: string,\n endpoint: string,\n data?: any\n ): Promise<ApiResponse<T>> {\n const url = `${this.apiUrl}${endpoint}`;\n const controller = new AbortController();\n const timeoutId = setTimeout(() => controller.abort(), this.timeout);\n\n try {\n const options: RequestInit = {\n method,\n headers: this.headers,\n signal: controller.signal,\n };\n\n if (data && (method === \"POST\" || method === \"PUT\" || method === \"PATCH\")) {\n options.body = JSON.stringify(data);\n }\n\n const response = await fetch(url, options);\n clearTimeout(timeoutId);\n\n const responseData = await response.json() as any;\n\n if (!response.ok) {\n return {\n status: response.status,\n error: {\n message: responseData?.message || responseData?.error || \"Request failed\",\n code: responseData?.code,\n },\n };\n }\n\n return {\n status: response.status,\n data: responseData as T,\n };\n } catch (error) {\n clearTimeout(timeoutId);\n\n if (error instanceof Error) {\n if (error.name === \"AbortError\") {\n return {\n status: 408,\n error: {\n message: `Request timeout after ${this.timeout}ms`,\n code: \"TIMEOUT\",\n },\n };\n }\n\n return {\n status: 0,\n error: {\n message: error.message,\n code: \"NETWORK_ERROR\",\n },\n };\n }\n\n return {\n status: 0,\n error: {\n message: \"Unknown error occurred\",\n code: \"UNKNOWN_ERROR\",\n },\n };\n }\n }\n\n async get<T>(endpoint: string): Promise<ApiResponse<T>> {\n return this.request<T>(\"GET\", endpoint);\n }\n\n async post<T>(endpoint: string, data?: any): Promise<ApiResponse<T>> {\n return this.request<T>(\"POST\", endpoint, data);\n }\n\n async put<T>(endpoint: string, data?: any): Promise<ApiResponse<T>> {\n return this.request<T>(\"PUT\", endpoint, data);\n }\n\n async patch<T>(endpoint: string, data?: any): Promise<ApiResponse<T>> {\n return this.request<T>(\"PATCH\", endpoint, data);\n }\n\n async delete<T>(endpoint: string): Promise<ApiResponse<T>> {\n return this.request<T>(\"DELETE\", endpoint);\n }\n}\n","/**\n * Core Memory Intelligence Client\n */\n\nimport {\n MemoryIntelligenceConfig,\n AnalyzePatternsParams,\n PatternAnalysis,\n SuggestTagsParams,\n TagSuggestionsResult,\n FindRelatedParams,\n RelatedMemoriesResult,\n DetectDuplicatesParams,\n DuplicatesResult,\n ExtractInsightsParams,\n InsightsResult,\n HealthCheckParams,\n MemoryHealth,\n QueryMemoriesOptions,\n MemoryEntry,\n} from \"./types\";\nimport { ConfigurationError, DatabaseError } from \"./errors\";\nimport { HttpClient } from \"../utils/http-client\";\n\nconst DEFAULT_API_URL = \"https://api.lanonasis.com/api/v1\";\n\nexport class MemoryIntelligenceClient {\n private httpClient: HttpClient;\n private defaultResponseFormat: \"json\" | \"markdown\";\n\n constructor(config: MemoryIntelligenceConfig) {\n // Validate configuration\n if (!config.apiKey) {\n throw new ConfigurationError(\n \"Missing required configuration: apiKey is required (format: lano_xxxxxxxxxx)\"\n );\n }\n\n this.httpClient = new HttpClient({\n apiUrl: config.apiUrl || DEFAULT_API_URL,\n apiKey: config.apiKey,\n timeout: config.timeout,\n headers: config.headers,\n });\n\n this.defaultResponseFormat = config.responseFormat || \"markdown\";\n }\n\n /**\n * Get HTTP client for direct API access\n */\n public getHttpClient(): HttpClient {\n return this.httpClient;\n }\n\n /**\n * Query memories from the API\n */\n public async queryMemories(\n userId: string,\n options: QueryMemoriesOptions = {}\n ): Promise<MemoryEntry[]> {\n const { type, limit = 100, offset = 0 } = options;\n\n const params = new URLSearchParams({\n user_id: userId,\n limit: limit.toString(),\n offset: offset.toString(),\n });\n\n if (type) {\n params.append(\"type\", type);\n }\n\n const response = await this.httpClient.get<{ memories: MemoryEntry[] }>(\n `/intelligence/memories?${params.toString()}`\n );\n\n if (response.error) {\n throw new DatabaseError(`Failed to query memories: ${response.error.message}`);\n }\n\n return response.data?.memories || [];\n }\n\n /**\n * Analyze usage patterns and trends in memory collection\n */\n async analyzePatterns(params: AnalyzePatternsParams): Promise<PatternAnalysis> {\n const response = await this.httpClient.post<PatternAnalysis>(\n \"/intelligence/analyze-patterns\",\n {\n ...params,\n responseFormat: params.responseFormat || this.defaultResponseFormat,\n }\n );\n\n if (response.error) {\n throw new DatabaseError(`Failed to analyze patterns: ${response.error.message}`);\n }\n\n return response.data!;\n }\n\n /**\n * Get AI-powered tag suggestions for a memory\n */\n async suggestTags(params: SuggestTagsParams): Promise<TagSuggestionsResult> {\n const response = await this.httpClient.post<TagSuggestionsResult>(\n \"/intelligence/suggest-tags\",\n {\n ...params,\n responseFormat: params.responseFormat || this.defaultResponseFormat,\n }\n );\n\n if (response.error) {\n throw new DatabaseError(`Failed to suggest tags: ${response.error.message}`);\n }\n\n return response.data!;\n }\n\n /**\n * Find semantically related memories using vector similarity\n */\n async findRelated(params: FindRelatedParams): Promise<RelatedMemoriesResult> {\n const response = await this.httpClient.post<RelatedMemoriesResult>(\n \"/intelligence/find-related\",\n {\n ...params,\n responseFormat: params.responseFormat || this.defaultResponseFormat,\n }\n );\n\n if (response.error) {\n throw new DatabaseError(`Failed to find related memories: ${response.error.message}`);\n }\n\n return response.data!;\n }\n\n /**\n * Detect potential duplicate memories\n */\n async detectDuplicates(params: DetectDuplicatesParams): Promise<DuplicatesResult> {\n const response = await this.httpClient.post<DuplicatesResult>(\n \"/intelligence/detect-duplicates\",\n {\n ...params,\n responseFormat: params.responseFormat || this.defaultResponseFormat,\n }\n );\n\n if (response.error) {\n throw new DatabaseError(`Failed to detect duplicates: ${response.error.message}`);\n }\n\n return response.data!;\n }\n\n /**\n * Extract insights and patterns from memories\n */\n async extractInsights(params: ExtractInsightsParams): Promise<InsightsResult> {\n const response = await this.httpClient.post<InsightsResult>(\n \"/intelligence/extract-insights\",\n {\n ...params,\n responseFormat: params.responseFormat || this.defaultResponseFormat,\n }\n );\n\n if (response.error) {\n throw new DatabaseError(`Failed to extract insights: ${response.error.message}`);\n }\n\n return response.data!;\n }\n\n /**\n * Check the health and organization quality of memories\n */\n async healthCheck(params: HealthCheckParams): Promise<MemoryHealth> {\n const response = await this.httpClient.post<MemoryHealth>(\n \"/intelligence/health-check\",\n {\n ...params,\n responseFormat: params.responseFormat || this.defaultResponseFormat,\n }\n );\n\n if (response.error) {\n throw new DatabaseError(`Failed to check health: ${response.error.message}`);\n }\n\n return response.data!;\n }\n}\n","/**\n * Type definitions for Memory Intelligence SDK\n */\n\nimport { z } from \"zod\";\n\n// Response format enum\nexport const ResponseFormat = {\n JSON: \"json\",\n MARKDOWN: \"markdown\",\n} as const;\n\nexport type ResponseFormatType = (typeof ResponseFormat)[keyof typeof ResponseFormat];\n\n// Memory type enum\nexport const MemoryType = z.enum([\n \"context\",\n \"project\",\n \"knowledge\",\n \"reference\",\n \"personal\",\n \"workflow\",\n]);\n\nexport type MemoryTypeValue = z.infer<typeof MemoryType>;\n\n// Configuration interface\nexport interface MemoryIntelligenceConfig {\n apiUrl?: string; // Lanonasis API URL (default: https://api.lanonasis.com/api/v1)\n apiKey: string; // Lanonasis API key (format: lano_xxxxxxxxxx)\n timeout?: number; // Request timeout in milliseconds (default: 30000)\n responseFormat?: ResponseFormatType;\n headers?: Record<string, string>; // Custom headers\n}\n\n// Tool parameter interfaces\nexport interface AnalyzePatternsParams {\n userId: string;\n timeRangeDays?: number;\n responseFormat?: ResponseFormatType;\n}\n\nexport interface SuggestTagsParams {\n memoryId: string;\n userId: string;\n maxSuggestions?: number;\n includeExistingTags?: boolean;\n responseFormat?: ResponseFormatType;\n}\n\nexport interface FindRelatedParams {\n memoryId: string;\n userId: string;\n limit?: number;\n similarityThreshold?: number;\n responseFormat?: ResponseFormatType;\n}\n\nexport interface DetectDuplicatesParams {\n userId: string;\n similarityThreshold?: number;\n maxPairs?: number;\n responseFormat?: ResponseFormatType;\n}\n\nexport interface ExtractInsightsParams {\n userId: string;\n topic?: string;\n memoryType?: MemoryTypeValue;\n maxMemories?: number;\n responseFormat?: ResponseFormatType;\n}\n\nexport interface HealthCheckParams {\n userId: string;\n responseFormat?: ResponseFormatType;\n}\n\n// Tool result interfaces\nexport interface PatternAnalysis {\n total_memories: number;\n memories_by_type: Record<string, number>;\n memories_by_day_of_week: Record<string, number>;\n peak_creation_hours: number[];\n average_content_length: number;\n most_common_tags: Array<{ tag: string; count: number }>;\n creation_velocity: {\n daily_average: number;\n trend: \"increasing\" | \"stable\" | \"decreasing\";\n };\n insights: string[];\n}\n\nexport interface TagSuggestion {\n tag: string;\n confidence: number;\n reasoning: string;\n}\n\nexport interface TagSuggestionsResult {\n memory_id: string;\n existing_tags: string[];\n suggestions: TagSuggestion[];\n context: {\n memory_type: string;\n related_memories_analyzed: number;\n };\n}\n\nexport interface RelatedMemory {\n id: string;\n title: string;\n type: string;\n similarity_score: number;\n shared_tags: string[];\n content_preview: string;\n}\n\nexport interface RelatedMemoriesResult {\n source_memory: {\n id: string;\n title: string;\n type: string;\n };\n related_memories: RelatedMemory[];\n total_found: number;\n}\n\nexport interface DuplicatePair {\n memory_1: {\n id: string;\n title: string;\n created_at: string;\n };\n memory_2: {\n id: string;\n title: string;\n created_at: string;\n };\n similarity_score: number;\n recommendation: \"keep_newer\" | \"keep_older\" | \"merge\" | \"review_manually\";\n reasoning: string;\n}\n\nexport interface DuplicatesResult {\n total_memories_analyzed: number;\n duplicate_pairs_found: number;\n duplicate_pairs: DuplicatePair[];\n estimated_storage_savings: string;\n}\n\nexport interface Insight {\n category: \"pattern\" | \"learning\" | \"opportunity\" | \"risk\" | \"action_item\";\n title: string;\n description: string;\n confidence: number;\n supporting_memories: string[];\n}\n\nexport interface InsightsResult {\n total_memories_analyzed: number;\n insights: Insight[];\n summary: string;\n topic_filter?: string;\n type_filter?: string;\n}\n\nexport interface MemoryHealth {\n user_id: string;\n health_score: number;\n metrics: {\n total_memories: number;\n memories_with_embeddings: number;\n embedding_coverage_percentage: number;\n memories_with_tags: number;\n tagging_percentage: number;\n average_tags_per_memory: number;\n memories_by_type: Record<string, number>;\n };\n issues: string[];\n recommendations: string[];\n analysis_date: string;\n}\n\n// Memory entry interface (from database)\nexport interface MemoryEntry {\n id: string;\n user_id: string;\n title: string;\n content: string;\n type: MemoryTypeValue;\n tags?: string[];\n metadata?: Record<string, any>;\n embedding?: number[];\n created_at: string;\n updated_at: string;\n}\n\n// Query options for internal use\nexport interface QueryMemoriesOptions {\n type?: string;\n limit?: number;\n offset?: number;\n includeEmbeddings?: boolean;\n}\n","/**\n * Response formatting utilities\n */\n\nimport { ResponseFormat, ResponseFormatType } from \"../core/types\";\n\n// Character limit for responses\nconst CHARACTER_LIMIT = 50000;\n\n/**\n * Format response based on requested format\n */\nexport function formatResponse<T>(\n data: T,\n format: ResponseFormatType,\n markdownFormatter: (data: T) => string\n): string {\n if (format === ResponseFormat.JSON) {\n return JSON.stringify(data, null, 2);\n }\n return markdownFormatter(data);\n}\n\n/**\n * Truncate response if too long\n */\nexport function truncateIfNeeded(text: string): string {\n if (text.length > CHARACTER_LIMIT) {\n return (\n text.substring(0, CHARACTER_LIMIT) +\n `\\n\\n... (truncated, ${text.length - CHARACTER_LIMIT} characters omitted)`\n );\n }\n return text;\n}\n","/**\n * MCP Server wrapper using the SDK\n */\n\nimport { McpServer } from \"@modelcontextprotocol/sdk/server/mcp.js\";\nimport { z } from \"zod\";\nimport { MemoryIntelligenceClient } from \"../core/client\";\nimport { MemoryIntelligenceConfig, ResponseFormat } from \"../core/types\";\nimport { formatResponse, truncateIfNeeded } from \"../utils/formatting\";\n\nexport function createMCPServer(config: MemoryIntelligenceConfig) {\n const client = new MemoryIntelligenceClient(config);\n const server = new McpServer({\n name: \"memory-intelligence-mcp-server\",\n version: \"1.0.0\",\n });\n\n // Register analyze patterns tool\n server.registerTool(\n \"memory_analyze_patterns\",\n {\n title: \"Analyze Memory Patterns\",\n description: `Analyze usage patterns and trends in the user's memory collection.`,\n inputSchema: z.object({\n user_id: z.string().uuid(),\n time_range_days: z.number().int().min(1).max(365).default(30),\n response_format: z\n .enum([ResponseFormat.JSON, ResponseFormat.MARKDOWN])\n .default(ResponseFormat.MARKDOWN),\n }).strict(),\n annotations: {\n readOnlyHint: true,\n destructiveHint: false,\n idempotentHint: true,\n openWorldHint: true,\n },\n },\n async (rawParams: any) => {\n try {\n const params = {\n userId: rawParams.user_id,\n timeRangeDays: rawParams.time_range_days,\n responseFormat: rawParams.response_format,\n };\n\n const analysis = await client.analyzePatterns(params);\n const responseText = formatResponse(\n analysis,\n params.responseFormat || \"markdown\",\n (data) => {\n let md = `# Memory Pattern Analysis\\n\\n`;\n md += `**Time Range:** Last ${params.timeRangeDays || 30} days\\n`;\n md += `**Total Memories:** ${data.total_memories}\\n\\n`;\n md += `## Distribution by Type\\n`;\n for (const [type, count] of Object.entries(data.memories_by_type)) {\n const percentage = ((count / data.total_memories) * 100).toFixed(1);\n md += `- **${type}**: ${count} (${percentage}%)\\n`;\n }\n md += `\\n## Activity Patterns\\n`;\n md += `- **Peak Hours (UTC):** ${data.peak_creation_hours.join(\", \")}\\n`;\n md += `- **Daily Average:** ${data.creation_velocity.daily_average} memories/day\\n`;\n md += `- **Trend:** ${data.creation_velocity.trend}\\n`;\n md += `\\n## Top Tags\\n`;\n for (const { tag, count } of data.most_common_tags.slice(0, 5)) {\n md += `- **${tag}**: ${count} uses\\n`;\n }\n md += `\\n## AI Insights\\n`;\n for (const insight of data.insights) {\n md += `${insight}\\n`;\n }\n return md;\n }\n );\n\n return {\n content: [{ type: \"text\" as const, text: truncateIfNeeded(responseText) }],\n };\n } catch (error) {\n return {\n isError: true,\n content: [\n {\n type: \"text\" as const,\n text: `Error: ${error instanceof Error ? error.message : \"Unknown error\"}`,\n },\n ],\n };\n }\n }\n );\n\n // Register suggest tags tool\n server.registerTool(\n \"memory_suggest_tags\",\n {\n title: \"Suggest Tags for Memory\",\n description: `AI-powered tag suggestions for a memory.`,\n inputSchema: z.object({\n memory_id: z.string().uuid(),\n user_id: z.string().uuid(),\n max_suggestions: z.number().int().min(1).max(20).default(5),\n include_existing_tags: z.boolean().default(true),\n response_format: z\n .enum([ResponseFormat.JSON, ResponseFormat.MARKDOWN])\n .default(ResponseFormat.MARKDOWN),\n }).strict(),\n annotations: {\n readOnlyHint: true,\n destructiveHint: false,\n idempotentHint: false,\n openWorldHint: true,\n },\n },\n async (rawParams: any) => {\n try {\n const params = {\n memoryId: rawParams.memory_id,\n userId: rawParams.user_id,\n maxSuggestions: rawParams.max_suggestions,\n includeExistingTags: rawParams.include_existing_tags,\n responseFormat: rawParams.response_format,\n };\n\n const result = await client.suggestTags(params);\n const responseText = formatResponse(\n result,\n params.responseFormat || \"markdown\",\n (data) => {\n let md = `# Tag Suggestions\\n\\n`;\n md += `**Existing Tags:** ${data.existing_tags.join(\", \") || \"none\"}\\n\\n`;\n md += `## Suggested Tags\\n`;\n for (const suggestion of data.suggestions) {\n md += `\\n### \\`${suggestion.tag}\\`\\n`;\n md += `**Confidence:** ${(suggestion.confidence * 100).toFixed(0)}%\\n`;\n md += `**Reason:** ${suggestion.reasoning}\\n`;\n }\n return md;\n }\n );\n\n return {\n content: [{ type: \"text\" as const, text: truncateIfNeeded(responseText) }],\n };\n } catch (error) {\n return {\n isError: true,\n content: [\n {\n type: \"text\" as const,\n text: `Error: ${error instanceof Error ? error.message : \"Unknown error\"}`,\n },\n ],\n };\n }\n }\n );\n\n // Register find related tool\n server.registerTool(\n \"memory_find_related\",\n {\n title: \"Find Related Memories\",\n description: `Find semantically related memories using vector similarity.`,\n inputSchema: z.object({\n memory_id: z.string().uuid(),\n user_id: z.string().uuid(),\n limit: z.number().int().min(1).max(50).default(10),\n similarity_threshold: z.number().min(0).max(1).default(0.7),\n response_format: z\n .enum([ResponseFormat.JSON, ResponseFormat.MARKDOWN])\n .default(ResponseFormat.MARKDOWN),\n }).strict(),\n annotations: {\n readOnlyHint: true,\n destructiveHint: false,\n idempotentHint: true,\n openWorldHint: true,\n },\n },\n async (rawParams: any) => {\n try {\n const params = {\n memoryId: rawParams.memory_id,\n userId: rawParams.user_id,\n limit: rawParams.limit,\n similarityThreshold: rawParams.similarity_threshold,\n responseFormat: rawParams.response_format,\n };\n\n const result = await client.findRelated(params);\n const responseText = formatResponse(\n result,\n params.responseFormat || \"markdown\",\n (data) => {\n let md = `# Related Memories\\n\\n`;\n md += `**Source:** ${data.source_memory.title}\\n`;\n md += `**Found:** ${data.total_found} related memories\\n\\n`;\n for (const mem of data.related_memories) {\n md += `## ${mem.title}\\n`;\n md += `**Similarity:** ${(mem.similarity_score * 100).toFixed(1)}%\\n`;\n if (mem.shared_tags.length > 0) {\n md += `**Shared Tags:** ${mem.shared_tags.join(\", \")}\\n`;\n }\n md += `**Preview:** ${mem.content_preview}\\n\\n`;\n }\n return md;\n }\n );\n\n return {\n content: [{ type: \"text\" as const, text: truncateIfNeeded(responseText) }],\n };\n } catch (error) {\n return {\n isError: true,\n content: [\n {\n type: \"text\" as const,\n text: `Error: ${error instanceof Error ? error.message : \"Unknown error\"}`,\n },\n ],\n };\n }\n }\n );\n\n // Register detect duplicates tool\n server.registerTool(\n \"memory_detect_duplicates\",\n {\n title: \"Detect Duplicate Memories\",\n description: `Find potential duplicate memories.`,\n inputSchema: z.object({\n user_id: z.string().uuid(),\n similarity_threshold: z.number().min(0.8).max(0.99).default(0.9),\n max_pairs: z.number().int().min(1).max(100).default(20),\n response_format: z\n .enum([ResponseFormat.JSON, ResponseFormat.MARKDOWN])\n .default(ResponseFormat.MARKDOWN),\n }).strict(),\n annotations: {\n readOnlyHint: true,\n destructiveHint: false,\n idempotentHint: true,\n openWorldHint: true,\n },\n },\n async (rawParams: any) => {\n try {\n const params = {\n userId: rawParams.user_id,\n similarityThreshold: rawParams.similarity_threshold,\n maxPairs: rawParams.max_pairs,\n responseFormat: rawParams.response_format,\n };\n\n const result = await client.detectDuplicates(params);\n const responseText = formatResponse(\n result,\n params.responseFormat || \"markdown\",\n (data) => {\n let md = `# Duplicate Detection\\n\\n`;\n md += `**Memories Analyzed:** ${data.total_memories_analyzed}\\n`;\n md += `**Duplicate Pairs Found:** ${data.duplicate_pairs_found}\\n`;\n md += `**Storage Savings:** ${data.estimated_storage_savings}\\n\\n`;\n for (const pair of data.duplicate_pairs) {\n md += `### Similarity: ${(pair.similarity_score * 100).toFixed(1)}%\\n`;\n md += `**Memory 1:** ${pair.memory_1.title}\\n`;\n md += `**Memory 2:** ${pair.memory_2.title}\\n`;\n md += `**Recommendation:** ${pair.recommendation}\\n\\n`;\n }\n return md;\n }\n );\n\n return {\n content: [{ type: \"text\" as const, text: truncateIfNeeded(responseText) }],\n };\n } catch (error) {\n return {\n isError: true,\n content: [\n {\n type: \"text\" as const,\n text: `Error: ${error instanceof Error ? error.message : \"Unknown error\"}`,\n },\n ],\n };\n }\n }\n );\n\n // Register extract insights tool\n server.registerTool(\n \"memory_extract_insights\",\n {\n title: \"Extract Insights from Memories\",\n description: `Extract key insights and patterns from memories.`,\n inputSchema: z.object({\n user_id: z.string().uuid(),\n topic: z.string().optional(),\n memory_type: z.string().optional(),\n max_memories: z.number().int().min(5).max(100).default(20),\n response_format: z\n .enum([ResponseFormat.JSON, ResponseFormat.MARKDOWN])\n .default(ResponseFormat.MARKDOWN),\n }).strict(),\n annotations: {\n readOnlyHint: true,\n destructiveHint: false,\n idempotentHint: false,\n openWorldHint: true,\n },\n },\n async (rawParams: any) => {\n try {\n const params = {\n userId: rawParams.user_id,\n topic: rawParams.topic,\n memoryType: rawParams.memory_type,\n maxMemories: rawParams.max_memories,\n responseFormat: rawParams.response_format,\n };\n\n const result = await client.extractInsights(params);\n const responseText = formatResponse(\n result,\n params.responseFormat || \"markdown\",\n (data) => {\n let md = `# Memory Insights\\n\\n`;\n md += `**Memories Analyzed:** ${data.total_memories_analyzed}\\n`;\n if (data.topic_filter) {\n md += `**Topic:** ${data.topic_filter}\\n`;\n }\n md += `\\n## Summary\\n${data.summary}\\n\\n`;\n md += `## Insights\\n`;\n for (const insight of data.insights) {\n const icon = {\n pattern: \"🔄\",\n learning: \"💡\",\n opportunity: \"🚀\",\n risk: \"⚠️\",\n action_item: \"✅\",\n }[insight.category] || \"📌\";\n md += `\\n### ${icon} ${insight.title}\\n`;\n md += `${insight.description}\\n`;\n md += `**Confidence:** ${(insight.confidence * 100).toFixed(0)}%\\n`;\n }\n return md;\n }\n );\n\n return {\n content: [{ type: \"text\" as const, text: truncateIfNeeded(responseText) }],\n };\n } catch (error) {\n return {\n isError: true,\n content: [\n {\n type: \"text\" as const,\n text: `Error: ${error instanceof Error ? error.message : \"Unknown error\"}`,\n },\n ],\n };\n }\n }\n );\n\n // Register health check tool\n server.registerTool(\n \"memory_health_check\",\n {\n title: \"Memory Health Check\",\n description: `Analyze the health and organization quality of memories.`,\n inputSchema: z.object({\n user_id: z.string().uuid(),\n response_format: z\n .enum([ResponseFormat.JSON, ResponseFormat.MARKDOWN])\n .default(ResponseFormat.MARKDOWN),\n }).strict(),\n annotations: {\n readOnlyHint: true,\n destructiveHint: false,\n idempotentHint: true,\n openWorldHint: true,\n },\n },\n async (rawParams: any) => {\n try {\n const params = {\n userId: rawParams.user_id,\n responseFormat: rawParams.response_format,\n };\n\n const result = await client.healthCheck(params);\n const responseText = formatResponse(\n result,\n params.responseFormat || \"markdown\",\n (data) => {\n let md = `# Memory Health Check\\n\\n`;\n md += `**Health Score:** ${data.health_score}/100\\n\\n`;\n md += `## Metrics\\n`;\n md += `- **Total Memories:** ${data.metrics.total_memories}\\n`;\n md += `- **Embedding Coverage:** ${data.metrics.embedding_coverage_percentage}%\\n`;\n md += `- **Tagging Rate:** ${data.metrics.tagging_percentage}%\\n`;\n md += `- **Avg Tags/Memory:** ${data.metrics.average_tags_per_memory}\\n\\n`;\n if (data.issues.length > 0) {\n md += `## Issues\\n`;\n for (const issue of data.issues) {\n md += `- ${issue}\\n`;\n }\n md += `\\n`;\n }\n md += `## Recommendations\\n`;\n for (const rec of data.recommendations) {\n md += `- ${rec}\\n`;\n }\n return md;\n }\n );\n\n return {\n content: [{ type: \"text\" as const, text: truncateIfNeeded(responseText) }],\n };\n } catch (error) {\n return {\n isError: true,\n content: [\n {\n type: \"text\" as const,\n text: `Error: ${error instanceof Error ? error.message : \"Unknown error\"}`,\n },\n ],\n };\n }\n }\n );\n\n return server;\n}\n"]}
1
+ {"version":3,"sources":["../../src/core/errors.ts","../../src/utils/http-client.ts","../../src/core/client.ts","../../src/core/types.ts","../../src/utils/formatting.ts","../../src/server/mcp-server.ts"],"names":["z"],"mappings":"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","file":"index.js","sourcesContent":["/**\n * SDK-specific error classes\n */\n\nexport class MemoryIntelligenceError extends Error {\n constructor(message: string) {\n super(message);\n this.name = \"MemoryIntelligenceError\";\n }\n}\n\nexport class ConfigurationError extends MemoryIntelligenceError {\n constructor(message: string) {\n super(message);\n this.name = \"ConfigurationError\";\n }\n}\n\nexport class MemoryNotFoundError extends MemoryIntelligenceError {\n constructor(memoryId: string) {\n super(`Memory not found: ${memoryId}`);\n this.name = \"MemoryNotFoundError\";\n }\n}\n\nexport class DatabaseError extends MemoryIntelligenceError {\n constructor(message: string, public originalError?: Error) {\n super(message);\n this.name = \"DatabaseError\";\n }\n}\n\nexport class EmbeddingError extends MemoryIntelligenceError {\n constructor(message: string, public originalError?: Error) {\n super(message);\n this.name = \"EmbeddingError\";\n }\n}\n\nexport class ValidationError extends MemoryIntelligenceError {\n constructor(message: string) {\n super(message);\n this.name = \"ValidationError\";\n }\n}\n","/**\n * HTTP client for Lanonasis API\n */\n\nimport { ConfigurationError } from \"../core/errors.js\";\n\nexport interface HttpClientConfig {\n apiUrl: string;\n apiKey: string;\n timeout?: number;\n headers?: Record<string, string>;\n}\n\nexport interface ApiResponse<T = any> {\n data?: T;\n error?: {\n message: string;\n code?: string;\n };\n status: number;\n}\n\nexport class HttpClient {\n private apiUrl: string;\n private apiKey: string;\n private timeout: number;\n private headers: Record<string, string>;\n\n constructor(config: HttpClientConfig) {\n if (!config.apiKey) {\n throw new ConfigurationError(\"API key is required\");\n }\n\n if (!config.apiKey.startsWith(\"lano_\")) {\n throw new ConfigurationError(\n \"Invalid API key format. API key should start with 'lano_'\"\n );\n }\n\n this.apiUrl = config.apiUrl.replace(/\\/$/, \"\"); // Remove trailing slash\n this.apiKey = config.apiKey;\n this.timeout = config.timeout || 30000;\n this.headers = {\n \"Content-Type\": \"application/json\",\n \"X-API-Key\": this.apiKey,\n ...config.headers,\n };\n }\n\n private async request<T>(\n method: string,\n endpoint: string,\n data?: any\n ): Promise<ApiResponse<T>> {\n const url = `${this.apiUrl}${endpoint}`;\n const controller = new AbortController();\n const timeoutId = setTimeout(() => controller.abort(), this.timeout);\n\n try {\n const options: RequestInit = {\n method,\n headers: this.headers,\n signal: controller.signal,\n };\n\n if (data && (method === \"POST\" || method === \"PUT\" || method === \"PATCH\")) {\n options.body = JSON.stringify(data);\n }\n\n const response = await fetch(url, options);\n clearTimeout(timeoutId);\n\n const responseData = await response.json() as any;\n\n if (!response.ok) {\n return {\n status: response.status,\n error: {\n message: responseData?.message || responseData?.error || \"Request failed\",\n code: responseData?.code,\n },\n };\n }\n\n return {\n status: response.status,\n data: responseData as T,\n };\n } catch (error) {\n clearTimeout(timeoutId);\n\n if (error instanceof Error) {\n if (error.name === \"AbortError\") {\n return {\n status: 408,\n error: {\n message: `Request timeout after ${this.timeout}ms`,\n code: \"TIMEOUT\",\n },\n };\n }\n\n return {\n status: 0,\n error: {\n message: error.message,\n code: \"NETWORK_ERROR\",\n },\n };\n }\n\n return {\n status: 0,\n error: {\n message: \"Unknown error occurred\",\n code: \"UNKNOWN_ERROR\",\n },\n };\n }\n }\n\n async get<T>(endpoint: string): Promise<ApiResponse<T>> {\n return this.request<T>(\"GET\", endpoint);\n }\n\n async post<T>(endpoint: string, data?: any): Promise<ApiResponse<T>> {\n return this.request<T>(\"POST\", endpoint, data);\n }\n\n async put<T>(endpoint: string, data?: any): Promise<ApiResponse<T>> {\n return this.request<T>(\"PUT\", endpoint, data);\n }\n\n async patch<T>(endpoint: string, data?: any): Promise<ApiResponse<T>> {\n return this.request<T>(\"PATCH\", endpoint, data);\n }\n\n async delete<T>(endpoint: string): Promise<ApiResponse<T>> {\n return this.request<T>(\"DELETE\", endpoint);\n }\n}\n","/**\n * Core Memory Intelligence Client\n */\n\nimport {\n MemoryIntelligenceConfig,\n AnalyzePatternsParams,\n PatternAnalysis,\n SuggestTagsParams,\n TagSuggestionsResult,\n FindRelatedParams,\n RelatedMemoriesResult,\n DetectDuplicatesParams,\n DuplicatesResult,\n ExtractInsightsParams,\n InsightsResult,\n HealthCheckParams,\n MemoryHealth,\n QueryMemoriesOptions,\n MemoryEntry,\n} from \"./types.js\";\nimport { ConfigurationError, DatabaseError } from \"./errors.js\";\nimport { HttpClient } from \"../utils/http-client.js\";\n\nconst DEFAULT_API_URL = \"https://api.lanonasis.com/api/v1\";\n\nexport class MemoryIntelligenceClient {\n private httpClient: HttpClient;\n private defaultResponseFormat: \"json\" | \"markdown\";\n\n constructor(config: MemoryIntelligenceConfig) {\n // Validate configuration\n if (!config.apiKey) {\n throw new ConfigurationError(\n \"Missing required configuration: apiKey is required (format: lano_xxxxxxxxxx)\"\n );\n }\n\n this.httpClient = new HttpClient({\n apiUrl: config.apiUrl || DEFAULT_API_URL,\n apiKey: config.apiKey,\n timeout: config.timeout,\n headers: config.headers,\n });\n\n this.defaultResponseFormat = config.responseFormat || \"markdown\";\n }\n\n /**\n * Get HTTP client for direct API access\n */\n public getHttpClient(): HttpClient {\n return this.httpClient;\n }\n\n /**\n * Query memories from the API\n */\n public async queryMemories(\n userId: string,\n options: QueryMemoriesOptions = {}\n ): Promise<MemoryEntry[]> {\n const { type, limit = 100, offset = 0 } = options;\n\n const params = new URLSearchParams({\n user_id: userId,\n limit: limit.toString(),\n offset: offset.toString(),\n });\n\n if (type) {\n params.append(\"type\", type);\n }\n\n const response = await this.httpClient.get<{ memories: MemoryEntry[] }>(\n `/intelligence/memories?${params.toString()}`\n );\n\n if (response.error) {\n throw new DatabaseError(`Failed to query memories: ${response.error.message}`);\n }\n\n return response.data?.memories || [];\n }\n\n /**\n * Analyze usage patterns and trends in memory collection\n */\n async analyzePatterns(params: AnalyzePatternsParams): Promise<PatternAnalysis> {\n const response = await this.httpClient.post<PatternAnalysis>(\n \"/intelligence/analyze-patterns\",\n {\n ...params,\n responseFormat: params.responseFormat || this.defaultResponseFormat,\n }\n );\n\n if (response.error) {\n throw new DatabaseError(`Failed to analyze patterns: ${response.error.message}`);\n }\n\n return response.data!;\n }\n\n /**\n * Get AI-powered tag suggestions for a memory\n */\n async suggestTags(params: SuggestTagsParams): Promise<TagSuggestionsResult> {\n const response = await this.httpClient.post<TagSuggestionsResult>(\n \"/intelligence/suggest-tags\",\n {\n ...params,\n responseFormat: params.responseFormat || this.defaultResponseFormat,\n }\n );\n\n if (response.error) {\n throw new DatabaseError(`Failed to suggest tags: ${response.error.message}`);\n }\n\n return response.data!;\n }\n\n /**\n * Find semantically related memories using vector similarity\n */\n async findRelated(params: FindRelatedParams): Promise<RelatedMemoriesResult> {\n const response = await this.httpClient.post<RelatedMemoriesResult>(\n \"/intelligence/find-related\",\n {\n ...params,\n responseFormat: params.responseFormat || this.defaultResponseFormat,\n }\n );\n\n if (response.error) {\n throw new DatabaseError(`Failed to find related memories: ${response.error.message}`);\n }\n\n return response.data!;\n }\n\n /**\n * Detect potential duplicate memories\n */\n async detectDuplicates(params: DetectDuplicatesParams): Promise<DuplicatesResult> {\n const response = await this.httpClient.post<DuplicatesResult>(\n \"/intelligence/detect-duplicates\",\n {\n ...params,\n responseFormat: params.responseFormat || this.defaultResponseFormat,\n }\n );\n\n if (response.error) {\n throw new DatabaseError(`Failed to detect duplicates: ${response.error.message}`);\n }\n\n return response.data!;\n }\n\n /**\n * Extract insights and patterns from memories\n */\n async extractInsights(params: ExtractInsightsParams): Promise<InsightsResult> {\n const response = await this.httpClient.post<InsightsResult>(\n \"/intelligence/extract-insights\",\n {\n ...params,\n responseFormat: params.responseFormat || this.defaultResponseFormat,\n }\n );\n\n if (response.error) {\n throw new DatabaseError(`Failed to extract insights: ${response.error.message}`);\n }\n\n return response.data!;\n }\n\n /**\n * Check the health and organization quality of memories\n */\n async healthCheck(params: HealthCheckParams): Promise<MemoryHealth> {\n const response = await this.httpClient.post<MemoryHealth>(\n \"/intelligence/health-check\",\n {\n ...params,\n responseFormat: params.responseFormat || this.defaultResponseFormat,\n }\n );\n\n if (response.error) {\n throw new DatabaseError(`Failed to check health: ${response.error.message}`);\n }\n\n return response.data!;\n }\n}\n","/**\n * Type definitions for Memory Intelligence SDK\n */\n\nimport { z } from \"zod\";\n\n// Response format enum\nexport const ResponseFormat = {\n JSON: \"json\",\n MARKDOWN: \"markdown\",\n} as const;\n\nexport type ResponseFormatType = (typeof ResponseFormat)[keyof typeof ResponseFormat];\n\n// Memory type enum\nexport const MemoryType = z.enum([\n \"context\",\n \"project\",\n \"knowledge\",\n \"reference\",\n \"personal\",\n \"workflow\",\n]);\n\nexport type MemoryTypeValue = z.infer<typeof MemoryType>;\n\n// Configuration interface\nexport interface MemoryIntelligenceConfig {\n apiUrl?: string; // Lanonasis API URL (default: https://api.lanonasis.com/api/v1)\n apiKey: string; // Lanonasis API key (format: lano_xxxxxxxxxx)\n timeout?: number; // Request timeout in milliseconds (default: 30000)\n responseFormat?: ResponseFormatType;\n headers?: Record<string, string>; // Custom headers\n}\n\n// Tool parameter interfaces\nexport interface AnalyzePatternsParams {\n userId: string;\n timeRangeDays?: number;\n responseFormat?: ResponseFormatType;\n}\n\nexport interface SuggestTagsParams {\n memoryId: string;\n userId: string;\n maxSuggestions?: number;\n includeExistingTags?: boolean;\n responseFormat?: ResponseFormatType;\n}\n\nexport interface FindRelatedParams {\n memoryId: string;\n userId: string;\n limit?: number;\n similarityThreshold?: number;\n responseFormat?: ResponseFormatType;\n}\n\nexport interface DetectDuplicatesParams {\n userId: string;\n similarityThreshold?: number;\n maxPairs?: number;\n responseFormat?: ResponseFormatType;\n}\n\nexport interface ExtractInsightsParams {\n userId: string;\n topic?: string;\n memoryType?: MemoryTypeValue;\n maxMemories?: number;\n responseFormat?: ResponseFormatType;\n}\n\nexport interface HealthCheckParams {\n userId: string;\n responseFormat?: ResponseFormatType;\n}\n\n// Tool result interfaces\nexport interface PatternAnalysis {\n total_memories: number;\n memories_by_type: Record<string, number>;\n memories_by_day_of_week: Record<string, number>;\n peak_creation_hours: number[];\n average_content_length: number;\n most_common_tags: Array<{ tag: string; count: number }>;\n creation_velocity: {\n daily_average: number;\n trend: \"increasing\" | \"stable\" | \"decreasing\";\n };\n insights: string[];\n}\n\nexport interface TagSuggestion {\n tag: string;\n confidence: number;\n reasoning: string;\n}\n\nexport interface TagSuggestionsResult {\n memory_id: string;\n existing_tags: string[];\n suggestions: TagSuggestion[];\n context: {\n memory_type: string;\n related_memories_analyzed: number;\n };\n}\n\nexport interface RelatedMemory {\n id: string;\n title: string;\n type: string;\n similarity_score: number;\n shared_tags: string[];\n content_preview: string;\n}\n\nexport interface RelatedMemoriesResult {\n source_memory: {\n id: string;\n title: string;\n type: string;\n };\n related_memories: RelatedMemory[];\n total_found: number;\n}\n\nexport interface DuplicatePair {\n memory_1: {\n id: string;\n title: string;\n created_at: string;\n };\n memory_2: {\n id: string;\n title: string;\n created_at: string;\n };\n similarity_score: number;\n recommendation: \"keep_newer\" | \"keep_older\" | \"merge\" | \"review_manually\";\n reasoning: string;\n}\n\nexport interface DuplicatesResult {\n total_memories_analyzed: number;\n duplicate_pairs_found: number;\n duplicate_pairs: DuplicatePair[];\n estimated_storage_savings: string;\n}\n\nexport interface Insight {\n category: \"pattern\" | \"learning\" | \"opportunity\" | \"risk\" | \"action_item\";\n title: string;\n description: string;\n confidence: number;\n supporting_memories: string[];\n}\n\nexport interface InsightsResult {\n total_memories_analyzed: number;\n insights: Insight[];\n summary: string;\n topic_filter?: string;\n type_filter?: string;\n}\n\nexport interface MemoryHealth {\n user_id: string;\n health_score: number;\n metrics: {\n total_memories: number;\n memories_with_embeddings: number;\n embedding_coverage_percentage: number;\n memories_with_tags: number;\n tagging_percentage: number;\n average_tags_per_memory: number;\n memories_by_type: Record<string, number>;\n };\n issues: string[];\n recommendations: string[];\n analysis_date: string;\n}\n\n// Memory entry interface (from database)\nexport interface MemoryEntry {\n id: string;\n user_id: string;\n title: string;\n content: string;\n type: MemoryTypeValue;\n tags?: string[];\n metadata?: Record<string, any>;\n embedding?: number[];\n created_at: string;\n updated_at: string;\n}\n\n// Query options for internal use\nexport interface QueryMemoriesOptions {\n type?: string;\n limit?: number;\n offset?: number;\n includeEmbeddings?: boolean;\n}\n","/**\n * Response formatting utilities\n */\n\nimport { ResponseFormat, ResponseFormatType } from \"../core/types.js\";\n\n// Character limit for responses\nconst CHARACTER_LIMIT = 50000;\n\n/**\n * Format response based on requested format\n */\nexport function formatResponse<T>(\n data: T,\n format: ResponseFormatType,\n markdownFormatter: (data: T) => string\n): string {\n if (format === ResponseFormat.JSON) {\n return JSON.stringify(data, null, 2);\n }\n return markdownFormatter(data);\n}\n\n/**\n * Truncate response if too long\n */\nexport function truncateIfNeeded(text: string): string {\n if (text.length > CHARACTER_LIMIT) {\n return (\n text.substring(0, CHARACTER_LIMIT) +\n `\\n\\n... (truncated, ${text.length - CHARACTER_LIMIT} characters omitted)`\n );\n }\n return text;\n}\n","/**\n * MCP Server wrapper using the SDK\n */\n\nimport { McpServer } from \"@modelcontextprotocol/sdk/server/mcp.js\";\nimport { z } from \"zod\";\nimport { MemoryIntelligenceClient } from \"../core/client.js\";\nimport { MemoryIntelligenceConfig, ResponseFormat } from \"../core/types.js\";\nimport { formatResponse, truncateIfNeeded } from \"../utils/formatting.js\";\n\nexport function createMCPServer(config: MemoryIntelligenceConfig) {\n const client = new MemoryIntelligenceClient(config);\n const server = new McpServer({\n name: \"memory-intelligence-mcp-server\",\n version: \"1.0.0\",\n });\n\n // Register analyze patterns tool\n server.registerTool(\n \"memory_analyze_patterns\",\n {\n title: \"Analyze Memory Patterns\",\n description: `Analyze usage patterns and trends in the user's memory collection.`,\n inputSchema: z.object({\n user_id: z.string().uuid(),\n time_range_days: z.number().int().min(1).max(365).default(30),\n response_format: z\n .enum([ResponseFormat.JSON, ResponseFormat.MARKDOWN])\n .default(ResponseFormat.MARKDOWN),\n }).strict(),\n annotations: {\n readOnlyHint: true,\n destructiveHint: false,\n idempotentHint: true,\n openWorldHint: true,\n },\n },\n async (rawParams: any) => {\n try {\n const params = {\n userId: rawParams.user_id,\n timeRangeDays: rawParams.time_range_days,\n responseFormat: rawParams.response_format,\n };\n\n const analysis = await client.analyzePatterns(params);\n const responseText = formatResponse(\n analysis,\n params.responseFormat || \"markdown\",\n (data) => {\n let md = `# Memory Pattern Analysis\\n\\n`;\n md += `**Time Range:** Last ${params.timeRangeDays || 30} days\\n`;\n md += `**Total Memories:** ${data.total_memories}\\n\\n`;\n md += `## Distribution by Type\\n`;\n for (const [type, count] of Object.entries(data.memories_by_type)) {\n const percentage = ((count / data.total_memories) * 100).toFixed(1);\n md += `- **${type}**: ${count} (${percentage}%)\\n`;\n }\n md += `\\n## Activity Patterns\\n`;\n md += `- **Peak Hours (UTC):** ${data.peak_creation_hours.join(\", \")}\\n`;\n md += `- **Daily Average:** ${data.creation_velocity.daily_average} memories/day\\n`;\n md += `- **Trend:** ${data.creation_velocity.trend}\\n`;\n md += `\\n## Top Tags\\n`;\n for (const { tag, count } of data.most_common_tags.slice(0, 5)) {\n md += `- **${tag}**: ${count} uses\\n`;\n }\n md += `\\n## AI Insights\\n`;\n for (const insight of data.insights) {\n md += `${insight}\\n`;\n }\n return md;\n }\n );\n\n return {\n content: [{ type: \"text\" as const, text: truncateIfNeeded(responseText) }],\n };\n } catch (error) {\n return {\n isError: true,\n content: [\n {\n type: \"text\" as const,\n text: `Error: ${error instanceof Error ? error.message : \"Unknown error\"}`,\n },\n ],\n };\n }\n }\n );\n\n // Register suggest tags tool\n server.registerTool(\n \"memory_suggest_tags\",\n {\n title: \"Suggest Tags for Memory\",\n description: `AI-powered tag suggestions for a memory.`,\n inputSchema: z.object({\n memory_id: z.string().uuid(),\n user_id: z.string().uuid(),\n max_suggestions: z.number().int().min(1).max(20).default(5),\n include_existing_tags: z.boolean().default(true),\n response_format: z\n .enum([ResponseFormat.JSON, ResponseFormat.MARKDOWN])\n .default(ResponseFormat.MARKDOWN),\n }).strict(),\n annotations: {\n readOnlyHint: true,\n destructiveHint: false,\n idempotentHint: false,\n openWorldHint: true,\n },\n },\n async (rawParams: any) => {\n try {\n const params = {\n memoryId: rawParams.memory_id,\n userId: rawParams.user_id,\n maxSuggestions: rawParams.max_suggestions,\n includeExistingTags: rawParams.include_existing_tags,\n responseFormat: rawParams.response_format,\n };\n\n const result = await client.suggestTags(params);\n const responseText = formatResponse(\n result,\n params.responseFormat || \"markdown\",\n (data) => {\n let md = `# Tag Suggestions\\n\\n`;\n md += `**Existing Tags:** ${data.existing_tags.join(\", \") || \"none\"}\\n\\n`;\n md += `## Suggested Tags\\n`;\n for (const suggestion of data.suggestions) {\n md += `\\n### \\`${suggestion.tag}\\`\\n`;\n md += `**Confidence:** ${(suggestion.confidence * 100).toFixed(0)}%\\n`;\n md += `**Reason:** ${suggestion.reasoning}\\n`;\n }\n return md;\n }\n );\n\n return {\n content: [{ type: \"text\" as const, text: truncateIfNeeded(responseText) }],\n };\n } catch (error) {\n return {\n isError: true,\n content: [\n {\n type: \"text\" as const,\n text: `Error: ${error instanceof Error ? error.message : \"Unknown error\"}`,\n },\n ],\n };\n }\n }\n );\n\n // Register find related tool\n server.registerTool(\n \"memory_find_related\",\n {\n title: \"Find Related Memories\",\n description: `Find semantically related memories using vector similarity.`,\n inputSchema: z.object({\n memory_id: z.string().uuid(),\n user_id: z.string().uuid(),\n limit: z.number().int().min(1).max(50).default(10),\n similarity_threshold: z.number().min(0).max(1).default(0.7),\n response_format: z\n .enum([ResponseFormat.JSON, ResponseFormat.MARKDOWN])\n .default(ResponseFormat.MARKDOWN),\n }).strict(),\n annotations: {\n readOnlyHint: true,\n destructiveHint: false,\n idempotentHint: true,\n openWorldHint: true,\n },\n },\n async (rawParams: any) => {\n try {\n const params = {\n memoryId: rawParams.memory_id,\n userId: rawParams.user_id,\n limit: rawParams.limit,\n similarityThreshold: rawParams.similarity_threshold,\n responseFormat: rawParams.response_format,\n };\n\n const result = await client.findRelated(params);\n const responseText = formatResponse(\n result,\n params.responseFormat || \"markdown\",\n (data) => {\n let md = `# Related Memories\\n\\n`;\n md += `**Source:** ${data.source_memory.title}\\n`;\n md += `**Found:** ${data.total_found} related memories\\n\\n`;\n for (const mem of data.related_memories) {\n md += `## ${mem.title}\\n`;\n md += `**Similarity:** ${(mem.similarity_score * 100).toFixed(1)}%\\n`;\n if (mem.shared_tags.length > 0) {\n md += `**Shared Tags:** ${mem.shared_tags.join(\", \")}\\n`;\n }\n md += `**Preview:** ${mem.content_preview}\\n\\n`;\n }\n return md;\n }\n );\n\n return {\n content: [{ type: \"text\" as const, text: truncateIfNeeded(responseText) }],\n };\n } catch (error) {\n return {\n isError: true,\n content: [\n {\n type: \"text\" as const,\n text: `Error: ${error instanceof Error ? error.message : \"Unknown error\"}`,\n },\n ],\n };\n }\n }\n );\n\n // Register detect duplicates tool\n server.registerTool(\n \"memory_detect_duplicates\",\n {\n title: \"Detect Duplicate Memories\",\n description: `Find potential duplicate memories.`,\n inputSchema: z.object({\n user_id: z.string().uuid(),\n similarity_threshold: z.number().min(0.8).max(0.99).default(0.9),\n max_pairs: z.number().int().min(1).max(100).default(20),\n response_format: z\n .enum([ResponseFormat.JSON, ResponseFormat.MARKDOWN])\n .default(ResponseFormat.MARKDOWN),\n }).strict(),\n annotations: {\n readOnlyHint: true,\n destructiveHint: false,\n idempotentHint: true,\n openWorldHint: true,\n },\n },\n async (rawParams: any) => {\n try {\n const params = {\n userId: rawParams.user_id,\n similarityThreshold: rawParams.similarity_threshold,\n maxPairs: rawParams.max_pairs,\n responseFormat: rawParams.response_format,\n };\n\n const result = await client.detectDuplicates(params);\n const responseText = formatResponse(\n result,\n params.responseFormat || \"markdown\",\n (data) => {\n let md = `# Duplicate Detection\\n\\n`;\n md += `**Memories Analyzed:** ${data.total_memories_analyzed}\\n`;\n md += `**Duplicate Pairs Found:** ${data.duplicate_pairs_found}\\n`;\n md += `**Storage Savings:** ${data.estimated_storage_savings}\\n\\n`;\n for (const pair of data.duplicate_pairs) {\n md += `### Similarity: ${(pair.similarity_score * 100).toFixed(1)}%\\n`;\n md += `**Memory 1:** ${pair.memory_1.title}\\n`;\n md += `**Memory 2:** ${pair.memory_2.title}\\n`;\n md += `**Recommendation:** ${pair.recommendation}\\n\\n`;\n }\n return md;\n }\n );\n\n return {\n content: [{ type: \"text\" as const, text: truncateIfNeeded(responseText) }],\n };\n } catch (error) {\n return {\n isError: true,\n content: [\n {\n type: \"text\" as const,\n text: `Error: ${error instanceof Error ? error.message : \"Unknown error\"}`,\n },\n ],\n };\n }\n }\n );\n\n // Register extract insights tool\n server.registerTool(\n \"memory_extract_insights\",\n {\n title: \"Extract Insights from Memories\",\n description: `Extract key insights and patterns from memories.`,\n inputSchema: z.object({\n user_id: z.string().uuid(),\n topic: z.string().optional(),\n memory_type: z.string().optional(),\n max_memories: z.number().int().min(5).max(100).default(20),\n response_format: z\n .enum([ResponseFormat.JSON, ResponseFormat.MARKDOWN])\n .default(ResponseFormat.MARKDOWN),\n }).strict(),\n annotations: {\n readOnlyHint: true,\n destructiveHint: false,\n idempotentHint: false,\n openWorldHint: true,\n },\n },\n async (rawParams: any) => {\n try {\n const params = {\n userId: rawParams.user_id,\n topic: rawParams.topic,\n memoryType: rawParams.memory_type,\n maxMemories: rawParams.max_memories,\n responseFormat: rawParams.response_format,\n };\n\n const result = await client.extractInsights(params);\n const responseText = formatResponse(\n result,\n params.responseFormat || \"markdown\",\n (data) => {\n let md = `# Memory Insights\\n\\n`;\n md += `**Memories Analyzed:** ${data.total_memories_analyzed}\\n`;\n if (data.topic_filter) {\n md += `**Topic:** ${data.topic_filter}\\n`;\n }\n md += `\\n## Summary\\n${data.summary}\\n\\n`;\n md += `## Insights\\n`;\n for (const insight of data.insights) {\n const icon = {\n pattern: \"🔄\",\n learning: \"💡\",\n opportunity: \"🚀\",\n risk: \"⚠️\",\n action_item: \"✅\",\n }[insight.category] || \"📌\";\n md += `\\n### ${icon} ${insight.title}\\n`;\n md += `${insight.description}\\n`;\n md += `**Confidence:** ${(insight.confidence * 100).toFixed(0)}%\\n`;\n }\n return md;\n }\n );\n\n return {\n content: [{ type: \"text\" as const, text: truncateIfNeeded(responseText) }],\n };\n } catch (error) {\n return {\n isError: true,\n content: [\n {\n type: \"text\" as const,\n text: `Error: ${error instanceof Error ? error.message : \"Unknown error\"}`,\n },\n ],\n };\n }\n }\n );\n\n // Register health check tool\n server.registerTool(\n \"memory_health_check\",\n {\n title: \"Memory Health Check\",\n description: `Analyze the health and organization quality of memories.`,\n inputSchema: z.object({\n user_id: z.string().uuid(),\n response_format: z\n .enum([ResponseFormat.JSON, ResponseFormat.MARKDOWN])\n .default(ResponseFormat.MARKDOWN),\n }).strict(),\n annotations: {\n readOnlyHint: true,\n destructiveHint: false,\n idempotentHint: true,\n openWorldHint: true,\n },\n },\n async (rawParams: any) => {\n try {\n const params = {\n userId: rawParams.user_id,\n responseFormat: rawParams.response_format,\n };\n\n const result = await client.healthCheck(params);\n const responseText = formatResponse(\n result,\n params.responseFormat || \"markdown\",\n (data) => {\n let md = `# Memory Health Check\\n\\n`;\n md += `**Health Score:** ${data.health_score}/100\\n\\n`;\n md += `## Metrics\\n`;\n md += `- **Total Memories:** ${data.metrics.total_memories}\\n`;\n md += `- **Embedding Coverage:** ${data.metrics.embedding_coverage_percentage}%\\n`;\n md += `- **Tagging Rate:** ${data.metrics.tagging_percentage}%\\n`;\n md += `- **Avg Tags/Memory:** ${data.metrics.average_tags_per_memory}\\n\\n`;\n if (data.issues.length > 0) {\n md += `## Issues\\n`;\n for (const issue of data.issues) {\n md += `- ${issue}\\n`;\n }\n md += `\\n`;\n }\n md += `## Recommendations\\n`;\n for (const rec of data.recommendations) {\n md += `- ${rec}\\n`;\n }\n return md;\n }\n );\n\n return {\n content: [{ type: \"text\" as const, text: truncateIfNeeded(responseText) }],\n };\n } catch (error) {\n return {\n isError: true,\n content: [\n {\n type: \"text\" as const,\n text: `Error: ${error instanceof Error ? error.message : \"Unknown error\"}`,\n },\n ],\n };\n }\n }\n );\n\n return server;\n}\n"]}
@@ -2,6 +2,6 @@
2
2
  * MCP Server wrapper using the SDK
3
3
  */
4
4
  import { McpServer } from "@modelcontextprotocol/sdk/server/mcp.js";
5
- import { MemoryIntelligenceConfig } from "../core/types";
5
+ import { MemoryIntelligenceConfig } from "../core/types.js";
6
6
  export declare function createMCPServer(config: MemoryIntelligenceConfig): McpServer;
7
7
  //# sourceMappingURL=mcp-server.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"mcp-server.d.ts","sourceRoot":"","sources":["../../src/server/mcp-server.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;AAGpE,OAAO,EAAE,wBAAwB,EAAkB,MAAM,eAAe,CAAC;AAGzE,wBAAgB,eAAe,CAAC,MAAM,EAAE,wBAAwB,aA8a/D"}
1
+ {"version":3,"file":"mcp-server.d.ts","sourceRoot":"","sources":["../../src/server/mcp-server.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;AAGpE,OAAO,EAAE,wBAAwB,EAAkB,MAAM,kBAAkB,CAAC;AAG5E,wBAAgB,eAAe,CAAC,MAAM,EAAE,wBAAwB,aA8a/D"}
@@ -3,7 +3,7 @@
3
3
  * Note: This is for internal/server use only.
4
4
  * SDK users don't need to generate embeddings directly - the API handles it.
5
5
  */
6
- import OpenAI from "openai";
6
+ import { OpenAI } from "openai/index.mjs";
7
7
  /**
8
8
  * Generate embedding for text using OpenAI
9
9
  * This is for server-side implementation only.
@@ -1 +1 @@
1
- {"version":3,"file":"embeddings.d.ts","sourceRoot":"","sources":["../../src/utils/embeddings.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,MAAM,MAAM,QAAQ,CAAC;AAG5B;;;;GAIG;AACH,wBAAsB,iBAAiB,CACrC,IAAI,EAAE,MAAM,EACZ,MAAM,EAAE,MAAM,GACb,OAAO,CAAC,MAAM,EAAE,CAAC,CAoBnB"}
1
+ {"version":3,"file":"embeddings.d.ts","sourceRoot":"","sources":["../../src/utils/embeddings.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EAAE,MAAM,EAAE,MAAM,kBAAkB,CAAC;AAG1C;;;;GAIG;AACH,wBAAsB,iBAAiB,CACrC,IAAI,EAAE,MAAM,EACZ,MAAM,EAAE,MAAM,GACb,OAAO,CAAC,MAAM,EAAE,CAAC,CAoBnB"}
@@ -1,7 +1,7 @@
1
1
  /**
2
2
  * Response formatting utilities
3
3
  */
4
- import { ResponseFormatType } from "../core/types";
4
+ import { ResponseFormatType } from "../core/types.js";
5
5
  /**
6
6
  * Format response based on requested format
7
7
  */
@@ -1 +1 @@
1
- {"version":3,"file":"formatting.d.ts","sourceRoot":"","sources":["../../src/utils/formatting.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,EAAkB,kBAAkB,EAAE,MAAM,eAAe,CAAC;AAKnE;;GAEG;AACH,wBAAgB,cAAc,CAAC,CAAC,EAC9B,IAAI,EAAE,CAAC,EACP,MAAM,EAAE,kBAAkB,EAC1B,iBAAiB,EAAE,CAAC,IAAI,EAAE,CAAC,KAAK,MAAM,GACrC,MAAM,CAKR;AAED;;GAEG;AACH,wBAAgB,gBAAgB,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CAQrD"}
1
+ {"version":3,"file":"formatting.d.ts","sourceRoot":"","sources":["../../src/utils/formatting.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,EAAkB,kBAAkB,EAAE,MAAM,kBAAkB,CAAC;AAKtE;;GAEG;AACH,wBAAgB,cAAc,CAAC,CAAC,EAC9B,IAAI,EAAE,CAAC,EACP,MAAM,EAAE,kBAAkB,EAC1B,iBAAiB,EAAE,CAAC,IAAI,EAAE,CAAC,KAAK,MAAM,GACrC,MAAM,CAKR;AAED;;GAEG;AACH,wBAAgB,gBAAgB,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CAQrD"}
@@ -1,9 +1,9 @@
1
1
  /**
2
2
  * Utility functions barrel export
3
3
  */
4
- export { HttpClient } from "./http-client";
5
- export type { HttpClientConfig, ApiResponse } from "./http-client";
6
- export { generateEmbedding } from "./embeddings";
7
- export { cosineSimilarity } from "./similarity";
8
- export { formatResponse, truncateIfNeeded } from "./formatting";
4
+ export { HttpClient } from "./http-client.js";
5
+ export type { HttpClientConfig, ApiResponse } from "./http-client.js";
6
+ export { generateEmbedding } from "./embeddings.js";
7
+ export { cosineSimilarity } from "./similarity.js";
8
+ export { formatResponse, truncateIfNeeded } from "./formatting.js";
9
9
  //# sourceMappingURL=index.d.ts.map