claude-flow
Version:
Ruflo - Enterprise AI agent orchestration for Claude Code. Deploy 60+ specialized agents in coordinated swarms with self-learning, fault-tolerant consensus, vector memory, and MCP integration
200 lines (174 loc) • 4.98 kB
text/typescript
/**
* Code Intelligence Plugin for Claude Flow V3
*
* A comprehensive code intelligence plugin combining graph neural networks
* for code structure analysis with ultra-fast vector search for semantic
* code similarity.
*
* Features:
* - Semantic code search
* - Architecture analysis and drift detection
* - Refactoring impact prediction using GNN
* - Module splitting suggestions using MinCut
* - Pattern learning from code history
*
* Based on ADR-035: Advanced Code Intelligence Plugin
*
* @module @claude-flow/plugin-code-intelligence
*/
// Export types
export * from './types.js';
// Export bridges
export { GNNBridge, createGNNBridge } from './bridges/gnn-bridge.js';
export { MinCutBridge, createMinCutBridge } from './bridges/mincut-bridge.js';
// Export MCP tools
export {
semanticSearchTool,
architectureAnalyzeTool,
refactorImpactTool,
splitSuggestTool,
learnPatternsTool,
codeIntelligenceTools,
toolHandlers,
createToolContext,
} from './mcp-tools.js';
export type { MCPTool, ToolContext, MCPToolResult } from './mcp-tools.js';
// Import for plugin creation
import { codeIntelligenceTools } from './mcp-tools.js';
import { createGNNBridge } from './bridges/gnn-bridge.js';
import { createMinCutBridge } from './bridges/mincut-bridge.js';
import type {
CodeIntelligenceConfig,
IGNNBridge,
IMinCutBridge,
} from './types.js';
import { DEFAULT_CONFIG } from './types.js';
/**
* Plugin metadata
*/
export const pluginMetadata = {
name: '@claude-flow/plugin-code-intelligence',
version: '3.0.0-alpha.1',
description: 'Advanced code intelligence plugin for semantic search, architecture analysis, and refactoring',
author: 'Claude Flow Team',
category: 'code-intelligence',
keywords: ['code', 'intelligence', 'semantic-search', 'architecture', 'refactoring'],
homepage: 'https://github.com/ruvnet/claude-flow',
repository: 'https://github.com/ruvnet/claude-flow.git',
};
/**
* Plugin state
*/
export type PluginState = 'uninitialized' | 'initializing' | 'ready' | 'error' | 'shutdown';
/**
* Code Intelligence Plugin Class
*/
export class CodeIntelligencePlugin {
private state: PluginState = 'uninitialized';
private config: CodeIntelligenceConfig;
private gnnBridge: IGNNBridge | null = null;
private mincutBridge: IMinCutBridge | null = null;
constructor(config: Partial<CodeIntelligenceConfig> = {}) {
this.config = { ...DEFAULT_CONFIG, ...config };
}
/**
* Get plugin metadata
*/
getMetadata() {
return pluginMetadata;
}
/**
* Get current state
*/
getState(): PluginState {
return this.state;
}
/**
* Initialize the plugin
*/
async initialize(): Promise<void> {
if (this.state === 'ready') return;
this.state = 'initializing';
try {
// Initialize WASM bridges
this.gnnBridge = createGNNBridge(this.config.search.embeddingDimension);
this.mincutBridge = createMinCutBridge();
await Promise.all([
this.gnnBridge.initialize(),
this.mincutBridge.initialize(),
]);
this.state = 'ready';
} catch (error) {
this.state = 'error';
throw error;
}
}
/**
* Shutdown the plugin
*/
async shutdown(): Promise<void> {
this.state = 'shutdown';
this.gnnBridge = null;
this.mincutBridge = null;
}
/**
* Get MCP tools provided by this plugin
*/
getMCPTools() {
return codeIntelligenceTools;
}
/**
* Get tool context for execution
*/
getToolContext() {
if (!this.gnnBridge || !this.mincutBridge) {
throw new Error('Plugin not initialized');
}
const store = new Map<string, unknown>();
const blockedPatterns = this.config.security.blockedPatterns.map(
p => new RegExp(p)
);
return {
get: <T>(key: string) => store.get(key) as T | undefined,
set: <T>(key: string, value: T) => { store.set(key, value); },
bridges: {
gnn: this.gnnBridge,
mincut: this.mincutBridge,
},
config: {
allowedRoots: this.config.security.allowedRoots,
blockedPatterns,
maskSecrets: this.config.security.maskSecrets,
},
};
}
/**
* Get configuration
*/
getConfig(): CodeIntelligenceConfig {
return this.config;
}
/**
* Update configuration
*/
updateConfig(config: Partial<CodeIntelligenceConfig>): void {
this.config = {
...this.config,
...config,
search: { ...this.config.search, ...config.search },
architecture: { ...this.config.architecture, ...config.architecture },
refactoring: { ...this.config.refactoring, ...config.refactoring },
security: { ...this.config.security, ...config.security },
};
}
}
/**
* Create plugin instance
*/
export function createPlugin(config?: Partial<CodeIntelligenceConfig>): CodeIntelligencePlugin {
return new CodeIntelligencePlugin(config);
}
/**
* Default export
*/
export default CodeIntelligencePlugin;