driftdetect-lsp 0.9.26 → 0.9.28
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/LICENSE +121 -0
- package/package.json +15 -15
- package/dist/bin/server.d.ts +0 -12
- package/dist/bin/server.js +0 -26
- package/dist/bin/server.js.map +0 -1
- package/dist/capabilities.d.ts +0 -91
- package/dist/capabilities.d.ts.map +0 -1
- package/dist/capabilities.js +0 -183
- package/dist/capabilities.js.map +0 -1
- package/dist/commands/approve-pattern.d.ts +0 -15
- package/dist/commands/approve-pattern.js +0 -83
- package/dist/commands/approve-pattern.js.map +0 -1
- package/dist/commands/create-variant.d.ts +0 -22
- package/dist/commands/create-variant.js +0 -109
- package/dist/commands/create-variant.js.map +0 -1
- package/dist/commands/explain-ai.d.ts +0 -11
- package/dist/commands/explain-ai.js +0 -144
- package/dist/commands/explain-ai.js.map +0 -1
- package/dist/commands/fix-ai.d.ts +0 -11
- package/dist/commands/fix-ai.js +0 -146
- package/dist/commands/fix-ai.js.map +0 -1
- package/dist/commands/ignore-once.d.ts +0 -33
- package/dist/commands/ignore-once.js +0 -147
- package/dist/commands/ignore-once.js.map +0 -1
- package/dist/commands/ignore-pattern.d.ts +0 -15
- package/dist/commands/ignore-pattern.js +0 -77
- package/dist/commands/ignore-pattern.js.map +0 -1
- package/dist/commands/index.d.ts +0 -14
- package/dist/commands/index.js +0 -14
- package/dist/commands/index.js.map +0 -1
- package/dist/commands/rescan.d.ts +0 -19
- package/dist/commands/rescan.js +0 -125
- package/dist/commands/rescan.js.map +0 -1
- package/dist/commands/show-patterns.d.ts +0 -30
- package/dist/commands/show-patterns.js +0 -175
- package/dist/commands/show-patterns.js.map +0 -1
- package/dist/commands/show-violations.d.ts +0 -11
- package/dist/commands/show-violations.js +0 -259
- package/dist/commands/show-violations.js.map +0 -1
- package/dist/handlers/code-actions.d.ts +0 -32
- package/dist/handlers/code-actions.js +0 -184
- package/dist/handlers/code-actions.js.map +0 -1
- package/dist/handlers/code-lens.d.ts +0 -32
- package/dist/handlers/code-lens.js +0 -162
- package/dist/handlers/code-lens.js.map +0 -1
- package/dist/handlers/commands.d.ts +0 -48
- package/dist/handlers/commands.js +0 -360
- package/dist/handlers/commands.js.map +0 -1
- package/dist/handlers/diagnostics.d.ts +0 -73
- package/dist/handlers/diagnostics.js +0 -259
- package/dist/handlers/diagnostics.js.map +0 -1
- package/dist/handlers/document-sync.d.ts +0 -37
- package/dist/handlers/document-sync.js +0 -49
- package/dist/handlers/document-sync.js.map +0 -1
- package/dist/handlers/hover.d.ts +0 -30
- package/dist/handlers/hover.js +0 -119
- package/dist/handlers/hover.js.map +0 -1
- package/dist/handlers/index.d.ts +0 -23
- package/dist/handlers/index.js +0 -16
- package/dist/handlers/index.js.map +0 -1
- package/dist/handlers/initialize.d.ts +0 -41
- package/dist/handlers/initialize.d.ts.map +0 -1
- package/dist/handlers/initialize.js +0 -33
- package/dist/handlers/initialize.js.map +0 -1
- package/dist/index.d.ts +0 -22
- package/dist/index.js +0 -26
- package/dist/index.js.map +0 -1
- package/dist/integration/core-scanner.d.ts +0 -89
- package/dist/integration/core-scanner.js +0 -309
- package/dist/integration/core-scanner.js.map +0 -1
- package/dist/integration/index.d.ts +0 -11
- package/dist/integration/index.js +0 -11
- package/dist/integration/index.js.map +0 -1
- package/dist/integration/pattern-store-adapter.d.ts +0 -117
- package/dist/integration/pattern-store-adapter.js +0 -349
- package/dist/integration/pattern-store-adapter.js.map +0 -1
- package/dist/integration/types.d.ts +0 -134
- package/dist/integration/types.js +0 -39
- package/dist/integration/types.js.map +0 -1
- package/dist/server/index.d.ts +0 -5
- package/dist/server/index.js +0 -5
- package/dist/server/index.js.map +0 -1
- package/dist/server/types.d.ts +0 -139
- package/dist/server/types.js +0 -8
- package/dist/server/types.js.map +0 -1
- package/dist/server.d.ts +0 -63
- package/dist/server.js +0 -208
- package/dist/server.js.map +0 -1
- package/dist/types/index.d.ts +0 -5
- package/dist/types/index.js +0 -5
- package/dist/types/index.js.map +0 -1
- package/dist/types/lsp-types.d.ts +0 -321
- package/dist/types/lsp-types.js +0 -274
- package/dist/types/lsp-types.js.map +0 -1
- package/dist/utils/diagnostic.d.ts +0 -84
- package/dist/utils/diagnostic.js +0 -256
- package/dist/utils/diagnostic.js.map +0 -1
- package/dist/utils/document.d.ts +0 -40
- package/dist/utils/document.d.ts.map +0 -1
- package/dist/utils/document.js +0 -138
- package/dist/utils/document.js.map +0 -1
- package/dist/utils/index.d.ts +0 -8
- package/dist/utils/index.d.ts.map +0 -1
- package/dist/utils/index.js +0 -8
- package/dist/utils/index.js.map +0 -1
- package/dist/utils/position.d.ts +0 -44
- package/dist/utils/position.d.ts.map +0 -1
- package/dist/utils/position.js +0 -96
- package/dist/utils/position.js.map +0 -1
- package/dist/utils/workspace.d.ts +0 -98
- package/dist/utils/workspace.js +0 -241
- package/dist/utils/workspace.js.map +0 -1
|
@@ -1,259 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Show Violations Command - drift.showViolations
|
|
3
|
-
* @requirements 28.9
|
|
4
|
-
*/
|
|
5
|
-
// ============================================================================
|
|
6
|
-
// Main Command
|
|
7
|
-
// ============================================================================
|
|
8
|
-
/**
|
|
9
|
-
* Execute show violations command
|
|
10
|
-
* Shows violations in the workspace
|
|
11
|
-
*/
|
|
12
|
-
export async function executeShowViolations(context, uri, patternId, violationId) {
|
|
13
|
-
const { state, logger, connection } = context;
|
|
14
|
-
logger.info(`Show violations requested${uri ? ` for: ${uri}` : ''}${patternId ? ` pattern: ${patternId}` : ''}`);
|
|
15
|
-
// If specific violation requested
|
|
16
|
-
if (violationId) {
|
|
17
|
-
return showSpecificViolation(context, violationId);
|
|
18
|
-
}
|
|
19
|
-
// Get violations to show
|
|
20
|
-
let violations = [];
|
|
21
|
-
if (uri) {
|
|
22
|
-
// Violations for specific document
|
|
23
|
-
const docViolations = state.violations.get(uri) ?? [];
|
|
24
|
-
violations = docViolations.map((v) => ({ uri, violation: v }));
|
|
25
|
-
}
|
|
26
|
-
else {
|
|
27
|
-
// All violations
|
|
28
|
-
for (const [docUri, docViolations] of state.violations) {
|
|
29
|
-
for (const v of docViolations) {
|
|
30
|
-
violations.push({ uri: docUri, violation: v });
|
|
31
|
-
}
|
|
32
|
-
}
|
|
33
|
-
}
|
|
34
|
-
// Filter by pattern if specified
|
|
35
|
-
if (patternId) {
|
|
36
|
-
violations = violations.filter((entry) => entry.violation.patternId === patternId);
|
|
37
|
-
}
|
|
38
|
-
if (violations.length === 0) {
|
|
39
|
-
const message = uri
|
|
40
|
-
? `No violations found in ${getFileName(uri)}`
|
|
41
|
-
: patternId
|
|
42
|
-
? `No violations found for pattern: ${patternId}`
|
|
43
|
-
: 'No violations found in workspace';
|
|
44
|
-
connection.window.showInformationMessage(message);
|
|
45
|
-
return {
|
|
46
|
-
success: true,
|
|
47
|
-
message,
|
|
48
|
-
data: { violations: [] },
|
|
49
|
-
};
|
|
50
|
-
}
|
|
51
|
-
// Format violations summary
|
|
52
|
-
const summary = formatViolationsSummary(violations, state.patterns);
|
|
53
|
-
// Show summary
|
|
54
|
-
connection.window.showInformationMessage(summary);
|
|
55
|
-
return {
|
|
56
|
-
success: true,
|
|
57
|
-
message: `Found ${violations.length} violations`,
|
|
58
|
-
data: {
|
|
59
|
-
violations: violations.map((v) => ({
|
|
60
|
-
uri: v.uri,
|
|
61
|
-
...v.violation,
|
|
62
|
-
})),
|
|
63
|
-
summary: getViolationStatistics(violations),
|
|
64
|
-
},
|
|
65
|
-
};
|
|
66
|
-
}
|
|
67
|
-
/**
|
|
68
|
-
* Show specific violation details
|
|
69
|
-
*/
|
|
70
|
-
async function showSpecificViolation(context, violationId) {
|
|
71
|
-
const { state, logger, connection } = context;
|
|
72
|
-
// Find the violation
|
|
73
|
-
let foundViolation = null;
|
|
74
|
-
let foundUri = '';
|
|
75
|
-
for (const [uri, violations] of state.violations) {
|
|
76
|
-
const violation = violations.find((v) => v.id === violationId);
|
|
77
|
-
if (violation) {
|
|
78
|
-
foundViolation = violation;
|
|
79
|
-
foundUri = uri;
|
|
80
|
-
break;
|
|
81
|
-
}
|
|
82
|
-
}
|
|
83
|
-
if (!foundViolation) {
|
|
84
|
-
return {
|
|
85
|
-
success: false,
|
|
86
|
-
error: `Violation not found: ${violationId}`,
|
|
87
|
-
};
|
|
88
|
-
}
|
|
89
|
-
// Get pattern details
|
|
90
|
-
const pattern = state.patterns.get(foundViolation.patternId);
|
|
91
|
-
// Format violation details
|
|
92
|
-
const details = formatViolationDetails(foundViolation, foundUri, pattern);
|
|
93
|
-
// Show details
|
|
94
|
-
connection.window.showInformationMessage(details);
|
|
95
|
-
// Offer to navigate to violation
|
|
96
|
-
const navigateResult = await connection.window.showInformationMessage(`Navigate to violation at line ${foundViolation.range.start.line + 1}?`, { title: 'Go to Location' }, { title: 'Close' });
|
|
97
|
-
if (navigateResult?.title === 'Go to Location') {
|
|
98
|
-
// TODO: Send notification to client to navigate to location
|
|
99
|
-
logger.info(`Navigate to ${foundUri}:${foundViolation.range.start.line + 1}`);
|
|
100
|
-
}
|
|
101
|
-
return {
|
|
102
|
-
success: true,
|
|
103
|
-
message: `Violation details for: ${violationId}`,
|
|
104
|
-
data: {
|
|
105
|
-
violation: foundViolation,
|
|
106
|
-
uri: foundUri,
|
|
107
|
-
pattern,
|
|
108
|
-
},
|
|
109
|
-
};
|
|
110
|
-
}
|
|
111
|
-
/**
|
|
112
|
-
* Format violations summary
|
|
113
|
-
*/
|
|
114
|
-
function formatViolationsSummary(violations, patterns) {
|
|
115
|
-
const lines = [];
|
|
116
|
-
lines.push(`⚠️ Drift Violations Summary`);
|
|
117
|
-
lines.push('');
|
|
118
|
-
// Group by severity
|
|
119
|
-
const bySeverity = groupBySeverity(violations);
|
|
120
|
-
if (bySeverity.error.length > 0) {
|
|
121
|
-
lines.push(`🔴 Errors: ${bySeverity.error.length}`);
|
|
122
|
-
}
|
|
123
|
-
if (bySeverity.warning.length > 0) {
|
|
124
|
-
lines.push(`🟡 Warnings: ${bySeverity.warning.length}`);
|
|
125
|
-
}
|
|
126
|
-
if (bySeverity.info.length > 0) {
|
|
127
|
-
lines.push(`🔵 Info: ${bySeverity.info.length}`);
|
|
128
|
-
}
|
|
129
|
-
if (bySeverity.hint.length > 0) {
|
|
130
|
-
lines.push(`💡 Hints: ${bySeverity.hint.length}`);
|
|
131
|
-
}
|
|
132
|
-
lines.push('');
|
|
133
|
-
// Group by pattern
|
|
134
|
-
const byPattern = groupByPattern(violations);
|
|
135
|
-
const patternCount = byPattern.size;
|
|
136
|
-
lines.push(`Across ${patternCount} pattern${patternCount === 1 ? '' : 's'}:`);
|
|
137
|
-
lines.push('');
|
|
138
|
-
for (const [patternId, patternViolations] of byPattern) {
|
|
139
|
-
const pattern = patterns.get(patternId);
|
|
140
|
-
const name = pattern?.name ?? patternId;
|
|
141
|
-
lines.push(` • ${name}: ${patternViolations.length}`);
|
|
142
|
-
}
|
|
143
|
-
// Group by file
|
|
144
|
-
const byFile = groupByFile(violations);
|
|
145
|
-
const fileCount = byFile.size;
|
|
146
|
-
lines.push('');
|
|
147
|
-
lines.push(`In ${fileCount} file${fileCount === 1 ? '' : 's'}`);
|
|
148
|
-
return lines.join('\n');
|
|
149
|
-
}
|
|
150
|
-
/**
|
|
151
|
-
* Format violation details
|
|
152
|
-
*/
|
|
153
|
-
function formatViolationDetails(violation, uri, pattern) {
|
|
154
|
-
const lines = [];
|
|
155
|
-
const severityIcon = getSeverityIcon(violation.severity);
|
|
156
|
-
lines.push(`${severityIcon} Violation Details`);
|
|
157
|
-
lines.push('');
|
|
158
|
-
lines.push(`Message: ${violation.message}`);
|
|
159
|
-
lines.push(`Severity: ${violation.severity}`);
|
|
160
|
-
lines.push(`Location: ${getFileName(uri)}:${violation.range.start.line + 1}:${violation.range.start.character + 1}`);
|
|
161
|
-
lines.push('');
|
|
162
|
-
if (pattern) {
|
|
163
|
-
lines.push(`Pattern: ${pattern.name ?? violation.patternId}`);
|
|
164
|
-
if (pattern.category) {
|
|
165
|
-
lines.push(`Category: ${pattern.category}`);
|
|
166
|
-
}
|
|
167
|
-
if (pattern.description) {
|
|
168
|
-
lines.push(`Description: ${pattern.description}`);
|
|
169
|
-
}
|
|
170
|
-
}
|
|
171
|
-
else {
|
|
172
|
-
lines.push(`Pattern ID: ${violation.patternId}`);
|
|
173
|
-
}
|
|
174
|
-
return lines.join('\n');
|
|
175
|
-
}
|
|
176
|
-
/**
|
|
177
|
-
* Group violations by severity
|
|
178
|
-
*/
|
|
179
|
-
function groupBySeverity(violations) {
|
|
180
|
-
const groups = {
|
|
181
|
-
error: [],
|
|
182
|
-
warning: [],
|
|
183
|
-
info: [],
|
|
184
|
-
hint: [],
|
|
185
|
-
};
|
|
186
|
-
for (const v of violations) {
|
|
187
|
-
const severity = v.violation.severity;
|
|
188
|
-
if (severity in groups) {
|
|
189
|
-
groups[severity].push(v);
|
|
190
|
-
}
|
|
191
|
-
else {
|
|
192
|
-
groups.hint.push(v);
|
|
193
|
-
}
|
|
194
|
-
}
|
|
195
|
-
return groups;
|
|
196
|
-
}
|
|
197
|
-
/**
|
|
198
|
-
* Group violations by pattern
|
|
199
|
-
*/
|
|
200
|
-
function groupByPattern(violations) {
|
|
201
|
-
const groups = new Map();
|
|
202
|
-
for (const v of violations) {
|
|
203
|
-
const patternId = v.violation.patternId;
|
|
204
|
-
const group = groups.get(patternId) ?? [];
|
|
205
|
-
group.push(v);
|
|
206
|
-
groups.set(patternId, group);
|
|
207
|
-
}
|
|
208
|
-
return groups;
|
|
209
|
-
}
|
|
210
|
-
/**
|
|
211
|
-
* Group violations by file
|
|
212
|
-
*/
|
|
213
|
-
function groupByFile(violations) {
|
|
214
|
-
const groups = new Map();
|
|
215
|
-
for (const v of violations) {
|
|
216
|
-
const group = groups.get(v.uri) ?? [];
|
|
217
|
-
group.push(v);
|
|
218
|
-
groups.set(v.uri, group);
|
|
219
|
-
}
|
|
220
|
-
return groups;
|
|
221
|
-
}
|
|
222
|
-
/**
|
|
223
|
-
* Get violation statistics
|
|
224
|
-
*/
|
|
225
|
-
function getViolationStatistics(violations) {
|
|
226
|
-
const bySeverity = {};
|
|
227
|
-
const byPattern = {};
|
|
228
|
-
const byFile = {};
|
|
229
|
-
for (const v of violations) {
|
|
230
|
-
bySeverity[v.violation.severity] = (bySeverity[v.violation.severity] ?? 0) + 1;
|
|
231
|
-
byPattern[v.violation.patternId] = (byPattern[v.violation.patternId] ?? 0) + 1;
|
|
232
|
-
byFile[v.uri] = (byFile[v.uri] ?? 0) + 1;
|
|
233
|
-
}
|
|
234
|
-
return {
|
|
235
|
-
total: violations.length,
|
|
236
|
-
bySeverity,
|
|
237
|
-
byPattern,
|
|
238
|
-
byFile,
|
|
239
|
-
};
|
|
240
|
-
}
|
|
241
|
-
/**
|
|
242
|
-
* Get severity icon
|
|
243
|
-
*/
|
|
244
|
-
function getSeverityIcon(severity) {
|
|
245
|
-
switch (severity) {
|
|
246
|
-
case 'error': return '🔴';
|
|
247
|
-
case 'warning': return '🟡';
|
|
248
|
-
case 'info': return '🔵';
|
|
249
|
-
case 'hint': return '💡';
|
|
250
|
-
default: return '⚪';
|
|
251
|
-
}
|
|
252
|
-
}
|
|
253
|
-
/**
|
|
254
|
-
* Get file name from URI
|
|
255
|
-
*/
|
|
256
|
-
function getFileName(uri) {
|
|
257
|
-
return uri.split('/').pop() ?? uri;
|
|
258
|
-
}
|
|
259
|
-
//# sourceMappingURL=show-violations.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"show-violations.js","sourceRoot":"","sources":["../../src/commands/show-violations.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,32 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Code Actions Handler
|
|
3
|
-
*
|
|
4
|
-
* Provides code actions (quick fixes) for pattern violations.
|
|
5
|
-
* Supports quick fixes, refactoring actions, and source actions.
|
|
6
|
-
*
|
|
7
|
-
* @requirements 27.4 - THE LSP_Server SHALL provide code actions for quick fixes
|
|
8
|
-
*/
|
|
9
|
-
import type { Connection, TextDocuments, CodeAction, CodeActionParams } from 'vscode-languageserver';
|
|
10
|
-
import type { TextDocument } from 'vscode-languageserver-textdocument';
|
|
11
|
-
import type { DiagnosticsHandler } from './diagnostics.js';
|
|
12
|
-
interface Logger {
|
|
13
|
-
error(message: string): void;
|
|
14
|
-
warn(message: string): void;
|
|
15
|
-
info(message: string): void;
|
|
16
|
-
debug(message: string): void;
|
|
17
|
-
}
|
|
18
|
-
/**
|
|
19
|
-
* Code actions handler interface
|
|
20
|
-
*/
|
|
21
|
-
export interface CodeActionsHandler {
|
|
22
|
-
/** Handle code action request */
|
|
23
|
-
onCodeAction(params: CodeActionParams): CodeAction[] | null;
|
|
24
|
-
/** Handle code action resolve request */
|
|
25
|
-
onCodeActionResolve(codeAction: CodeAction): CodeAction;
|
|
26
|
-
}
|
|
27
|
-
/**
|
|
28
|
-
* Create the code actions handler
|
|
29
|
-
*/
|
|
30
|
-
export declare function createCodeActionsHandler(_connection: Connection, _documents: TextDocuments<TextDocument>, diagnosticsHandler: DiagnosticsHandler, logger: Logger): CodeActionsHandler;
|
|
31
|
-
export {};
|
|
32
|
-
//# sourceMappingURL=code-actions.d.ts.map
|
|
@@ -1,184 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Code Actions Handler
|
|
3
|
-
*
|
|
4
|
-
* Provides code actions (quick fixes) for pattern violations.
|
|
5
|
-
* Supports quick fixes, refactoring actions, and source actions.
|
|
6
|
-
*
|
|
7
|
-
* @requirements 27.4 - THE LSP_Server SHALL provide code actions for quick fixes
|
|
8
|
-
*/
|
|
9
|
-
import { CodeActionKind } from 'vscode-languageserver';
|
|
10
|
-
import { DRIFT_COMMANDS } from '../capabilities.js';
|
|
11
|
-
// ============================================================================
|
|
12
|
-
// Helpers
|
|
13
|
-
// ============================================================================
|
|
14
|
-
/**
|
|
15
|
-
* Check if two ranges overlap
|
|
16
|
-
*/
|
|
17
|
-
function rangesOverlap(a, b) {
|
|
18
|
-
// a ends before b starts
|
|
19
|
-
if (a.end.line < b.start.line) {
|
|
20
|
-
return false;
|
|
21
|
-
}
|
|
22
|
-
if (a.end.line === b.start.line && a.end.character < b.start.character) {
|
|
23
|
-
return false;
|
|
24
|
-
}
|
|
25
|
-
// b ends before a starts
|
|
26
|
-
if (b.end.line < a.start.line) {
|
|
27
|
-
return false;
|
|
28
|
-
}
|
|
29
|
-
if (b.end.line === a.start.line && b.end.character < a.start.character) {
|
|
30
|
-
return false;
|
|
31
|
-
}
|
|
32
|
-
return true;
|
|
33
|
-
}
|
|
34
|
-
// ============================================================================
|
|
35
|
-
// Handler Factory
|
|
36
|
-
// ============================================================================
|
|
37
|
-
/**
|
|
38
|
-
* Create the code actions handler
|
|
39
|
-
*/
|
|
40
|
-
export function createCodeActionsHandler(_connection, _documents, diagnosticsHandler, logger) {
|
|
41
|
-
/**
|
|
42
|
-
* Create code actions for a diagnostic
|
|
43
|
-
*/
|
|
44
|
-
function createActionsForDiagnostic(diagnostic, uri) {
|
|
45
|
-
const actions = [];
|
|
46
|
-
const data = diagnostic.data;
|
|
47
|
-
if (!data) {
|
|
48
|
-
return actions;
|
|
49
|
-
}
|
|
50
|
-
const { violationId, patternId, hasQuickFix, aiExplainAvailable, aiFixAvailable } = data;
|
|
51
|
-
// Quick fix action (if available)
|
|
52
|
-
if (hasQuickFix) {
|
|
53
|
-
actions.push({
|
|
54
|
-
title: 'Fix this violation',
|
|
55
|
-
kind: CodeActionKind.QuickFix,
|
|
56
|
-
diagnostics: [diagnostic],
|
|
57
|
-
isPreferred: true,
|
|
58
|
-
// Edit will be resolved in onCodeActionResolve
|
|
59
|
-
data: {
|
|
60
|
-
type: 'quickfix',
|
|
61
|
-
violationId,
|
|
62
|
-
patternId,
|
|
63
|
-
uri,
|
|
64
|
-
},
|
|
65
|
-
});
|
|
66
|
-
}
|
|
67
|
-
// Approve pattern action
|
|
68
|
-
actions.push({
|
|
69
|
-
title: `Approve pattern: ${patternId}`,
|
|
70
|
-
kind: CodeActionKind.QuickFix,
|
|
71
|
-
diagnostics: [diagnostic],
|
|
72
|
-
command: {
|
|
73
|
-
title: 'Approve Pattern',
|
|
74
|
-
command: DRIFT_COMMANDS.APPROVE_PATTERN,
|
|
75
|
-
arguments: [patternId],
|
|
76
|
-
},
|
|
77
|
-
});
|
|
78
|
-
// Ignore pattern action
|
|
79
|
-
actions.push({
|
|
80
|
-
title: `Ignore pattern: ${patternId}`,
|
|
81
|
-
kind: CodeActionKind.QuickFix,
|
|
82
|
-
diagnostics: [diagnostic],
|
|
83
|
-
command: {
|
|
84
|
-
title: 'Ignore Pattern',
|
|
85
|
-
command: DRIFT_COMMANDS.IGNORE_PATTERN,
|
|
86
|
-
arguments: [patternId],
|
|
87
|
-
},
|
|
88
|
-
});
|
|
89
|
-
// Ignore this occurrence
|
|
90
|
-
actions.push({
|
|
91
|
-
title: 'Ignore this occurrence',
|
|
92
|
-
kind: CodeActionKind.QuickFix,
|
|
93
|
-
diagnostics: [diagnostic],
|
|
94
|
-
command: {
|
|
95
|
-
title: 'Ignore Once',
|
|
96
|
-
command: DRIFT_COMMANDS.IGNORE_ONCE,
|
|
97
|
-
arguments: [violationId, uri, diagnostic.range.start.line],
|
|
98
|
-
},
|
|
99
|
-
});
|
|
100
|
-
// Create variant action
|
|
101
|
-
actions.push({
|
|
102
|
-
title: `Create variant for: ${patternId}`,
|
|
103
|
-
kind: CodeActionKind.Refactor,
|
|
104
|
-
diagnostics: [diagnostic],
|
|
105
|
-
command: {
|
|
106
|
-
title: 'Create Variant',
|
|
107
|
-
command: DRIFT_COMMANDS.CREATE_VARIANT,
|
|
108
|
-
arguments: [patternId, violationId],
|
|
109
|
-
},
|
|
110
|
-
});
|
|
111
|
-
// AI explain action (if available)
|
|
112
|
-
if (aiExplainAvailable) {
|
|
113
|
-
actions.push({
|
|
114
|
-
title: 'Explain with AI',
|
|
115
|
-
kind: CodeActionKind.QuickFix,
|
|
116
|
-
diagnostics: [diagnostic],
|
|
117
|
-
command: {
|
|
118
|
-
title: 'Explain with AI',
|
|
119
|
-
command: DRIFT_COMMANDS.EXPLAIN_AI,
|
|
120
|
-
arguments: [violationId, patternId],
|
|
121
|
-
},
|
|
122
|
-
});
|
|
123
|
-
}
|
|
124
|
-
// AI fix action (if available)
|
|
125
|
-
if (aiFixAvailable) {
|
|
126
|
-
actions.push({
|
|
127
|
-
title: 'Fix with AI',
|
|
128
|
-
kind: CodeActionKind.QuickFix,
|
|
129
|
-
diagnostics: [diagnostic],
|
|
130
|
-
command: {
|
|
131
|
-
title: 'Fix with AI',
|
|
132
|
-
command: DRIFT_COMMANDS.FIX_AI,
|
|
133
|
-
arguments: [violationId, uri],
|
|
134
|
-
},
|
|
135
|
-
});
|
|
136
|
-
}
|
|
137
|
-
return actions;
|
|
138
|
-
}
|
|
139
|
-
return {
|
|
140
|
-
onCodeAction(params) {
|
|
141
|
-
const uri = params.textDocument.uri;
|
|
142
|
-
const requestRange = params.range;
|
|
143
|
-
logger.debug(`Code action request for ${uri} at ${requestRange.start.line}:${requestRange.start.character}`);
|
|
144
|
-
// Get diagnostics for this document
|
|
145
|
-
const diagnostics = diagnosticsHandler.getDiagnostics(uri);
|
|
146
|
-
if (diagnostics.length === 0) {
|
|
147
|
-
return null;
|
|
148
|
-
}
|
|
149
|
-
// Find diagnostics that overlap with the request range
|
|
150
|
-
const relevantDiagnostics = diagnostics.filter((d) => rangesOverlap(d.range, requestRange));
|
|
151
|
-
if (relevantDiagnostics.length === 0) {
|
|
152
|
-
return null;
|
|
153
|
-
}
|
|
154
|
-
// Generate code actions for each relevant diagnostic
|
|
155
|
-
const actions = [];
|
|
156
|
-
for (const diagnostic of relevantDiagnostics) {
|
|
157
|
-
const diagnosticActions = createActionsForDiagnostic(diagnostic, uri);
|
|
158
|
-
actions.push(...diagnosticActions);
|
|
159
|
-
}
|
|
160
|
-
logger.debug(`Generated ${actions.length} code actions`);
|
|
161
|
-
return actions;
|
|
162
|
-
},
|
|
163
|
-
onCodeActionResolve(codeAction) {
|
|
164
|
-
logger.debug(`Resolving code action: ${codeAction.title}`);
|
|
165
|
-
// If the code action has data, resolve the edit
|
|
166
|
-
if (codeAction.data) {
|
|
167
|
-
const data = codeAction.data;
|
|
168
|
-
if (data.type === 'quickfix') {
|
|
169
|
-
// TODO: Get the actual quick fix from the violation
|
|
170
|
-
// and populate the edit field
|
|
171
|
-
const violations = diagnosticsHandler.getViolations(data.uri);
|
|
172
|
-
const violation = violations.find((v) => v.id === data.violationId);
|
|
173
|
-
if (violation?.quickFix) {
|
|
174
|
-
codeAction.edit = {
|
|
175
|
-
changes: violation.quickFix.edit.changes,
|
|
176
|
-
};
|
|
177
|
-
}
|
|
178
|
-
}
|
|
179
|
-
}
|
|
180
|
-
return codeAction;
|
|
181
|
-
},
|
|
182
|
-
};
|
|
183
|
-
}
|
|
184
|
-
//# sourceMappingURL=code-actions.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"code-actions.js","sourceRoot":"","sources":["../../src/handlers/code-actions.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,32 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Code Lens Handler
|
|
3
|
-
*
|
|
4
|
-
* Provides code lens (inline actions) for pattern information.
|
|
5
|
-
* Shows violation counts, pattern names, and quick actions.
|
|
6
|
-
*
|
|
7
|
-
* @requirements 27.6 - THE LSP_Server SHALL provide code lens for pattern information
|
|
8
|
-
*/
|
|
9
|
-
import type { Connection, TextDocuments, CodeLens, CodeLensParams } from 'vscode-languageserver';
|
|
10
|
-
import type { TextDocument } from 'vscode-languageserver-textdocument';
|
|
11
|
-
import type { DiagnosticsHandler } from './diagnostics.js';
|
|
12
|
-
interface Logger {
|
|
13
|
-
error(message: string): void;
|
|
14
|
-
warn(message: string): void;
|
|
15
|
-
info(message: string): void;
|
|
16
|
-
debug(message: string): void;
|
|
17
|
-
}
|
|
18
|
-
/**
|
|
19
|
-
* Code lens handler interface
|
|
20
|
-
*/
|
|
21
|
-
export interface CodeLensHandler {
|
|
22
|
-
/** Handle code lens request */
|
|
23
|
-
onCodeLens(params: CodeLensParams): CodeLens[] | null;
|
|
24
|
-
/** Handle code lens resolve request */
|
|
25
|
-
onCodeLensResolve(codeLens: CodeLens): CodeLens;
|
|
26
|
-
}
|
|
27
|
-
/**
|
|
28
|
-
* Create the code lens handler
|
|
29
|
-
*/
|
|
30
|
-
export declare function createCodeLensHandler(_connection: Connection, _documents: TextDocuments<TextDocument>, diagnosticsHandler: DiagnosticsHandler, logger: Logger): CodeLensHandler;
|
|
31
|
-
export {};
|
|
32
|
-
//# sourceMappingURL=code-lens.d.ts.map
|