summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--continuedev/src/continuedev/server/ide.py9
-rw-r--r--continuedev/src/continuedev/server/ide_protocol.py2
-rw-r--r--extension/src/continueIdeClient.ts4
-rw-r--r--extension/src/suggestions.ts23
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(