UNPKG

@mmlotfy/intellicodemcp

Version:

IntelliCodeMCP - Advanced AI Model Context Protocol System for intelligent code management and orchestration

112 lines 4.42 kB
"use strict"; var __importDefault = (this && this.__importDefault) || function (mod) { return (mod && mod.__esModule) ? mod : { "default": mod }; }; Object.defineProperty(exports, "__esModule", { value: true }); exports.executeSmartContext = executeSmartContext; const fs_1 = require("fs"); const path_1 = __importDefault(require("path")); const memory_bank_1 = require("./memory-bank"); const fuse_js_1 = __importDefault(require("fuse.js")); async function executeSmartContext(args) { const { thread_id, task_id, max_tokens = 10000, query } = args; const timestamp = new Date().toISOString(); let contextContent = ''; try { // Gather context from threads or tasks if (thread_id) { const threadFile = path_1.default.join('intelliMemoryHub', 'threads', `${thread_id}.txt`); contextContent += await fs_1.promises.readFile(threadFile, 'utf8'); } if (task_id) { const taskFile = path_1.default.join('intelliMemoryHub', 'knots', `${task_id}.txt`); contextContent += await fs_1.promises.readFile(taskFile, 'utf8'); } // Perform search if query is provided let searchResults = []; if (query) { searchResults = await searchContext(query); contextContent += `\nSearch Results:\n${searchResults.map(r => `File: ${r.file}, Preview: ${r.content}`).join('\n')}`; } // Generate summary (simulated with truncation for now) const summary = truncateContent(contextContent, max_tokens); // Save summary const summaryFile = `summary_${timestamp.replace(/[-:.]/g, '')}.json`; const summaryData = { thread_id, task_id, summary, search_results: searchResults, timestamp, }; await (0, memory_bank_1.executeMemoryFile)({ action: 'write', category: 'docs', file_name: `weaver_summaries/${summaryFile}`, content: JSON.stringify(summaryData, null, 2), }); return summaryData; } catch (err) { const errorSummary = { summary: `Error generating summary: ${err.message}`, timestamp, }; await (0, memory_bank_1.executeMemoryFile)({ action: 'write', category: 'docs', file_name: `weaver_summaries/error_${timestamp.replace(/[-:.]/g, '')}.json`, content: JSON.stringify(errorSummary, null, 2), }); throw err; } } async function searchContext(query) { const basePath = path_1.default.resolve(process.cwd(), 'intelliMemoryHub'); const files = await getFiles(basePath); const documents = await Promise.all(files.map(async (file) => ({ file: path_1.default.relative(process.cwd(), file), content: await fs_1.promises.readFile(file, 'utf8'), }))); const fuse = new fuse_js_1.default(documents, { keys: ['content'], includeScore: true, threshold: 0.3, }); const results = fuse.search(query); const searchResults = results.map((result) => ({ file: result.item.file, content: result.item.content.slice(0, 200) + '...', score: result.score || 0, })); const timestamp = new Date().toISOString().replace(/[-:.]/g, ''); await (0, memory_bank_1.executeMemoryFile)({ action: 'write', category: 'search', file_name: `search_result_${timestamp}.json`, content: JSON.stringify({ query, results: searchResults, timestamp: new Date().toISOString() }, null, 2), }); return searchResults; } async function getFiles(dir) { const entries = await fs_1.promises.readdir(dir, { withFileTypes: true }); const files = []; for (const entry of entries) { const fullPath = path_1.default.join(dir, entry.name); if (entry.isDirectory()) { files.push(...await getFiles(fullPath)); } else if (fullPath.match(/\.(ts|tsx|js|jsx|txt|md|json|yaml)$/)) { files.push(fullPath); } } return files; } function truncateContent(content, maxTokens) { // Rough token estimation: 1 token ≈ 4 characters const maxChars = maxTokens * 4; if (content.length <= maxChars) return content; return content.slice(0, maxChars) + '...'; } //# sourceMappingURL=smartcontext-weaver.js.map