From c708c3ac4de52253dec48e9b531cf0be81fd4aa0 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Miko=C5=82aj=20Kondratek?= Date: Wed, 31 Jul 2024 09:47:17 +0200 Subject: [PATCH 1/9] Do not error on startAgent timeout --- .../sourcegraph/cody/agent/CodyAgentService.kt | 16 ++++++++++------ 1 file changed, 10 insertions(+), 6 deletions(-) diff --git a/src/main/kotlin/com/sourcegraph/cody/agent/CodyAgentService.kt b/src/main/kotlin/com/sourcegraph/cody/agent/CodyAgentService.kt index c1f911aa08..c87cda4c67 100644 --- a/src/main/kotlin/com/sourcegraph/cody/agent/CodyAgentService.kt +++ b/src/main/kotlin/com/sourcegraph/cody/agent/CodyAgentService.kt @@ -165,6 +165,7 @@ class CodyAgentService(private val project: Project) : Disposable { logger.error(msg) throw (CodyAgentException(msg)) } + val agent = future.get(45, TimeUnit.SECONDS) if (!agent.isConnected()) { val msg = "Failed to connect to agent Cody agent" @@ -175,15 +176,18 @@ class CodyAgentService(private val project: Project) : Disposable { codyAgent.complete(agent) CodyStatusService.resetApplication(project) } - } catch (e: Exception) { - val msg = - if (e is TimeoutException) - "Failed to start Cody agent in timely manner, please run any Cody action to retry" - else "Failed to start Cody agent" - logger.error(msg, e) + + } catch (e: TimeoutException) { + val msg = "Failed to start Cody agent in timely manner, please run any Cody action to retry" setAgentError(project, msg) codyAgent.completeExceptionally(CodyAgentException(msg, e)) } + catch (e: Exception) { + val msg = "Failed to start Cody agent" + setAgentError(project, msg) + logger.error(msg, e) + codyAgent.completeExceptionally(CodyAgentException(msg, e)) + } } return codyAgent } From 0bcc6806bd70ea7762a1ce08def32bce18135945 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Miko=C5=82aj=20Kondratek?= Date: Wed, 31 Jul 2024 10:32:25 +0200 Subject: [PATCH 2/9] Add timeout notification with the restart action --- .../cody/agent/CodyAgentService.kt | 1 + ...yConnectionTimeoutExceptionNotification.kt | 33 +++++++++++++++++++ .../agent/action/CodyAgentRestartAction.kt | 2 +- src/main/resources/CodyBundle.properties | 3 +- src/main/resources/META-INF/plugin.xml | 8 ++--- 5 files changed, 41 insertions(+), 6 deletions(-) create mode 100644 src/main/kotlin/com/sourcegraph/cody/agent/CodyConnectionTimeoutExceptionNotification.kt diff --git a/src/main/kotlin/com/sourcegraph/cody/agent/CodyAgentService.kt b/src/main/kotlin/com/sourcegraph/cody/agent/CodyAgentService.kt index c87cda4c67..c8d1844db1 100644 --- a/src/main/kotlin/com/sourcegraph/cody/agent/CodyAgentService.kt +++ b/src/main/kotlin/com/sourcegraph/cody/agent/CodyAgentService.kt @@ -179,6 +179,7 @@ class CodyAgentService(private val project: Project) : Disposable { } catch (e: TimeoutException) { val msg = "Failed to start Cody agent in timely manner, please run any Cody action to retry" + runInEdt { CodyConnectionTimeoutExceptionNotification().notify(project) } setAgentError(project, msg) codyAgent.completeExceptionally(CodyAgentException(msg, e)) } diff --git a/src/main/kotlin/com/sourcegraph/cody/agent/CodyConnectionTimeoutExceptionNotification.kt b/src/main/kotlin/com/sourcegraph/cody/agent/CodyConnectionTimeoutExceptionNotification.kt new file mode 100644 index 0000000000..d8a64fcf95 --- /dev/null +++ b/src/main/kotlin/com/sourcegraph/cody/agent/CodyConnectionTimeoutExceptionNotification.kt @@ -0,0 +1,33 @@ +package com.sourcegraph.cody.agent + +import com.intellij.notification.Notification +import com.intellij.notification.NotificationType +import com.intellij.notification.impl.NotificationFullContent +import com.intellij.openapi.actionSystem.ActionManager +import com.intellij.openapi.actionSystem.AnAction +import com.intellij.openapi.actionSystem.AnActionEvent +import com.sourcegraph.Icons +import com.sourcegraph.common.CodyBundle +import com.sourcegraph.common.NotificationGroups + +class CodyConnectionTimeoutExceptionNotification : + Notification( + NotificationGroups.SOURCEGRAPH_ERRORS, + CodyBundle.getString("notifications.cody-connection-timeout.title"), + CodyBundle.getString("notifications.cody-connection-timeout.detail"), + NotificationType.WARNING), + NotificationFullContent { + + init { + icon = Icons.CodyLogoSlash + + val action = ActionManager.getInstance().getAction("cody.restartCody") + addAction( + object : AnAction(action.templateText) { + override fun actionPerformed(e: AnActionEvent) { + expire() + action.actionPerformed(e) + } + }) + } +} diff --git a/src/main/kotlin/com/sourcegraph/cody/agent/action/CodyAgentRestartAction.kt b/src/main/kotlin/com/sourcegraph/cody/agent/action/CodyAgentRestartAction.kt index 5be207320a..0f937ae231 100644 --- a/src/main/kotlin/com/sourcegraph/cody/agent/action/CodyAgentRestartAction.kt +++ b/src/main/kotlin/com/sourcegraph/cody/agent/action/CodyAgentRestartAction.kt @@ -4,7 +4,7 @@ import com.intellij.openapi.actionSystem.AnActionEvent import com.sourcegraph.cody.agent.CodyAgentService import com.sourcegraph.common.ui.DumbAwareEDTAction -class CodyAgentRestartAction : DumbAwareEDTAction("Restart Cody Agent") { +class CodyAgentRestartAction : DumbAwareEDTAction() { override fun actionPerformed(event: AnActionEvent) { event.project?.let { CodyAgentService.getInstance(it).restartAgent(it) } } diff --git a/src/main/resources/CodyBundle.properties b/src/main/resources/CodyBundle.properties index 178ae74b51..fadb287421 100644 --- a/src/main/resources/CodyBundle.properties +++ b/src/main/resources/CodyBundle.properties @@ -175,6 +175,8 @@ notification.general.cody-not-running.title=Cody is starting... notification.general.cody-not-running.detail=Please wait a few seconds. If Cody still won't start, check the IDE logs for errors. notifications.edits.editing-not-available.title=Cody can't edit the file notifications.edits.editing-not-available.detail=This could be because the file is not writable or Cody has trouble communicating with the editor. +notifications.cody-connection-timeout.title=Cody's connection timeout +notifications.cody-connection-timeout.detail=Failed to start Cody in timely manner, please run any Cody action or restart Cody to retry. # Context Filters filter.action-in-ignored-file.detail=This file has been restricted by an admin. Autocomplete, commands, and other Cody features are disabled. @@ -186,7 +188,6 @@ filter.sidebar-panel-ignored-file.learn-more-cta=Learn more # Other Actions action.cody.not-working=Cody is disabled or still starting up -action.cody.restartAgent.text=Restart Cody Agent chat.enhanced_context.title=Chat Context Settings action.sourcegraph.disabled.description=Log in to Sourcegraph to enable Cody features diff --git a/src/main/resources/META-INF/plugin.xml b/src/main/resources/META-INF/plugin.xml index 3e21c5fe71..05ab5e7987 100644 --- a/src/main/resources/META-INF/plugin.xml +++ b/src/main/resources/META-INF/plugin.xml @@ -373,11 +373,11 @@ - - + text="Restart Cody" + description="Restarts Cody"> + Date: Wed, 31 Jul 2024 10:54:58 +0200 Subject: [PATCH 3/9] Do not try to shut down the exceptionally completed agent --- .../kotlin/com/sourcegraph/cody/agent/CodyAgentService.kt | 4 +--- 1 file changed, 1 insertion(+), 3 deletions(-) diff --git a/src/main/kotlin/com/sourcegraph/cody/agent/CodyAgentService.kt b/src/main/kotlin/com/sourcegraph/cody/agent/CodyAgentService.kt index c8d1844db1..30add2547e 100644 --- a/src/main/kotlin/com/sourcegraph/cody/agent/CodyAgentService.kt +++ b/src/main/kotlin/com/sourcegraph/cody/agent/CodyAgentService.kt @@ -176,14 +176,12 @@ class CodyAgentService(private val project: Project) : Disposable { codyAgent.complete(agent) CodyStatusService.resetApplication(project) } - } catch (e: TimeoutException) { val msg = "Failed to start Cody agent in timely manner, please run any Cody action to retry" runInEdt { CodyConnectionTimeoutExceptionNotification().notify(project) } setAgentError(project, msg) codyAgent.completeExceptionally(CodyAgentException(msg, e)) - } - catch (e: Exception) { + } catch (e: Exception) { val msg = "Failed to start Cody agent" setAgentError(project, msg) logger.error(msg, e) From 032129bd3043a561f6ae9b8dc5ad8feab68b18cc Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Miko=C5=82aj=20Kondratek?= Date: Wed, 31 Jul 2024 11:13:47 +0200 Subject: [PATCH 4/9] Add the restart action to the status widget group --- .../cody/agent/action/CodyAgentRestartAction.kt | 11 +++++++++-- .../cody/statusbar/CodyStatusBarActionGroup.kt | 10 ++++++---- 2 files changed, 15 insertions(+), 6 deletions(-) diff --git a/src/main/kotlin/com/sourcegraph/cody/agent/action/CodyAgentRestartAction.kt b/src/main/kotlin/com/sourcegraph/cody/agent/action/CodyAgentRestartAction.kt index 0f937ae231..2c1e90515a 100644 --- a/src/main/kotlin/com/sourcegraph/cody/agent/action/CodyAgentRestartAction.kt +++ b/src/main/kotlin/com/sourcegraph/cody/agent/action/CodyAgentRestartAction.kt @@ -1,11 +1,18 @@ package com.sourcegraph.cody.agent.action +import com.intellij.notification.NotificationsManager import com.intellij.openapi.actionSystem.AnActionEvent import com.sourcegraph.cody.agent.CodyAgentService +import com.sourcegraph.cody.agent.CodyConnectionTimeoutExceptionNotification import com.sourcegraph.common.ui.DumbAwareEDTAction -class CodyAgentRestartAction : DumbAwareEDTAction() { +class CodyAgentRestartAction : DumbAwareEDTAction("Restart Cody") { override fun actionPerformed(event: AnActionEvent) { - event.project?.let { CodyAgentService.getInstance(it).restartAgent(it) } + event.project?.let { project -> + CodyAgentService.getInstance(project).restartAgent(project) + NotificationsManager.getNotificationsManager() + .getNotificationsOfType(CodyConnectionTimeoutExceptionNotification::class.java, project) + .forEach { it.expire() } + } } } diff --git a/src/main/kotlin/com/sourcegraph/cody/statusbar/CodyStatusBarActionGroup.kt b/src/main/kotlin/com/sourcegraph/cody/statusbar/CodyStatusBarActionGroup.kt index ccb963d276..efaf47b688 100644 --- a/src/main/kotlin/com/sourcegraph/cody/statusbar/CodyStatusBarActionGroup.kt +++ b/src/main/kotlin/com/sourcegraph/cody/statusbar/CodyStatusBarActionGroup.kt @@ -4,6 +4,7 @@ import com.intellij.ide.actions.AboutAction import com.intellij.openapi.actionSystem.ActionUpdateThread import com.intellij.openapi.actionSystem.AnActionEvent import com.intellij.openapi.actionSystem.DefaultActionGroup +import com.sourcegraph.cody.agent.action.CodyAgentRestartAction import com.sourcegraph.common.CodyBundle import com.sourcegraph.common.CodyBundle.fmt import com.sourcegraph.common.UpgradeToCodyProNotification @@ -20,14 +21,15 @@ class CodyStatusBarActionGroup : DefaultActionGroup() { e.presentation.isVisible = ConfigUtil.isCodyEnabled() removeAll() - if (e.project?.let { CodyStatusService.getCurrentStatus(it) } == - CodyStatus.CodyAgentNotRunning) { + val status = e.project?.let { CodyStatusService.getCurrentStatus(it) } + if (status == CodyStatus.CodyAgentNotRunning || status == CodyStatus.AgentError) { addAll( + CodyAgentRestartAction(), OpenLogAction(), AboutAction().apply { templatePresentation.text = "Open About To Troubleshoot Issue" }, ReportCodyBugAction()) } else { - addAll(listOfNotNull(deriveWarningAction())) + addAll(listOfNotNull(deriveRateLimitErrorAction())) addSeparator() addAll( CodyManageAccountsAction(), @@ -43,7 +45,7 @@ class CodyStatusBarActionGroup : DefaultActionGroup() { } } - private fun deriveWarningAction(): RateLimitErrorWarningAction? { + private fun deriveRateLimitErrorAction(): RateLimitErrorWarningAction? { val autocompleteRLE = UpgradeToCodyProNotification.autocompleteRateLimitError.get() val chatRLE = UpgradeToCodyProNotification.chatRateLimitError.get() From 329e70f753808551be24d553fc3008c7f382c9f5 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Miko=C5=82aj=20Kondratek?= Date: Wed, 31 Jul 2024 11:14:55 +0200 Subject: [PATCH 5/9] Fixes --- .../CodyConnectionTimeoutExceptionNotification.kt | 14 ++------------ 1 file changed, 2 insertions(+), 12 deletions(-) diff --git a/src/main/kotlin/com/sourcegraph/cody/agent/CodyConnectionTimeoutExceptionNotification.kt b/src/main/kotlin/com/sourcegraph/cody/agent/CodyConnectionTimeoutExceptionNotification.kt index d8a64fcf95..de6bbff63d 100644 --- a/src/main/kotlin/com/sourcegraph/cody/agent/CodyConnectionTimeoutExceptionNotification.kt +++ b/src/main/kotlin/com/sourcegraph/cody/agent/CodyConnectionTimeoutExceptionNotification.kt @@ -3,10 +3,8 @@ package com.sourcegraph.cody.agent import com.intellij.notification.Notification import com.intellij.notification.NotificationType import com.intellij.notification.impl.NotificationFullContent -import com.intellij.openapi.actionSystem.ActionManager -import com.intellij.openapi.actionSystem.AnAction -import com.intellij.openapi.actionSystem.AnActionEvent import com.sourcegraph.Icons +import com.sourcegraph.cody.agent.action.CodyAgentRestartAction import com.sourcegraph.common.CodyBundle import com.sourcegraph.common.NotificationGroups @@ -20,14 +18,6 @@ class CodyConnectionTimeoutExceptionNotification : init { icon = Icons.CodyLogoSlash - - val action = ActionManager.getInstance().getAction("cody.restartCody") - addAction( - object : AnAction(action.templateText) { - override fun actionPerformed(e: AnActionEvent) { - expire() - action.actionPerformed(e) - } - }) + addAction(CodyAgentRestartAction()) } } From 677f70d5dfc7e691ccd5a64ce8c33f09d0cbcea4 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Miko=C5=82aj=20Kondratek?= Date: Wed, 31 Jul 2024 11:16:10 +0200 Subject: [PATCH 6/9] Add `secondsTimeout` param to `startAgent` --- .../kotlin/com/sourcegraph/cody/agent/CodyAgentService.kt | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/src/main/kotlin/com/sourcegraph/cody/agent/CodyAgentService.kt b/src/main/kotlin/com/sourcegraph/cody/agent/CodyAgentService.kt index 30add2547e..63190168e3 100644 --- a/src/main/kotlin/com/sourcegraph/cody/agent/CodyAgentService.kt +++ b/src/main/kotlin/com/sourcegraph/cody/agent/CodyAgentService.kt @@ -156,7 +156,7 @@ class CodyAgentService(private val project: Project) : Disposable { synchronized(startupActions) { startupActions.add(action) } } - fun startAgent(project: Project): CompletableFuture { + fun startAgent(project: Project, secondsTimeout: Long = 45): CompletableFuture { ApplicationManager.getApplication().executeOnPooledThread { try { val future = @@ -166,7 +166,7 @@ class CodyAgentService(private val project: Project) : Disposable { throw (CodyAgentException(msg)) } - val agent = future.get(45, TimeUnit.SECONDS) + val agent = future.get(secondsTimeout, TimeUnit.SECONDS) if (!agent.isConnected()) { val msg = "Failed to connect to agent Cody agent" logger.error(msg) @@ -203,10 +203,10 @@ class CodyAgentService(private val project: Project) : Disposable { } } - fun restartAgent(project: Project): CompletableFuture { + fun restartAgent(project: Project, secondsTimeout: Long = 90): CompletableFuture { synchronized(this) { stopAgent(project) - return startAgent(project) + return startAgent(project, secondsTimeout) } } From 630a4a7c487f4dde9fedd80f71083c4010f4a001 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Miko=C5=82aj=20Kondratek?= Date: Wed, 31 Jul 2024 11:53:58 +0200 Subject: [PATCH 7/9] Make sure the notification balloon is displayed only once at the time --- .../com/sourcegraph/cody/agent/CodyAgentService.kt | 14 ++++++++++++-- 1 file changed, 12 insertions(+), 2 deletions(-) diff --git a/src/main/kotlin/com/sourcegraph/cody/agent/CodyAgentService.kt b/src/main/kotlin/com/sourcegraph/cody/agent/CodyAgentService.kt index 63190168e3..022d246f19 100644 --- a/src/main/kotlin/com/sourcegraph/cody/agent/CodyAgentService.kt +++ b/src/main/kotlin/com/sourcegraph/cody/agent/CodyAgentService.kt @@ -1,5 +1,6 @@ package com.sourcegraph.cody.agent +import com.intellij.notification.NotificationsManager import com.intellij.openapi.Disposable import com.intellij.openapi.application.ApplicationManager import com.intellij.openapi.components.Service @@ -166,7 +167,7 @@ class CodyAgentService(private val project: Project) : Disposable { throw (CodyAgentException(msg)) } - val agent = future.get(secondsTimeout, TimeUnit.SECONDS) + val agent = future.get(1, TimeUnit.SECONDS) if (!agent.isConnected()) { val msg = "Failed to connect to agent Cody agent" logger.error(msg) @@ -178,7 +179,16 @@ class CodyAgentService(private val project: Project) : Disposable { } } catch (e: TimeoutException) { val msg = "Failed to start Cody agent in timely manner, please run any Cody action to retry" - runInEdt { CodyConnectionTimeoutExceptionNotification().notify(project) } + runInEdt { + val isNoBalloonDisplayed = + NotificationsManager.getNotificationsManager() + .getNotificationsOfType( + CodyConnectionTimeoutExceptionNotification::class.java, project) + .all { it.balloon == null } + if (isNoBalloonDisplayed) { + CodyConnectionTimeoutExceptionNotification().notify(project) + } + } setAgentError(project, msg) codyAgent.completeExceptionally(CodyAgentException(msg, e)) } catch (e: Exception) { From 1d1465e903ee0e0712f4dca4de3f33b628be80ae Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Miko=C5=82aj=20Kondratek?= Date: Mon, 5 Aug 2024 11:51:29 +0200 Subject: [PATCH 8/9] Fixes --- .../kotlin/com/sourcegraph/cody/agent/CodyAgentService.kt | 7 ++++--- .../sourcegraph/cody/statusbar/CodyStatusBarActionGroup.kt | 7 +------ src/main/resources/CodyBundle.properties | 5 +++-- 3 files changed, 8 insertions(+), 11 deletions(-) diff --git a/src/main/kotlin/com/sourcegraph/cody/agent/CodyAgentService.kt b/src/main/kotlin/com/sourcegraph/cody/agent/CodyAgentService.kt index 022d246f19..ad84e2e35d 100644 --- a/src/main/kotlin/com/sourcegraph/cody/agent/CodyAgentService.kt +++ b/src/main/kotlin/com/sourcegraph/cody/agent/CodyAgentService.kt @@ -19,6 +19,7 @@ import com.sourcegraph.cody.error.CodyConsole import com.sourcegraph.cody.ignore.IgnoreOracle import com.sourcegraph.cody.listeners.CodyFileEditorListener import com.sourcegraph.cody.statusbar.CodyStatusService +import com.sourcegraph.common.CodyBundle import com.sourcegraph.utils.CodyEditorUtil import java.util.Timer import java.util.TimerTask @@ -167,7 +168,7 @@ class CodyAgentService(private val project: Project) : Disposable { throw (CodyAgentException(msg)) } - val agent = future.get(1, TimeUnit.SECONDS) + val agent = future.get(45, TimeUnit.SECONDS) if (!agent.isConnected()) { val msg = "Failed to connect to agent Cody agent" logger.error(msg) @@ -178,7 +179,7 @@ class CodyAgentService(private val project: Project) : Disposable { CodyStatusService.resetApplication(project) } } catch (e: TimeoutException) { - val msg = "Failed to start Cody agent in timely manner, please run any Cody action to retry" + val msg = CodyBundle.getString("error.cody-connection-timeout.message") runInEdt { val isNoBalloonDisplayed = NotificationsManager.getNotificationsManager() @@ -192,7 +193,7 @@ class CodyAgentService(private val project: Project) : Disposable { setAgentError(project, msg) codyAgent.completeExceptionally(CodyAgentException(msg, e)) } catch (e: Exception) { - val msg = "Failed to start Cody agent" + val msg = CodyBundle.getString("error.cody-starting.message") setAgentError(project, msg) logger.error(msg, e) codyAgent.completeExceptionally(CodyAgentException(msg, e)) diff --git a/src/main/kotlin/com/sourcegraph/cody/statusbar/CodyStatusBarActionGroup.kt b/src/main/kotlin/com/sourcegraph/cody/statusbar/CodyStatusBarActionGroup.kt index efaf47b688..671ff209ef 100644 --- a/src/main/kotlin/com/sourcegraph/cody/statusbar/CodyStatusBarActionGroup.kt +++ b/src/main/kotlin/com/sourcegraph/cody/statusbar/CodyStatusBarActionGroup.kt @@ -1,6 +1,5 @@ package com.sourcegraph.cody.statusbar -import com.intellij.ide.actions.AboutAction import com.intellij.openapi.actionSystem.ActionUpdateThread import com.intellij.openapi.actionSystem.AnActionEvent import com.intellij.openapi.actionSystem.DefaultActionGroup @@ -23,11 +22,7 @@ class CodyStatusBarActionGroup : DefaultActionGroup() { removeAll() val status = e.project?.let { CodyStatusService.getCurrentStatus(it) } if (status == CodyStatus.CodyAgentNotRunning || status == CodyStatus.AgentError) { - addAll( - CodyAgentRestartAction(), - OpenLogAction(), - AboutAction().apply { templatePresentation.text = "Open About To Troubleshoot Issue" }, - ReportCodyBugAction()) + addAll(CodyAgentRestartAction(), OpenLogAction(), ReportCodyBugAction()) } else { addAll(listOfNotNull(deriveRateLimitErrorAction())) addSeparator() diff --git a/src/main/resources/CodyBundle.properties b/src/main/resources/CodyBundle.properties index fadb287421..fbbedb79c6 100644 --- a/src/main/resources/CodyBundle.properties +++ b/src/main/resources/CodyBundle.properties @@ -176,8 +176,9 @@ notification.general.cody-not-running.detail=Please wait a few seconds. If Cody notifications.edits.editing-not-available.title=Cody can't edit the file notifications.edits.editing-not-available.detail=This could be because the file is not writable or Cody has trouble communicating with the editor. notifications.cody-connection-timeout.title=Cody's connection timeout -notifications.cody-connection-timeout.detail=Failed to start Cody in timely manner, please run any Cody action or restart Cody to retry. - +notifications.cody-connection-timeout.detail=Cody took longer than expected to start. Please run any Cody action or restart Cody to retry. +error.cody-connection-timeout.message=Failed to start Cody in timely manner, please run any Cody action to retry +error.cody-starting.message=Failed to start Cody # Context Filters filter.action-in-ignored-file.detail=This file has been restricted by an admin. Autocomplete, commands, and other Cody features are disabled. filter.action-in-ignored-file.learn-more-cta=Learn about Context Filters From 10028ab9d39dea2e73bd82d30d0325fedb2be4da Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Miko=C5=82aj=20Kondratek?= Date: Mon, 5 Aug 2024 12:45:48 +0200 Subject: [PATCH 9/9] Fixes --- src/main/kotlin/com/sourcegraph/cody/agent/CodyAgentService.kt | 1 + 1 file changed, 1 insertion(+) diff --git a/src/main/kotlin/com/sourcegraph/cody/agent/CodyAgentService.kt b/src/main/kotlin/com/sourcegraph/cody/agent/CodyAgentService.kt index ad84e2e35d..64b006ec46 100644 --- a/src/main/kotlin/com/sourcegraph/cody/agent/CodyAgentService.kt +++ b/src/main/kotlin/com/sourcegraph/cody/agent/CodyAgentService.kt @@ -3,6 +3,7 @@ package com.sourcegraph.cody.agent import com.intellij.notification.NotificationsManager import com.intellij.openapi.Disposable import com.intellij.openapi.application.ApplicationManager +import com.intellij.openapi.application.runInEdt import com.intellij.openapi.components.Service import com.intellij.openapi.components.service import com.intellij.openapi.diagnostic.Logger