@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,24 @@
1
+ /**
2
+ * VS Code extension installation utilities
3
+ */
4
+ /**
5
+ * Get the path to the bundled VSIX file
6
+ */
7
+ export declare function getVsixPath(): string;
8
+ /**
9
+ * Check if the VS Code CLI is available
10
+ */
11
+ export declare function isVSCodeCliAvailable(): boolean;
12
+ /**
13
+ * Check if the nanocoder VS Code extension is installed
14
+ */
15
+ export declare function isExtensionInstalled(): boolean;
16
+ /**
17
+ * Install the VS Code extension from the bundled VSIX
18
+ * Returns a promise that resolves when installation is complete
19
+ */
20
+ export declare function installExtension(): Promise<{
21
+ success: boolean;
22
+ message: string;
23
+ }>;
24
+ //# sourceMappingURL=extension-installer.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"extension-installer.d.ts","sourceRoot":"","sources":["../../source/vscode/extension-installer.ts"],"names":[],"mappings":"AAAA;;GAEG;AASH;;GAEG;AACH,wBAAgB,WAAW,IAAI,MAAM,CAepC;AAED;;GAEG;AACH,wBAAgB,oBAAoB,IAAI,OAAO,CAO9C;AAED;;GAEG;AACH,wBAAgB,oBAAoB,IAAI,OAAO,CAU9C;AAED;;;GAGG;AACH,wBAAsB,gBAAgB,IAAI,OAAO,CAAC;IACjD,OAAO,EAAE,OAAO,CAAC;IACjB,OAAO,EAAE,MAAM,CAAC;CAChB,CAAC,CA6DD"}
@@ -0,0 +1,110 @@
1
+ /**
2
+ * VS Code extension installation utilities
3
+ */
4
+ import { execSync, spawn } from 'child_process';
5
+ import { existsSync } from 'fs';
6
+ import { join, dirname } from 'path';
7
+ import { fileURLToPath } from 'url';
8
+ const __dirname = dirname(fileURLToPath(import.meta.url));
9
+ /**
10
+ * Get the path to the bundled VSIX file
11
+ */
12
+ export function getVsixPath() {
13
+ // In development: assets folder is at project root
14
+ // In production (npm install): assets folder is in package root
15
+ const possiblePaths = [
16
+ join(__dirname, '../../assets/nanocoder-vscode.vsix'), // development
17
+ join(__dirname, '../../../assets/nanocoder-vscode.vsix'), // npm installed
18
+ ];
19
+ for (const path of possiblePaths) {
20
+ if (existsSync(path)) {
21
+ return path;
22
+ }
23
+ }
24
+ throw new Error('VS Code extension VSIX not found in package');
25
+ }
26
+ /**
27
+ * Check if the VS Code CLI is available
28
+ */
29
+ export function isVSCodeCliAvailable() {
30
+ try {
31
+ execSync('code --version', { stdio: 'ignore' });
32
+ return true;
33
+ }
34
+ catch {
35
+ return false;
36
+ }
37
+ }
38
+ /**
39
+ * Check if the nanocoder VS Code extension is installed
40
+ */
41
+ export function isExtensionInstalled() {
42
+ try {
43
+ const output = execSync('code --list-extensions', {
44
+ encoding: 'utf-8',
45
+ stdio: ['pipe', 'pipe', 'ignore'],
46
+ });
47
+ return output.toLowerCase().includes('nanocollective.nanocoder-vscode');
48
+ }
49
+ catch {
50
+ return false;
51
+ }
52
+ }
53
+ /**
54
+ * Install the VS Code extension from the bundled VSIX
55
+ * Returns a promise that resolves when installation is complete
56
+ */
57
+ export async function installExtension() {
58
+ if (!isVSCodeCliAvailable()) {
59
+ return {
60
+ success: false,
61
+ message: 'VS Code CLI not found. Please install the "code" command:\n' +
62
+ ' 1. Open VS Code\n' +
63
+ ' 2. Press Cmd+Shift+P (Mac) or Ctrl+Shift+P (Windows/Linux)\n' +
64
+ ' 3. Type "Shell Command: Install \'code\' command in PATH"',
65
+ };
66
+ }
67
+ try {
68
+ const vsixPath = getVsixPath();
69
+ return new Promise(resolve => {
70
+ const child = spawn('code', ['--install-extension', vsixPath], {
71
+ stdio: ['ignore', 'pipe', 'pipe'],
72
+ });
73
+ let stdout = '';
74
+ let stderr = '';
75
+ child.stdout?.on('data', (data) => {
76
+ stdout += data.toString();
77
+ });
78
+ child.stderr?.on('data', (data) => {
79
+ stderr += data.toString();
80
+ });
81
+ child.on('close', code => {
82
+ if (code === 0) {
83
+ resolve({
84
+ success: true,
85
+ message: 'VS Code extension installed successfully! Please reload VS Code to activate it.',
86
+ });
87
+ }
88
+ else {
89
+ resolve({
90
+ success: false,
91
+ message: `Failed to install extension: ${stderr || stdout}`,
92
+ });
93
+ }
94
+ });
95
+ child.on('error', error => {
96
+ resolve({
97
+ success: false,
98
+ message: `Failed to install extension: ${error.message}`,
99
+ });
100
+ });
101
+ });
102
+ }
103
+ catch (error) {
104
+ return {
105
+ success: false,
106
+ message: `Failed to install extension: ${error instanceof Error ? error.message : String(error)}`,
107
+ };
108
+ }
109
+ }
110
+ //# sourceMappingURL=extension-installer.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"extension-installer.js","sourceRoot":"","sources":["../../source/vscode/extension-installer.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=extension-installer.spec.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"extension-installer.spec.d.ts","sourceRoot":"","sources":["../../source/vscode/extension-installer.spec.ts"],"names":[],"mappings":""}
@@ -0,0 +1,132 @@
1
+ import test from 'ava';
2
+ import { isVSCodeCliAvailable, isExtensionInstalled, installExtension, getVsixPath, } from './extension-installer.js';
3
+ // ============================================================================
4
+ // Tests for isVSCodeCliAvailable
5
+ // ============================================================================
6
+ test('isVSCodeCliAvailable returns a boolean', t => {
7
+ const result = isVSCodeCliAvailable();
8
+ t.is(typeof result, 'boolean');
9
+ });
10
+ test('isVSCodeCliAvailable does not throw', t => {
11
+ t.notThrows(() => {
12
+ isVSCodeCliAvailable();
13
+ });
14
+ });
15
+ // ============================================================================
16
+ // Tests for isExtensionInstalled
17
+ // ============================================================================
18
+ test('isExtensionInstalled returns a boolean', t => {
19
+ const result = isExtensionInstalled();
20
+ t.is(typeof result, 'boolean');
21
+ });
22
+ test('isExtensionInstalled does not throw', t => {
23
+ t.notThrows(() => {
24
+ isExtensionInstalled();
25
+ });
26
+ });
27
+ // Note: We can't easily test the true case for isExtensionInstalled
28
+ // without actually having VS Code and the extension installed
29
+ // ============================================================================
30
+ // Tests for installExtension
31
+ // ============================================================================
32
+ test('installExtension returns a promise', async (t) => {
33
+ const result = installExtension();
34
+ t.true(result instanceof Promise);
35
+ // Wait for the promise to settle
36
+ await result.catch(() => { });
37
+ });
38
+ test('installExtension returns object with success and message', async (t) => {
39
+ const result = await installExtension();
40
+ t.is(typeof result.success, 'boolean');
41
+ t.is(typeof result.message, 'string');
42
+ t.true(result.message.length > 0);
43
+ });
44
+ // If VS Code CLI is not available, installExtension should return appropriate message
45
+ test('installExtension handles missing VS Code CLI gracefully', async (t) => {
46
+ // This test documents expected behavior - if code CLI is missing,
47
+ // installExtension should return a helpful message
48
+ const result = await installExtension();
49
+ if (!isVSCodeCliAvailable()) {
50
+ t.false(result.success);
51
+ t.true(result.message.includes('VS Code CLI'));
52
+ }
53
+ else {
54
+ // If VS Code is available, the result depends on whether VSIX exists
55
+ t.is(typeof result.success, 'boolean');
56
+ }
57
+ });
58
+ // ============================================================================
59
+ // Tests for getVsixPath
60
+ // ============================================================================
61
+ test('getVsixPath returns a string when VSIX exists', t => {
62
+ try {
63
+ const path = getVsixPath();
64
+ t.is(typeof path, 'string');
65
+ t.true(path.includes('nanocoder-vscode.vsix'));
66
+ }
67
+ catch (error) {
68
+ // VSIX may not exist in all environments (e.g., before build)
69
+ t.true(error instanceof Error);
70
+ t.true(error.message.includes('VSIX not found'));
71
+ }
72
+ });
73
+ test('getVsixPath throws when VSIX does not exist', t => {
74
+ // Since we can't guarantee VSIX exists in test environment,
75
+ // we just verify the function throws the expected error type
76
+ try {
77
+ getVsixPath();
78
+ // If it doesn't throw, the VSIX exists - that's fine
79
+ t.pass();
80
+ }
81
+ catch (error) {
82
+ t.true(error instanceof Error);
83
+ t.regex(error.message, /VSIX not found/);
84
+ }
85
+ });
86
+ // ============================================================================
87
+ // Integration-style tests (behavior documentation)
88
+ // ============================================================================
89
+ test('installExtension with VSIX missing returns appropriate error', async (t) => {
90
+ // This test documents the expected behavior when VSIX is missing
91
+ // but VS Code CLI is available
92
+ if (!isVSCodeCliAvailable()) {
93
+ t.pass(); // Skip if VS Code not available
94
+ return;
95
+ }
96
+ const result = await installExtension();
97
+ // If VSIX doesn't exist, should fail with appropriate message
98
+ if (!result.success) {
99
+ t.true(result.message.includes('Failed') || result.message.includes('not found'));
100
+ }
101
+ else {
102
+ // If it succeeded, the extension was installed
103
+ t.true(result.message.includes('success'));
104
+ }
105
+ });
106
+ // ============================================================================
107
+ // Type safety tests
108
+ // ============================================================================
109
+ test('isVSCodeCliAvailable has correct return type', t => {
110
+ const result = isVSCodeCliAvailable();
111
+ t.is(typeof result, 'boolean');
112
+ });
113
+ test('isExtensionInstalled has correct return type', t => {
114
+ const result = isExtensionInstalled();
115
+ t.is(typeof result, 'boolean');
116
+ });
117
+ test('installExtension has correct return type', async (t) => {
118
+ const result = await installExtension();
119
+ t.is(typeof result.success, 'boolean');
120
+ t.is(typeof result.message, 'string');
121
+ });
122
+ test('getVsixPath has correct return type when successful', t => {
123
+ try {
124
+ const result = getVsixPath();
125
+ t.is(typeof result, 'string');
126
+ }
127
+ catch {
128
+ // Expected if VSIX doesn't exist
129
+ t.pass();
130
+ }
131
+ });
132
+ //# sourceMappingURL=extension-installer.spec.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"extension-installer.spec.js","sourceRoot":"","sources":["../../source/vscode/extension-installer.spec.ts"],"names":[],"mappings":"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"}
@@ -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, type VSCodeServerCallbacks, type PromptHandler, type MessageHandler, } from './vscode-server.js';
12
+ export { type ServerMessage, type ClientMessage, type FileChangeMessage, type ToolCallMessage, type AssistantMessage, type StatusMessage, type ConnectionAckMessage, type DiagnosticsRequestMessage, type SendPromptMessage, type ApplyChangeMessage, type RejectChangeMessage, type GetStatusMessage, type ContextMessage, type DiagnosticsResponseMessage, type DiagnosticInfo, type PendingChange, PROTOCOL_VERSION, DEFAULT_PORT, } from './protocol.js';
13
+ export { isVSCodeCliAvailable, isExtensionInstalled, installExtension, getVsixPath, } from './extension-installer.js';
14
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../source/vscode/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAEH,OAAO,EACN,YAAY,EACZ,eAAe,EACf,iBAAiB,EACjB,sBAAsB,EACtB,iBAAiB,EACjB,qBAAqB,EACrB,KAAK,qBAAqB,EAC1B,KAAK,aAAa,EAClB,KAAK,cAAc,GACnB,MAAM,iBAAiB,CAAC;AAEzB,OAAO,EACN,KAAK,aAAa,EAClB,KAAK,aAAa,EAClB,KAAK,iBAAiB,EACtB,KAAK,eAAe,EACpB,KAAK,gBAAgB,EACrB,KAAK,aAAa,EAClB,KAAK,oBAAoB,EACzB,KAAK,yBAAyB,EAC9B,KAAK,iBAAiB,EACtB,KAAK,kBAAkB,EACvB,KAAK,mBAAmB,EACxB,KAAK,gBAAgB,EACrB,KAAK,cAAc,EACnB,KAAK,0BAA0B,EAC/B,KAAK,cAAc,EACnB,KAAK,aAAa,EAClB,gBAAgB,EAChB,YAAY,GACZ,MAAM,YAAY,CAAC;AAEpB,OAAO,EACN,oBAAoB,EACpB,oBAAoB,EACpB,gBAAgB,EAChB,WAAW,GACX,MAAM,uBAAuB,CAAC"}
@@ -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":""}