driftdetect-lsp 0.9.27 → 0.9.29
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/package.json +3 -3
- 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,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":"AAAA;;;;;;;GAOG;AASH,OAAO,EAAE,cAAc,EAAE,MAAM,uBAAuB,CAAC;AAGvD,OAAO,EAAE,cAAc,EAAE,MAAM,oBAAoB,CAAC;AAuBpD,+EAA+E;AAC/E,UAAU;AACV,+EAA+E;AAE/E;;GAEG;AACH,SAAS,aAAa,CAAC,CAAQ,EAAE,CAAQ;IACvC,yBAAyB;IACzB,IAAI,CAAC,CAAC,GAAG,CAAC,IAAI,GAAG,CAAC,CAAC,KAAK,CAAC,IAAI,EAAE,CAAC;QAC9B,OAAO,KAAK,CAAC;IACf,CAAC;IACD,IAAI,CAAC,CAAC,GAAG,CAAC,IAAI,KAAK,CAAC,CAAC,KAAK,CAAC,IAAI,IAAI,CAAC,CAAC,GAAG,CAAC,SAAS,GAAG,CAAC,CAAC,KAAK,CAAC,SAAS,EAAE,CAAC;QACvE,OAAO,KAAK,CAAC;IACf,CAAC;IAED,yBAAyB;IACzB,IAAI,CAAC,CAAC,GAAG,CAAC,IAAI,GAAG,CAAC,CAAC,KAAK,CAAC,IAAI,EAAE,CAAC;QAC9B,OAAO,KAAK,CAAC;IACf,CAAC;IACD,IAAI,CAAC,CAAC,GAAG,CAAC,IAAI,KAAK,CAAC,CAAC,KAAK,CAAC,IAAI,IAAI,CAAC,CAAC,GAAG,CAAC,SAAS,GAAG,CAAC,CAAC,KAAK,CAAC,SAAS,EAAE,CAAC;QACvE,OAAO,KAAK,CAAC;IACf,CAAC;IAED,OAAO,IAAI,CAAC;AACd,CAAC;AAED,+EAA+E;AAC/E,kBAAkB;AAClB,+EAA+E;AAE/E;;GAEG;AACH,MAAM,UAAU,wBAAwB,CACtC,WAAuB,EACvB,UAAuC,EACvC,kBAAsC,EACtC,MAAc;IAEd;;OAEG;IACH,SAAS,0BAA0B,CACjC,UAA+B,EAC/B,GAAW;QAEX,MAAM,OAAO,GAAiB,EAAE,CAAC;QACjC,MAAM,IAAI,GAAG,UAAU,CAAC,IAAI,CAAC;QAE7B,IAAI,CAAC,IAAI,EAAE,CAAC;YACV,OAAO,OAAO,CAAC;QACjB,CAAC;QAED,MAAM,EAAE,WAAW,EAAE,SAAS,EAAE,WAAW,EAAE,kBAAkB,EAAE,cAAc,EAAE,GAAG,IAAI,CAAC;QAEzF,kCAAkC;QAClC,IAAI,WAAW,EAAE,CAAC;YAChB,OAAO,CAAC,IAAI,CAAC;gBACX,KAAK,EAAE,oBAAoB;gBAC3B,IAAI,EAAE,cAAc,CAAC,QAAQ;gBAC7B,WAAW,EAAE,CAAC,UAAU,CAAC;gBACzB,WAAW,EAAE,IAAI;gBACjB,+CAA+C;gBAC/C,IAAI,EAAE;oBACJ,IAAI,EAAE,UAAU;oBAChB,WAAW;oBACX,SAAS;oBACT,GAAG;iBACJ;aACF,CAAC,CAAC;QACL,CAAC;QAED,yBAAyB;QACzB,OAAO,CAAC,IAAI,CAAC;YACX,KAAK,EAAE,oBAAoB,SAAS,EAAE;YACtC,IAAI,EAAE,cAAc,CAAC,QAAQ;YAC7B,WAAW,EAAE,CAAC,UAAU,CAAC;YACzB,OAAO,EAAE;gBACP,KAAK,EAAE,iBAAiB;gBACxB,OAAO,EAAE,cAAc,CAAC,eAAe;gBACvC,SAAS,EAAE,CAAC,SAAS,CAAC;aACvB;SACF,CAAC,CAAC;QAEH,wBAAwB;QACxB,OAAO,CAAC,IAAI,CAAC;YACX,KAAK,EAAE,mBAAmB,SAAS,EAAE;YACrC,IAAI,EAAE,cAAc,CAAC,QAAQ;YAC7B,WAAW,EAAE,CAAC,UAAU,CAAC;YACzB,OAAO,EAAE;gBACP,KAAK,EAAE,gBAAgB;gBACvB,OAAO,EAAE,cAAc,CAAC,cAAc;gBACtC,SAAS,EAAE,CAAC,SAAS,CAAC;aACvB;SACF,CAAC,CAAC;QAEH,yBAAyB;QACzB,OAAO,CAAC,IAAI,CAAC;YACX,KAAK,EAAE,wBAAwB;YAC/B,IAAI,EAAE,cAAc,CAAC,QAAQ;YAC7B,WAAW,EAAE,CAAC,UAAU,CAAC;YACzB,OAAO,EAAE;gBACP,KAAK,EAAE,aAAa;gBACpB,OAAO,EAAE,cAAc,CAAC,WAAW;gBACnC,SAAS,EAAE,CAAC,WAAW,EAAE,GAAG,EAAE,UAAU,CAAC,KAAK,CAAC,KAAK,CAAC,IAAI,CAAC;aAC3D;SACF,CAAC,CAAC;QAEH,wBAAwB;QACxB,OAAO,CAAC,IAAI,CAAC;YACX,KAAK,EAAE,uBAAuB,SAAS,EAAE;YACzC,IAAI,EAAE,cAAc,CAAC,QAAQ;YAC7B,WAAW,EAAE,CAAC,UAAU,CAAC;YACzB,OAAO,EAAE;gBACP,KAAK,EAAE,gBAAgB;gBACvB,OAAO,EAAE,cAAc,CAAC,cAAc;gBACtC,SAAS,EAAE,CAAC,SAAS,EAAE,WAAW,CAAC;aACpC;SACF,CAAC,CAAC;QAEH,mCAAmC;QACnC,IAAI,kBAAkB,EAAE,CAAC;YACvB,OAAO,CAAC,IAAI,CAAC;gBACX,KAAK,EAAE,iBAAiB;gBACxB,IAAI,EAAE,cAAc,CAAC,QAAQ;gBAC7B,WAAW,EAAE,CAAC,UAAU,CAAC;gBACzB,OAAO,EAAE;oBACP,KAAK,EAAE,iBAAiB;oBACxB,OAAO,EAAE,cAAc,CAAC,UAAU;oBAClC,SAAS,EAAE,CAAC,WAAW,EAAE,SAAS,CAAC;iBACpC;aACF,CAAC,CAAC;QACL,CAAC;QAED,+BAA+B;QAC/B,IAAI,cAAc,EAAE,CAAC;YACnB,OAAO,CAAC,IAAI,CAAC;gBACX,KAAK,EAAE,aAAa;gBACpB,IAAI,EAAE,cAAc,CAAC,QAAQ;gBAC7B,WAAW,EAAE,CAAC,UAAU,CAAC;gBACzB,OAAO,EAAE;oBACP,KAAK,EAAE,aAAa;oBACpB,OAAO,EAAE,cAAc,CAAC,MAAM;oBAC9B,SAAS,EAAE,CAAC,WAAW,EAAE,GAAG,CAAC;iBAC9B;aACF,CAAC,CAAC;QACL,CAAC;QAED,OAAO,OAAO,CAAC;IACjB,CAAC;IAED,OAAO;QACL,YAAY,CAAC,MAAwB;YACnC,MAAM,GAAG,GAAG,MAAM,CAAC,YAAY,CAAC,GAAG,CAAC;YACpC,MAAM,YAAY,GAAG,MAAM,CAAC,KAAK,CAAC;YAElC,MAAM,CAAC,KAAK,CAAC,2BAA2B,GAAG,OAAO,YAAY,CAAC,KAAK,CAAC,IAAI,IAAI,YAAY,CAAC,KAAK,CAAC,SAAS,EAAE,CAAC,CAAC;YAE7G,oCAAoC;YACpC,MAAM,WAAW,GAAG,kBAAkB,CAAC,cAAc,CAAC,GAAG,CAAC,CAAC;YAE3D,IAAI,WAAW,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;gBAC7B,OAAO,IAAI,CAAC;YACd,CAAC;YAED,uDAAuD;YACvD,MAAM,mBAAmB,GAAG,WAAW,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CACnD,aAAa,CAAC,CAAC,CAAC,KAAK,EAAE,YAAY,CAAC,CACrC,CAAC;YAEF,IAAI,mBAAmB,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;gBACrC,OAAO,IAAI,CAAC;YACd,CAAC;YAED,qDAAqD;YACrD,MAAM,OAAO,GAAiB,EAAE,CAAC;YAEjC,KAAK,MAAM,UAAU,IAAI,mBAAmB,EAAE,CAAC;gBAC7C,MAAM,iBAAiB,GAAG,0BAA0B,CAAC,UAAU,EAAE,GAAG,CAAC,CAAC;gBACtE,OAAO,CAAC,IAAI,CAAC,GAAG,iBAAiB,CAAC,CAAC;YACrC,CAAC;YAED,MAAM,CAAC,KAAK,CAAC,aAAa,OAAO,CAAC,MAAM,eAAe,CAAC,CAAC;YAEzD,OAAO,OAAO,CAAC;QACjB,CAAC;QAED,mBAAmB,CAAC,UAAsB;YACxC,MAAM,CAAC,KAAK,CAAC,0BAA0B,UAAU,CAAC,KAAK,EAAE,CAAC,CAAC;YAE3D,gDAAgD;YAChD,IAAI,UAAU,CAAC,IAAI,EAAE,CAAC;gBACpB,MAAM,IAAI,GAAG,UAAU,CAAC,IAKvB,CAAC;gBAEF,IAAI,IAAI,CAAC,IAAI,KAAK,UAAU,EAAE,CAAC;oBAC7B,oDAAoD;oBACpD,8BAA8B;oBAC9B,MAAM,UAAU,GAAG,kBAAkB,CAAC,aAAa,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;oBAC9D,MAAM,SAAS,GAAG,UAAU,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE,KAAK,IAAI,CAAC,WAAW,CAAC,CAAC;oBAEpE,IAAI,SAAS,EAAE,QAAQ,EAAE,CAAC;wBACxB,UAAU,CAAC,IAAI,GAAG;4BAChB,OAAO,EAAE,SAAS,CAAC,QAAQ,CAAC,IAAI,CAAC,OAAO;yBACzC,CAAC;oBACJ,CAAC;gBACH,CAAC;YACH,CAAC;YAED,OAAO,UAAU,CAAC;QACpB,CAAC;KACF,CAAC;AACJ,CAAC"}
|
|
@@ -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
|
|
@@ -1,162 +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 { DRIFT_COMMANDS } from '../capabilities.js';
|
|
10
|
-
// ============================================================================
|
|
11
|
-
// Helpers
|
|
12
|
-
// ============================================================================
|
|
13
|
-
/**
|
|
14
|
-
* Group diagnostics by pattern ID
|
|
15
|
-
*/
|
|
16
|
-
function groupByPattern(diagnostics) {
|
|
17
|
-
const groups = new Map();
|
|
18
|
-
for (const diagnostic of diagnostics) {
|
|
19
|
-
const patternId = diagnostic.data?.patternId ?? 'unknown';
|
|
20
|
-
const group = groups.get(patternId) ?? [];
|
|
21
|
-
group.push(diagnostic);
|
|
22
|
-
groups.set(patternId, group);
|
|
23
|
-
}
|
|
24
|
-
return groups;
|
|
25
|
-
}
|
|
26
|
-
/**
|
|
27
|
-
* Count diagnostics by severity
|
|
28
|
-
*/
|
|
29
|
-
function countBySeverity(diagnostics) {
|
|
30
|
-
let errors = 0;
|
|
31
|
-
let warnings = 0;
|
|
32
|
-
let info = 0;
|
|
33
|
-
let hints = 0;
|
|
34
|
-
for (const d of diagnostics) {
|
|
35
|
-
switch (d.severity) {
|
|
36
|
-
case 1:
|
|
37
|
-
errors++;
|
|
38
|
-
break;
|
|
39
|
-
case 2:
|
|
40
|
-
warnings++;
|
|
41
|
-
break;
|
|
42
|
-
case 3:
|
|
43
|
-
info++;
|
|
44
|
-
break;
|
|
45
|
-
case 4:
|
|
46
|
-
hints++;
|
|
47
|
-
break;
|
|
48
|
-
}
|
|
49
|
-
}
|
|
50
|
-
return { errors, warnings, info, hints };
|
|
51
|
-
}
|
|
52
|
-
/**
|
|
53
|
-
* Format violation count for display
|
|
54
|
-
*/
|
|
55
|
-
function formatViolationCount(count) {
|
|
56
|
-
return count === 1 ? '1 violation' : `${count} violations`;
|
|
57
|
-
}
|
|
58
|
-
// ============================================================================
|
|
59
|
-
// Handler Factory
|
|
60
|
-
// ============================================================================
|
|
61
|
-
/**
|
|
62
|
-
* Create the code lens handler
|
|
63
|
-
*/
|
|
64
|
-
export function createCodeLensHandler(_connection, _documents, diagnosticsHandler, logger) {
|
|
65
|
-
return {
|
|
66
|
-
onCodeLens(params) {
|
|
67
|
-
const uri = params.textDocument.uri;
|
|
68
|
-
logger.debug(`Code lens request for ${uri}`);
|
|
69
|
-
// Get diagnostics for this document
|
|
70
|
-
const diagnostics = diagnosticsHandler.getDiagnostics(uri);
|
|
71
|
-
if (diagnostics.length === 0) {
|
|
72
|
-
return null;
|
|
73
|
-
}
|
|
74
|
-
const codeLenses = [];
|
|
75
|
-
// Document summary code lens at the top
|
|
76
|
-
const counts = countBySeverity(diagnostics);
|
|
77
|
-
const parts = [];
|
|
78
|
-
if (counts.errors > 0) {
|
|
79
|
-
parts.push(`${counts.errors} error${counts.errors === 1 ? '' : 's'}`);
|
|
80
|
-
}
|
|
81
|
-
if (counts.warnings > 0) {
|
|
82
|
-
parts.push(`${counts.warnings} warning${counts.warnings === 1 ? '' : 's'}`);
|
|
83
|
-
}
|
|
84
|
-
const summaryTitle = `📊 Drift: ${formatViolationCount(diagnostics.length)}${parts.length > 0 ? ` (${parts.join(', ')})` : ''}`;
|
|
85
|
-
codeLenses.push({
|
|
86
|
-
range: {
|
|
87
|
-
start: { line: 0, character: 0 },
|
|
88
|
-
end: { line: 0, character: 0 },
|
|
89
|
-
},
|
|
90
|
-
command: {
|
|
91
|
-
title: summaryTitle,
|
|
92
|
-
command: DRIFT_COMMANDS.SHOW_VIOLATIONS,
|
|
93
|
-
arguments: [uri],
|
|
94
|
-
},
|
|
95
|
-
data: {
|
|
96
|
-
type: 'summary',
|
|
97
|
-
uri,
|
|
98
|
-
violationCount: diagnostics.length,
|
|
99
|
-
},
|
|
100
|
-
});
|
|
101
|
-
// Group diagnostics by pattern
|
|
102
|
-
const patternGroups = groupByPattern(diagnostics);
|
|
103
|
-
// Create code lens for each pattern group
|
|
104
|
-
for (const [patternId, patternDiagnostics] of patternGroups) {
|
|
105
|
-
if (patternDiagnostics.length === 0) {
|
|
106
|
-
continue;
|
|
107
|
-
}
|
|
108
|
-
const firstDiagnostic = patternDiagnostics[0];
|
|
109
|
-
if (!firstDiagnostic) {
|
|
110
|
-
continue;
|
|
111
|
-
}
|
|
112
|
-
const count = patternDiagnostics.length;
|
|
113
|
-
// Pattern summary at first occurrence
|
|
114
|
-
codeLenses.push({
|
|
115
|
-
range: firstDiagnostic.range,
|
|
116
|
-
command: {
|
|
117
|
-
title: `⚠️ ${formatViolationCount(count)}: ${patternId}`,
|
|
118
|
-
command: DRIFT_COMMANDS.SHOW_VIOLATIONS,
|
|
119
|
-
arguments: [uri, patternId],
|
|
120
|
-
},
|
|
121
|
-
data: {
|
|
122
|
-
type: 'pattern',
|
|
123
|
-
uri,
|
|
124
|
-
patternId,
|
|
125
|
-
violationCount: count,
|
|
126
|
-
},
|
|
127
|
-
});
|
|
128
|
-
// Individual violation code lenses (limit to avoid clutter)
|
|
129
|
-
if (count <= 5) {
|
|
130
|
-
for (let i = 1; i < patternDiagnostics.length; i++) {
|
|
131
|
-
const diagnostic = patternDiagnostics[i];
|
|
132
|
-
if (!diagnostic) {
|
|
133
|
-
continue;
|
|
134
|
-
}
|
|
135
|
-
codeLenses.push({
|
|
136
|
-
range: diagnostic.range,
|
|
137
|
-
command: {
|
|
138
|
-
title: `💡 ${diagnostic.message}`,
|
|
139
|
-
command: DRIFT_COMMANDS.SHOW_VIOLATIONS,
|
|
140
|
-
arguments: [uri, patternId, diagnostic.data?.violationId],
|
|
141
|
-
},
|
|
142
|
-
data: {
|
|
143
|
-
type: 'violation',
|
|
144
|
-
uri,
|
|
145
|
-
patternId,
|
|
146
|
-
},
|
|
147
|
-
});
|
|
148
|
-
}
|
|
149
|
-
}
|
|
150
|
-
}
|
|
151
|
-
logger.debug(`Generated ${codeLenses.length} code lenses`);
|
|
152
|
-
return codeLenses;
|
|
153
|
-
},
|
|
154
|
-
onCodeLensResolve(codeLens) {
|
|
155
|
-
logger.debug('Resolving code lens');
|
|
156
|
-
// Code lenses are already resolved with commands
|
|
157
|
-
// This handler is for deferred resolution if needed
|
|
158
|
-
return codeLens;
|
|
159
|
-
},
|
|
160
|
-
};
|
|
161
|
-
}
|
|
162
|
-
//# sourceMappingURL=code-lens.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"code-lens.js","sourceRoot":"","sources":["../../src/handlers/code-lens.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,48 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Commands Handler
|
|
3
|
-
*
|
|
4
|
-
* Handles execution of Drift LSP commands.
|
|
5
|
-
* Routes commands to appropriate handlers and returns results.
|
|
6
|
-
* Integrates with driftdetect-core pattern store for persistence.
|
|
7
|
-
*
|
|
8
|
-
* @requirements 28.1 - drift.approvePattern
|
|
9
|
-
* @requirements 28.2 - drift.ignorePattern
|
|
10
|
-
* @requirements 28.3 - drift.ignoreOnce
|
|
11
|
-
* @requirements 28.4 - drift.createVariant
|
|
12
|
-
* @requirements 28.5 - drift.explainWithAI
|
|
13
|
-
* @requirements 28.6 - drift.fixWithAI
|
|
14
|
-
* @requirements 28.7 - drift.rescan
|
|
15
|
-
* @requirements 28.8 - drift.showPatterns
|
|
16
|
-
* @requirements 28.9 - drift.showViolations
|
|
17
|
-
*/
|
|
18
|
-
import type { Connection, TextDocuments, ExecuteCommandParams } from 'vscode-languageserver';
|
|
19
|
-
import type { TextDocument } from 'vscode-languageserver-textdocument';
|
|
20
|
-
import type { DiagnosticsHandler } from './diagnostics.js';
|
|
21
|
-
interface Logger {
|
|
22
|
-
error(message: string): void;
|
|
23
|
-
warn(message: string): void;
|
|
24
|
-
info(message: string): void;
|
|
25
|
-
debug(message: string): void;
|
|
26
|
-
}
|
|
27
|
-
/**
|
|
28
|
-
* Command execution result
|
|
29
|
-
*/
|
|
30
|
-
export interface CommandResult {
|
|
31
|
-
success: boolean;
|
|
32
|
-
message?: string;
|
|
33
|
-
data?: unknown;
|
|
34
|
-
error?: string;
|
|
35
|
-
}
|
|
36
|
-
/**
|
|
37
|
-
* Commands handler interface
|
|
38
|
-
*/
|
|
39
|
-
export interface CommandsHandler {
|
|
40
|
-
/** Handle execute command request */
|
|
41
|
-
onExecuteCommand(params: ExecuteCommandParams): Promise<CommandResult>;
|
|
42
|
-
}
|
|
43
|
-
/**
|
|
44
|
-
* Create the commands handler
|
|
45
|
-
*/
|
|
46
|
-
export declare function createCommandsHandler(connection: Connection, documents: TextDocuments<TextDocument>, diagnosticsHandler: DiagnosticsHandler, logger: Logger): CommandsHandler;
|
|
47
|
-
export {};
|
|
48
|
-
//# sourceMappingURL=commands.d.ts.map
|