@nanocollective/nanocoder 1.16.5 → 1.17.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 (162) hide show
  1. package/README.md +53 -19
  2. package/assets/nanocoder-vscode.vsix +0 -0
  3. package/dist/app.d.ts +6 -1
  4. package/dist/app.d.ts.map +1 -1
  5. package/dist/app.js +54 -18
  6. package/dist/app.js.map +1 -1
  7. package/dist/cli.js +13 -1
  8. package/dist/cli.js.map +1 -1
  9. package/dist/commands/mcp.d.ts +6 -0
  10. package/dist/commands/mcp.d.ts.map +1 -1
  11. package/dist/commands/mcp.js +25 -3
  12. package/dist/commands/mcp.js.map +1 -1
  13. package/dist/components/vscode-extension-prompt.d.ts +12 -0
  14. package/dist/components/vscode-extension-prompt.d.ts.map +1 -0
  15. package/dist/components/vscode-extension-prompt.js +115 -0
  16. package/dist/components/vscode-extension-prompt.js.map +1 -0
  17. package/dist/hooks/useAppInitialization.d.ts +2 -0
  18. package/dist/hooks/useAppInitialization.d.ts.map +1 -1
  19. package/dist/hooks/useAppInitialization.js +55 -1
  20. package/dist/hooks/useAppInitialization.js.map +1 -1
  21. package/dist/hooks/useModeHandlers.d.ts +2 -1
  22. package/dist/hooks/useModeHandlers.d.ts.map +1 -1
  23. package/dist/hooks/useModeHandlers.js +13 -1
  24. package/dist/hooks/useModeHandlers.js.map +1 -1
  25. package/dist/hooks/useToolHandler.d.ts.map +1 -1
  26. package/dist/hooks/useToolHandler.js +11 -0
  27. package/dist/hooks/useToolHandler.js.map +1 -1
  28. package/dist/hooks/useVSCodeServer.d.ts +45 -0
  29. package/dist/hooks/useVSCodeServer.d.ts.map +1 -0
  30. package/dist/hooks/useVSCodeServer.js +144 -0
  31. package/dist/hooks/useVSCodeServer.js.map +1 -0
  32. package/dist/lsp/index.d.ts +12 -0
  33. package/dist/lsp/index.d.ts.map +1 -0
  34. package/dist/lsp/index.js +11 -0
  35. package/dist/lsp/index.js.map +1 -0
  36. package/dist/lsp/lsp-client.d.ts +78 -0
  37. package/dist/lsp/lsp-client.d.ts.map +1 -0
  38. package/dist/lsp/lsp-client.js +378 -0
  39. package/dist/lsp/lsp-client.js.map +1 -0
  40. package/dist/lsp/lsp-client.spec.d.ts +2 -0
  41. package/dist/lsp/lsp-client.spec.d.ts.map +1 -0
  42. package/dist/lsp/lsp-client.spec.js +395 -0
  43. package/dist/lsp/lsp-client.spec.js.map +1 -0
  44. package/dist/lsp/lsp-manager.d.ts +124 -0
  45. package/dist/lsp/lsp-manager.d.ts.map +1 -0
  46. package/dist/lsp/lsp-manager.js +313 -0
  47. package/dist/lsp/lsp-manager.js.map +1 -0
  48. package/dist/lsp/lsp-manager.spec.d.ts +2 -0
  49. package/dist/lsp/lsp-manager.spec.d.ts.map +1 -0
  50. package/dist/lsp/lsp-manager.spec.js +388 -0
  51. package/dist/lsp/lsp-manager.spec.js.map +1 -0
  52. package/dist/lsp/protocol.d.ts +313 -0
  53. package/dist/lsp/protocol.d.ts.map +1 -0
  54. package/dist/lsp/protocol.js +70 -0
  55. package/dist/lsp/protocol.js.map +1 -0
  56. package/dist/lsp/protocol.spec.d.ts +2 -0
  57. package/dist/lsp/protocol.spec.d.ts.map +1 -0
  58. package/dist/lsp/protocol.spec.js +406 -0
  59. package/dist/lsp/protocol.spec.js.map +1 -0
  60. package/dist/lsp/server-discovery.d.ts +35 -0
  61. package/dist/lsp/server-discovery.d.ts.map +1 -0
  62. package/dist/lsp/server-discovery.js +291 -0
  63. package/dist/lsp/server-discovery.js.map +1 -0
  64. package/dist/lsp/server-discovery.spec.d.ts +2 -0
  65. package/dist/lsp/server-discovery.spec.d.ts.map +1 -0
  66. package/dist/lsp/server-discovery.spec.js +375 -0
  67. package/dist/lsp/server-discovery.spec.js.map +1 -0
  68. package/dist/mcp/mcp-client.d.ts +18 -0
  69. package/dist/mcp/mcp-client.d.ts.map +1 -1
  70. package/dist/mcp/mcp-client.js +59 -23
  71. package/dist/mcp/mcp-client.js.map +1 -1
  72. package/dist/mcp/mcp-client.spec.d.ts +2 -0
  73. package/dist/mcp/mcp-client.spec.d.ts.map +1 -0
  74. package/dist/mcp/mcp-client.spec.js +64 -0
  75. package/dist/mcp/mcp-client.spec.js.map +1 -0
  76. package/dist/mcp/transport-factory.d.ts +39 -0
  77. package/dist/mcp/transport-factory.d.ts.map +1 -0
  78. package/dist/mcp/transport-factory.js +176 -0
  79. package/dist/mcp/transport-factory.js.map +1 -0
  80. package/dist/mcp/transport-factory.spec.d.ts +2 -0
  81. package/dist/mcp/transport-factory.spec.d.ts.map +1 -0
  82. package/dist/mcp/transport-factory.spec.js +303 -0
  83. package/dist/mcp/transport-factory.spec.js.map +1 -0
  84. package/dist/tools/create-file.d.ts.map +1 -1
  85. package/dist/tools/create-file.js +37 -3
  86. package/dist/tools/create-file.js.map +1 -1
  87. package/dist/tools/delete-lines.d.ts.map +1 -1
  88. package/dist/tools/delete-lines.js +41 -1
  89. package/dist/tools/delete-lines.js.map +1 -1
  90. package/dist/tools/index.d.ts.map +1 -1
  91. package/dist/tools/index.js +2 -0
  92. package/dist/tools/index.js.map +1 -1
  93. package/dist/tools/insert-lines.d.ts.map +1 -1
  94. package/dist/tools/insert-lines.js +40 -1
  95. package/dist/tools/insert-lines.js.map +1 -1
  96. package/dist/tools/lsp-get-diagnostics.d.ts +3 -0
  97. package/dist/tools/lsp-get-diagnostics.d.ts.map +1 -0
  98. package/dist/tools/lsp-get-diagnostics.js +182 -0
  99. package/dist/tools/lsp-get-diagnostics.js.map +1 -0
  100. package/dist/tools/replace-lines.d.ts.map +1 -1
  101. package/dist/tools/replace-lines.js +44 -1
  102. package/dist/tools/replace-lines.js.map +1 -1
  103. package/dist/tools/tool-manager.d.ts +17 -0
  104. package/dist/tools/tool-manager.d.ts.map +1 -1
  105. package/dist/tools/tool-manager.js +12 -0
  106. package/dist/tools/tool-manager.js.map +1 -1
  107. package/dist/types/config.d.ts +27 -0
  108. package/dist/types/config.d.ts.map +1 -1
  109. package/dist/types/mcp.d.ts +23 -1
  110. package/dist/types/mcp.d.ts.map +1 -1
  111. package/dist/vscode/extension-installer.d.ts +24 -0
  112. package/dist/vscode/extension-installer.d.ts.map +1 -0
  113. package/dist/vscode/extension-installer.js +110 -0
  114. package/dist/vscode/extension-installer.js.map +1 -0
  115. package/dist/vscode/extension-installer.spec.d.ts +2 -0
  116. package/dist/vscode/extension-installer.spec.d.ts.map +1 -0
  117. package/dist/vscode/extension-installer.spec.js +132 -0
  118. package/dist/vscode/extension-installer.spec.js.map +1 -0
  119. package/dist/vscode/index.d.ts +14 -0
  120. package/dist/vscode/index.d.ts.map +1 -0
  121. package/dist/vscode/index.js +14 -0
  122. package/dist/vscode/index.js.map +1 -0
  123. package/dist/vscode/protocol.d.ts +101 -0
  124. package/dist/vscode/protocol.d.ts.map +1 -0
  125. package/dist/vscode/protocol.js +7 -0
  126. package/dist/vscode/protocol.js.map +1 -0
  127. package/dist/vscode/protocol.spec.d.ts +2 -0
  128. package/dist/vscode/protocol.spec.d.ts.map +1 -0
  129. package/dist/vscode/protocol.spec.js +354 -0
  130. package/dist/vscode/protocol.spec.js.map +1 -0
  131. package/dist/vscode/vscode-server.d.ts +118 -0
  132. package/dist/vscode/vscode-server.d.ts.map +1 -0
  133. package/dist/vscode/vscode-server.js +303 -0
  134. package/dist/vscode/vscode-server.js.map +1 -0
  135. package/dist/vscode/vscode-server.spec.d.ts +2 -0
  136. package/dist/vscode/vscode-server.spec.d.ts.map +1 -0
  137. package/dist/vscode/vscode-server.spec.js +487 -0
  138. package/dist/vscode/vscode-server.spec.js.map +1 -0
  139. package/dist/wizard/steps/mcp-step.d.ts.map +1 -1
  140. package/dist/wizard/steps/mcp-step.js +139 -72
  141. package/dist/wizard/steps/mcp-step.js.map +1 -1
  142. package/dist/wizard/steps/summary-step.d.ts.map +1 -1
  143. package/dist/wizard/steps/summary-step.js +58 -2
  144. package/dist/wizard/steps/summary-step.js.map +1 -1
  145. package/dist/wizard/templates/mcp-templates.d.ts +20 -2
  146. package/dist/wizard/templates/mcp-templates.d.ts.map +1 -1
  147. package/dist/wizard/templates/mcp-templates.js +351 -7
  148. package/dist/wizard/templates/mcp-templates.js.map +1 -1
  149. package/dist/wizard/templates/mcp-templates.spec.js +257 -0
  150. package/dist/wizard/templates/mcp-templates.spec.js.map +1 -1
  151. package/dist/wizard/validation-array.spec.d.ts +2 -0
  152. package/dist/wizard/validation-array.spec.d.ts.map +1 -0
  153. package/dist/wizard/validation-array.spec.js +221 -0
  154. package/dist/wizard/validation-array.spec.js.map +1 -0
  155. package/dist/wizard/validation.d.ts +26 -1
  156. package/dist/wizard/validation.d.ts.map +1 -1
  157. package/dist/wizard/validation.js +15 -2
  158. package/dist/wizard/validation.js.map +1 -1
  159. package/dist/wizard/validation.spec.js +13 -5
  160. package/dist/wizard/validation.spec.js.map +1 -1
  161. package/package.json +7 -3
  162. package/source/app/prompts/main-prompt.md +6 -0
