@nanocollective/nanocoder 1.16.4 → 1.17.0

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 (211) 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/init.d.ts.map +1 -1
  10. package/dist/commands/init.js +4 -29
  11. package/dist/commands/init.js.map +1 -1
  12. package/dist/commands/mcp.d.ts +6 -0
  13. package/dist/commands/mcp.d.ts.map +1 -1
  14. package/dist/commands/mcp.js +25 -3
  15. package/dist/commands/mcp.js.map +1 -1
  16. package/dist/components/tool-confirmation.d.ts.map +1 -1
  17. package/dist/components/tool-confirmation.js +5 -19
  18. package/dist/components/tool-confirmation.js.map +1 -1
  19. package/dist/components/vscode-extension-prompt.d.ts +12 -0
  20. package/dist/components/vscode-extension-prompt.d.ts.map +1 -0
  21. package/dist/components/vscode-extension-prompt.js +115 -0
  22. package/dist/components/vscode-extension-prompt.js.map +1 -0
  23. package/dist/config/themes.js +2 -2
  24. package/dist/hooks/useAppInitialization.d.ts +2 -0
  25. package/dist/hooks/useAppInitialization.d.ts.map +1 -1
  26. package/dist/hooks/useAppInitialization.js +55 -1
  27. package/dist/hooks/useAppInitialization.js.map +1 -1
  28. package/dist/hooks/useChatHandler.d.ts.map +1 -1
  29. package/dist/hooks/useChatHandler.js +10 -71
  30. package/dist/hooks/useChatHandler.js.map +1 -1
  31. package/dist/hooks/useDirectoryTrust.d.ts.map +1 -1
  32. package/dist/hooks/useDirectoryTrust.js +4 -4
  33. package/dist/hooks/useDirectoryTrust.js.map +1 -1
  34. package/dist/hooks/useModeHandlers.d.ts +2 -1
  35. package/dist/hooks/useModeHandlers.d.ts.map +1 -1
  36. package/dist/hooks/useModeHandlers.js +13 -1
  37. package/dist/hooks/useModeHandlers.js.map +1 -1
  38. package/dist/hooks/useToolHandler.d.ts +0 -1
  39. package/dist/hooks/useToolHandler.d.ts.map +1 -1
  40. package/dist/hooks/useToolHandler.js +15 -75
  41. package/dist/hooks/useToolHandler.js.map +1 -1
  42. package/dist/hooks/useVSCodeServer.d.ts +45 -0
  43. package/dist/hooks/useVSCodeServer.d.ts.map +1 -0
  44. package/dist/hooks/useVSCodeServer.js +144 -0
  45. package/dist/hooks/useVSCodeServer.js.map +1 -0
  46. package/dist/lsp/index.d.ts +12 -0
  47. package/dist/lsp/index.d.ts.map +1 -0
  48. package/dist/lsp/index.js +11 -0
  49. package/dist/lsp/index.js.map +1 -0
  50. package/dist/lsp/lsp-client.d.ts +78 -0
  51. package/dist/lsp/lsp-client.d.ts.map +1 -0
  52. package/dist/lsp/lsp-client.js +378 -0
  53. package/dist/lsp/lsp-client.js.map +1 -0
  54. package/dist/lsp/lsp-client.spec.d.ts +2 -0
  55. package/dist/lsp/lsp-client.spec.d.ts.map +1 -0
  56. package/dist/lsp/lsp-client.spec.js +395 -0
  57. package/dist/lsp/lsp-client.spec.js.map +1 -0
  58. package/dist/lsp/lsp-manager.d.ts +124 -0
  59. package/dist/lsp/lsp-manager.d.ts.map +1 -0
  60. package/dist/lsp/lsp-manager.js +313 -0
  61. package/dist/lsp/lsp-manager.js.map +1 -0
  62. package/dist/lsp/lsp-manager.spec.d.ts +2 -0
  63. package/dist/lsp/lsp-manager.spec.d.ts.map +1 -0
  64. package/dist/lsp/lsp-manager.spec.js +388 -0
  65. package/dist/lsp/lsp-manager.spec.js.map +1 -0
  66. package/dist/lsp/protocol.d.ts +313 -0
  67. package/dist/lsp/protocol.d.ts.map +1 -0
  68. package/dist/lsp/protocol.js +70 -0
  69. package/dist/lsp/protocol.js.map +1 -0
  70. package/dist/lsp/protocol.spec.d.ts +2 -0
  71. package/dist/lsp/protocol.spec.d.ts.map +1 -0
  72. package/dist/lsp/protocol.spec.js +406 -0
  73. package/dist/lsp/protocol.spec.js.map +1 -0
  74. package/dist/lsp/server-discovery.d.ts +35 -0
  75. package/dist/lsp/server-discovery.d.ts.map +1 -0
  76. package/dist/lsp/server-discovery.js +291 -0
  77. package/dist/lsp/server-discovery.js.map +1 -0
  78. package/dist/lsp/server-discovery.spec.d.ts +2 -0
  79. package/dist/lsp/server-discovery.spec.d.ts.map +1 -0
  80. package/dist/lsp/server-discovery.spec.js +375 -0
  81. package/dist/lsp/server-discovery.spec.js.map +1 -0
  82. package/dist/mcp/mcp-client.d.ts +18 -0
  83. package/dist/mcp/mcp-client.d.ts.map +1 -1
  84. package/dist/mcp/mcp-client.js +59 -23
  85. package/dist/mcp/mcp-client.js.map +1 -1
  86. package/dist/mcp/mcp-client.spec.d.ts +2 -0
  87. package/dist/mcp/mcp-client.spec.d.ts.map +1 -0
  88. package/dist/mcp/mcp-client.spec.js +64 -0
  89. package/dist/mcp/mcp-client.spec.js.map +1 -0
  90. package/dist/mcp/transport-factory.d.ts +39 -0
  91. package/dist/mcp/transport-factory.d.ts.map +1 -0
  92. package/dist/mcp/transport-factory.js +176 -0
  93. package/dist/mcp/transport-factory.js.map +1 -0
  94. package/dist/mcp/transport-factory.spec.d.ts +2 -0
  95. package/dist/mcp/transport-factory.spec.d.ts.map +1 -0
  96. package/dist/mcp/transport-factory.spec.js +303 -0
  97. package/dist/mcp/transport-factory.spec.js.map +1 -0
  98. package/dist/message-handler.d.ts.map +1 -1
  99. package/dist/message-handler.js +6 -11
  100. package/dist/message-handler.js.map +1 -1
  101. package/dist/models/models-dev-client.spec.js +1 -0
  102. package/dist/models/models-dev-client.spec.js.map +1 -1
  103. package/dist/tools/create-file.d.ts.map +1 -1
  104. package/dist/tools/create-file.js +37 -3
  105. package/dist/tools/create-file.js.map +1 -1
  106. package/dist/tools/delete-lines.d.ts.map +1 -1
  107. package/dist/tools/delete-lines.js +41 -1
  108. package/dist/tools/delete-lines.js.map +1 -1
  109. package/dist/tools/index.d.ts.map +1 -1
  110. package/dist/tools/index.js +2 -0
  111. package/dist/tools/index.js.map +1 -1
  112. package/dist/tools/insert-lines.d.ts.map +1 -1
  113. package/dist/tools/insert-lines.js +40 -1
  114. package/dist/tools/insert-lines.js.map +1 -1
  115. package/dist/tools/lsp-get-diagnostics.d.ts +3 -0
  116. package/dist/tools/lsp-get-diagnostics.d.ts.map +1 -0
  117. package/dist/tools/lsp-get-diagnostics.js +182 -0
  118. package/dist/tools/lsp-get-diagnostics.js.map +1 -0
  119. package/dist/tools/replace-lines.d.ts.map +1 -1
  120. package/dist/tools/replace-lines.js +44 -1
  121. package/dist/tools/replace-lines.js.map +1 -1
  122. package/dist/tools/tool-manager.d.ts +17 -0
  123. package/dist/tools/tool-manager.d.ts.map +1 -1
  124. package/dist/tools/tool-manager.js +12 -0
  125. package/dist/tools/tool-manager.js.map +1 -1
  126. package/dist/types/config.d.ts +27 -0
  127. package/dist/types/config.d.ts.map +1 -1
  128. package/dist/types/mcp.d.ts +23 -1
  129. package/dist/types/mcp.d.ts.map +1 -1
  130. package/dist/utils/error-formatter.d.ts +22 -0
  131. package/dist/utils/error-formatter.d.ts.map +1 -0
  132. package/dist/utils/error-formatter.js +27 -0
  133. package/dist/utils/error-formatter.js.map +1 -0
  134. package/dist/utils/error-formatter.spec.d.ts +2 -0
  135. package/dist/utils/error-formatter.spec.d.ts.map +1 -0
  136. package/dist/utils/error-formatter.spec.js +147 -0
  137. package/dist/utils/error-formatter.spec.js.map +1 -0
  138. package/dist/utils/fuzzy-matching.spec.js +1 -0
  139. package/dist/utils/fuzzy-matching.spec.js.map +1 -1
  140. package/dist/utils/tool-args-parser.d.ts +37 -0
  141. package/dist/utils/tool-args-parser.d.ts.map +1 -0
  142. package/dist/utils/tool-args-parser.js +50 -0
  143. package/dist/utils/tool-args-parser.js.map +1 -0
  144. package/dist/utils/tool-args-parser.spec.d.ts +2 -0
  145. package/dist/utils/tool-args-parser.spec.d.ts.map +1 -0
  146. package/dist/utils/tool-args-parser.spec.js +111 -0
  147. package/dist/utils/tool-args-parser.spec.js.map +1 -0
  148. package/dist/utils/tool-cancellation.d.ts +21 -0
  149. package/dist/utils/tool-cancellation.d.ts.map +1 -0
  150. package/dist/utils/tool-cancellation.js +27 -0
  151. package/dist/utils/tool-cancellation.js.map +1 -0
  152. package/dist/utils/tool-cancellation.spec.d.ts +2 -0
  153. package/dist/utils/tool-cancellation.spec.d.ts.map +1 -0
  154. package/dist/utils/tool-cancellation.spec.js +186 -0
  155. package/dist/utils/tool-cancellation.spec.js.map +1 -0
  156. package/dist/utils/tool-result-display.d.ts +15 -0
  157. package/dist/utils/tool-result-display.d.ts.map +1 -0
  158. package/dist/utils/tool-result-display.js +51 -0
  159. package/dist/utils/tool-result-display.js.map +1 -0
  160. package/dist/vscode/extension-installer.d.ts +24 -0
  161. package/dist/vscode/extension-installer.d.ts.map +1 -0
  162. package/dist/vscode/extension-installer.js +110 -0
  163. package/dist/vscode/extension-installer.js.map +1 -0
  164. package/dist/vscode/extension-installer.spec.d.ts +2 -0
  165. package/dist/vscode/extension-installer.spec.d.ts.map +1 -0
  166. package/dist/vscode/extension-installer.spec.js +132 -0
  167. package/dist/vscode/extension-installer.spec.js.map +1 -0
  168. package/dist/vscode/index.d.ts +14 -0
  169. package/dist/vscode/index.d.ts.map +1 -0
  170. package/dist/vscode/index.js +14 -0
  171. package/dist/vscode/index.js.map +1 -0
  172. package/dist/vscode/protocol.d.ts +101 -0
  173. package/dist/vscode/protocol.d.ts.map +1 -0
  174. package/dist/vscode/protocol.js +7 -0
  175. package/dist/vscode/protocol.js.map +1 -0
  176. package/dist/vscode/protocol.spec.d.ts +2 -0
  177. package/dist/vscode/protocol.spec.d.ts.map +1 -0
  178. package/dist/vscode/protocol.spec.js +354 -0
  179. package/dist/vscode/protocol.spec.js.map +1 -0
  180. package/dist/vscode/vscode-server.d.ts +118 -0
  181. package/dist/vscode/vscode-server.d.ts.map +1 -0
  182. package/dist/vscode/vscode-server.js +303 -0
  183. package/dist/vscode/vscode-server.js.map +1 -0
  184. package/dist/vscode/vscode-server.spec.d.ts +2 -0
  185. package/dist/vscode/vscode-server.spec.d.ts.map +1 -0
  186. package/dist/vscode/vscode-server.spec.js +487 -0
  187. package/dist/vscode/vscode-server.spec.js.map +1 -0
  188. package/dist/wizard/steps/mcp-step.d.ts.map +1 -1
  189. package/dist/wizard/steps/mcp-step.js +139 -72
  190. package/dist/wizard/steps/mcp-step.js.map +1 -1
  191. package/dist/wizard/steps/summary-step.d.ts.map +1 -1
  192. package/dist/wizard/steps/summary-step.js +58 -2
  193. package/dist/wizard/steps/summary-step.js.map +1 -1
  194. package/dist/wizard/templates/mcp-templates.d.ts +20 -2
  195. package/dist/wizard/templates/mcp-templates.d.ts.map +1 -1
  196. package/dist/wizard/templates/mcp-templates.js +351 -7
  197. package/dist/wizard/templates/mcp-templates.js.map +1 -1
  198. package/dist/wizard/templates/mcp-templates.spec.js +257 -0
  199. package/dist/wizard/templates/mcp-templates.spec.js.map +1 -1
  200. package/dist/wizard/validation-array.spec.d.ts +2 -0
  201. package/dist/wizard/validation-array.spec.d.ts.map +1 -0
  202. package/dist/wizard/validation-array.spec.js +221 -0
  203. package/dist/wizard/validation-array.spec.js.map +1 -0
  204. package/dist/wizard/validation.d.ts +26 -1
  205. package/dist/wizard/validation.d.ts.map +1 -1
  206. package/dist/wizard/validation.js +15 -2
  207. package/dist/wizard/validation.js.map +1 -1
  208. package/dist/wizard/validation.spec.js +13 -5
  209. package/dist/wizard/validation.spec.js.map +1 -1
  210. package/package.json +7 -3
  211. package/source/app/prompts/main-prompt.md +6 -0
