Fix error logging and add more telemetry actions

This commit is contained in:
Carl-Robert Linnupuu 2023-09-28 17:08:31 +03:00
parent d504922fea
commit b35daaae88
10 changed files with 75 additions and 32 deletions

View file

@ -1,11 +1,11 @@
package ee.carlrobert.codegpt.completions;
package ee.carlrobert.codegpt;
import ee.carlrobert.codegpt.TelemetryService;
import ee.carlrobert.codegpt.telemetry.core.service.TelemetryMessageBuilder.ActionMessage;
public enum TelemetryAction {
COMPLETION("CodeGPT-Completion"),
COMPLETION_ERROR("CodeGPT-Completion-Error"),
IDE_ACTION("CodeGPT-Action");
private final String code;

View file

@ -0,0 +1,11 @@
package ee.carlrobert.codegpt.actions;
public enum ActionType {
CLEAR_CHAT_WINDOW,
CREATE_NEW_CHAT,
DELETE_ALL_CONVERSATIONS,
DELETE_CONVERSATION,
OPEN_CONVERSATION_IN_EDITOR,
RELOAD_MESSAGE
}

View file

@ -3,7 +3,9 @@ package ee.carlrobert.codegpt.actions.toolwindow;
import com.intellij.icons.AllIcons;
import com.intellij.openapi.actionSystem.AnAction;
import com.intellij.openapi.actionSystem.AnActionEvent;
import ee.carlrobert.codegpt.actions.ActionType;
import ee.carlrobert.codegpt.actions.editor.EditorActionsUtil;
import ee.carlrobert.codegpt.TelemetryAction;
import ee.carlrobert.codegpt.conversations.ConversationsState;
import org.jetbrains.annotations.NotNull;
@ -27,6 +29,12 @@ public class ClearChatWindowAction extends AnAction {
@Override
public void actionPerformed(@NotNull AnActionEvent event) {
onActionPerformed.run();
try {
onActionPerformed.run();
} finally {
TelemetryAction.createActionMessage(TelemetryAction.IDE_ACTION)
.property("action", ActionType.CLEAR_CHAT_WINDOW.name())
.send();
}
}
}

View file

@ -1,11 +1,11 @@
package ee.carlrobert.codegpt.actions.toolwindow;
import com.intellij.icons.AllIcons;
import com.intellij.openapi.actionSystem.ActionManager;
import com.intellij.openapi.actionSystem.AnAction;
import com.intellij.openapi.actionSystem.AnActionEvent;
import com.intellij.openapi.extensions.PluginId;
import ee.carlrobert.codegpt.actions.ActionType;
import ee.carlrobert.codegpt.actions.editor.EditorActionsUtil;
import ee.carlrobert.codegpt.TelemetryAction;
import org.jetbrains.annotations.NotNull;
public class CreateNewConversationAction extends AnAction {
@ -20,9 +20,15 @@ public class CreateNewConversationAction extends AnAction {
@Override
public void actionPerformed(@NotNull AnActionEvent event) {
var project = event.getProject();
if (project != null) {
onCreate.run();
try {
var project = event.getProject();
if (project != null) {
onCreate.run();
}
} finally {
TelemetryAction.createActionMessage(TelemetryAction.IDE_ACTION)
.property("action", ActionType.CREATE_NEW_CHAT.name())
.send();
}
}
}

View file

@ -6,8 +6,9 @@ import com.intellij.icons.AllIcons;
import com.intellij.openapi.actionSystem.AnAction;
import com.intellij.openapi.actionSystem.AnActionEvent;
import com.intellij.openapi.ui.Messages;
import ee.carlrobert.codegpt.actions.ActionType;
import ee.carlrobert.codegpt.actions.editor.EditorActionsUtil;
import ee.carlrobert.codegpt.completions.TelemetryAction;
import ee.carlrobert.codegpt.TelemetryAction;
import ee.carlrobert.codegpt.conversations.ConversationService;
import ee.carlrobert.codegpt.toolwindow.chat.standard.StandardChatToolWindowContentManager;
import org.jetbrains.annotations.NotNull;
@ -45,7 +46,7 @@ public class DeleteAllConversationsAction extends AnAction {
project.getService(StandardChatToolWindowContentManager.class).resetActiveTab();
} finally {
TelemetryAction.createActionMessage(TelemetryAction.IDE_ACTION)
.property("action", "DELETE_ALL_CONVERSATIONS")
.property("action", ActionType.DELETE_ALL_CONVERSATIONS.name())
.send();
}
}

View file

@ -4,8 +4,9 @@ import com.intellij.icons.AllIcons;
import com.intellij.openapi.actionSystem.AnAction;
import com.intellij.openapi.actionSystem.AnActionEvent;
import com.intellij.openapi.ui.Messages;
import ee.carlrobert.codegpt.actions.ActionType;
import ee.carlrobert.codegpt.actions.editor.EditorActionsUtil;
import ee.carlrobert.codegpt.completions.TelemetryAction;
import ee.carlrobert.codegpt.TelemetryAction;
import ee.carlrobert.codegpt.conversations.ConversationService;
import ee.carlrobert.codegpt.conversations.ConversationsState;
import ee.carlrobert.codegpt.util.OverlayUtils;
@ -32,7 +33,7 @@ public class DeleteConversationAction extends AnAction {
var project = event.getProject();
if (project != null) {
TelemetryAction.createActionMessage(TelemetryAction.IDE_ACTION)
.property("action", "DELETE_CONVERSATION")
.property("action", ActionType.DELETE_CONVERSATION.name())
.send();
ConversationService.getInstance().deleteSelectedConversation();

View file

@ -9,8 +9,9 @@ import com.intellij.openapi.fileEditor.FileEditorManager;
import com.intellij.openapi.vfs.VirtualFile;
import com.intellij.openapi.wm.ToolWindowManager;
import com.intellij.testFramework.LightVirtualFile;
import ee.carlrobert.codegpt.TelemetryService;
import ee.carlrobert.codegpt.actions.ActionType;
import ee.carlrobert.codegpt.actions.editor.EditorActionsUtil;
import ee.carlrobert.codegpt.TelemetryAction;
import ee.carlrobert.codegpt.conversations.ConversationsState;
import java.time.format.DateTimeFormatter;
import java.util.stream.Collectors;
@ -33,20 +34,29 @@ public class OpenInEditorAction extends AnAction {
@Override
public void actionPerformed(@NotNull AnActionEvent e) {
var project = e.getProject();
var currentConversation = ConversationsState.getCurrentConversation();
if (project != null && currentConversation != null) {
var dateTimeStamp = currentConversation.getUpdatedOn().format(DateTimeFormatter.ofPattern("yyyyMMddHHmm"));
var fileName = String.format("%s_%s.md", currentConversation.getModel(), dateTimeStamp);
var fileContent = currentConversation
.getMessages()
.stream()
.map(it -> String.format("### User:\n%s\n### ChatGPT:\n%s\n", it.getPrompt(), it.getResponse()))
.collect(Collectors.joining());
VirtualFile file = new LightVirtualFile(fileName, fileContent);
FileEditorManager.getInstance(project).openFile(file, true);
var toolWindow = requireNonNull(ToolWindowManager.getInstance(project).getToolWindow("CodeGPT"));
toolWindow.hide();
try {
var project = e.getProject();
var currentConversation = ConversationsState.getCurrentConversation();
if (project != null && currentConversation != null) {
var dateTimeStamp = currentConversation.getUpdatedOn()
.format(DateTimeFormatter.ofPattern("yyyyMMddHHmm"));
var fileName = String.format("%s_%s.md", currentConversation.getModel(), dateTimeStamp);
var fileContent = currentConversation
.getMessages()
.stream()
.map(it -> String.format("### User:\n%s\n### ChatGPT:\n%s\n", it.getPrompt(),
it.getResponse()))
.collect(Collectors.joining());
VirtualFile file = new LightVirtualFile(fileName, fileContent);
FileEditorManager.getInstance(project).openFile(file, true);
var toolWindow = requireNonNull(
ToolWindowManager.getInstance(project).getToolWindow("CodeGPT"));
toolWindow.hide();
}
} finally {
TelemetryAction.createActionMessage(TelemetryAction.IDE_ACTION)
.property("action", ActionType.OPEN_CONVERSATION_IN_EDITOR.name())
.send();
}
}
}

View file

@ -1,6 +1,6 @@
package ee.carlrobert.codegpt.completions;
import ee.carlrobert.codegpt.TelemetryService;
import ee.carlrobert.codegpt.TelemetryAction;
import ee.carlrobert.codegpt.conversations.Conversation;
import ee.carlrobert.codegpt.conversations.message.Message;
import ee.carlrobert.codegpt.settings.state.AzureSettingsState;
@ -230,9 +230,10 @@ public class CompletionRequestHandler {
}
private void sendError(ErrorDetails error, Throwable ex) {
TelemetryAction.createActionMessage(TelemetryAction.COMPLETION)
TelemetryAction.createActionMessage(TelemetryAction.COMPLETION_ERROR)
.property("conversationId", conversation.getId().toString())
.error(new RuntimeException("Received an error during completion.\n" + error, ex))
.property("model", conversation.getModel())
.error(new RuntimeException(error.toString(), ex))
.send();
}
}

View file

@ -11,10 +11,11 @@ import com.intellij.openapi.roots.ui.componentsList.components.ScrollablePanel;
import com.intellij.ui.JBColor;
import com.intellij.ui.components.JBScrollPane;
import com.intellij.util.ui.JBUI;
import ee.carlrobert.codegpt.actions.ActionType;
import ee.carlrobert.codegpt.TelemetryService;
import ee.carlrobert.codegpt.completions.CompletionRequestHandler;
import ee.carlrobert.codegpt.completions.SerpResult;
import ee.carlrobert.codegpt.completions.TelemetryAction;
import ee.carlrobert.codegpt.TelemetryAction;
import ee.carlrobert.codegpt.conversations.Conversation;
import ee.carlrobert.codegpt.conversations.ConversationService;
import ee.carlrobert.codegpt.conversations.message.Message;
@ -235,6 +236,10 @@ public abstract class BaseChatToolWindowTabPanel implements ChatToolWindowTabPan
conversationService.saveMessage(conversation, message);
call(conversation, message, responsePanel, true);
}
TelemetryAction.createActionMessage(TelemetryAction.IDE_ACTION)
.property("action", ActionType.RELOAD_MESSAGE.name())
.send();
}
}