@gguf/coder 0.1.7 → 0.1.9

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 (75) hide show
  1. package/dist/app/App.d.ts +1 -1
  2. package/dist/app/App.d.ts.map +1 -1
  3. package/dist/app/App.js +2 -53
  4. package/dist/app/App.js.map +1 -1
  5. package/dist/app/components/ChatInterface.d.ts.map +1 -1
  6. package/dist/app/components/ChatInterface.js +1 -1
  7. package/dist/app/components/ChatInterface.js.map +1 -1
  8. package/dist/app/types.d.ts +0 -2
  9. package/dist/app/types.d.ts.map +1 -1
  10. package/dist/cli.js +3 -22
  11. package/dist/cli.js.map +1 -1
  12. package/dist/cli.spec.js +4 -49
  13. package/dist/cli.spec.js.map +1 -1
  14. package/dist/components/cancelling-indicator.js +1 -1
  15. package/dist/components/cancelling-indicator.js.map +1 -1
  16. package/dist/components/tool-execution-indicator.d.ts.map +1 -1
  17. package/dist/components/tool-execution-indicator.js +1 -1
  18. package/dist/components/tool-execution-indicator.js.map +1 -1
  19. package/dist/components/user-input.d.ts.map +1 -1
  20. package/dist/components/user-input.js +1 -1
  21. package/dist/components/user-input.js.map +1 -1
  22. package/dist/hooks/useToolHandler.d.ts.map +1 -1
  23. package/dist/hooks/useToolHandler.js +0 -9
  24. package/dist/hooks/useToolHandler.js.map +1 -1
  25. package/dist/tools/lsp-get-diagnostics.d.ts.map +1 -1
  26. package/dist/tools/lsp-get-diagnostics.js +2 -76
  27. package/dist/tools/lsp-get-diagnostics.js.map +1 -1
  28. package/dist/tools/string-replace.d.ts.map +1 -1
  29. package/dist/tools/string-replace.js +1 -34
  30. package/dist/tools/string-replace.js.map +1 -1
  31. package/dist/tools/write-file.d.ts.map +1 -1
  32. package/dist/tools/write-file.js +2 -34
  33. package/dist/tools/write-file.js.map +1 -1
  34. package/dist/wizard/config-wizard.js +1 -1
  35. package/dist/wizard/config-wizard.js.map +1 -1
  36. package/dist/wizard/steps/provider-step.d.ts.map +1 -1
  37. package/dist/wizard/steps/provider-step.js +1 -1
  38. package/dist/wizard/steps/provider-step.js.map +1 -1
  39. package/package.json +1 -1
  40. package/dist/components/vscode-extension-prompt.d.ts +0 -12
  41. package/dist/components/vscode-extension-prompt.d.ts.map +0 -1
  42. package/dist/components/vscode-extension-prompt.js +0 -116
  43. package/dist/components/vscode-extension-prompt.js.map +0 -1
  44. package/dist/hooks/useVSCodeServer.d.ts +0 -45
  45. package/dist/hooks/useVSCodeServer.d.ts.map +0 -1
  46. package/dist/hooks/useVSCodeServer.js +0 -142
  47. package/dist/hooks/useVSCodeServer.js.map +0 -1
  48. package/dist/vscode/extension-installer.d.ts +0 -24
  49. package/dist/vscode/extension-installer.d.ts.map +0 -1
  50. package/dist/vscode/extension-installer.js +0 -110
  51. package/dist/vscode/extension-installer.js.map +0 -1
  52. package/dist/vscode/extension-installer.spec.d.ts +0 -2
  53. package/dist/vscode/extension-installer.spec.d.ts.map +0 -1
  54. package/dist/vscode/extension-installer.spec.js +0 -132
  55. package/dist/vscode/extension-installer.spec.js.map +0 -1
  56. package/dist/vscode/index.d.ts +0 -14
  57. package/dist/vscode/index.d.ts.map +0 -1
  58. package/dist/vscode/index.js +0 -14
  59. package/dist/vscode/index.js.map +0 -1
  60. package/dist/vscode/protocol.d.ts +0 -101
  61. package/dist/vscode/protocol.d.ts.map +0 -1
  62. package/dist/vscode/protocol.js +0 -7
  63. package/dist/vscode/protocol.js.map +0 -1
  64. package/dist/vscode/protocol.spec.d.ts +0 -2
  65. package/dist/vscode/protocol.spec.d.ts.map +0 -1
  66. package/dist/vscode/protocol.spec.js +0 -354
  67. package/dist/vscode/protocol.spec.js.map +0 -1
  68. package/dist/vscode/vscode-server.d.ts +0 -119
  69. package/dist/vscode/vscode-server.d.ts.map +0 -1
  70. package/dist/vscode/vscode-server.js +0 -326
  71. package/dist/vscode/vscode-server.js.map +0 -1
  72. package/dist/vscode/vscode-server.spec.d.ts +0 -2
  73. package/dist/vscode/vscode-server.spec.d.ts.map +0 -1
  74. package/dist/vscode/vscode-server.spec.js +0 -487
  75. package/dist/vscode/vscode-server.spec.js.map +0 -1