@@ -0,0 +1,14 @@
1
+ /**
2
+ * VS Code integration module
3
+ *
4
+ * Provides WebSocket-based communication between the nanocoder CLI
5
+ * and the VS Code extension for:
6
+ * - Live diff previews
7
+ * - File change approvals
8
+ * - Chat integration
9
+ * - Diagnostics sharing
10
+ */
11
+ export { VSCodeServer, getVSCodeServer, isVSCodeConnected, sendFileChangeToVSCode, closeDiffInVSCode, closeAllDiffsInVSCode, } from './vscode-server.js';
12
+ export { PROTOCOL_VERSION, DEFAULT_PORT, } from './protocol.js';
13
+ export { isVSCodeCliAvailable, isExtensionInstalled, installExtension, getVsixPath, } from './extension-installer.js';
14
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../source/vscode/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAEH,OAAO,EACN,YAAY,EACZ,eAAe,EACf,iBAAiB,EACjB,sBAAsB,EACtB,iBAAiB,EACjB,qBAAqB,GAIrB,MAAM,iBAAiB,CAAC;AAEzB,OAAO,EAiBN,gBAAgB,EAChB,YAAY,GACZ,MAAM,YAAY,CAAC;AAEpB,OAAO,EACN,oBAAoB,EACpB,oBAAoB,EACpB,gBAAgB,EAChB,WAAW,GACX,MAAM,uBAAuB,CAAC"}
@@ -0,0 +1,101 @@
1
+ /**
2
+ * Protocol types for communication between VS Code extension and Nanocoder CLI
3
+ * This file should be kept in sync with plugins/vscode/src/protocol.ts
4
+ */
5
+ export declare const PROTOCOL_VERSION = "1.0.0";
6
+ export declare const DEFAULT_PORT = 51820;
7
+ export type ServerMessage = FileChangeMessage | ToolCallMessage | AssistantMessage | StatusMessage | ConnectionAckMessage | DiagnosticsRequestMessage | CloseDiffMessage;
8
+ export type ClientMessage = SendPromptMessage | ApplyChangeMessage | RejectChangeMessage | GetStatusMessage | ContextMessage | DiagnosticsResponseMessage;
9
+ export interface FileChangeMessage {
10
+ type: 'file_change';
11
+ id: string;
12
+ filePath: string;
13
+ originalContent: string;
14
+ newContent: string;
15
+ toolName: string;
16
+ toolArgs: Record<string, unknown>;
17
+ }
18
+ export interface ToolCallMessage {
19
+ type: 'tool_call';
20
+ id: string;
21
+ toolName: string;
22
+ toolArgs: Record<string, unknown>;
23
+ status: 'pending' | 'executing' | 'completed' | 'rejected';
24
+ result?: string;
25
+ }
26
+ export interface AssistantMessage {
27
+ type: 'assistant_message';
28
+ content: string;
29
+ isStreaming: boolean;
30
+ }
31
+ export interface StatusMessage {
32
+ type: 'status';
33
+ connected: boolean;
34
+ model?: string;
35
+ provider?: string;
36
+ workingDirectory?: string;
37
+ }
38
+ export interface ConnectionAckMessage {
39
+ type: 'connection_ack';
40
+ protocolVersion: string;
41
+ cliVersion: string;
42
+ }
43
+ export interface DiagnosticsRequestMessage {
44
+ type: 'diagnostics_request';
45
+ filePath?: string;
46
+ }
47
+ export interface CloseDiffMessage {
48
+ type: 'close_diff';
49
+ id: string;
50
+ }
51
+ export interface SendPromptMessage {
52
+ type: 'send_prompt';
53
+ prompt: string;
54
+ context?: {
55
+ filePath?: string;
56
+ selection?: string;
57
+ cursorPosition?: {
58
+ line: number;
59
+ character: number;
60
+ };
61
+ };
62
+ }
63
+ export interface ApplyChangeMessage {
64
+ type: 'apply_change';
65
+ id: string;
66
+ }
67
+ export interface RejectChangeMessage {
68
+ type: 'reject_change';
69
+ id: string;
70
+ }
71
+ export interface GetStatusMessage {
72
+ type: 'get_status';
73
+ }
74
+ export interface ContextMessage {
75
+ type: 'context';
76
+ workspaceFolder?: string;
77
+ openFiles?: string[];
78
+ activeFile?: string;
79
+ diagnostics?: DiagnosticInfo[];
80
+ }
81
+ export interface DiagnosticsResponseMessage {
82
+ type: 'diagnostics_response';
83
+ diagnostics: DiagnosticInfo[];
84
+ }
85
+ export interface DiagnosticInfo {
86
+ filePath: string;
87
+ line: number;
88
+ character: number;
89
+ message: string;
90
+ severity: 'error' | 'warning' | 'info' | 'hint';
91
+ source?: string;
92
+ }
93
+ export interface PendingChange {
94
+ id: string;
95
+ filePath: string;
96
+ originalContent: string;
97
+ newContent: string;
98
+ toolName: string;
99
+ timestamp: number;
100
+ }
101
+ //# sourceMappingURL=protocol.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"protocol.d.ts","sourceRoot":"","sources":["../../source/vscode/protocol.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,7 @@
1
+ /**
2
+ * Protocol types for communication between VS Code extension and Nanocoder CLI
3
+ * This file should be kept in sync with plugins/vscode/src/protocol.ts
4
+ */
5
+ export const PROTOCOL_VERSION = '1.0.0';
6
+ export const DEFAULT_PORT = 51820;
7
+ //# sourceMappingURL=protocol.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"protocol.js","sourceRoot":"","sources":["../../source/vscode/protocol.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,MAAM,CAAC,MAAM,gBAAgB,GAAG,OAAO,CAAC;AACxC,MAAM,CAAC,MAAM,YAAY,GAAG,KAAK,CAAC"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=protocol.spec.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"protocol.spec.d.ts","sourceRoot":"","sources":["../../source/vscode/protocol.spec.ts"],"names":[],"mappings":""}
@@ -0,0 +1,354 @@
1
+ import test from 'ava';
2
+ import { PROTOCOL_VERSION, DEFAULT_PORT } from './protocol.js';
3
+ // ============================================================================
4
+ // Tests for protocol constants
5
+ // ============================================================================
6
+ test('PROTOCOL_VERSION is defined and is a valid semver string', t => {
7
+ t.truthy(PROTOCOL_VERSION);
8
+ t.regex(PROTOCOL_VERSION, /^\d+\.\d+\.\d+$/);
9
+ });
10
+ test('DEFAULT_PORT is defined and is a valid port number', t => {
11
+ t.truthy(DEFAULT_PORT);
12
+ t.true(DEFAULT_PORT > 0 && DEFAULT_PORT < 65536);
13
+ t.is(DEFAULT_PORT, 51820);
14
+ });
15
+ // ============================================================================
16
+ // Tests for ServerMessage types
17
+ // ============================================================================
18
+ test('FileChangeMessage has correct structure', t => {
19
+ const message = {
20
+ type: 'file_change',
21
+ id: 'test-id',
22
+ filePath: '/path/to/file.ts',
23
+ originalContent: 'original',
24
+ newContent: 'new',
25
+ toolName: 'create_file',
26
+ toolArgs: { path: '/path/to/file.ts' },
27
+ };
28
+ t.is(message.type, 'file_change');
29
+ t.is(message.id, 'test-id');
30
+ t.is(message.filePath, '/path/to/file.ts');
31
+ t.is(message.originalContent, 'original');
32
+ t.is(message.newContent, 'new');
33
+ t.is(message.toolName, 'create_file');
34
+ t.deepEqual(message.toolArgs, { path: '/path/to/file.ts' });
35
+ });
36
+ test('ToolCallMessage has correct structure', t => {
37
+ const message = {
38
+ type: 'tool_call',
39
+ id: 'tool-id',
40
+ toolName: 'execute_bash',
41
+ toolArgs: { command: 'ls -la' },
42
+ status: 'pending',
43
+ };
44
+ t.is(message.type, 'tool_call');
45
+ t.is(message.id, 'tool-id');
46
+ t.is(message.toolName, 'execute_bash');
47
+ t.is(message.status, 'pending');
48
+ });
49
+ test('ToolCallMessage supports all status values', t => {
50
+ const statuses = [
51
+ 'pending',
52
+ 'executing',
53
+ 'completed',
54
+ 'rejected',
55
+ ];
56
+ for (const status of statuses) {
57
+ const message = {
58
+ type: 'tool_call',
59
+ id: 'tool-id',
60
+ toolName: 'test',
61
+ toolArgs: {},
62
+ status,
63
+ };
64
+ t.is(message.status, status);
65
+ }
66
+ });
67
+ test('ToolCallMessage can include result', t => {
68
+ const message = {
69
+ type: 'tool_call',
70
+ id: 'tool-id',
71
+ toolName: 'execute_bash',
72
+ toolArgs: { command: 'echo hello' },
73
+ status: 'completed',
74
+ result: 'hello\n',
75
+ };
76
+ t.is(message.result, 'hello\n');
77
+ });
78
+ test('AssistantMessage has correct structure', t => {
79
+ const message = {
80
+ type: 'assistant_message',
81
+ content: 'Hello, I can help you with that.',
82
+ isStreaming: false,
83
+ };
84
+ t.is(message.type, 'assistant_message');
85
+ t.is(message.content, 'Hello, I can help you with that.');
86
+ t.false(message.isStreaming);
87
+ });
88
+ test('AssistantMessage can be streaming', t => {
89
+ const message = {
90
+ type: 'assistant_message',
91
+ content: 'Partial response...',
92
+ isStreaming: true,
93
+ };
94
+ t.true(message.isStreaming);
95
+ });
96
+ test('StatusMessage has correct structure', t => {
97
+ const message = {
98
+ type: 'status',
99
+ connected: true,
100
+ model: 'gpt-4',
101
+ provider: 'openai',
102
+ workingDirectory: '/home/user/project',
103
+ };
104
+ t.is(message.type, 'status');
105
+ t.true(message.connected);
106
+ t.is(message.model, 'gpt-4');
107
+ t.is(message.provider, 'openai');
108
+ t.is(message.workingDirectory, '/home/user/project');
109
+ });
110
+ test('StatusMessage optional fields can be omitted', t => {
111
+ const message = {
112
+ type: 'status',
113
+ connected: false,
114
+ };
115
+ t.is(message.type, 'status');
116
+ t.false(message.connected);
117
+ t.is(message.model, undefined);
118
+ t.is(message.provider, undefined);
119
+ t.is(message.workingDirectory, undefined);
120
+ });
121
+ test('ConnectionAckMessage has correct structure', t => {
122
+ const message = {
123
+ type: 'connection_ack',
124
+ protocolVersion: '1.0.0',
125
+ cliVersion: '1.16.0',
126
+ };
127
+ t.is(message.type, 'connection_ack');
128
+ t.is(message.protocolVersion, '1.0.0');
129
+ t.is(message.cliVersion, '1.16.0');
130
+ });
131
+ test('DiagnosticsRequestMessage has correct structure', t => {
132
+ const message = {
133
+ type: 'diagnostics_request',
134
+ filePath: '/path/to/file.ts',
135
+ };
136
+ t.is(message.type, 'diagnostics_request');
137
+ t.is(message.filePath, '/path/to/file.ts');
138
+ });
139
+ test('DiagnosticsRequestMessage filePath is optional', t => {
140
+ const message = {
141
+ type: 'diagnostics_request',
142
+ };
143
+ t.is(message.type, 'diagnostics_request');
144
+ t.is(message.filePath, undefined);
145
+ });
146
+ // ============================================================================
147
+ // Tests for ClientMessage types
148
+ // ============================================================================
149
+ test('SendPromptMessage has correct structure', t => {
150
+ const message = {
151
+ type: 'send_prompt',
152
+ prompt: 'Help me refactor this function',
153
+ context: {
154
+ filePath: '/path/to/file.ts',
155
+ selection: 'function foo() {}',
156
+ cursorPosition: { line: 10, character: 5 },
157
+ },
158
+ };
159
+ t.is(message.type, 'send_prompt');
160
+ t.is(message.prompt, 'Help me refactor this function');
161
+ t.is(message.context?.filePath, '/path/to/file.ts');
162
+ t.is(message.context?.selection, 'function foo() {}');
163
+ t.deepEqual(message.context?.cursorPosition, { line: 10, character: 5 });
164
+ });
165
+ test('SendPromptMessage context is optional', t => {
166
+ const message = {
167
+ type: 'send_prompt',
168
+ prompt: 'Hello',
169
+ };
170
+ t.is(message.type, 'send_prompt');
171
+ t.is(message.context, undefined);
172
+ });
173
+ test('ApplyChangeMessage has correct structure', t => {
174
+ const message = {
175
+ type: 'apply_change',
176
+ id: 'change-123',
177
+ };
178
+ t.is(message.type, 'apply_change');
179
+ t.is(message.id, 'change-123');
180
+ });
181
+ test('RejectChangeMessage has correct structure', t => {
182
+ const message = {
183
+ type: 'reject_change',
184
+ id: 'change-123',
185
+ };
186
+ t.is(message.type, 'reject_change');
187
+ t.is(message.id, 'change-123');
188
+ });
189
+ test('GetStatusMessage has correct structure', t => {
190
+ const message = {
191
+ type: 'get_status',
192
+ };
193
+ t.is(message.type, 'get_status');
194
+ });
195
+ test('ContextMessage has correct structure', t => {
196
+ const diagnostics = [
197
+ {
198
+ filePath: '/path/to/file.ts',
199
+ line: 10,
200
+ character: 5,
201
+ message: 'Type error',
202
+ severity: 'error',
203
+ source: 'typescript',
204
+ },
205
+ ];
206
+ const message = {
207
+ type: 'context',
208
+ workspaceFolder: '/home/user/project',
209
+ openFiles: ['/home/user/project/src/index.ts'],
210
+ activeFile: '/home/user/project/src/index.ts',
211
+ diagnostics,
212
+ };
213
+ t.is(message.type, 'context');
214
+ t.is(message.workspaceFolder, '/home/user/project');
215
+ t.deepEqual(message.openFiles, ['/home/user/project/src/index.ts']);
216
+ t.is(message.activeFile, '/home/user/project/src/index.ts');
217
+ t.is(message.diagnostics?.length, 1);
218
+ });
219
+ test('ContextMessage fields are optional', t => {
220
+ const message = {
221
+ type: 'context',
222
+ };
223
+ t.is(message.type, 'context');
224
+ t.is(message.workspaceFolder, undefined);
225
+ t.is(message.openFiles, undefined);
226
+ t.is(message.activeFile, undefined);
227
+ t.is(message.diagnostics, undefined);
228
+ });
229
+ test('DiagnosticsResponseMessage has correct structure', t => {
230
+ const diagnostics = [
231
+ {
232
+ filePath: '/path/to/file.ts',
233
+ line: 5,
234
+ character: 10,
235
+ message: 'Unused variable',
236
+ severity: 'warning',
237
+ },
238
+ ];
239
+ const message = {
240
+ type: 'diagnostics_response',
241
+ diagnostics,
242
+ };
243
+ t.is(message.type, 'diagnostics_response');
244
+ t.is(message.diagnostics.length, 1);
245
+ t.is(message.diagnostics[0].severity, 'warning');
246
+ });
247
+ // ============================================================================
248
+ // Tests for DiagnosticInfo
249
+ // ============================================================================
250
+ test('DiagnosticInfo has correct structure', t => {
251
+ const diagnostic = {
252
+ filePath: '/path/to/file.ts',
253
+ line: 10,
254
+ character: 5,
255
+ message: "Cannot find name 'foo'",
256
+ severity: 'error',
257
+ source: 'typescript',
258
+ };
259
+ t.is(diagnostic.filePath, '/path/to/file.ts');
260
+ t.is(diagnostic.line, 10);
261
+ t.is(diagnostic.character, 5);
262
+ t.is(diagnostic.message, "Cannot find name 'foo'");
263
+ t.is(diagnostic.severity, 'error');
264
+ t.is(diagnostic.source, 'typescript');
265
+ });
266
+ test('DiagnosticInfo supports all severity levels', t => {
267
+ const severities = [
268
+ 'error',
269
+ 'warning',
270
+ 'info',
271
+ 'hint',
272
+ ];
273
+ for (const severity of severities) {
274
+ const diagnostic = {
275
+ filePath: '/test.ts',
276
+ line: 1,
277
+ character: 1,
278
+ message: 'Test',
279
+ severity,
280
+ };
281
+ t.is(diagnostic.severity, severity);
282
+ }
283
+ });
284
+ test('DiagnosticInfo source is optional', t => {
285
+ const diagnostic = {
286
+ filePath: '/test.ts',
287
+ line: 1,
288
+ character: 1,
289
+ message: 'Test',
290
+ severity: 'info',
291
+ };
292
+ t.is(diagnostic.source, undefined);
293
+ });
294
+ // ============================================================================
295
+ // Tests for PendingChange
296
+ // ============================================================================
297
+ test('PendingChange has correct structure', t => {
298
+ const change = {
299
+ id: 'change-123',
300
+ filePath: '/path/to/file.ts',
301
+ originalContent: 'const x = 1;',
302
+ newContent: 'const x = 2;',
303
+ toolName: 'replace_lines',
304
+ timestamp: Date.now(),
305
+ };
306
+ t.is(change.id, 'change-123');
307
+ t.is(change.filePath, '/path/to/file.ts');
308
+ t.is(change.originalContent, 'const x = 1;');
309
+ t.is(change.newContent, 'const x = 2;');
310
+ t.is(change.toolName, 'replace_lines');
311
+ t.true(change.timestamp > 0);
312
+ });
313
+ // ============================================================================
314
+ // Tests for type unions (compile-time checks)
315
+ // ============================================================================
316
+ test('ServerMessage type union includes all message types', t => {
317
+ // This test verifies the type union at compile time
318
+ const messages = [
319
+ {
320
+ type: 'file_change',
321
+ id: '1',
322
+ filePath: '/test',
323
+ originalContent: '',
324
+ newContent: '',
325
+ toolName: 'test',
326
+ toolArgs: {},
327
+ },
328
+ {
329
+ type: 'tool_call',
330
+ id: '2',
331
+ toolName: 'test',
332
+ toolArgs: {},
333
+ status: 'pending',
334
+ },
335
+ { type: 'assistant_message', content: 'test', isStreaming: false },
336
+ { type: 'status', connected: true },
337
+ { type: 'connection_ack', protocolVersion: '1.0.0', cliVersion: '1.0.0' },
338
+ { type: 'diagnostics_request' },
339
+ ];
340
+ t.is(messages.length, 6);
341
+ });
342
+ test('ClientMessage type union includes all message types', t => {
343
+ // This test verifies the type union at compile time
344
+ const messages = [
345
+ { type: 'send_prompt', prompt: 'test' },
346
+ { type: 'apply_change', id: '1' },
347
+ { type: 'reject_change', id: '2' },
348
+ { type: 'get_status' },
349
+ { type: 'context' },
350
+ { type: 'diagnostics_response', diagnostics: [] },
351
+ ];
352
+ t.is(messages.length, 6);
353
+ });
354
+ //# sourceMappingURL=protocol.spec.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"protocol.spec.js","sourceRoot":"","sources":["../../source/vscode/protocol.spec.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,118 @@
1
+ /**
2
+ * WebSocket server for VS Code extension communication
3
+ */
4
+ import { ClientMessage, DiagnosticInfo, PendingChange } from './protocol.js';
5
+ export type MessageHandler = (message: ClientMessage) => void;
6
+ export type PromptHandler = (prompt: string, context?: {
7
+ filePath?: string;
8
+ selection?: string;
9
+ cursorPosition?: {
10
+ line: number;
11
+ character: number;
12
+ };
13
+ }) => void;
14
+ export interface VSCodeServerCallbacks {
15
+ onPrompt?: PromptHandler;
16
+ onChangeApplied?: (id: string) => void;
17
+ onChangeRejected?: (id: string) => void;
18
+ onContext?: (context: {
19
+ workspaceFolder?: string;
20
+ openFiles?: string[];
21
+ activeFile?: string;
22
+ diagnostics?: DiagnosticInfo[];
23
+ }) => void;
24
+ onDiagnosticsResponse?: (diagnostics: DiagnosticInfo[]) => void;
25
+ onConnect?: () => void;
26
+ onDisconnect?: () => void;
27
+ }
28
+ export declare class VSCodeServer {
29
+ private port;
30
+ private wss;
31
+ private clients;
32
+ private pendingChanges;
33
+ private callbacks;
34
+ private currentModel?;
35
+ private currentProvider?;
36
+ constructor(port?: number);
37
+ /**
38
+ * Start the WebSocket server
39
+ */
40
+ start(): Promise<boolean>;
41
+ /**
42
+ * Stop the WebSocket server
43
+ */
44
+ stop(): Promise<void>;
45
+ /**
46
+ * Register callbacks for client messages
47
+ */
48
+ onCallbacks(callbacks: VSCodeServerCallbacks): void;
49
+ /**
50
+ * Check if any clients are connected
51
+ */
52
+ hasConnections(): boolean;
53
+ /**
54
+ * Get number of connected clients
55
+ */
56
+ getConnectionCount(): number;
57
+ /**
58
+ * Send a file change notification to VS Code
59
+ */
60
+ sendFileChange(filePath: string, originalContent: string, newContent: string, toolName: string, toolArgs: Record<string, unknown>): string;
61
+ /**
62
+ * Send an assistant message to VS Code
63
+ */
64
+ sendAssistantMessage(content: string, isStreaming?: boolean): void;
65
+ /**
66
+ * Send status update to VS Code
67
+ */
68
+ sendStatus(model?: string, provider?: string): void;
69
+ /**
70
+ * Request diagnostics from VS Code
71
+ */
72
+ requestDiagnostics(filePath?: string): void;
73
+ /**
74
+ * Close diff preview in VS Code (when tool is confirmed/rejected in CLI)
75
+ */
76
+ closeDiff(id: string): void;
77
+ /**
78
+ * Close all pending diff previews
79
+ */
80
+ closeAllDiffs(): void;
81
+ /**
82
+ * Get a pending change by ID
83
+ */
84
+ getPendingChange(id: string): PendingChange | undefined;
85
+ /**
86
+ * Remove a pending change
87
+ */
88
+ removePendingChange(id: string): void;
89
+ /**
90
+ * Get all pending changes
91
+ */
92
+ getAllPendingChanges(): PendingChange[];
93
+ private handleConnection;
94
+ private handleMessage;
95
+ private broadcast;
96
+ }
97
+ /**
98
+ * Get or create the VS Code server singleton
99
+ */
100
+ export declare function getVSCodeServer(port?: number): VSCodeServer;
101
+ /**
102
+ * Check if VS Code server is active and has connections
103
+ */
104
+ export declare function isVSCodeConnected(): boolean;
105
+ /**
106
+ * Send a file change to VS Code for preview/approval
107
+ * This is the main entry point for tools to integrate with VS Code
108
+ */
109
+ export declare function sendFileChangeToVSCode(filePath: string, originalContent: string, newContent: string, toolName: string, toolArgs: Record<string, unknown>): string | null;
110
+ /**
111
+ * Close a diff preview in VS Code (when tool confirmed/rejected in CLI)
112
+ */
113
+ export declare function closeDiffInVSCode(id: string | null): void;
114
+ /**
115
+ * Close all pending diff previews in VS Code
116
+ */
117
+ export declare function closeAllDiffsInVSCode(): void;
118
+ //# sourceMappingURL=vscode-server.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"vscode-server.d.ts","sourceRoot":"","sources":["../../source/vscode/vscode-server.ts"],"names":[],"mappings":"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"}