@@ -5,7 +5,21 @@ import { RiddlDiagnosticsProvider } from './diagnosticsProvider';
55import { RiddlCompletionProvider } from './completionProvider' ;
66import { RiddlDefinitionProvider } from './definitionProvider' ;
77import { RiddlReferenceProvider } from './referenceProvider' ;
8+ import { RiddlCodeActionsProvider , registerCodeActionCommands } from './codeActionsProvider' ;
9+ import { RiddlFoldingRangeProvider } from './foldingProvider' ;
10+ import { RiddlDocumentSymbolProvider } from './documentSymbolProvider' ;
811import * as commands from './commands' ;
12+ import {
13+ getMcpService ,
14+ disposeMcpService ,
15+ mcpValidate ,
16+ mcpValidatePartial ,
17+ mcpCheckCompleteness ,
18+ mcpCheckSimulability ,
19+ mcpExplainError ,
20+ mcpSuggestNext ,
21+ mcpGenerateRiddl ,
22+ } from './mcp' ;
923
1024/**
1125 * RIDDL VSCode Extension
@@ -16,6 +30,12 @@ import * as commands from './commands';
1630 * Milestone 4: Hover provider for documentation
1731 * Milestone 5: Diagnostics provider for parse and validation errors
1832 * Milestone 6: Code intelligence (completion, definitions, references)
33+ * Milestone 7: Commands (info, parse, validate, translate)
34+ * Milestone 9: MCP client infrastructure for AI-assisted features
35+ * Milestone 10: MCP commands for AI tools
36+ * Milestone 11: Code actions (light bulb) for AI-assisted development
37+ * Milestone 12: Code folding for definitions and comments
38+ * Milestone 13: Document outline and breadcrumb navigation
1939 *
2040 * This extension provides language support for RIDDL (Reactive Interface to Domain Definition Language),
2141 * a specification language for designing distributed, reactive, cloud-native systems using DDD principles.
@@ -131,6 +151,49 @@ export function activate(context: vscode.ExtensionContext) {
131151 ) ;
132152 console . log ( 'RIDDL reference provider registered' ) ;
133153
154+ // Register code actions provider for AI-assisted suggestions
155+ console . log ( 'Creating code actions provider...' ) ;
156+ const codeActionsProvider = new RiddlCodeActionsProvider ( ) ;
157+ console . log ( 'Registering code actions provider...' ) ;
158+ context . subscriptions . push (
159+ vscode . languages . registerCodeActionsProvider (
160+ selector ,
161+ codeActionsProvider ,
162+ {
163+ providedCodeActionKinds : RiddlCodeActionsProvider . providedCodeActionKinds ,
164+ }
165+ )
166+ ) ;
167+ console . log ( 'RIDDL code actions provider registered' ) ;
168+
169+ // Register code action commands
170+ registerCodeActionCommands ( context ) ;
171+ console . log ( 'RIDDL code action commands registered' ) ;
172+
173+ // Register folding range provider for code folding
174+ console . log ( 'Creating folding range provider...' ) ;
175+ const foldingProvider = new RiddlFoldingRangeProvider ( ) ;
176+ console . log ( 'Registering folding range provider...' ) ;
177+ context . subscriptions . push (
178+ vscode . languages . registerFoldingRangeProvider (
179+ selector ,
180+ foldingProvider
181+ )
182+ ) ;
183+ console . log ( 'RIDDL folding range provider registered' ) ;
184+
185+ // Register document symbol provider for outline and breadcrumbs
186+ console . log ( 'Creating document symbol provider...' ) ;
187+ const documentSymbolProvider = new RiddlDocumentSymbolProvider ( ) ;
188+ console . log ( 'Registering document symbol provider...' ) ;
189+ context . subscriptions . push (
190+ vscode . languages . registerDocumentSymbolProvider (
191+ selector ,
192+ documentSymbolProvider
193+ )
194+ ) ;
195+ console . log ( 'RIDDL document symbol provider registered' ) ;
196+
134197 } catch ( error ) {
135198 console . error ( 'Error during extension activation:' , error ) ;
136199 if ( error instanceof Error ) {
@@ -179,9 +242,91 @@ export function activate(context: vscode.ExtensionContext) {
179242 ) ;
180243
181244 console . log ( 'RIDDL commands registered' ) ;
245+
246+ // Initialize MCP service for AI-assisted features
247+ console . log ( 'Initializing MCP service...' ) ;
248+ const mcpService = getMcpService ( ) ;
249+ context . subscriptions . push ( mcpService ) ;
250+
251+ // Register MCP commands
252+ context . subscriptions . push (
253+ vscode . commands . registerCommand ( 'riddl.mcp.toggleConnection' , ( ) => {
254+ mcpService . toggleConnection ( ) ;
255+ } )
256+ ) ;
257+
258+ context . subscriptions . push (
259+ vscode . commands . registerCommand ( 'riddl.mcp.showOutput' , ( ) => {
260+ mcpService . showOutput ( ) ;
261+ } )
262+ ) ;
263+
264+ // Register MCP tool commands
265+ context . subscriptions . push (
266+ vscode . commands . registerCommand ( 'riddl.mcp.validate' , ( ) => {
267+ mcpValidate ( ) ;
268+ } )
269+ ) ;
270+
271+ context . subscriptions . push (
272+ vscode . commands . registerCommand ( 'riddl.mcp.validatePartial' , ( ) => {
273+ mcpValidatePartial ( ) ;
274+ } )
275+ ) ;
276+
277+ context . subscriptions . push (
278+ vscode . commands . registerCommand ( 'riddl.mcp.checkCompleteness' , ( ) => {
279+ mcpCheckCompleteness ( ) ;
280+ } )
281+ ) ;
282+
283+ context . subscriptions . push (
284+ vscode . commands . registerCommand ( 'riddl.mcp.checkSimulability' , ( ) => {
285+ mcpCheckSimulability ( ) ;
286+ } )
287+ ) ;
288+
289+ context . subscriptions . push (
290+ vscode . commands . registerCommand ( 'riddl.mcp.explainError' , ( ) => {
291+ mcpExplainError ( ) ;
292+ } )
293+ ) ;
294+
295+ context . subscriptions . push (
296+ vscode . commands . registerCommand ( 'riddl.mcp.suggestNext' , ( ) => {
297+ mcpSuggestNext ( ) ;
298+ } )
299+ ) ;
300+
301+ context . subscriptions . push (
302+ vscode . commands . registerCommand ( 'riddl.mcp.generateRiddl' , ( ) => {
303+ mcpGenerateRiddl ( ) ;
304+ } )
305+ ) ;
306+
307+ console . log ( 'MCP tool commands registered' ) ;
308+
309+ // Auto-connect to MCP server if enabled
310+ const mcpConfig = mcpService . getConfig ( ) ;
311+ if ( mcpConfig . enabled && mcpConfig . autoConnect ) {
312+ // Delay auto-connect to allow extension to fully activate
313+ setTimeout ( ( ) => {
314+ console . log ( 'Auto-connecting to MCP server...' ) ;
315+ mcpService . connect ( ) . then ( ( result ) => {
316+ if ( result . success ) {
317+ console . log ( 'MCP auto-connect successful' ) ;
318+ } else {
319+ console . log ( 'MCP auto-connect failed:' , result . error ) ;
320+ }
321+ } ) ;
322+ } , 1000 ) ;
323+ }
324+
325+ console . log ( 'MCP service initialized' ) ;
182326}
183327
184328export function deactivate ( ) {
185329 console . log ( 'RIDDL extension is now deactivated' ) ;
186330 commands . disposeCommands ( ) ;
331+ disposeMcpService ( ) ;
187332}
0 commit comments