@@ -1,116 +0,0 @@
1
- import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
2
- import { defaultTheme, getThemeColors } from '../config/themes.js';
3
- import { TIMEOUT_VSCODE_EXTENSION_SKIP_MS } from '../constants.js';
4
- import { installExtension, isExtensionInstalled, isVSCodeCliAvailable, } from '../vscode/extension-installer.js';
5
- import { Box, Text, useInput } from 'ink';
6
- import SelectInput from 'ink-select-input';
7
- import React, { useState, useEffect } from 'react';
8
- var InstallOption;
9
- (function (InstallOption) {
10
- InstallOption["Yes"] = "yes";
11
- InstallOption["No"] = "no";
12
- })(InstallOption || (InstallOption = {}));
13
- /**
14
- * Ink component that prompts the user to install the VS Code extension
15
- * when running with --vscode flag and the extension isn't installed
16
- */
17
- // Compute initial state synchronously
18
- function getInitialState() {
19
- if (isExtensionInstalled()) {
20
- return 'checking'; // Will trigger onComplete in effect
21
- }
22
- if (!isVSCodeCliAvailable()) {
23
- return 'no-cli';
24
- }
25
- return 'prompt';
26
- }
27
- export function VSCodeExtensionPrompt({ onComplete, onSkip, }) {
28
- const [state, setState] = useState(getInitialState);
29
- const [message, setMessage] = useState('');
30
- const colors = getThemeColors(defaultTheme);
31
- const handleInstall = React.useCallback(async () => {
32
- const result = await installExtension();
33
- if (result.success) {
34
- setMessage(result.message);
35
- setState('success');
36
- // Wait for user to press Enter
37
- }
38
- else {
39
- setMessage(result.message);
40
- setState('error');
41
- // Auto-continue after showing error
42
- setTimeout(onSkip, TIMEOUT_VSCODE_EXTENSION_SKIP_MS);
43
- }
44
- }, [onSkip]);
45
- // Handle Enter key press in success state
46
- useInput((_input, key) => {
47
- if (state === 'success' && key.return) {
48
- onComplete();
49
- }
50
- }, { isActive: state === 'success' });
51
- // Handle already-installed case
52
- useEffect(() => {
53
- if (isExtensionInstalled()) {
54
- onComplete();
55
- }
56
- }, [onComplete]);
57
- // Handle no-cli case - auto-skip after showing message
58
- useEffect(() => {
59
- if (state === 'no-cli') {
60
- const timer = setTimeout(onSkip, TIMEOUT_VSCODE_EXTENSION_SKIP_MS);
61
- return () => clearTimeout(timer);
62
- }
63
- }, [state, onSkip]);
64
- const items = [
65
- {
66
- label: 'Yes, install extension',
67
- value: InstallOption.Yes,
68
- },
69
- {
70
- label: 'No, skip for now',
71
- value: InstallOption.No,
72
- },
73
- ];
74
- const handleSelect = (item) => {
75
- if (item.value === InstallOption.Yes) {
76
- setState('installing');
77
- void handleInstall();
78
- }
79
- else {
80
- onSkip();
81
- }
82
- };
83
- if (state === 'checking') {
84
- return (_jsx(Box, { flexDirection: "column", paddingY: 1, children: _jsx(Text, { color: colors.primary, children: "Checking VS Code extension..." }) }));
85
- }
86
- if (state === 'no-cli') {
87
- return (_jsxs(Box, { flexDirection: "column", paddingY: 1, children: [_jsx(Text, { color: colors.warning, children: "VS Code CLI not found. To enable VS Code integration:" }), _jsxs(Box, { marginLeft: 2, flexDirection: "column", marginTop: 1, children: [_jsx(Text, { color: colors.secondary, children: "1. Open VS Code" }), _jsx(Text, { color: colors.secondary, children: "2. Press Cmd+Shift+P (Mac) or Ctrl+Shift+P (Windows/Linux)" }), _jsx(Text, { color: colors.secondary, children: "3. Type \"Shell Command: Install 'code' command in PATH\"" })] }), _jsx(Box, { marginTop: 1, children: _jsx(Text, { color: colors.secondary, children: "Continuing without VS Code integration..." }) })] }));
88
- }
89
- if (state === 'prompt') {
90
- return (_jsxs(Box, { flexDirection: "column", paddingY: 1, children: [_jsx(Text, { color: colors.primary, bold: true, children: "VS Code Extension" }), _jsx(Box, { marginTop: 1, children: _jsx(Text, { color: colors.white, children: "The VS Code extension enables live diff previews when Coder modifies files." }) }), _jsx(Box, { marginTop: 1, children: _jsx(Text, { color: colors.white, children: "Install the extension now?" }) }), _jsx(Box, { marginTop: 1, children: _jsx(SelectInput, { items: items, onSelect: handleSelect }) })] }));
91
- }
92
- if (state === 'installing') {
93
- return (_jsx(Box, { flexDirection: "column", paddingY: 1, children: _jsx(Text, { color: colors.primary, children: "Installing VS Code extension..." }) }));
94
- }
95
- if (state === 'success') {
96
- return (_jsxs(Box, { flexDirection: "column", paddingY: 1, children: [_jsxs(Text, { color: colors.success, children: ["\u2713 ", message] }), _jsx(Box, { marginTop: 1, children: _jsx(Text, { color: colors.secondary, children: "Press Enter to continue..." }) })] }));
97
- }
98
- if (state === 'error') {
99
- return (_jsxs(Box, { flexDirection: "column", paddingY: 1, children: [_jsxs(Text, { color: colors.error, children: ["\u2717 ", message] }), _jsx(Text, { color: colors.secondary, children: "Continuing without VS Code integration..." })] }));
100
- }
101
- return null;
102
- }
103
- /**
104
- * Check if we should show the extension install prompt
105
- * Returns true if --vscode flag is present and extension is not installed
106
- */
107
- export function shouldPromptExtensionInstall() {
108
- const hasVSCodeFlag = process.argv.includes('--vscode');
109
- if (!hasVSCodeFlag)
110
- return false;
111
- // Don't prompt if extension is already installed
112
- if (isExtensionInstalled())
113
- return false;
114
- return true;
115
- }
116
- //# sourceMappingURL=vscode-extension-prompt.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"vscode-extension-prompt.js","sourceRoot":"","sources":["../../source/components/vscode-extension-prompt.tsx"],"names":[],"mappings":"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"}
@@ -1,45 +0,0 @@
1
- import type { DiagnosticInfo } from '../vscode/protocol.js';
2
- interface UseVSCodeServerProps {
3
- enabled: boolean;
4
- port?: number;
5
- currentModel?: string;
6
- currentProvider?: string;
7
- onPrompt?: (prompt: string, context?: {
8
- filePath?: string;
9
- selection?: string;
10
- cursorPosition?: {
11
- line: number;
12
- character: number;
13
- };
14
- }) => void;
15
- onDiagnosticsReceived?: (diagnostics: DiagnosticInfo[]) => void;
16
- }
17
- interface UseVSCodeServerReturn {
18
- isConnected: boolean;
19
- connectionCount: number;
20
- sendAssistantMessage: (content: string, isGenerating?: boolean) => void;
21
- notifyFileChange: (filePath: string, originalContent: string, newContent: string, toolName: string, toolArgs: Record<string, unknown>) => string | null;
22
- requestDiagnostics: (filePath?: string) => void;
23
- updateStatus: () => void;
24
- }
25
- /**
26
- * Hook to manage VS Code server integration
27
- */
28
- export declare function useVSCodeServer({ enabled, port, currentModel, currentProvider, onPrompt, onDiagnosticsReceived, }: UseVSCodeServerProps): UseVSCodeServerReturn;
29
- /**
30
- * Check if VS Code mode was requested via CLI flag
31
- */
32
- export declare function isVSCodeModeEnabled(): boolean;
33
- /**
34
- * Get VS Code server port from CLI args or default
35
- */
36
- export declare function getVSCodePort(): number;
37
- /**
38
- * Helper to create file change notification with automatic content reading
39
- */
40
- export declare function createFileChangeFromTool(filePath: string, newContent: string, _toolName: string, _toolArgs: Record<string, unknown>): Promise<{
41
- originalContent: string;
42
- newContent: string;
43
- }>;
44
- export {};
45
- //# sourceMappingURL=useVSCodeServer.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"useVSCodeServer.d.ts","sourceRoot":"","sources":["../../source/hooks/useVSCodeServer.tsx"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAC,cAAc,EAAC,MAAM,mBAAmB,CAAC;AAGtD,UAAU,oBAAoB;IAC7B,OAAO,EAAE,OAAO,CAAC;IACjB,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,QAAQ,CAAC,EAAE,CACV,MAAM,EAAE,MAAM,EACd,OAAO,CAAC,EAAE;QACT,QAAQ,CAAC,EAAE,MAAM,CAAC;QAClB,SAAS,CAAC,EAAE,MAAM,CAAC;QACnB,cAAc,CAAC,EAAE;YAAC,IAAI,EAAE,MAAM,CAAC;YAAC,SAAS,EAAE,MAAM,CAAA;SAAC,CAAC;KACnD,KACG,IAAI,CAAC;IACV,qBAAqB,CAAC,EAAE,CAAC,WAAW,EAAE,cAAc,EAAE,KAAK,IAAI,CAAC;CAChE;AAED,UAAU,qBAAqB;IAC9B,WAAW,EAAE,OAAO,CAAC;IACrB,eAAe,EAAE,MAAM,CAAC;IACxB,oBAAoB,EAAE,CAAC,OAAO,EAAE,MAAM,EAAE,YAAY,CAAC,EAAE,OAAO,KAAK,IAAI,CAAC;IACxE,gBAAgB,EAAE,CACjB,QAAQ,EAAE,MAAM,EAChB,eAAe,EAAE,MAAM,EACvB,UAAU,EAAE,MAAM,EAClB,QAAQ,EAAE,MAAM,EAChB,QAAQ,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,KAC7B,MAAM,GAAG,IAAI,CAAC;IACnB,kBAAkB,EAAE,CAAC,QAAQ,CAAC,EAAE,MAAM,KAAK,IAAI,CAAC;IAChD,YAAY,EAAE,MAAM,IAAI,CAAC;CACzB;AAED;;GAEG;AACH,wBAAgB,eAAe,CAAC,EAC/B,OAAO,EACP,IAAmB,EACnB,YAAY,EACZ,eAAe,EACf,QAAQ,EACR,qBAAqB,GACrB,EAAE,oBAAoB,GAAG,qBAAqB,CA4I9C;AAED;;GAEG;AACH,wBAAgB,mBAAmB,IAAI,OAAO,CAE7C;AAED;;GAEG;AACH,wBAAgB,aAAa,IAAI,MAAM,CAWtC;AAED;;GAEG;AACH,wBAAsB,wBAAwB,CAC7C,QAAQ,EAAE,MAAM,EAChB,UAAU,EAAE,MAAM,EAClB,SAAS,EAAE,MAAM,EACjB,SAAS,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAChC,OAAO,CAAC;IACV,eAAe,EAAE,MAAM,CAAC;IACxB,UAAU,EAAE,MAAM,CAAC;CACnB,CAAC,CAYD"}
@@ -1,142 +0,0 @@
1
- import { readFile } from 'node:fs/promises';
2
- import { DEFAULT_PORT, getVSCodeServer } from '../vscode/index.js';
3
- import { useCallback, useEffect, useRef, useState } from 'react';
4
- /**
5
- * Hook to manage VS Code server integration
6
- */
7
- export function useVSCodeServer({ enabled, port = DEFAULT_PORT, currentModel, currentProvider, onPrompt, onDiagnosticsReceived, }) {
8
- const serverRef = useRef(null);
9
- const [isConnected, setIsConnected] = useState(false);
10
- const [connectionCount, setConnectionCount] = useState(0);
11
- // Store callbacks in refs to avoid re-creating server on callback changes
12
- const onPromptRef = useRef(onPrompt);
13
- const onDiagnosticsReceivedRef = useRef(onDiagnosticsReceived);
14
- const currentModelRef = useRef(currentModel);
15
- const currentProviderRef = useRef(currentProvider);
16
- // Keep refs up to date
17
- useEffect(() => {
18
- onPromptRef.current = onPrompt;
19
- }, [onPrompt]);
20
- useEffect(() => {
21
- onDiagnosticsReceivedRef.current = onDiagnosticsReceived;
22
- }, [onDiagnosticsReceived]);
23
- useEffect(() => {
24
- currentModelRef.current = currentModel;
25
- }, [currentModel]);
26
- useEffect(() => {
27
- currentProviderRef.current = currentProvider;
28
- }, [currentProvider]);
29
- // Initialize server on mount if enabled
30
- useEffect(() => {
31
- if (!enabled) {
32
- return;
33
- }
34
- const initServer = async () => {
35
- const server = getVSCodeServer(port);
36
- serverRef.current = server;
37
- // Set up callbacks using refs
38
- server.onCallbacks({
39
- onPrompt: (prompt, context) => {
40
- onPromptRef.current?.(prompt, context);
41
- },
42
- onDiagnosticsResponse: diagnostics => {
43
- onDiagnosticsReceivedRef.current?.(diagnostics);
44
- },
45
- onConnect: () => {
46
- setIsConnected(true);
47
- setConnectionCount(server.getConnectionCount());
48
- // Send current status
49
- if (currentModelRef.current || currentProviderRef.current) {
50
- server.sendStatus(currentModelRef.current, currentProviderRef.current);
51
- }
52
- },
53
- onDisconnect: () => {
54
- const hasConnections = server.hasConnections();
55
- setIsConnected(hasConnections);
56
- setConnectionCount(server.getConnectionCount());
57
- },
58
- });
59
- // Start the server
60
- await server.start();
61
- };
62
- void initServer();
63
- // Cleanup on unmount
64
- return () => {
65
- if (serverRef.current) {
66
- void serverRef.current.stop();
67
- serverRef.current = null;
68
- }
69
- };
70
- }, [enabled, port]);
71
- // Update status when model/provider changes
72
- useEffect(() => {
73
- if (serverRef.current && enabled && isConnected) {
74
- serverRef.current.sendStatus(currentModel, currentProvider);
75
- }
76
- }, [enabled, currentModel, currentProvider, isConnected]);
77
- const sendAssistantMessage = useCallback((content, isGenerating = false) => {
78
- if (serverRef.current && enabled) {
79
- serverRef.current.sendAssistantMessage(content, isGenerating);
80
- }
81
- }, [enabled]);
82
- const notifyFileChange = useCallback((filePath, originalContent, newContent, toolName, toolArgs) => {
83
- if (serverRef.current && enabled && isConnected) {
84
- return serverRef.current.sendFileChange(filePath, originalContent, newContent, toolName, toolArgs);
85
- }
86
- return null;
87
- }, [enabled, isConnected]);
88
- const requestDiagnostics = useCallback((filePath) => {
89
- if (serverRef.current && enabled) {
90
- serverRef.current.requestDiagnostics(filePath);
91
- }
92
- }, [enabled]);
93
- const updateStatus = useCallback(() => {
94
- if (serverRef.current && enabled) {
95
- serverRef.current.sendStatus(currentModel, currentProvider);
96
- }
97
- }, [enabled, currentModel, currentProvider]);
98
- return {
99
- isConnected,
100
- connectionCount,
101
- sendAssistantMessage,
102
- notifyFileChange,
103
- requestDiagnostics,
104
- updateStatus,
105
- };
106
- }
107
- /**
108
- * Check if VS Code mode was requested via CLI flag
109
- */
110
- export function isVSCodeModeEnabled() {
111
- return process.argv.includes('--vscode');
112
- }
113
- /**
114
- * Get VS Code server port from CLI args or default
115
- */
116
- export function getVSCodePort() {
117
- const portArgIndex = process.argv.findIndex(arg => arg === '--vscode-port' || arg === '-p');
118
- if (portArgIndex !== -1 && process.argv[portArgIndex + 1]) {
119
- const port = parseInt(process.argv[portArgIndex + 1], 10);
120
- if (!isNaN(port) && port > 0 && port < 65536) {
121
- return port;
122
- }
123
- }
124
- return DEFAULT_PORT;
125
- }
126
- /**
127
- * Helper to create file change notification with automatic content reading
128
- */
129
- export async function createFileChangeFromTool(filePath, newContent, _toolName, _toolArgs) {
130
- let originalContent = '';
131
- try {
132
- originalContent = await readFile(filePath, 'utf-8');
133
- }
134
- catch {
135
- // File doesn't exist or can't be read - that's fine for create operations
136
- }
137
- return {
138
- originalContent,
139
- newContent,
140
- };
141
- }
142
- //# sourceMappingURL=useVSCodeServer.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"useVSCodeServer.js","sourceRoot":"","sources":["../../source/hooks/useVSCodeServer.tsx"],"names":[],"mappings":"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"}
@@ -1,24 +0,0 @@
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 coder 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
@@ -1 +0,0 @@
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,CA4DD"}
@@ -1,110 +0,0 @@
1
- /**
2
- * VS Code extension installation utilities
3
- */
4
- import { execSync, spawn } from 'child_process';
5
- import { existsSync } from 'fs';
6
- import { dirname, join } 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/coder-vscode.vsix'), // development
17
- join(__dirname, '../../../assets/coder-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 coder 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('gguf.coder-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
@@ -1 +0,0 @@
1
- {"version":3,"file":"extension-installer.js","sourceRoot":"","sources":["../../source/vscode/extension-installer.ts"],"names":[],"mappings":"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"}
@@ -1,2 +0,0 @@
1
- export {};
2
- //# sourceMappingURL=extension-installer.spec.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"extension-installer.spec.d.ts","sourceRoot":"","sources":["../../source/vscode/extension-installer.spec.ts"],"names":[],"mappings":""}
@@ -1,132 +0,0 @@
1
- import test from 'ava';
2
- import { getVsixPath, installExtension, isExtensionInstalled, isVSCodeCliAvailable, } 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('coder-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
@@ -1 +0,0 @@
1
- {"version":3,"file":"extension-installer.spec.js","sourceRoot":"","sources":["../../source/vscode/extension-installer.spec.ts"],"names":[],"mappings":"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"}
@@ -1,14 +0,0 @@
1
- /**
2
- * VS Code integration module
3
- *
4
- * Provides WebSocket-based communication between the coder 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
@@ -1 +0,0 @@
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"}