diff options
-rw-r--r-- | continuedev/src/continuedev/server/ide.py | 9 | ||||
-rw-r--r-- | continuedev/src/continuedev/server/ide_protocol.py | 2 | ||||
-rw-r--r-- | extension/src/continueIdeClient.ts | 4 | ||||
-rw-r--r-- | extension/src/suggestions.ts | 23 |
4 files changed, 21 insertions, 17 deletions
diff --git a/continuedev/src/continuedev/server/ide.py b/continuedev/src/continuedev/server/ide.py index e1f19447..1f790991 100644 --- a/continuedev/src/continuedev/server/ide.py +++ b/continuedev/src/continuedev/server/ide.py @@ -7,6 +7,7 @@ import uuid from fastapi import WebSocket, Body, APIRouter from uvicorn.main import Server +from ..libs.util.telemetry import capture_event from ..libs.util.queue import AsyncSubscriptionQueue from ..models.filesystem import FileSystem, RangeInFile, EditDiff, RealFileSystem from ..models.filesystem_edit import AddDirectory, AddFile, DeleteDirectory, DeleteFile, FileSystemEdit, FileEdit, FileEditWithFullContents, RenameDirectory, RenameFile, SequentialFileSystemEdit @@ -142,6 +143,8 @@ class IdeProtocolServer(AbstractIdeProtocolServer): elif message_type == "commandOutput": output = data["output"] self.onCommandOutput(output) + elif message_type == "acceptRejectSuggestion": + self.onAcceptRejectSuggestion(data["accepted"]) elif message_type in ["highlightedCode", "openFiles", "readFile", "editFile", "workspaceDirectory", "getUserSecret", "runCommand", "uniqueId"]: self.sub_queue.post(message_type, data) else: @@ -202,8 +205,10 @@ class IdeProtocolServer(AbstractIdeProtocolServer): # This is where you might have triggers: plugins can subscribe to certian events # like file changes, tracebacks, etc... - def onAcceptRejectSuggestion(self, suggestionId: str, accepted: bool): - pass + def onAcceptRejectSuggestion(self, accepted: bool): + capture_event(self.unique_id, "accept_reject_suggestion", { + "accepted": accepted + }) def onFileSystemUpdate(self, update: FileSystemEdit): # Access to Autopilot (so SessionManager) diff --git a/continuedev/src/continuedev/server/ide_protocol.py b/continuedev/src/continuedev/server/ide_protocol.py index d2dafa9a..7faf5563 100644 --- a/continuedev/src/continuedev/server/ide_protocol.py +++ b/continuedev/src/continuedev/server/ide_protocol.py @@ -36,7 +36,7 @@ class AbstractIdeProtocolServer(ABC): """Show suggestions to the user and wait for a response""" @abstractmethod - def onAcceptRejectSuggestion(self, suggestionId: str, accepted: bool): + def onAcceptRejectSuggestion(self, accepted: bool): """Called when the user accepts or rejects a suggestion""" @abstractmethod diff --git a/extension/src/continueIdeClient.ts b/extension/src/continueIdeClient.ts index 21104abe..b39e6565 100644 --- a/extension/src/continueIdeClient.ts +++ b/extension/src/continueIdeClient.ts @@ -375,6 +375,10 @@ class IdeProtocolClient { sendCommandOutput(output: string) { this.messenger?.send("commandOutput", { output }); } + + sendAcceptRejectSuggestion(accepted: boolean) { + this.messenger?.send("acceptRejectSuggestion", { accepted }); + } } export default IdeProtocolClient; diff --git a/extension/src/suggestions.ts b/extension/src/suggestions.ts index baa49711..6e5a444f 100644 --- a/extension/src/suggestions.ts +++ b/extension/src/suggestions.ts @@ -5,7 +5,7 @@ import { translate, readFileAtRange } from "./util/vscode"; import * as fs from "fs"; import * as path from "path"; import { registerAllCodeLensProviders } from "./lang-server/codeLens"; -import { extensionContext } from "./activation/activate"; +import { extensionContext, ideProtocolClient } from "./activation/activate"; export interface SuggestionRanges { oldRange: vscode.Range; @@ -241,19 +241,14 @@ function selectSuggestion( suggestions = JSON.parse(rawData); } - if (accept === "new" || (accept === "selected" && suggestion.newSelected)) { - suggestions.push({ - accepted: true, - timestamp: Date.now(), - suggestion: suggestion.newContent, - }); - } else { - suggestions.push({ - accepted: false, - timestamp: Date.now(), - suggestion: suggestion.newContent, - }); - } + const accepted = + accept === "new" || (accept === "selected" && suggestion.newSelected); + suggestions.push({ + accepted, + timestamp: Date.now(), + suggestion: suggestion.newContent, + }); + ideProtocolClient.sendAcceptRejectSuggestion(accepted); // Write the updated suggestions back to the file fs.writeFileSync( |