driftdetect-lsp 0.1.1

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 (141) hide show
  1. package/dist/bin/server.d.ts +12 -0
  2. package/dist/bin/server.d.ts.map +1 -0
  3. package/dist/bin/server.js +26 -0
  4. package/dist/bin/server.js.map +1 -0
  5. package/dist/capabilities.d.ts +91 -0
  6. package/dist/capabilities.d.ts.map +1 -0
  7. package/dist/capabilities.js +183 -0
  8. package/dist/capabilities.js.map +1 -0
  9. package/dist/commands/approve-pattern.d.ts +15 -0
  10. package/dist/commands/approve-pattern.d.ts.map +1 -0
  11. package/dist/commands/approve-pattern.js +83 -0
  12. package/dist/commands/approve-pattern.js.map +1 -0
  13. package/dist/commands/create-variant.d.ts +22 -0
  14. package/dist/commands/create-variant.d.ts.map +1 -0
  15. package/dist/commands/create-variant.js +109 -0
  16. package/dist/commands/create-variant.js.map +1 -0
  17. package/dist/commands/explain-ai.d.ts +11 -0
  18. package/dist/commands/explain-ai.d.ts.map +1 -0
  19. package/dist/commands/explain-ai.js +144 -0
  20. package/dist/commands/explain-ai.js.map +1 -0
  21. package/dist/commands/fix-ai.d.ts +11 -0
  22. package/dist/commands/fix-ai.d.ts.map +1 -0
  23. package/dist/commands/fix-ai.js +146 -0
  24. package/dist/commands/fix-ai.js.map +1 -0
  25. package/dist/commands/ignore-once.d.ts +33 -0
  26. package/dist/commands/ignore-once.d.ts.map +1 -0
  27. package/dist/commands/ignore-once.js +147 -0
  28. package/dist/commands/ignore-once.js.map +1 -0
  29. package/dist/commands/ignore-pattern.d.ts +15 -0
  30. package/dist/commands/ignore-pattern.d.ts.map +1 -0
  31. package/dist/commands/ignore-pattern.js +77 -0
  32. package/dist/commands/ignore-pattern.js.map +1 -0
  33. package/dist/commands/index.d.ts +14 -0
  34. package/dist/commands/index.d.ts.map +1 -0
  35. package/dist/commands/index.js +14 -0
  36. package/dist/commands/index.js.map +1 -0
  37. package/dist/commands/rescan.d.ts +19 -0
  38. package/dist/commands/rescan.d.ts.map +1 -0
  39. package/dist/commands/rescan.js +125 -0
  40. package/dist/commands/rescan.js.map +1 -0
  41. package/dist/commands/show-patterns.d.ts +30 -0
  42. package/dist/commands/show-patterns.d.ts.map +1 -0
  43. package/dist/commands/show-patterns.js +175 -0
  44. package/dist/commands/show-patterns.js.map +1 -0
  45. package/dist/commands/show-violations.d.ts +11 -0
  46. package/dist/commands/show-violations.d.ts.map +1 -0
  47. package/dist/commands/show-violations.js +259 -0
  48. package/dist/commands/show-violations.js.map +1 -0
  49. package/dist/handlers/code-actions.d.ts +32 -0
  50. package/dist/handlers/code-actions.d.ts.map +1 -0
  51. package/dist/handlers/code-actions.js +184 -0
  52. package/dist/handlers/code-actions.js.map +1 -0
  53. package/dist/handlers/code-lens.d.ts +32 -0
  54. package/dist/handlers/code-lens.d.ts.map +1 -0
  55. package/dist/handlers/code-lens.js +162 -0
  56. package/dist/handlers/code-lens.js.map +1 -0
  57. package/dist/handlers/commands.d.ts +48 -0
  58. package/dist/handlers/commands.d.ts.map +1 -0
  59. package/dist/handlers/commands.js +360 -0
  60. package/dist/handlers/commands.js.map +1 -0
  61. package/dist/handlers/diagnostics.d.ts +73 -0
  62. package/dist/handlers/diagnostics.d.ts.map +1 -0
  63. package/dist/handlers/diagnostics.js +259 -0
  64. package/dist/handlers/diagnostics.js.map +1 -0
  65. package/dist/handlers/document-sync.d.ts +37 -0
  66. package/dist/handlers/document-sync.d.ts.map +1 -0
  67. package/dist/handlers/document-sync.js +49 -0
  68. package/dist/handlers/document-sync.js.map +1 -0
  69. package/dist/handlers/hover.d.ts +30 -0
  70. package/dist/handlers/hover.d.ts.map +1 -0
  71. package/dist/handlers/hover.js +119 -0
  72. package/dist/handlers/hover.js.map +1 -0
  73. package/dist/handlers/index.d.ts +23 -0
  74. package/dist/handlers/index.d.ts.map +1 -0
  75. package/dist/handlers/index.js +16 -0
  76. package/dist/handlers/index.js.map +1 -0
  77. package/dist/handlers/initialize.d.ts +41 -0
  78. package/dist/handlers/initialize.d.ts.map +1 -0
  79. package/dist/handlers/initialize.js +33 -0
  80. package/dist/handlers/initialize.js.map +1 -0
  81. package/dist/index.d.ts +22 -0
  82. package/dist/index.d.ts.map +1 -0
  83. package/dist/index.js +26 -0
  84. package/dist/index.js.map +1 -0
  85. package/dist/integration/core-scanner.d.ts +89 -0
  86. package/dist/integration/core-scanner.d.ts.map +1 -0
  87. package/dist/integration/core-scanner.js +309 -0
  88. package/dist/integration/core-scanner.js.map +1 -0
  89. package/dist/integration/index.d.ts +11 -0
  90. package/dist/integration/index.d.ts.map +1 -0
  91. package/dist/integration/index.js +11 -0
  92. package/dist/integration/index.js.map +1 -0
  93. package/dist/integration/pattern-store-adapter.d.ts +117 -0
  94. package/dist/integration/pattern-store-adapter.d.ts.map +1 -0
  95. package/dist/integration/pattern-store-adapter.js +349 -0
  96. package/dist/integration/pattern-store-adapter.js.map +1 -0
  97. package/dist/integration/types.d.ts +134 -0
  98. package/dist/integration/types.d.ts.map +1 -0
  99. package/dist/integration/types.js +39 -0
  100. package/dist/integration/types.js.map +1 -0
  101. package/dist/server/index.d.ts +5 -0
  102. package/dist/server/index.d.ts.map +1 -0
  103. package/dist/server/index.js +5 -0
  104. package/dist/server/index.js.map +1 -0
  105. package/dist/server/types.d.ts +139 -0
  106. package/dist/server/types.d.ts.map +1 -0
  107. package/dist/server/types.js +8 -0
  108. package/dist/server/types.js.map +1 -0
  109. package/dist/server.d.ts +63 -0
  110. package/dist/server.d.ts.map +1 -0
  111. package/dist/server.js +208 -0
  112. package/dist/server.js.map +1 -0
  113. package/dist/types/index.d.ts +5 -0
  114. package/dist/types/index.d.ts.map +1 -0
  115. package/dist/types/index.js +5 -0
  116. package/dist/types/index.js.map +1 -0
  117. package/dist/types/lsp-types.d.ts +321 -0
  118. package/dist/types/lsp-types.d.ts.map +1 -0
  119. package/dist/types/lsp-types.js +274 -0
  120. package/dist/types/lsp-types.js.map +1 -0
  121. package/dist/utils/diagnostic.d.ts +84 -0
  122. package/dist/utils/diagnostic.d.ts.map +1 -0
  123. package/dist/utils/diagnostic.js +256 -0
  124. package/dist/utils/diagnostic.js.map +1 -0
  125. package/dist/utils/document.d.ts +40 -0
  126. package/dist/utils/document.d.ts.map +1 -0
  127. package/dist/utils/document.js +132 -0
  128. package/dist/utils/document.js.map +1 -0
  129. package/dist/utils/index.d.ts +8 -0
  130. package/dist/utils/index.d.ts.map +1 -0
  131. package/dist/utils/index.js +8 -0
  132. package/dist/utils/index.js.map +1 -0
  133. package/dist/utils/position.d.ts +44 -0
  134. package/dist/utils/position.d.ts.map +1 -0
  135. package/dist/utils/position.js +96 -0
  136. package/dist/utils/position.js.map +1 -0
  137. package/dist/utils/workspace.d.ts +98 -0
  138. package/dist/utils/workspace.d.ts.map +1 -0
  139. package/dist/utils/workspace.js +241 -0
  140. package/dist/utils/workspace.js.map +1 -0
  141. package/package.json +49 -0
