-
-
Notifications
You must be signed in to change notification settings - Fork 9
Expand file tree
/
Copy pathrefresh.cfc
More file actions
109 lines (97 loc) · 3.63 KB
/
refresh.cfc
File metadata and controls
109 lines (97 loc) · 3.63 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
/**
* Refresh AI integration (sync with installed modules)
* Updates guidelines and skills based on current box.json dependencies
*
* Examples:
* coldbox ai refresh
* coldbox ai update
*/
component extends="coldbox-cli.models.BaseAICommand" aliases="coldbox ai update" {
/**
* Run the command
*
* @directory The target directory (defaults to current directory)
*/
function run( string directory = getCwd() ){
showColdBoxBanner( "AI Integration Refresher" );
printInfo( "Refreshing AI integration..." );
print.line();
try {
var result = variables.aiService.refresh( arguments.directory );
if ( !result.success ) {
printError( result.message );
return;
}
// Show changes
printSuccess( "✓ AI integration refreshed successfully!" );
print.line();
// Combine all changes for display
var mcpAdded = structKeyExists( result, "mcpServers" ) ? result.mcpServers.added.len() : 0;
var mcpRemoved = structKeyExists( result, "mcpServers" ) ? result.mcpServers.removed.len() : 0;
var totalAdded = result.guidelines.added.len() + result.skills.added.len() + mcpAdded;
var totalUpdated = result.guidelines.updated.len() + result.skills.updated.len();
var totalRemoved = result.guidelines.removed.len() + result.skills.removed.len() + mcpRemoved;
if ( totalAdded ) {
print.greenLine( "Added (#totalAdded#):" );
result.guidelines.added.each( function( item ){
print.indentedGreenLine( " + #item# (guideline)" );
} );
result.skills.added.each( function( item ){
print.indentedGreenLine( " + #item# (skill)" );
} );
if ( structKeyExists( result, "mcpServers" ) ) {
result.mcpServers.added.each( function( item ){
print.indentedGreenLine( " + #item# (MCP server)" );
} );
}
print.line();
}
if ( totalUpdated ) {
print.yellowLine( "Updated (#totalUpdated#):" );
result.guidelines.updated.each( function( item ){
print.indentedYellowLine( " ↻ #item# (guideline)" );
} );
result.skills.updated.each( function( item ){
print.indentedYellowLine( " ↻ #item# (skill)" );
} );
print.line();
}
if ( totalRemoved ) {
print.redLine( "Removed (#totalRemoved#):" );
result.guidelines.removed.each( function( item ){
print.indentedRedLine( " - #item# (guideline)" );
} );
result.skills.removed.each( function( item ){
print.indentedRedLine( " - #item# (skill)" );
} );
if ( structKeyExists( result, "mcpServers" ) ) {
result.mcpServers.removed.each( function( item ){
print.indentedRedLine( " - #item# (MCP server)" );
} );
}
print.line();
}
if ( !totalAdded && !totalUpdated && !totalRemoved ) {
printInfo( "No changes detected. Everything is up to date!" );
}
// Show auto-generated guidelines that need user attention
if ( structKeyExists( result, "autoGenerated" ) && result.autoGenerated.len() ) {
print.line();
print.cyanLine( "⚠ Auto-Generated Guidelines (#result.autoGenerated.len()#):" );
result.autoGenerated.each( function( item ){
print.indentedCyanLine( " ⓘ #item#" );
} );
print.line();
printWarn( "The guidelines above were auto-generated because:" );
printInfo( " • The module doesn't ship its own .ai/guideline.md file" );
printInfo( " • coldbox-cli doesn't have a bundled guideline yet" );
print.line();
printTip( "Use your AI to generate comprehensive guidelines for these modules!" );
printTip( "Check the .ai/guidelines/modules/ folder for instructions." );
}
} catch ( any e ) {
printError( "Failed to refresh AI integration: #e.message#" )
printError( e.stackTrace )
}
}
}