@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.
- package/README.md +53 -19
- package/assets/nanocoder-vscode.vsix +0 -0
- package/dist/app.d.ts +6 -1
- package/dist/app.d.ts.map +1 -1
- package/dist/app.js +54 -18
- package/dist/app.js.map +1 -1
- package/dist/cli.js +13 -1
- package/dist/cli.js.map +1 -1
- package/dist/commands/mcp.d.ts +6 -0
- package/dist/commands/mcp.d.ts.map +1 -1
- package/dist/commands/mcp.js +25 -3
- package/dist/commands/mcp.js.map +1 -1
- package/dist/components/vscode-extension-prompt.d.ts +12 -0
- package/dist/components/vscode-extension-prompt.d.ts.map +1 -0
- package/dist/components/vscode-extension-prompt.js +115 -0
- package/dist/components/vscode-extension-prompt.js.map +1 -0
- package/dist/hooks/useAppInitialization.d.ts +2 -0
- package/dist/hooks/useAppInitialization.d.ts.map +1 -1
- package/dist/hooks/useAppInitialization.js +55 -1
- package/dist/hooks/useAppInitialization.js.map +1 -1
- package/dist/hooks/useModeHandlers.d.ts +2 -1
- package/dist/hooks/useModeHandlers.d.ts.map +1 -1
- package/dist/hooks/useModeHandlers.js +13 -1
- package/dist/hooks/useModeHandlers.js.map +1 -1
- package/dist/hooks/useToolHandler.d.ts.map +1 -1
- package/dist/hooks/useToolHandler.js +11 -0
- package/dist/hooks/useToolHandler.js.map +1 -1
- package/dist/hooks/useVSCodeServer.d.ts +45 -0
- package/dist/hooks/useVSCodeServer.d.ts.map +1 -0
- package/dist/hooks/useVSCodeServer.js +144 -0
- package/dist/hooks/useVSCodeServer.js.map +1 -0
- package/dist/lsp/index.d.ts +12 -0
- package/dist/lsp/index.d.ts.map +1 -0
- package/dist/lsp/index.js +11 -0
- package/dist/lsp/index.js.map +1 -0
- package/dist/lsp/lsp-client.d.ts +78 -0
- package/dist/lsp/lsp-client.d.ts.map +1 -0
- package/dist/lsp/lsp-client.js +378 -0
- package/dist/lsp/lsp-client.js.map +1 -0
- package/dist/lsp/lsp-client.spec.d.ts +2 -0
- package/dist/lsp/lsp-client.spec.d.ts.map +1 -0
- package/dist/lsp/lsp-client.spec.js +395 -0
- package/dist/lsp/lsp-client.spec.js.map +1 -0
- package/dist/lsp/lsp-manager.d.ts +124 -0
- package/dist/lsp/lsp-manager.d.ts.map +1 -0
- package/dist/lsp/lsp-manager.js +313 -0
- package/dist/lsp/lsp-manager.js.map +1 -0
- package/dist/lsp/lsp-manager.spec.d.ts +2 -0
- package/dist/lsp/lsp-manager.spec.d.ts.map +1 -0
- package/dist/lsp/lsp-manager.spec.js +388 -0
- package/dist/lsp/lsp-manager.spec.js.map +1 -0
- package/dist/lsp/protocol.d.ts +313 -0
- package/dist/lsp/protocol.d.ts.map +1 -0
- package/dist/lsp/protocol.js +70 -0
- package/dist/lsp/protocol.js.map +1 -0
- package/dist/lsp/protocol.spec.d.ts +2 -0
- package/dist/lsp/protocol.spec.d.ts.map +1 -0
- package/dist/lsp/protocol.spec.js +406 -0
- package/dist/lsp/protocol.spec.js.map +1 -0
- package/dist/lsp/server-discovery.d.ts +35 -0
- package/dist/lsp/server-discovery.d.ts.map +1 -0
- package/dist/lsp/server-discovery.js +291 -0
- package/dist/lsp/server-discovery.js.map +1 -0
- package/dist/lsp/server-discovery.spec.d.ts +2 -0
- package/dist/lsp/server-discovery.spec.d.ts.map +1 -0
- package/dist/lsp/server-discovery.spec.js +375 -0
- package/dist/lsp/server-discovery.spec.js.map +1 -0
- package/dist/mcp/mcp-client.d.ts +18 -0
- package/dist/mcp/mcp-client.d.ts.map +1 -1
- package/dist/mcp/mcp-client.js +59 -23
- package/dist/mcp/mcp-client.js.map +1 -1
- package/dist/mcp/mcp-client.spec.d.ts +2 -0
- package/dist/mcp/mcp-client.spec.d.ts.map +1 -0
- package/dist/mcp/mcp-client.spec.js +64 -0
- package/dist/mcp/mcp-client.spec.js.map +1 -0
- package/dist/mcp/transport-factory.d.ts +39 -0
- package/dist/mcp/transport-factory.d.ts.map +1 -0
- package/dist/mcp/transport-factory.js +176 -0
- package/dist/mcp/transport-factory.js.map +1 -0
- package/dist/mcp/transport-factory.spec.d.ts +2 -0
- package/dist/mcp/transport-factory.spec.d.ts.map +1 -0
- package/dist/mcp/transport-factory.spec.js +303 -0
- package/dist/mcp/transport-factory.spec.js.map +1 -0
- package/dist/tools/create-file.d.ts.map +1 -1
- package/dist/tools/create-file.js +37 -3
- package/dist/tools/create-file.js.map +1 -1
- package/dist/tools/delete-lines.d.ts.map +1 -1
- package/dist/tools/delete-lines.js +41 -1
- package/dist/tools/delete-lines.js.map +1 -1
- package/dist/tools/index.d.ts.map +1 -1
- package/dist/tools/index.js +2 -0
- package/dist/tools/index.js.map +1 -1
- package/dist/tools/insert-lines.d.ts.map +1 -1
- package/dist/tools/insert-lines.js +40 -1
- package/dist/tools/insert-lines.js.map +1 -1
- package/dist/tools/lsp-get-diagnostics.d.ts +3 -0
- package/dist/tools/lsp-get-diagnostics.d.ts.map +1 -0
- package/dist/tools/lsp-get-diagnostics.js +182 -0
- package/dist/tools/lsp-get-diagnostics.js.map +1 -0
- package/dist/tools/replace-lines.d.ts.map +1 -1
- package/dist/tools/replace-lines.js +44 -1
- package/dist/tools/replace-lines.js.map +1 -1
- package/dist/tools/tool-manager.d.ts +17 -0
- package/dist/tools/tool-manager.d.ts.map +1 -1
- package/dist/tools/tool-manager.js +12 -0
- package/dist/tools/tool-manager.js.map +1 -1
- package/dist/types/config.d.ts +27 -0
- package/dist/types/config.d.ts.map +1 -1
- package/dist/types/mcp.d.ts +23 -1
- package/dist/types/mcp.d.ts.map +1 -1
- package/dist/vscode/extension-installer.d.ts +24 -0
- package/dist/vscode/extension-installer.d.ts.map +1 -0
- package/dist/vscode/extension-installer.js +110 -0
- package/dist/vscode/extension-installer.js.map +1 -0
- package/dist/vscode/extension-installer.spec.d.ts +2 -0
- package/dist/vscode/extension-installer.spec.d.ts.map +1 -0
- package/dist/vscode/extension-installer.spec.js +132 -0
- package/dist/vscode/extension-installer.spec.js.map +1 -0
- package/dist/vscode/index.d.ts +14 -0
- package/dist/vscode/index.d.ts.map +1 -0
- package/dist/vscode/index.js +14 -0
- package/dist/vscode/index.js.map +1 -0
- package/dist/vscode/protocol.d.ts +101 -0
- package/dist/vscode/protocol.d.ts.map +1 -0
- package/dist/vscode/protocol.js +7 -0
- package/dist/vscode/protocol.js.map +1 -0
- package/dist/vscode/protocol.spec.d.ts +2 -0
- package/dist/vscode/protocol.spec.d.ts.map +1 -0
- package/dist/vscode/protocol.spec.js +354 -0
- package/dist/vscode/protocol.spec.js.map +1 -0
- package/dist/vscode/vscode-server.d.ts +118 -0
- package/dist/vscode/vscode-server.d.ts.map +1 -0
- package/dist/vscode/vscode-server.js +303 -0
- package/dist/vscode/vscode-server.js.map +1 -0
- package/dist/vscode/vscode-server.spec.d.ts +2 -0
- package/dist/vscode/vscode-server.spec.d.ts.map +1 -0
- package/dist/vscode/vscode-server.spec.js +487 -0
- package/dist/vscode/vscode-server.spec.js.map +1 -0
- package/dist/wizard/steps/mcp-step.d.ts.map +1 -1
- package/dist/wizard/steps/mcp-step.js +139 -72
- package/dist/wizard/steps/mcp-step.js.map +1 -1
- package/dist/wizard/steps/summary-step.d.ts.map +1 -1
- package/dist/wizard/steps/summary-step.js +58 -2
- package/dist/wizard/steps/summary-step.js.map +1 -1
- package/dist/wizard/templates/mcp-templates.d.ts +20 -2
- package/dist/wizard/templates/mcp-templates.d.ts.map +1 -1
- package/dist/wizard/templates/mcp-templates.js +351 -7
- package/dist/wizard/templates/mcp-templates.js.map +1 -1
- package/dist/wizard/templates/mcp-templates.spec.js +257 -0
- package/dist/wizard/templates/mcp-templates.spec.js.map +1 -1
- package/dist/wizard/validation-array.spec.d.ts +2 -0
- package/dist/wizard/validation-array.spec.d.ts.map +1 -0
- package/dist/wizard/validation-array.spec.js +221 -0
- package/dist/wizard/validation-array.spec.js.map +1 -0
- package/dist/wizard/validation.d.ts +26 -1
- package/dist/wizard/validation.d.ts.map +1 -1
- package/dist/wizard/validation.js +15 -2
- package/dist/wizard/validation.js.map +1 -1
- package/dist/wizard/validation.spec.js +13 -5
- package/dist/wizard/validation.spec.js.map +1 -1
- package/package.json +7 -3
- 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 @@
|
|
|
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 @@
|
|
|
1
|
+
{"version":3,"file":"protocol.spec.d.ts","sourceRoot":"","sources":["../../source/vscode/protocol.spec.ts"],"names":[],"mappings":""}
|