@aaswe/codebase-ai
Version:
AI-Assisted Software Engineering (AASWE) - Rich codebase context for IDE LLMs
210 lines • 7.59 kB
JavaScript
"use strict";
/**
* MCP Server Module
*
* Model Context Protocol server for IDE integration that provides
* rich codebase context using TTL files and knowledge graphs.
*/
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
if (k2 === undefined) k2 = k;
var desc = Object.getOwnPropertyDescriptor(m, k);
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
desc = { enumerable: true, get: function() { return m[k]; } };
}
Object.defineProperty(o, k2, desc);
}) : (function(o, m, k, k2) {
if (k2 === undefined) k2 = k;
o[k2] = m[k];
}));
var __exportStar = (this && this.__exportStar) || function(m, exports) {
for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
};
Object.defineProperty(exports, "__esModule", { value: true });
exports.MCPServer = void 0;
exports.createDefaultMCPConfig = createDefaultMCPConfig;
exports.validateMCPConfig = validateMCPConfig;
var MCPServer_1 = require("./MCPServer");
Object.defineProperty(exports, "MCPServer", { enumerable: true, get: function () { return MCPServer_1.MCPServer; } });
__exportStar(require("./types"), exports);
function createDefaultMCPConfig() {
return {
server: {
name: 'AASWE-MCP-Server',
version: '1.0.0',
port: 3001,
host: 'localhost',
maxConnections: 100,
timeout: 30000
},
context: {
maxTokens: 8000,
maxFiles: 10,
relevanceThreshold: 0.3,
cacheEnabled: true,
cacheTtl: 300000 // 5 minutes
},
ttl: {
watchEnabled: true,
watchDebounce: 1000,
maxFileSize: 1024 * 1024, // 1MB
encoding: 'utf-8',
directories: ['./clean-knowledge', './.aaswe/knowledge', './knowledge'], // Default TTL directories
patterns: ['**/*.module-knowledge.ttl', '**/*.ttl'] // TTL file patterns
},
integration: {
layer3Config: {
rag: {
enabled: true,
vectorStore: {
type: 'memory',
dimensions: 1536,
similarity: 'cosine'
},
retrieval: {
topK: 5,
scoreThreshold: 0.7,
maxTokens: 4000,
contextWindow: 8000
},
llm: {
provider: 'openai',
model: 'gpt-4',
temperature: 0.1,
maxTokens: 1000
},
embeddings: {
provider: 'openai',
model: 'text-embedding-ada-002',
dimensions: 1536
},
cache: {
enabled: true,
ttl: 300000,
maxSize: 1000
}
},
graphCypher: {
enabled: true,
neo4j: {
uri: 'bolt://localhost:7687',
user: 'neo4j',
password: 'password'
},
llm: {
provider: 'openai',
model: 'gpt-4',
temperature: 0.1,
maxTokens: 1000
},
queryGeneration: {
maxRetries: 3,
timeoutMs: 30000,
validateSyntax: true,
optimizeQuery: true
},
schema: {
cacheEnabled: true,
cacheTtl: 3600000,
includeIndexes: true,
includeConstraints: true,
maxNodes: 1000,
maxRelationships: 1000
},
response: {
includeQuery: true,
includeExplanation: true,
maxResults: 100,
formatResults: true
}
},
sparql: {
enabled: true,
rdf: {
timeout: 30000,
maxResults: 1000
},
llm: {
provider: 'openai',
model: 'gpt-4',
temperature: 0.1,
maxTokens: 1000
},
queryGeneration: {
maxRetries: 3,
timeoutMs: 30000,
validateSyntax: true,
optimizeQuery: true,
usePatterns: true
},
prefixes: {
'rdf': 'http://www.w3.org/1999/02/22-rdf-syntax-ns#',
'rdfs': 'http://www.w3.org/2000/01/rdf-schema#',
'owl': 'http://www.w3.org/2002/07/owl#',
'xsd': 'http://www.w3.org/2001/XMLSchema#',
'aaswe': 'http://aaswe.org/ontology#'
},
response: {
includeQuery: true,
includeExplanation: true,
formatResults: true,
maxResults: 100
},
caching: {
enabled: true,
ttl: 300000,
maxSize: 1000
}
},
global: {
defaultProvider: 'openai',
fallbackProvider: 'openai',
timeout: 30000,
retries: 3,
enableMetrics: true,
enableLogging: true
}
},
neo4jEnabled: true,
rdfStoreEnabled: true,
hybridStorageEnabled: true
},
ide: {
vscode: {
enabled: true,
extensionId: 'aaswe.mcp-extension',
contextWindow: 8000
},
intellij: {
enabled: true,
pluginId: 'org.aaswe.mcp-plugin',
contextWindow: 8000
}
}
};
}
// Configuration validation
function validateMCPConfig(config) {
const errors = [];
// Validate server config
if (!config.server.name)
errors.push('Server name is required');
if (!config.server.port || config.server.port < 1 || config.server.port > 65535) {
errors.push('Valid server port (1-65535) is required');
}
// Validate context config
if (config.context.maxTokens < 1000) {
errors.push('Context maxTokens should be at least 1000');
}
if (config.context.maxFiles < 1) {
errors.push('Context maxFiles should be at least 1');
}
// Validate TTL config
if (config.ttl.maxFileSize < 1024) {
errors.push('TTL maxFileSize should be at least 1024 bytes');
}
return {
valid: errors.length === 0,
errors
};
}
//# sourceMappingURL=index.js.map