@@ -0,0 +1,32 @@
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
@@ -0,0 +1 @@
1
+ {"version":3,"file":"code-actions.d.ts","sourceRoot":"","sources":["../../src/handlers/code-actions.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAEH,OAAO,KAAK,EACV,UAAU,EACV,aAAa,EACb,UAAU,EACV,gBAAgB,EAEjB,MAAM,uBAAuB,CAAC;AAE/B,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,oCAAoC,CAAC;AACvE,OAAO,KAAK,EAAE,kBAAkB,EAAuB,MAAM,kBAAkB,CAAC;AAOhF,UAAU,MAAM;IACd,KAAK,CAAC,OAAO,EAAE,MAAM,GAAG,IAAI,CAAC;IAC7B,IAAI,CAAC,OAAO,EAAE,MAAM,GAAG,IAAI,CAAC;IAC5B,IAAI,CAAC,OAAO,EAAE,MAAM,GAAG,IAAI,CAAC;IAC5B,KAAK,CAAC,OAAO,EAAE,MAAM,GAAG,IAAI,CAAC;CAC9B;AAED;;GAEG;AACH,MAAM,WAAW,kBAAkB;IACjC,iCAAiC;IACjC,YAAY,CAAC,MAAM,EAAE,gBAAgB,GAAG,UAAU,EAAE,GAAG,IAAI,CAAC;IAC5D,yCAAyC;IACzC,mBAAmB,CAAC,UAAU,EAAE,UAAU,GAAG,UAAU,CAAC;CACzD;AAiCD;;GAEG;AACH,wBAAgB,wBAAwB,CACtC,WAAW,EAAE,UAAU,EACvB,UAAU,EAAE,aAAa,CAAC,YAAY,CAAC,EACvC,kBAAkB,EAAE,kBAAkB,EACtC,MAAM,EAAE,MAAM,GACb,kBAAkB,CAkLpB"}
@@ -0,0 +1,184 @@
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
@@ -0,0 +1 @@
1
+ {"version":3,"file":"code-actions.js","sourceRoot":"","sources":["../../src/handlers/code-actions.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,32 @@
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
@@ -0,0 +1 @@
1
+ {"version":3,"file":"code-lens.d.ts","sourceRoot":"","sources":["../../src/handlers/code-lens.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAEH,OAAO,KAAK,EACV,UAAU,EACV,aAAa,EACb,QAAQ,EACR,cAAc,EACf,MAAM,uBAAuB,CAAC;AAC/B,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,oCAAoC,CAAC;AACvE,OAAO,KAAK,EAAE,kBAAkB,EAAuB,MAAM,kBAAkB,CAAC;AAOhF,UAAU,MAAM;IACd,KAAK,CAAC,OAAO,EAAE,MAAM,GAAG,IAAI,CAAC;IAC7B,IAAI,CAAC,OAAO,EAAE,MAAM,GAAG,IAAI,CAAC;IAC5B,IAAI,CAAC,OAAO,EAAE,MAAM,GAAG,IAAI,CAAC;IAC5B,KAAK,CAAC,OAAO,EAAE,MAAM,GAAG,IAAI,CAAC;CAC9B;AAED;;GAEG;AACH,MAAM,WAAW,eAAe;IAC9B,+BAA+B;IAC/B,UAAU,CAAC,MAAM,EAAE,cAAc,GAAG,QAAQ,EAAE,GAAG,IAAI,CAAC;IACtD,uCAAuC;IACvC,iBAAiB,CAAC,QAAQ,EAAE,QAAQ,GAAG,QAAQ,CAAC;CACjD;AA+ED;;GAEG;AACH,wBAAgB,qBAAqB,CACnC,WAAW,EAAE,UAAU,EACvB,UAAU,EAAE,aAAa,CAAC,YAAY,CAAC,EACvC,kBAAkB,EAAE,kBAAkB,EACtC,MAAM,EAAE,MAAM,GACb,eAAe,CAoHjB"}
@@ -0,0 +1,162 @@
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
@@ -0,0 +1 @@
1
+ {"version":3,"file":"code-lens.js","sourceRoot":"","sources":["../../src/handlers/code-lens.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,48 @@
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
@@ -0,0 +1 @@
1
+ {"version":3,"file":"commands.d.ts","sourceRoot":"","sources":["../../src/handlers/commands.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;GAgBG;AAEH,OAAO,KAAK,EACV,UAAU,EACV,aAAa,EACb,oBAAoB,EACrB,MAAM,uBAAuB,CAAC;AAC/B,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,oCAAoC,CAAC;AACvE,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,kBAAkB,CAAC;AAO3D,UAAU,MAAM;IACd,KAAK,CAAC,OAAO,EAAE,MAAM,GAAG,IAAI,CAAC;IAC7B,IAAI,CAAC,OAAO,EAAE,MAAM,GAAG,IAAI,CAAC;IAC5B,IAAI,CAAC,OAAO,EAAE,MAAM,GAAG,IAAI,CAAC;IAC5B,KAAK,CAAC,OAAO,EAAE,MAAM,GAAG,IAAI,CAAC;CAC9B;AAED;;GAEG;AACH,MAAM,WAAW,aAAa;IAC5B,OAAO,EAAE,OAAO,CAAC;IACjB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,IAAI,CAAC,EAAE,OAAO,CAAC;IACf,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB;AAED;;GAEG;AACH,MAAM,WAAW,eAAe;IAC9B,qCAAqC;IACrC,gBAAgB,CAAC,MAAM,EAAE,oBAAoB,GAAG,OAAO,CAAC,aAAa,CAAC,CAAC;CACxE;AA8bD;;GAEG;AACH,wBAAgB,qBAAqB,CACnC,UAAU,EAAE,UAAU,EACtB,SAAS,EAAE,aAAa,CAAC,YAAY,CAAC,EACtC,kBAAkB,EAAE,kBAAkB,EACtC,MAAM,EAAE,MAAM,GACb,eAAe,CA0GjB"}