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.
Files changed (111) hide show
  1. package/package.json +3 -3
  2. package/dist/bin/server.d.ts +0 -12
  3. package/dist/bin/server.js +0 -26
  4. package/dist/bin/server.js.map +0 -1
  5. package/dist/capabilities.d.ts +0 -91
  6. package/dist/capabilities.d.ts.map +0 -1
  7. package/dist/capabilities.js +0 -183
  8. package/dist/capabilities.js.map +0 -1
  9. package/dist/commands/approve-pattern.d.ts +0 -15
  10. package/dist/commands/approve-pattern.js +0 -83
  11. package/dist/commands/approve-pattern.js.map +0 -1
  12. package/dist/commands/create-variant.d.ts +0 -22
  13. package/dist/commands/create-variant.js +0 -109
  14. package/dist/commands/create-variant.js.map +0 -1
  15. package/dist/commands/explain-ai.d.ts +0 -11
  16. package/dist/commands/explain-ai.js +0 -144
  17. package/dist/commands/explain-ai.js.map +0 -1
  18. package/dist/commands/fix-ai.d.ts +0 -11
  19. package/dist/commands/fix-ai.js +0 -146
  20. package/dist/commands/fix-ai.js.map +0 -1
  21. package/dist/commands/ignore-once.d.ts +0 -33
  22. package/dist/commands/ignore-once.js +0 -147
  23. package/dist/commands/ignore-once.js.map +0 -1
  24. package/dist/commands/ignore-pattern.d.ts +0 -15
  25. package/dist/commands/ignore-pattern.js +0 -77
  26. package/dist/commands/ignore-pattern.js.map +0 -1
  27. package/dist/commands/index.d.ts +0 -14
  28. package/dist/commands/index.js +0 -14
  29. package/dist/commands/index.js.map +0 -1
  30. package/dist/commands/rescan.d.ts +0 -19
  31. package/dist/commands/rescan.js +0 -125
  32. package/dist/commands/rescan.js.map +0 -1
  33. package/dist/commands/show-patterns.d.ts +0 -30
  34. package/dist/commands/show-patterns.js +0 -175
  35. package/dist/commands/show-patterns.js.map +0 -1
  36. package/dist/commands/show-violations.d.ts +0 -11
  37. package/dist/commands/show-violations.js +0 -259
  38. package/dist/commands/show-violations.js.map +0 -1
  39. package/dist/handlers/code-actions.d.ts +0 -32
  40. package/dist/handlers/code-actions.js +0 -184
  41. package/dist/handlers/code-actions.js.map +0 -1
  42. package/dist/handlers/code-lens.d.ts +0 -32
  43. package/dist/handlers/code-lens.js +0 -162
  44. package/dist/handlers/code-lens.js.map +0 -1
  45. package/dist/handlers/commands.d.ts +0 -48
  46. package/dist/handlers/commands.js +0 -360
  47. package/dist/handlers/commands.js.map +0 -1
  48. package/dist/handlers/diagnostics.d.ts +0 -73
  49. package/dist/handlers/diagnostics.js +0 -259
  50. package/dist/handlers/diagnostics.js.map +0 -1
  51. package/dist/handlers/document-sync.d.ts +0 -37
  52. package/dist/handlers/document-sync.js +0 -49
  53. package/dist/handlers/document-sync.js.map +0 -1
  54. package/dist/handlers/hover.d.ts +0 -30
  55. package/dist/handlers/hover.js +0 -119
  56. package/dist/handlers/hover.js.map +0 -1
  57. package/dist/handlers/index.d.ts +0 -23
  58. package/dist/handlers/index.js +0 -16
  59. package/dist/handlers/index.js.map +0 -1
  60. package/dist/handlers/initialize.d.ts +0 -41
  61. package/dist/handlers/initialize.d.ts.map +0 -1
  62. package/dist/handlers/initialize.js +0 -33
  63. package/dist/handlers/initialize.js.map +0 -1
  64. package/dist/index.d.ts +0 -22
  65. package/dist/index.js +0 -26
  66. package/dist/index.js.map +0 -1
  67. package/dist/integration/core-scanner.d.ts +0 -89
  68. package/dist/integration/core-scanner.js +0 -309
  69. package/dist/integration/core-scanner.js.map +0 -1
  70. package/dist/integration/index.d.ts +0 -11
  71. package/dist/integration/index.js +0 -11
  72. package/dist/integration/index.js.map +0 -1
  73. package/dist/integration/pattern-store-adapter.d.ts +0 -117
  74. package/dist/integration/pattern-store-adapter.js +0 -349
  75. package/dist/integration/pattern-store-adapter.js.map +0 -1
  76. package/dist/integration/types.d.ts +0 -134
  77. package/dist/integration/types.js +0 -39
  78. package/dist/integration/types.js.map +0 -1
  79. package/dist/server/index.d.ts +0 -5
  80. package/dist/server/index.js +0 -5
  81. package/dist/server/index.js.map +0 -1
  82. package/dist/server/types.d.ts +0 -139
  83. package/dist/server/types.js +0 -8
  84. package/dist/server/types.js.map +0 -1
  85. package/dist/server.d.ts +0 -63
  86. package/dist/server.js +0 -208
  87. package/dist/server.js.map +0 -1
  88. package/dist/types/index.d.ts +0 -5
  89. package/dist/types/index.js +0 -5
  90. package/dist/types/index.js.map +0 -1
  91. package/dist/types/lsp-types.d.ts +0 -321
  92. package/dist/types/lsp-types.js +0 -274
  93. package/dist/types/lsp-types.js.map +0 -1
  94. package/dist/utils/diagnostic.d.ts +0 -84
  95. package/dist/utils/diagnostic.js +0 -256
  96. package/dist/utils/diagnostic.js.map +0 -1
  97. package/dist/utils/document.d.ts +0 -40
  98. package/dist/utils/document.d.ts.map +0 -1
  99. package/dist/utils/document.js +0 -138
  100. package/dist/utils/document.js.map +0 -1
  101. package/dist/utils/index.d.ts +0 -8
  102. package/dist/utils/index.d.ts.map +0 -1
  103. package/dist/utils/index.js +0 -8
  104. package/dist/utils/index.js.map +0 -1
  105. package/dist/utils/position.d.ts +0 -44
  106. package/dist/utils/position.d.ts.map +0 -1
  107. package/dist/utils/position.js +0 -96
  108. package/dist/utils/position.js.map +0 -1
  109. package/dist/utils/workspace.d.ts +0 -98
  110. package/dist/utils/workspace.js +0 -241
  111. 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