diff --git a/src/main/java/ee/carlrobert/codegpt/TelemetryAction.java b/codegpt-telemetry/src/main/java/ee/carlrobert/codegpt/telemetry/TelemetryAction.java similarity index 69% rename from src/main/java/ee/carlrobert/codegpt/TelemetryAction.java rename to codegpt-telemetry/src/main/java/ee/carlrobert/codegpt/telemetry/TelemetryAction.java index 5eed80e2..9fb2e42c 100644 --- a/src/main/java/ee/carlrobert/codegpt/TelemetryAction.java +++ b/codegpt-telemetry/src/main/java/ee/carlrobert/codegpt/telemetry/TelemetryAction.java @@ -1,4 +1,4 @@ -package ee.carlrobert.codegpt; +package ee.carlrobert.codegpt.telemetry; import ee.carlrobert.codegpt.telemetry.core.service.TelemetryMessageBuilder.ActionMessage; @@ -18,7 +18,7 @@ public enum TelemetryAction { return code; } - public static ActionMessage createActionMessage(TelemetryAction action) { - return TelemetryService.instance().action(action.getCode()); + public ActionMessage createActionMessage() { + return TelemetryMessageProvider.builder().action(getCode()); } } diff --git a/codegpt-telemetry/src/main/java/ee/carlrobert/codegpt/telemetry/TelemetryMessageProvider.java b/codegpt-telemetry/src/main/java/ee/carlrobert/codegpt/telemetry/TelemetryMessageProvider.java new file mode 100644 index 00000000..f9a37820 --- /dev/null +++ b/codegpt-telemetry/src/main/java/ee/carlrobert/codegpt/telemetry/TelemetryMessageProvider.java @@ -0,0 +1,16 @@ +package ee.carlrobert.codegpt.telemetry; + +import ee.carlrobert.codegpt.telemetry.core.service.TelemetryMessageBuilder; +import ee.carlrobert.codegpt.telemetry.core.util.Lazy; + +public class TelemetryMessageProvider { + + private static final TelemetryMessageProvider INSTANCE = new TelemetryMessageProvider(); + + private final Lazy builder = new Lazy<>(() -> + new TelemetryMessageBuilder(TelemetryMessageProvider.class.getClassLoader())); + + public static TelemetryMessageBuilder builder() { + return INSTANCE.builder.get(); + } +} \ No newline at end of file diff --git a/src/main/java/ee/carlrobert/codegpt/TelemetryService.java b/src/main/java/ee/carlrobert/codegpt/TelemetryService.java deleted file mode 100644 index 72ef769e..00000000 --- a/src/main/java/ee/carlrobert/codegpt/TelemetryService.java +++ /dev/null @@ -1,16 +0,0 @@ -package ee.carlrobert.codegpt; - -import ee.carlrobert.codegpt.telemetry.core.service.TelemetryMessageBuilder; -import ee.carlrobert.codegpt.telemetry.core.util.Lazy; - -public class TelemetryService { - - private static final TelemetryService INSTANCE = new TelemetryService(); - - private final Lazy builder = new Lazy<>(() -> new TelemetryMessageBuilder(TelemetryService.class.getClassLoader())); - - public static TelemetryMessageBuilder instance() { - return INSTANCE.builder.get(); - } -} - diff --git a/src/main/java/ee/carlrobert/codegpt/actions/ActionType.java b/src/main/java/ee/carlrobert/codegpt/actions/ActionType.java index 3f6e5b01..5dcf872a 100644 --- a/src/main/java/ee/carlrobert/codegpt/actions/ActionType.java +++ b/src/main/java/ee/carlrobert/codegpt/actions/ActionType.java @@ -6,6 +6,7 @@ public enum ActionType { CREATE_NEW_CHAT, DELETE_ALL_CONVERSATIONS, DELETE_CONVERSATION, + DISCARD_TOKEN_LIMIT, OPEN_CONVERSATION_IN_EDITOR, RELOAD_MESSAGE } diff --git a/src/main/java/ee/carlrobert/codegpt/actions/toolwindow/ClearChatWindowAction.java b/src/main/java/ee/carlrobert/codegpt/actions/toolwindow/ClearChatWindowAction.java index a946a239..e79cfdb4 100644 --- a/src/main/java/ee/carlrobert/codegpt/actions/toolwindow/ClearChatWindowAction.java +++ b/src/main/java/ee/carlrobert/codegpt/actions/toolwindow/ClearChatWindowAction.java @@ -5,7 +5,7 @@ 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.telemetry.TelemetryAction; import ee.carlrobert.codegpt.conversations.ConversationsState; import org.jetbrains.annotations.NotNull; @@ -32,7 +32,7 @@ public class ClearChatWindowAction extends AnAction { try { onActionPerformed.run(); } finally { - TelemetryAction.createActionMessage(TelemetryAction.IDE_ACTION) + TelemetryAction.IDE_ACTION.createActionMessage() .property("action", ActionType.CLEAR_CHAT_WINDOW.name()) .send(); } diff --git a/src/main/java/ee/carlrobert/codegpt/actions/toolwindow/CreateNewConversationAction.java b/src/main/java/ee/carlrobert/codegpt/actions/toolwindow/CreateNewConversationAction.java index 9ca36ca8..67bd8344 100644 --- a/src/main/java/ee/carlrobert/codegpt/actions/toolwindow/CreateNewConversationAction.java +++ b/src/main/java/ee/carlrobert/codegpt/actions/toolwindow/CreateNewConversationAction.java @@ -5,7 +5,7 @@ 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.telemetry.TelemetryAction; import org.jetbrains.annotations.NotNull; public class CreateNewConversationAction extends AnAction { @@ -26,7 +26,7 @@ public class CreateNewConversationAction extends AnAction { onCreate.run(); } } finally { - TelemetryAction.createActionMessage(TelemetryAction.IDE_ACTION) + TelemetryAction.IDE_ACTION.createActionMessage() .property("action", ActionType.CREATE_NEW_CHAT.name()) .send(); } diff --git a/src/main/java/ee/carlrobert/codegpt/actions/toolwindow/DeleteAllConversationsAction.java b/src/main/java/ee/carlrobert/codegpt/actions/toolwindow/DeleteAllConversationsAction.java index 36925a37..14f0726a 100644 --- a/src/main/java/ee/carlrobert/codegpt/actions/toolwindow/DeleteAllConversationsAction.java +++ b/src/main/java/ee/carlrobert/codegpt/actions/toolwindow/DeleteAllConversationsAction.java @@ -8,7 +8,7 @@ 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.TelemetryAction; +import ee.carlrobert.codegpt.telemetry.TelemetryAction; import ee.carlrobert.codegpt.conversations.ConversationService; import ee.carlrobert.codegpt.toolwindow.chat.standard.StandardChatToolWindowContentManager; import org.jetbrains.annotations.NotNull; @@ -45,7 +45,7 @@ public class DeleteAllConversationsAction extends AnAction { ConversationService.getInstance().clearAll(); project.getService(StandardChatToolWindowContentManager.class).resetActiveTab(); } finally { - TelemetryAction.createActionMessage(TelemetryAction.IDE_ACTION) + TelemetryAction.IDE_ACTION.createActionMessage() .property("action", ActionType.DELETE_ALL_CONVERSATIONS.name()) .send(); } diff --git a/src/main/java/ee/carlrobert/codegpt/actions/toolwindow/DeleteConversationAction.java b/src/main/java/ee/carlrobert/codegpt/actions/toolwindow/DeleteConversationAction.java index aa10958d..b0cba7d1 100644 --- a/src/main/java/ee/carlrobert/codegpt/actions/toolwindow/DeleteConversationAction.java +++ b/src/main/java/ee/carlrobert/codegpt/actions/toolwindow/DeleteConversationAction.java @@ -6,7 +6,7 @@ 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.TelemetryAction; +import ee.carlrobert.codegpt.telemetry.TelemetryAction; import ee.carlrobert.codegpt.conversations.ConversationService; import ee.carlrobert.codegpt.conversations.ConversationsState; import ee.carlrobert.codegpt.util.OverlayUtils; @@ -32,7 +32,7 @@ public class DeleteConversationAction extends AnAction { if (OverlayUtils.showDeleteConversationDialog() == Messages.YES) { var project = event.getProject(); if (project != null) { - TelemetryAction.createActionMessage(TelemetryAction.IDE_ACTION) + TelemetryAction.IDE_ACTION.createActionMessage() .property("action", ActionType.DELETE_CONVERSATION.name()) .send(); diff --git a/src/main/java/ee/carlrobert/codegpt/actions/toolwindow/OpenInEditorAction.java b/src/main/java/ee/carlrobert/codegpt/actions/toolwindow/OpenInEditorAction.java index 96bc8a1c..9202cc3f 100644 --- a/src/main/java/ee/carlrobert/codegpt/actions/toolwindow/OpenInEditorAction.java +++ b/src/main/java/ee/carlrobert/codegpt/actions/toolwindow/OpenInEditorAction.java @@ -11,7 +11,7 @@ import com.intellij.openapi.wm.ToolWindowManager; import com.intellij.testFramework.LightVirtualFile; import ee.carlrobert.codegpt.actions.ActionType; import ee.carlrobert.codegpt.actions.editor.EditorActionsUtil; -import ee.carlrobert.codegpt.TelemetryAction; +import ee.carlrobert.codegpt.telemetry.TelemetryAction; import ee.carlrobert.codegpt.conversations.ConversationsState; import java.time.format.DateTimeFormatter; import java.util.stream.Collectors; @@ -54,7 +54,7 @@ public class OpenInEditorAction extends AnAction { toolWindow.hide(); } } finally { - TelemetryAction.createActionMessage(TelemetryAction.IDE_ACTION) + TelemetryAction.IDE_ACTION.createActionMessage() .property("action", ActionType.OPEN_CONVERSATION_IN_EDITOR.name()) .send(); } diff --git a/src/main/java/ee/carlrobert/codegpt/completions/CompletionRequestHandler.java b/src/main/java/ee/carlrobert/codegpt/completions/CompletionRequestHandler.java index 39a7fe1d..626e119c 100644 --- a/src/main/java/ee/carlrobert/codegpt/completions/CompletionRequestHandler.java +++ b/src/main/java/ee/carlrobert/codegpt/completions/CompletionRequestHandler.java @@ -1,6 +1,6 @@ package ee.carlrobert.codegpt.completions; -import ee.carlrobert.codegpt.TelemetryAction; +import ee.carlrobert.codegpt.telemetry.TelemetryAction; import ee.carlrobert.codegpt.conversations.Conversation; import ee.carlrobert.codegpt.conversations.message.Message; import ee.carlrobert.codegpt.settings.state.AzureSettingsState; @@ -222,7 +222,7 @@ public class CompletionRequestHandler { if (settings.isUseYouService()) { service = "you"; } - TelemetryAction.createActionMessage(TelemetryAction.COMPLETION) + TelemetryAction.COMPLETION.createActionMessage() .property("conversationId", conversation.getId().toString()) .property("model", conversation.getModel()) .property("service", service) @@ -230,7 +230,7 @@ public class CompletionRequestHandler { } private void sendError(ErrorDetails error, Throwable ex) { - TelemetryAction.createActionMessage(TelemetryAction.COMPLETION_ERROR) + TelemetryAction.COMPLETION_ERROR.createActionMessage() .property("conversationId", conversation.getId().toString()) .property("model", conversation.getModel()) .error(new RuntimeException(error.toString(), ex)) diff --git a/src/main/java/ee/carlrobert/codegpt/toolwindow/chat/BaseChatToolWindowTabPanel.java b/src/main/java/ee/carlrobert/codegpt/toolwindow/chat/BaseChatToolWindowTabPanel.java index 98327f3e..a410da98 100644 --- a/src/main/java/ee/carlrobert/codegpt/toolwindow/chat/BaseChatToolWindowTabPanel.java +++ b/src/main/java/ee/carlrobert/codegpt/toolwindow/chat/BaseChatToolWindowTabPanel.java @@ -12,10 +12,8 @@ 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.TelemetryAction; import ee.carlrobert.codegpt.conversations.Conversation; import ee.carlrobert.codegpt.conversations.ConversationService; import ee.carlrobert.codegpt.conversations.message.Message; @@ -24,6 +22,7 @@ import ee.carlrobert.codegpt.credentials.OpenAICredentialsManager; import ee.carlrobert.codegpt.settings.state.AzureSettingsState; import ee.carlrobert.codegpt.settings.state.OpenAISettingsState; import ee.carlrobert.codegpt.settings.state.SettingsState; +import ee.carlrobert.codegpt.telemetry.TelemetryAction; import ee.carlrobert.codegpt.toolwindow.ModelIconLabel; import ee.carlrobert.codegpt.toolwindow.chat.components.ChatMessageResponseBody; import ee.carlrobert.codegpt.toolwindow.chat.components.ResponsePanel; @@ -189,7 +188,7 @@ public abstract class BaseChatToolWindowTabPanel implements ChatToolWindowTabPan requestHandler.addTokensExceededListener(() -> SwingUtilities.invokeLater(() -> { var answer = OverlayUtils.showTokenLimitExceededDialog(); if (answer == OK) { - TelemetryService.instance().action(TelemetryAction.IDE_ACTION.getCode()) + TelemetryAction.IDE_ACTION.createActionMessage() .property("action", "DISCARD_TOKEN_LIMIT") .property("model", conversation.getModel()) .send(); @@ -237,7 +236,7 @@ public abstract class BaseChatToolWindowTabPanel implements ChatToolWindowTabPan call(conversation, message, responsePanel, true); } - TelemetryAction.createActionMessage(TelemetryAction.IDE_ACTION) + TelemetryAction.IDE_ACTION.createActionMessage() .property("action", ActionType.RELOAD_MESSAGE.name()) .send(); }