@@ -0,0 +1,406 @@
1
+ import test from 'ava';
2
+ import { DiagnosticSeverity, CompletionItemKind, InsertTextFormat, TextDocumentSyncKind, CompletionTriggerKind, LSPMethods, } from './protocol.js';
3
+ console.log(`\nprotocol.spec.ts`);
4
+ // DiagnosticSeverity enum tests
5
+ test('DiagnosticSeverity - has correct Error value', t => {
6
+ t.is(DiagnosticSeverity.Error, 1);
7
+ });
8
+ test('DiagnosticSeverity - has correct Warning value', t => {
9
+ t.is(DiagnosticSeverity.Warning, 2);
10
+ });
11
+ test('DiagnosticSeverity - has correct Information value', t => {
12
+ t.is(DiagnosticSeverity.Information, 3);
13
+ });
14
+ test('DiagnosticSeverity - has correct Hint value', t => {
15
+ t.is(DiagnosticSeverity.Hint, 4);
16
+ });
17
+ // CompletionItemKind enum tests
18
+ test('CompletionItemKind - has correct Text value', t => {
19
+ t.is(CompletionItemKind.Text, 1);
20
+ });
21
+ test('CompletionItemKind - has correct Method value', t => {
22
+ t.is(CompletionItemKind.Method, 2);
23
+ });
24
+ test('CompletionItemKind - has correct Function value', t => {
25
+ t.is(CompletionItemKind.Function, 3);
26
+ });
27
+ test('CompletionItemKind - has correct Constructor value', t => {
28
+ t.is(CompletionItemKind.Constructor, 4);
29
+ });
30
+ test('CompletionItemKind - has correct Field value', t => {
31
+ t.is(CompletionItemKind.Field, 5);
32
+ });
33
+ test('CompletionItemKind - has correct Variable value', t => {
34
+ t.is(CompletionItemKind.Variable, 6);
35
+ });
36
+ test('CompletionItemKind - has correct Class value', t => {
37
+ t.is(CompletionItemKind.Class, 7);
38
+ });
39
+ test('CompletionItemKind - has correct Interface value', t => {
40
+ t.is(CompletionItemKind.Interface, 8);
41
+ });
42
+ test('CompletionItemKind - has correct Module value', t => {
43
+ t.is(CompletionItemKind.Module, 9);
44
+ });
45
+ test('CompletionItemKind - has correct Property value', t => {
46
+ t.is(CompletionItemKind.Property, 10);
47
+ });
48
+ test('CompletionItemKind - has correct Keyword value', t => {
49
+ t.is(CompletionItemKind.Keyword, 14);
50
+ });
51
+ test('CompletionItemKind - has correct Snippet value', t => {
52
+ t.is(CompletionItemKind.Snippet, 15);
53
+ });
54
+ test('CompletionItemKind - has correct TypeParameter value', t => {
55
+ t.is(CompletionItemKind.TypeParameter, 25);
56
+ });
57
+ // InsertTextFormat enum tests
58
+ test('InsertTextFormat - has correct PlainText value', t => {
59
+ t.is(InsertTextFormat.PlainText, 1);
60
+ });
61
+ test('InsertTextFormat - has correct Snippet value', t => {
62
+ t.is(InsertTextFormat.Snippet, 2);
63
+ });
64
+ // TextDocumentSyncKind enum tests
65
+ test('TextDocumentSyncKind - has correct None value', t => {
66
+ t.is(TextDocumentSyncKind.None, 0);
67
+ });
68
+ test('TextDocumentSyncKind - has correct Full value', t => {
69
+ t.is(TextDocumentSyncKind.Full, 1);
70
+ });
71
+ test('TextDocumentSyncKind - has correct Incremental value', t => {
72
+ t.is(TextDocumentSyncKind.Incremental, 2);
73
+ });
74
+ // CompletionTriggerKind enum tests
75
+ test('CompletionTriggerKind - has correct Invoked value', t => {
76
+ t.is(CompletionTriggerKind.Invoked, 1);
77
+ });
78
+ test('CompletionTriggerKind - has correct TriggerCharacter value', t => {
79
+ t.is(CompletionTriggerKind.TriggerCharacter, 2);
80
+ });
81
+ test('CompletionTriggerKind - has correct TriggerForIncompleteCompletions value', t => {
82
+ t.is(CompletionTriggerKind.TriggerForIncompleteCompletions, 3);
83
+ });
84
+ // LSPMethods constant tests
85
+ test('LSPMethods - has correct Initialize method', t => {
86
+ t.is(LSPMethods.Initialize, 'initialize');
87
+ });
88
+ test('LSPMethods - has correct Initialized method', t => {
89
+ t.is(LSPMethods.Initialized, 'initialized');
90
+ });
91
+ test('LSPMethods - has correct Shutdown method', t => {
92
+ t.is(LSPMethods.Shutdown, 'shutdown');
93
+ });
94
+ test('LSPMethods - has correct Exit method', t => {
95
+ t.is(LSPMethods.Exit, 'exit');
96
+ });
97
+ test('LSPMethods - has correct DidOpen method', t => {
98
+ t.is(LSPMethods.DidOpen, 'textDocument/didOpen');
99
+ });
100
+ test('LSPMethods - has correct DidChange method', t => {
101
+ t.is(LSPMethods.DidChange, 'textDocument/didChange');
102
+ });
103
+ test('LSPMethods - has correct DidClose method', t => {
104
+ t.is(LSPMethods.DidClose, 'textDocument/didClose');
105
+ });
106
+ test('LSPMethods - has correct DidSave method', t => {
107
+ t.is(LSPMethods.DidSave, 'textDocument/didSave');
108
+ });
109
+ test('LSPMethods - has correct Completion method', t => {
110
+ t.is(LSPMethods.Completion, 'textDocument/completion');
111
+ });
112
+ test('LSPMethods - has correct Hover method', t => {
113
+ t.is(LSPMethods.Hover, 'textDocument/hover');
114
+ });
115
+ test('LSPMethods - has correct Definition method', t => {
116
+ t.is(LSPMethods.Definition, 'textDocument/definition');
117
+ });
118
+ test('LSPMethods - has correct References method', t => {
119
+ t.is(LSPMethods.References, 'textDocument/references');
120
+ });
121
+ test('LSPMethods - has correct CodeAction method', t => {
122
+ t.is(LSPMethods.CodeAction, 'textDocument/codeAction');
123
+ });
124
+ test('LSPMethods - has correct Formatting method', t => {
125
+ t.is(LSPMethods.Formatting, 'textDocument/formatting');
126
+ });
127
+ test('LSPMethods - has correct PublishDiagnostics method', t => {
128
+ t.is(LSPMethods.PublishDiagnostics, 'textDocument/publishDiagnostics');
129
+ });
130
+ test('LSPMethods - has correct DocumentDiagnostic method', t => {
131
+ t.is(LSPMethods.DocumentDiagnostic, 'textDocument/diagnostic');
132
+ });
133
+ test('LSPMethods - has correct WorkspaceDiagnostic method', t => {
134
+ t.is(LSPMethods.WorkspaceDiagnostic, 'workspace/diagnostic');
135
+ });
136
+ // Type structure tests - these verify the shape of interfaces at compile time
137
+ // by creating valid instances and checking they compile
138
+ test('Diagnostic type - can create valid diagnostic', t => {
139
+ const diagnostic = {
140
+ range: {
141
+ start: { line: 0, character: 0 },
142
+ end: { line: 0, character: 10 },
143
+ },
144
+ severity: DiagnosticSeverity.Error,
145
+ code: 'TS2322',
146
+ source: 'typescript',
147
+ message: 'Type error',
148
+ };
149
+ t.is(diagnostic.severity, DiagnosticSeverity.Error);
150
+ t.is(diagnostic.message, 'Type error');
151
+ t.is(diagnostic.range.start.line, 0);
152
+ });
153
+ test('Position type - can create valid position', t => {
154
+ const position = { line: 5, character: 10 };
155
+ t.is(position.line, 5);
156
+ t.is(position.character, 10);
157
+ });
158
+ test('Range type - can create valid range', t => {
159
+ const range = {
160
+ start: { line: 0, character: 0 },
161
+ end: { line: 10, character: 20 },
162
+ };
163
+ t.is(range.start.line, 0);
164
+ t.is(range.end.line, 10);
165
+ });
166
+ test('Location type - can create valid location', t => {
167
+ const location = {
168
+ uri: 'file:///test/file.ts',
169
+ range: {
170
+ start: { line: 0, character: 0 },
171
+ end: { line: 0, character: 5 },
172
+ },
173
+ };
174
+ t.is(location.uri, 'file:///test/file.ts');
175
+ t.is(location.range.start.line, 0);
176
+ });
177
+ test('TextDocumentItem type - can create valid text document item', t => {
178
+ const item = {
179
+ uri: 'file:///test/file.ts',
180
+ languageId: 'typescript',
181
+ version: 1,
182
+ text: 'const x = 1;',
183
+ };
184
+ t.is(item.uri, 'file:///test/file.ts');
185
+ t.is(item.languageId, 'typescript');
186
+ t.is(item.version, 1);
187
+ });
188
+ test('CompletionItem type - can create valid completion item', t => {
189
+ const item = {
190
+ label: 'console',
191
+ kind: CompletionItemKind.Module,
192
+ detail: 'Console module',
193
+ insertText: 'console',
194
+ insertTextFormat: InsertTextFormat.PlainText,
195
+ };
196
+ t.is(item.label, 'console');
197
+ t.is(item.kind, CompletionItemKind.Module);
198
+ });
199
+ test('CodeAction type - can create valid code action', t => {
200
+ const action = {
201
+ title: 'Extract to function',
202
+ kind: 'refactor.extract',
203
+ isPreferred: false,
204
+ };
205
+ t.is(action.title, 'Extract to function');
206
+ t.is(action.kind, 'refactor.extract');
207
+ });
208
+ test('TextEdit type - can create valid text edit', t => {
209
+ const edit = {
210
+ range: {
211
+ start: { line: 0, character: 0 },
212
+ end: { line: 0, character: 5 },
213
+ },
214
+ newText: 'const',
215
+ };
216
+ t.is(edit.newText, 'const');
217
+ t.is(edit.range.start.line, 0);
218
+ });
219
+ test('WorkspaceEdit type - can create valid workspace edit', t => {
220
+ const workspaceEdit = {
221
+ changes: {
222
+ 'file:///test/file.ts': [
223
+ {
224
+ range: {
225
+ start: { line: 0, character: 0 },
226
+ end: { line: 0, character: 3 },
227
+ },
228
+ newText: 'let',
229
+ },
230
+ ],
231
+ },
232
+ };
233
+ t.truthy(workspaceEdit.changes);
234
+ t.is(workspaceEdit.changes['file:///test/file.ts'].length, 1);
235
+ });
236
+ test('FormattingOptions type - can create valid formatting options', t => {
237
+ const options = {
238
+ tabSize: 2,
239
+ insertSpaces: true,
240
+ trimTrailingWhitespace: true,
241
+ insertFinalNewline: true,
242
+ trimFinalNewlines: true,
243
+ };
244
+ t.is(options.tabSize, 2);
245
+ t.true(options.insertSpaces);
246
+ });
247
+ test('PublishDiagnosticsParams type - can create valid params', t => {
248
+ const params = {
249
+ uri: 'file:///test/file.ts',
250
+ version: 1,
251
+ diagnostics: [
252
+ {
253
+ range: {
254
+ start: { line: 0, character: 0 },
255
+ end: { line: 0, character: 10 },
256
+ },
257
+ severity: DiagnosticSeverity.Warning,
258
+ message: 'Unused variable',
259
+ },
260
+ ],
261
+ };
262
+ t.is(params.uri, 'file:///test/file.ts');
263
+ t.is(params.diagnostics.length, 1);
264
+ });
265
+ test('ServerCapabilities type - can create valid capabilities', t => {
266
+ const capabilities = {
267
+ textDocumentSync: TextDocumentSyncKind.Incremental,
268
+ completionProvider: {
269
+ triggerCharacters: ['.', ':'],
270
+ resolveProvider: true,
271
+ },
272
+ hoverProvider: true,
273
+ definitionProvider: true,
274
+ referencesProvider: true,
275
+ documentFormattingProvider: true,
276
+ codeActionProvider: true,
277
+ };
278
+ t.is(capabilities.textDocumentSync, TextDocumentSyncKind.Incremental);
279
+ t.true(capabilities.hoverProvider);
280
+ t.truthy(capabilities.completionProvider);
281
+ });
282
+ test('InitializeResult type - can create valid result', t => {
283
+ const result = {
284
+ capabilities: {
285
+ textDocumentSync: TextDocumentSyncKind.Full,
286
+ completionProvider: { triggerCharacters: ['.'] },
287
+ },
288
+ serverInfo: {
289
+ name: 'typescript-language-server',
290
+ version: '1.0.0',
291
+ },
292
+ };
293
+ t.is(result.serverInfo?.name, 'typescript-language-server');
294
+ t.is(result.capabilities.textDocumentSync, TextDocumentSyncKind.Full);
295
+ });
296
+ test('JsonRpcRequest type - can create valid request', t => {
297
+ const request = {
298
+ jsonrpc: '2.0',
299
+ id: 1,
300
+ method: 'textDocument/completion',
301
+ params: {
302
+ textDocument: { uri: 'file:///test.ts' },
303
+ position: { line: 0, character: 5 },
304
+ },
305
+ };
306
+ t.is(request.jsonrpc, '2.0');
307
+ t.is(request.id, 1);
308
+ t.is(request.method, 'textDocument/completion');
309
+ });
310
+ test('JsonRpcResponse type - can create valid success response', t => {
311
+ const response = {
312
+ jsonrpc: '2.0',
313
+ id: 1,
314
+ result: [{ label: 'console' }],
315
+ };
316
+ t.is(response.jsonrpc, '2.0');
317
+ t.is(response.id, 1);
318
+ t.truthy(response.result);
319
+ });
320
+ test('JsonRpcResponse type - can create valid error response', t => {
321
+ const response = {
322
+ jsonrpc: '2.0',
323
+ id: 1,
324
+ error: {
325
+ code: -32600,
326
+ message: 'Invalid Request',
327
+ },
328
+ };
329
+ t.is(response.error?.code, -32600);
330
+ t.is(response.error?.message, 'Invalid Request');
331
+ });
332
+ test('JsonRpcNotification type - can create valid notification', t => {
333
+ const notification = {
334
+ jsonrpc: '2.0',
335
+ method: 'textDocument/publishDiagnostics',
336
+ params: {
337
+ uri: 'file:///test.ts',
338
+ diagnostics: [],
339
+ },
340
+ };
341
+ t.is(notification.jsonrpc, '2.0');
342
+ t.is(notification.method, 'textDocument/publishDiagnostics');
343
+ });
344
+ // DiagnosticRelatedInformation tests
345
+ test('DiagnosticRelatedInformation type - can create valid related info', t => {
346
+ const relatedInfo = {
347
+ location: {
348
+ uri: 'file:///test/other.ts',
349
+ range: {
350
+ start: { line: 10, character: 0 },
351
+ end: { line: 10, character: 5 },
352
+ },
353
+ },
354
+ message: 'Original declaration here',
355
+ };
356
+ t.is(relatedInfo.message, 'Original declaration here');
357
+ t.is(relatedInfo.location.uri, 'file:///test/other.ts');
358
+ });
359
+ // MarkupContent tests
360
+ test('MarkupContent type - can create plaintext markup', t => {
361
+ const content = {
362
+ kind: 'plaintext',
363
+ value: 'Simple text documentation',
364
+ };
365
+ t.is(content.kind, 'plaintext');
366
+ t.is(content.value, 'Simple text documentation');
367
+ });
368
+ test('MarkupContent type - can create markdown markup', t => {
369
+ const content = {
370
+ kind: 'markdown',
371
+ value: '**Bold** and _italic_ documentation',
372
+ };
373
+ t.is(content.kind, 'markdown');
374
+ t.true(content.value.includes('**Bold**'));
375
+ });
376
+ // File operation types tests
377
+ test('CreateFile type - can create valid create file operation', t => {
378
+ const createFile = {
379
+ kind: 'create',
380
+ uri: 'file:///test/new-file.ts',
381
+ options: { overwrite: false, ignoreIfExists: true },
382
+ };
383
+ t.is(createFile.kind, 'create');
384
+ t.is(createFile.uri, 'file:///test/new-file.ts');
385
+ });
386
+ test('RenameFile type - can create valid rename file operation', t => {
387
+ const renameFile = {
388
+ kind: 'rename',
389
+ oldUri: 'file:///test/old.ts',
390
+ newUri: 'file:///test/new.ts',
391
+ options: { overwrite: true },
392
+ };
393
+ t.is(renameFile.kind, 'rename');
394
+ t.is(renameFile.oldUri, 'file:///test/old.ts');
395
+ t.is(renameFile.newUri, 'file:///test/new.ts');
396
+ });
397
+ test('DeleteFile type - can create valid delete file operation', t => {
398
+ const deleteFile = {
399
+ kind: 'delete',
400
+ uri: 'file:///test/to-delete.ts',
401
+ options: { recursive: true, ignoreIfNotExists: true },
402
+ };
403
+ t.is(deleteFile.kind, 'delete');
404
+ t.is(deleteFile.uri, 'file:///test/to-delete.ts');
405
+ });
406
+ //# sourceMappingURL=protocol.spec.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"protocol.spec.js","sourceRoot":"","sources":["../../source/lsp/protocol.spec.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,35 @@
1
+ /**
2
+ * Language Server Auto-Discovery
3
+ * Detects installed language servers on the system
4
+ */
5
+ import type { LSPServerConfig } from './lsp-client.js';
6
+ /**
7
+ * Discover all installed language servers
8
+ */
9
+ export declare function discoverLanguageServers(): LSPServerConfig[];
10
+ /**
11
+ * Get language server config for a specific file extension
12
+ */
13
+ export declare function getServerForLanguage(servers: LSPServerConfig[], extension: string): LSPServerConfig | undefined;
14
+ /**
15
+ * Get the file extension to LSP language ID mapping
16
+ */
17
+ export declare function getLanguageId(extension: string): string;
18
+ /**
19
+ * Get install hints for missing language servers
20
+ */
21
+ export declare function getMissingServerHints(extensions: string[]): string[];
22
+ /**
23
+ * Try to find language server from node_modules (project-local)
24
+ */
25
+ export declare function findLocalServer(projectRoot: string, serverName: string): string | null;
26
+ /**
27
+ * Get all known language servers with their availability status
28
+ */
29
+ export declare function getKnownServersStatus(): Array<{
30
+ name: string;
31
+ available: boolean;
32
+ languages: string[];
33
+ installHint?: string;
34
+ }>;
35
+ //# sourceMappingURL=server-discovery.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"server-discovery.d.ts","sourceRoot":"","sources":["../../source/lsp/server-discovery.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAKH,OAAO,KAAK,EAAC,eAAe,EAAC,MAAM,cAAc,CAAC;AA+JlD;;GAEG;AACH,wBAAgB,uBAAuB,IAAI,eAAe,EAAE,CAqC3D;AAED;;GAEG;AACH,wBAAgB,oBAAoB,CACnC,OAAO,EAAE,eAAe,EAAE,EAC1B,SAAS,EAAE,MAAM,GACf,eAAe,GAAG,SAAS,CAG7B;AAED;;GAEG;AACH,wBAAgB,aAAa,CAAC,SAAS,EAAE,MAAM,GAAG,MAAM,CA8CvD;AAED;;GAEG;AACH,wBAAgB,qBAAqB,CAAC,UAAU,EAAE,MAAM,EAAE,GAAG,MAAM,EAAE,CAoBpE;AAED;;GAEG;AACH,wBAAgB,eAAe,CAC9B,WAAW,EAAE,MAAM,EACnB,UAAU,EAAE,MAAM,GAChB,MAAM,GAAG,IAAI,CAaf;AAED;;GAEG;AACH,wBAAgB,qBAAqB,IAAI,KAAK,CAAC;IAC9C,IAAI,EAAE,MAAM,CAAC;IACb,SAAS,EAAE,OAAO,CAAC;IACnB,SAAS,EAAE,MAAM,EAAE,CAAC;IACpB,WAAW,CAAC,EAAE,MAAM,CAAC;CACrB,CAAC,CAOD"}