From 9ded1ea41e65d83e32ed74ca1fb5bd1f00a5d054 Mon Sep 17 00:00:00 2001 From: Nate Sesti Date: Fri, 28 Jul 2023 00:18:49 -0700 Subject: refactor: :goal_net: log errors from websocket, better logging from uvicorn --- extension/src/debugPanel.ts | 26 ++++++++++++++++++++++++-- 1 file changed, 24 insertions(+), 2 deletions(-) (limited to 'extension/src/debugPanel.ts') diff --git a/extension/src/debugPanel.ts b/extension/src/debugPanel.ts index 3c4f8481..4785ba20 100644 --- a/extension/src/debugPanel.ts +++ b/extension/src/debugPanel.ts @@ -17,17 +17,20 @@ class WebsocketConnection { private _onMessage: (message: string) => void; private _onOpen: () => void; private _onClose: () => void; + private _onError: (e: any) => void; constructor( url: string, onMessage: (message: string) => void, onOpen: () => void, - onClose: () => void + onClose: () => void, + onError: (e: any) => void ) { this._ws = new WebSocket(url); this._onMessage = onMessage; this._onOpen = onOpen; this._onClose = onClose; + this._onError = onError; this._ws.addEventListener("message", (event) => { this._onMessage(event.data); @@ -38,6 +41,9 @@ class WebsocketConnection { this._ws.addEventListener("open", () => { this._onOpen(); }); + this._ws.addEventListener("error", (e: any) => { + this._onError(e); + }); } public send(message: string) { @@ -147,12 +153,20 @@ export function setupDebugPanel( url, }); }; + const onError = (e: any) => { + panel.webview.postMessage({ + type: "websocketForwardingError", + url, + error: e, + }); + }; try { const connection = new WebsocketConnection( url, onMessage, onOpen, - onClose + onClose, + onError ); websocketConnections[url] = connection; resolve(null); @@ -198,6 +212,14 @@ export function setupDebugPanel( if (typeof websocketConnections[url] === "undefined") { await connectWebsocket(url); } + console.log( + "Websocket connection requested by GUI already open at", + url + ); + panel.webview.postMessage({ + type: "websocketForwardingOpen", + url, + }); break; } case "websocketForwardingMessage": { -- cgit v1.2.3-70-g09d2 From 5bc80e2e6d3141922c966c404a6d32a496097960 Mon Sep 17 00:00:00 2001 From: Nate Sesti Date: Fri, 28 Jul 2023 10:23:12 -0700 Subject: refactor: :loud_sound: improve logs on startup of server --- continuedev/src/continuedev/server/gui.py | 2 +- continuedev/src/continuedev/server/session_manager.py | 10 ++++++---- extension/package-lock.json | 4 ++-- extension/package.json | 2 +- extension/src/activation/environmentSetup.ts | 8 ++++++++ extension/src/debugPanel.ts | 17 +++++++++-------- 6 files changed, 27 insertions(+), 16 deletions(-) (limited to 'extension/src/debugPanel.ts') diff --git a/continuedev/src/continuedev/server/gui.py b/continuedev/src/continuedev/server/gui.py index 9bb621cb..58e875b9 100644 --- a/continuedev/src/continuedev/server/gui.py +++ b/continuedev/src/continuedev/server/gui.py @@ -198,4 +198,4 @@ async def websocket_endpoint(websocket: WebSocket, session: Session = Depends(we await websocket.close() await session_manager.persist_session(session.session_id) - session_manager.remove_session(session.session_id) + await session_manager.remove_session(session.session_id) diff --git a/continuedev/src/continuedev/server/session_manager.py b/continuedev/src/continuedev/server/session_manager.py index 4e47098a..511dc070 100644 --- a/continuedev/src/continuedev/server/session_manager.py +++ b/continuedev/src/continuedev/server/session_manager.py @@ -85,12 +85,14 @@ class SessionManager: create_async_task(autopilot.run_policy()) return session - def remove_session(self, session_id: str): + async def remove_session(self, session_id: str): print("Removing session: ", session_id) if session_id in self.sessions: - ws_to_close = self.sessions[session_id].ide.websocket - if ws_to_close is not None and ws_to_close.client_state != WebSocketState.DISCONNECTED: - self.sessions[session_id].autopilot.ide.websocket.close() + if session_id in self.registered_ides: + ws_to_close = self.registered_ides[session_id].websocket + if ws_to_close is not None and ws_to_close.client_state != WebSocketState.DISCONNECTED: + await self.sessions[session_id].autopilot.ide.websocket.close() + del self.sessions[session_id] async def persist_session(self, session_id: str): diff --git a/extension/package-lock.json b/extension/package-lock.json index b210256b..78409984 100644 --- a/extension/package-lock.json +++ b/extension/package-lock.json @@ -1,12 +1,12 @@ { "name": "continue", - "version": "0.0.214", + "version": "0.0.215", "lockfileVersion": 2, "requires": true, "packages": { "": { "name": "continue", - "version": "0.0.214", + "version": "0.0.215", "license": "Apache-2.0", "dependencies": { "@electron/rebuild": "^3.2.10", diff --git a/extension/package.json b/extension/package.json index 72cfa6ab..5df08aee 100644 --- a/extension/package.json +++ b/extension/package.json @@ -14,7 +14,7 @@ "displayName": "Continue", "pricing": "Free", "description": "The open-source coding autopilot", - "version": "0.0.214", + "version": "0.0.215", "publisher": "Continue", "engines": { "vscode": "^1.67.0" diff --git a/extension/src/activation/environmentSetup.ts b/extension/src/activation/environmentSetup.ts index 44fb3b60..146a6e37 100644 --- a/extension/src/activation/environmentSetup.ts +++ b/extension/src/activation/environmentSetup.ts @@ -487,6 +487,14 @@ export async function startContinuePythonServer() { console.log(`error: ${error.message}`); }); + child.on("close", (code: any) => { + console.log(`child process exited with code ${code}`); + }); + + child.stdout.on("data", (data: any) => { + console.log(`stdout: ${data}`); + }); + // Write the current version of vscode to a file called server_version.txt fs.writeFileSync(serverVersionPath(), getExtensionVersion()); } catch (e) { diff --git a/extension/src/debugPanel.ts b/extension/src/debugPanel.ts index 4785ba20..d3972189 100644 --- a/extension/src/debugPanel.ts +++ b/extension/src/debugPanel.ts @@ -211,15 +211,16 @@ export function setupDebugPanel( let url = data.url; if (typeof websocketConnections[url] === "undefined") { await connectWebsocket(url); + } else { + console.log( + "Websocket connection requested by GUI already open at", + url + ); + panel.webview.postMessage({ + type: "websocketForwardingOpen", + url, + }); } - console.log( - "Websocket connection requested by GUI already open at", - url - ); - panel.webview.postMessage({ - type: "websocketForwardingOpen", - url, - }); break; } case "websocketForwardingMessage": { -- cgit v1.2.3-70-g09d2 From 9a9b7aae313c8ca3e69acc6b49327fef47a2644d Mon Sep 17 00:00:00 2001 From: Nate Sesti Date: Fri, 28 Jul 2023 18:12:47 -0700 Subject: show "View Logs" popup during server loading --- extension/src/activation/activate.ts | 11 +++++++++++ extension/src/debugPanel.ts | 11 +---------- 2 files changed, 12 insertions(+), 10 deletions(-) (limited to 'extension/src/debugPanel.ts') diff --git a/extension/src/activation/activate.ts b/extension/src/activation/activate.ts index cbb840c0..a47d5e97 100644 --- a/extension/src/activation/activate.ts +++ b/extension/src/activation/activate.ts @@ -86,6 +86,17 @@ export async function activateExtension(context: vscode.ExtensionContext) { return Promise.resolve(); } ); + + vscode.window + .showInformationMessage( + "Click here to view the server logs, or use the 'continue.viewLogs' VS Code command.", + "View Logs" + ) + .then((selection) => { + if (selection === "View Logs") { + vscode.commands.executeCommand("continue.viewLogs"); + } + }); } }, 2000); }); diff --git a/extension/src/debugPanel.ts b/extension/src/debugPanel.ts index d3972189..643563a2 100644 --- a/extension/src/debugPanel.ts +++ b/extension/src/debugPanel.ts @@ -272,16 +272,7 @@ export function setupDebugPanel( }); } ); - vscode.window - .showInformationMessage( - "Click here to view the server logs, or use the 'continue.viewLogs' VS Code command.", - "View Logs" - ) - .then((selection) => { - if (selection === "View Logs") { - vscode.commands.executeCommand("continue.viewLogs"); - } - }); + break; } } -- cgit v1.2.3-70-g09d2