diff --git a/.editorconfig b/.editorconfig index aada95f26a..35ebc0b32d 100644 --- a/.editorconfig +++ b/.editorconfig @@ -7,3 +7,8 @@ end_of_line = lf indent_style = space indent_size = 2 max_line_length = 80 + +[*.{kt,kts}] +indent_size = 4 +tab_width = 4 +ij_kotlin_code_style_defaults = KOTLIN_OFFICIAL diff --git a/packages/kilo-jetbrains/frontend/src/main/kotlin/ai/kilocode/client/session/SessionUi.kt b/packages/kilo-jetbrains/frontend/src/main/kotlin/ai/kilocode/client/session/SessionUi.kt index 81fafa5a64..5096b65daa 100644 --- a/packages/kilo-jetbrains/frontend/src/main/kotlin/ai/kilocode/client/session/SessionUi.kt +++ b/packages/kilo-jetbrains/frontend/src/main/kotlin/ai/kilocode/client/session/SessionUi.kt @@ -24,29 +24,21 @@ import ai.kilocode.log.KiloLog import com.intellij.ui.components.JBScrollPane import com.intellij.util.ui.JBUI import kotlinx.coroutines.CoroutineScope +import java.awt.Component import java.awt.BorderLayout -import java.awt.CardLayout import javax.swing.BoxLayout +import javax.swing.BoxLayout.Y_AXIS import javax.swing.JPanel import javax.swing.SwingUtilities /** - * Top-level session UI — a thin composition root. + * Top-level session UI composition root. * - * Responsibilities: - * - Creates and wires [ai.kilocode.client.session.update.SessionController], [SessionMessageListPanel], [EmptySessionPanel], - * [ConnectionPanel], - * [PromptPanel], [QuestionPanel], [PermissionPanel]. - * - Switches between the status (loading) card and the transcript card via - * [ai.kilocode.client.session.update.SessionControllerEvent.ViewChanged]. - * - Keeps [ConnectionPanel] on a transparent overlay layer directly above the - * prompt. - * - Delegates all transcript and dock updates to the panels themselves via - * [SessionModelEvent] listeners (no inline rendering logic here). - * - Scrolls to the bottom on new content. + * It builds the session panels, wires controller/model listeners, and swaps the + * center body between the empty state and the message list. * - * Views must never call RPC or services directly; everything goes through - * the controller. + * The only custom layout logic kept here is the prompt-relative connection + * overlay. All user actions still flow through [SessionController]. */ class SessionUi( project: Project, @@ -57,108 +49,127 @@ class SessionUi( ) : JPanel(BorderLayout()), Disposable { companion object { - private const val STATUS = "status" - private const val MESSAGES = "messages" private val LOG = KiloLog.create(SessionUi::class.java) } - private val flushMs = Registry.intValue("kilo.session.flushMs", EVENT_FLUSH_MS.toInt()) - .takeIf { it > 0 } - ?.toLong() - ?: EVENT_FLUSH_MS + private val project = project + + private val flushMs = + Registry.intValue("kilo.session.flushMs", EVENT_FLUSH_MS.toInt()) + .takeIf { it > 0 } + ?.toLong() + ?: EVENT_FLUSH_MS private val controller = SessionController( - this, null, sessions, workspace, app, cs, this, - flushMs = flushMs, - condense = Registry.`is`("kilo.session.condense", true), + this, null, sessions, workspace, app, cs, this, + flushMs = flushMs, + condense = Registry.`is`("kilo.session.condense", true), ) - // ------ card switch ------ - private val cards = CardLayout() - private val center = JPanel(cards) + private lateinit var root: SessionRootPanel - // ------ status (loading) panel ------ + private lateinit var sessionContent: JPanel - private val status = EmptySessionPanel(this) + private lateinit var emptyBody: EmptySessionPanel - // ------ transcript ------ + private lateinit var messageBody: SessionMessageListPanel - private val transcript = SessionMessageListPanel(controller.model, this) + private lateinit var messageScroll: JBScrollPane - private val scroll = JBScrollPane(transcript).apply { - border = JBUI.Borders.empty() - verticalScrollBarPolicy = JBScrollPane.VERTICAL_SCROLLBAR_AS_NEEDED - horizontalScrollBarPolicy = JBScrollPane.HORIZONTAL_SCROLLBAR_NEVER - } + private lateinit var question: QuestionPanel + private lateinit var permission: PermissionPanel + private lateinit var connection: ConnectionPanel - // ------ dock panels (above prompt) ------ + private lateinit var prompt: PromptPanel - private val question = QuestionPanel(controller) - private val permission = PermissionPanel(controller) - private val connection = ConnectionPanel(this, controller) - - // ------ prompt ------ - - private val prompt = PromptPanel( - project = project, - onSend = { text -> send(text) }, - onAbort = { controller.abort() }, - ) - - private val root = SessionRootPanel().apply { - content.layout = BorderLayout() - } init { - // South area: question dock, permission dock, and prompt stacked vertically. - // BoxLayout(Y_AXIS) collapses invisible panels to zero height automatically, - // so hiding a dock doesn't leave an empty gap above the prompt. - val south = JPanel().apply { - layout = BoxLayout(this, BoxLayout.Y_AXIS) - isOpaque = false + buildUi() + bindUi() + showBody(emptyBody) + } + + private fun buildUi() { + root = SessionRootPanel() + + sessionContent = JPanel(BorderLayout()) + + emptyBody = EmptySessionPanel(this) + messageBody = SessionMessageListPanel(controller.model, this) + + messageScroll = JBScrollPane(messageBody).apply { + border = JBUI.Borders.empty() + verticalScrollBarPolicy = JBScrollPane.VERTICAL_SCROLLBAR_AS_NEEDED + horizontalScrollBarPolicy = JBScrollPane.HORIZONTAL_SCROLLBAR_NEVER + } + question = QuestionPanel(controller) + permission = PermissionPanel(controller) + connection = ConnectionPanel(this, controller) + + prompt = PromptPanel( + project = project, + onSend = { text -> sendPrompot(text) }, + onAbort = { controller.abort() }, + ) + + root.content.add(sessionContent, BorderLayout.CENTER) + // Question and permission panels stay in normal flow so the prompt moves + // naturally when either dock appears. + root.content.add(JPanel().apply { + this.layout = BoxLayout(this, Y_AXIS) add(question) add(permission) add(prompt) - } + }, BorderLayout.SOUTH) - center.add(status, STATUS) - center.add(scroll, MESSAGES) - cards.show(center, STATUS) - - root.content.add(center, BorderLayout.CENTER) - root.content.add(south, BorderLayout.SOUTH) + // Keep connection status visually attached to the prompt without taking + // space in the south stack. root.addOverlay(connection) { panel, child -> - val box = SwingUtilities.convertRectangle(prompt.parent, prompt.bounds, panel) + val box = SwingUtilities.convertRectangle( + prompt.parent, + prompt.bounds, + panel + ) val h = child.preferredSize.height java.awt.Rectangle(box.x, maxOf(0, box.y - h), box.width, h) } add(root, BorderLayout.CENTER) + } - // ------ picker wiring ------ - + private fun bindUi() { prompt.mode.onSelect = { item -> controller.selectAgent(item.id) } prompt.model.onSelect = picker@{ item -> val group = item.group ?: return@picker controller.selectModel(group, item.id) } - // ------ controller lifecycle events ------ - controller.addListener(this) { event -> when (event) { is SessionControllerEvent.WorkspaceReady -> { val m = controller.model - prompt.mode.setItems(m.agents.map { LabelPicker.Item(it.name, it.display) }, m.agent) - val items = m.models.map { LabelPicker.Item(it.id, it.display, it.provider) } - val selected = m.model?.let { full -> items.firstOrNull { "${it.group}/${it.id}" == full }?.id } + prompt.mode.setItems(m.agents.map { + LabelPicker.Item( + it.name, + it.display + ) + }, m.agent) + val items = m.models.map { + LabelPicker.Item( + it.id, + it.display, + it.provider + ) + } + val selected = + m.model?.let { full -> items.firstOrNull { "${it.group}/${it.id}" == full }?.id } prompt.model.setItems(items, selected) prompt.setReady(m.isReady()) } is SessionControllerEvent.ViewChanged -> - cards.show(center, if (event.show) MESSAGES else STATUS) + showBody(if (event.show) messageScroll else emptyBody) is SessionControllerEvent.AppChanged, is SessionControllerEvent.WorkspaceChanged -> @@ -166,11 +177,9 @@ class SessionUi( } } - // ------ model events — prompt state + dock + auto-scroll ------ - controller.model.addListener(this) { event -> when (event) { - is SessionModelEvent.StateChanged -> onState(event.state) + is SessionModelEvent.StateChanged -> onStateChanged(event.state) is SessionModelEvent.TurnAdded, is SessionModelEvent.TurnUpdated, @@ -192,9 +201,7 @@ class SessionUi( } } - // ------ private helpers ------ - - private fun send(text: String) { + private fun sendPrompot(text: String) { if (text.isBlank()) return LOG.debug { "${ChatLogSummary.prompt(text)} agent=${controller.model.agent ?: "none"} model=${controller.model.model ?: "none"} ready=${controller.ready}" @@ -203,17 +210,19 @@ class SessionUi( prompt.clear() } - private fun onState(state: SessionState) { + private fun onStateChanged(state: SessionState) { prompt.setBusy(state.isBusy()) when (state) { is SessionState.AwaitingQuestion -> { permission.hidePanel() question.show(state.question) } + is SessionState.AwaitingPermission -> { question.hidePanel() permission.show(state.permission) } + else -> { question.hidePanel() permission.hidePanel() @@ -224,22 +233,24 @@ class SessionUi( } private fun scrollToBottom() { - val bar = scroll.verticalScrollBar + val bar = messageScroll.verticalScrollBar bar.value = bar.maximum } private fun refresh() { - center.revalidate() - center.repaint() - root.content.revalidate() - root.content.repaint() root.revalidate() root.repaint() } - override fun doLayout() { - super.doLayout() - root.doLayout() + private fun showBody(panel: Component) { + if (sessionContent.getComponentCount() == 1 && sessionContent.getComponent( + 0 + ) === panel + ) return + sessionContent.removeAll() + sessionContent.add(panel, BorderLayout.CENTER) + sessionContent.revalidate() + sessionContent.repaint() } override fun dispose() {} diff --git a/packages/kilo-jetbrains/frontend/src/main/kotlin/ai/kilocode/client/session/ui/SessionRootPanel.kt b/packages/kilo-jetbrains/frontend/src/main/kotlin/ai/kilocode/client/session/ui/SessionRootPanel.kt index 0c13740eb1..cb22774bc6 100644 --- a/packages/kilo-jetbrains/frontend/src/main/kotlin/ai/kilocode/client/session/ui/SessionRootPanel.kt +++ b/packages/kilo-jetbrains/frontend/src/main/kotlin/ai/kilocode/client/session/ui/SessionRootPanel.kt @@ -1,5 +1,6 @@ package ai.kilocode.client.session.ui +import java.awt.BorderLayout import java.awt.Dimension import java.awt.Rectangle import javax.swing.JComponent @@ -8,7 +9,7 @@ import javax.swing.JPanel class SessionRootPanel : JLayeredPane() { - val content = JPanel() + val content = JPanel(BorderLayout()) val overlay = Overlay() diff --git a/packages/kilo-jetbrains/frontend/src/test/kotlin/ai/kilocode/client/session/SessionUiLayoutTest.kt b/packages/kilo-jetbrains/frontend/src/test/kotlin/ai/kilocode/client/session/SessionUiLayoutTest.kt index 7522c71aa9..ed3ebcdbb7 100644 --- a/packages/kilo-jetbrains/frontend/src/test/kotlin/ai/kilocode/client/session/SessionUiLayoutTest.kt +++ b/packages/kilo-jetbrains/frontend/src/test/kotlin/ai/kilocode/client/session/SessionUiLayoutTest.kt @@ -106,7 +106,7 @@ class SessionUiLayoutTest : BasePlatformTestCase() { layout() assertFalse(question.isVisible) - controller().model.setState(questionState()) + controller().model.setState(questionStateChanged()) layout() assertTrue(question.isVisible) @@ -125,7 +125,7 @@ class SessionUiLayoutTest : BasePlatformTestCase() { layout() assertFalse(permission.isVisible) - controller().model.setState(permissionState()) + controller().model.setState(permissionStateChanged()) layout() assertTrue(permission.isVisible) @@ -162,7 +162,7 @@ class SessionUiLayoutTest : BasePlatformTestCase() { return field.get(ui) as SessionController } - private fun questionState() = SessionState.AwaitingQuestion( + private fun questionStateChanged() = SessionState.AwaitingQuestion( Question( id = "q1", items = listOf( @@ -177,7 +177,7 @@ class SessionUiLayoutTest : BasePlatformTestCase() { ) ) - private fun permissionState() = SessionState.AwaitingPermission( + private fun permissionStateChanged() = SessionState.AwaitingPermission( Permission( id = "p1", sessionId = "ses", diff --git a/packages/kilo-jetbrains/frontend/src/test/kotlin/ai/kilocode/client/session/ProgressPanelTest.kt b/packages/kilo-jetbrains/frontend/src/test/kotlin/ai/kilocode/client/session/ui/ProgressPanelTest.kt similarity index 96% rename from packages/kilo-jetbrains/frontend/src/test/kotlin/ai/kilocode/client/session/ProgressPanelTest.kt rename to packages/kilo-jetbrains/frontend/src/test/kotlin/ai/kilocode/client/session/ui/ProgressPanelTest.kt index 2162a5df50..271a89e561 100644 --- a/packages/kilo-jetbrains/frontend/src/test/kotlin/ai/kilocode/client/session/ProgressPanelTest.kt +++ b/packages/kilo-jetbrains/frontend/src/test/kotlin/ai/kilocode/client/session/ui/ProgressPanelTest.kt @@ -1,10 +1,9 @@ -package ai.kilocode.client.session +package ai.kilocode.client.session.ui import ai.kilocode.client.session.model.Permission import ai.kilocode.client.session.model.PermissionMeta import ai.kilocode.client.session.model.SessionModel import ai.kilocode.client.session.model.SessionState -import ai.kilocode.client.session.ui.ProgressPanel import com.intellij.openapi.Disposable import com.intellij.openapi.util.Disposer import com.intellij.testFramework.fixtures.BasePlatformTestCase diff --git a/packages/kilo-jetbrains/frontend/src/test/kotlin/ai/kilocode/client/session/SessionUiUpdateTest.kt b/packages/kilo-jetbrains/frontend/src/test/kotlin/ai/kilocode/client/session/ui/SessionUiUpdateTest.kt similarity index 98% rename from packages/kilo-jetbrains/frontend/src/test/kotlin/ai/kilocode/client/session/SessionUiUpdateTest.kt rename to packages/kilo-jetbrains/frontend/src/test/kotlin/ai/kilocode/client/session/ui/SessionUiUpdateTest.kt index c5044e1b34..18f6888bf8 100644 --- a/packages/kilo-jetbrains/frontend/src/test/kotlin/ai/kilocode/client/session/SessionUiUpdateTest.kt +++ b/packages/kilo-jetbrains/frontend/src/test/kotlin/ai/kilocode/client/session/ui/SessionUiUpdateTest.kt @@ -1,8 +1,7 @@ -package ai.kilocode.client.session +package ai.kilocode.client.session.ui import ai.kilocode.client.session.model.SessionModel import ai.kilocode.client.session.model.SessionState -import ai.kilocode.client.session.ui.SessionMessageListPanel import ai.kilocode.client.session.views.TextView import ai.kilocode.rpc.dto.MessageDto import ai.kilocode.rpc.dto.MessageTimeDto diff --git a/packages/kilo-jetbrains/frontend/src/test/kotlin/ai/kilocode/client/session/AppWatchingTest.kt b/packages/kilo-jetbrains/frontend/src/test/kotlin/ai/kilocode/client/session/update/AppWatchingTest.kt similarity index 93% rename from packages/kilo-jetbrains/frontend/src/test/kotlin/ai/kilocode/client/session/AppWatchingTest.kt rename to packages/kilo-jetbrains/frontend/src/test/kotlin/ai/kilocode/client/session/update/AppWatchingTest.kt index 157642dc92..521c5b2bb7 100644 --- a/packages/kilo-jetbrains/frontend/src/test/kotlin/ai/kilocode/client/session/AppWatchingTest.kt +++ b/packages/kilo-jetbrains/frontend/src/test/kotlin/ai/kilocode/client/session/update/AppWatchingTest.kt @@ -1,4 +1,4 @@ -package ai.kilocode.client.session +package ai.kilocode.client.session.update import ai.kilocode.rpc.dto.KiloAppStateDto import ai.kilocode.rpc.dto.KiloAppStatusDto diff --git a/packages/kilo-jetbrains/frontend/src/test/kotlin/ai/kilocode/client/session/ChatLoggingFlowTest.kt b/packages/kilo-jetbrains/frontend/src/test/kotlin/ai/kilocode/client/session/update/ChatLoggingFlowTest.kt similarity index 98% rename from packages/kilo-jetbrains/frontend/src/test/kotlin/ai/kilocode/client/session/ChatLoggingFlowTest.kt rename to packages/kilo-jetbrains/frontend/src/test/kotlin/ai/kilocode/client/session/update/ChatLoggingFlowTest.kt index 3a8e1f0c77..a2852df403 100644 --- a/packages/kilo-jetbrains/frontend/src/test/kotlin/ai/kilocode/client/session/ChatLoggingFlowTest.kt +++ b/packages/kilo-jetbrains/frontend/src/test/kotlin/ai/kilocode/client/session/update/ChatLoggingFlowTest.kt @@ -1,4 +1,4 @@ -package ai.kilocode.client.session +package ai.kilocode.client.session.update import ai.kilocode.client.session.model.SessionModelEvent import ai.kilocode.client.session.model.SessionState diff --git a/packages/kilo-jetbrains/frontend/src/test/kotlin/ai/kilocode/client/session/ConfigSelectionTest.kt b/packages/kilo-jetbrains/frontend/src/test/kotlin/ai/kilocode/client/session/update/ConfigSelectionTest.kt similarity index 96% rename from packages/kilo-jetbrains/frontend/src/test/kotlin/ai/kilocode/client/session/ConfigSelectionTest.kt rename to packages/kilo-jetbrains/frontend/src/test/kotlin/ai/kilocode/client/session/update/ConfigSelectionTest.kt index eb53354c48..ae79e031dc 100644 --- a/packages/kilo-jetbrains/frontend/src/test/kotlin/ai/kilocode/client/session/ConfigSelectionTest.kt +++ b/packages/kilo-jetbrains/frontend/src/test/kotlin/ai/kilocode/client/session/update/ConfigSelectionTest.kt @@ -1,4 +1,4 @@ -package ai.kilocode.client.session +package ai.kilocode.client.session.update class ConfigSelectionTest : SessionControllerTestBase() { diff --git a/packages/kilo-jetbrains/frontend/src/test/kotlin/ai/kilocode/client/session/HistoryLoadingTest.kt b/packages/kilo-jetbrains/frontend/src/test/kotlin/ai/kilocode/client/session/update/HistoryLoadingTest.kt similarity index 96% rename from packages/kilo-jetbrains/frontend/src/test/kotlin/ai/kilocode/client/session/HistoryLoadingTest.kt rename to packages/kilo-jetbrains/frontend/src/test/kotlin/ai/kilocode/client/session/update/HistoryLoadingTest.kt index 6a892a4a5f..3f7acda9ed 100644 --- a/packages/kilo-jetbrains/frontend/src/test/kotlin/ai/kilocode/client/session/HistoryLoadingTest.kt +++ b/packages/kilo-jetbrains/frontend/src/test/kotlin/ai/kilocode/client/session/update/HistoryLoadingTest.kt @@ -1,4 +1,4 @@ -package ai.kilocode.client.session +package ai.kilocode.client.session.update import ai.kilocode.client.session.model.SessionModelEvent import ai.kilocode.rpc.dto.MessageWithPartsDto diff --git a/packages/kilo-jetbrains/frontend/src/test/kotlin/ai/kilocode/client/session/ListenerLifecycleTest.kt b/packages/kilo-jetbrains/frontend/src/test/kotlin/ai/kilocode/client/session/update/ListenerLifecycleTest.kt similarity index 97% rename from packages/kilo-jetbrains/frontend/src/test/kotlin/ai/kilocode/client/session/ListenerLifecycleTest.kt rename to packages/kilo-jetbrains/frontend/src/test/kotlin/ai/kilocode/client/session/update/ListenerLifecycleTest.kt index f45af5a2eb..7580051223 100644 --- a/packages/kilo-jetbrains/frontend/src/test/kotlin/ai/kilocode/client/session/ListenerLifecycleTest.kt +++ b/packages/kilo-jetbrains/frontend/src/test/kotlin/ai/kilocode/client/session/update/ListenerLifecycleTest.kt @@ -1,7 +1,6 @@ -package ai.kilocode.client.session +package ai.kilocode.client.session.update import ai.kilocode.client.session.model.SessionState -import ai.kilocode.client.session.update.SessionControllerEvent import ai.kilocode.rpc.dto.ChatEventDto import ai.kilocode.rpc.dto.SessionStatusDto import com.intellij.openapi.util.Disposer diff --git a/packages/kilo-jetbrains/frontend/src/test/kotlin/ai/kilocode/client/session/MessageListTest.kt b/packages/kilo-jetbrains/frontend/src/test/kotlin/ai/kilocode/client/session/update/MessageListTest.kt similarity index 99% rename from packages/kilo-jetbrains/frontend/src/test/kotlin/ai/kilocode/client/session/MessageListTest.kt rename to packages/kilo-jetbrains/frontend/src/test/kotlin/ai/kilocode/client/session/update/MessageListTest.kt index a53b0655c1..b09da2064e 100644 --- a/packages/kilo-jetbrains/frontend/src/test/kotlin/ai/kilocode/client/session/MessageListTest.kt +++ b/packages/kilo-jetbrains/frontend/src/test/kotlin/ai/kilocode/client/session/update/MessageListTest.kt @@ -1,4 +1,4 @@ -package ai.kilocode.client.session +package ai.kilocode.client.session.update import ai.kilocode.client.session.model.SessionModelEvent import ai.kilocode.rpc.dto.ChatEventDto diff --git a/packages/kilo-jetbrains/frontend/src/test/kotlin/ai/kilocode/client/session/ProgressTrackingTest.kt b/packages/kilo-jetbrains/frontend/src/test/kotlin/ai/kilocode/client/session/update/ProgressTrackingTest.kt similarity index 99% rename from packages/kilo-jetbrains/frontend/src/test/kotlin/ai/kilocode/client/session/ProgressTrackingTest.kt rename to packages/kilo-jetbrains/frontend/src/test/kotlin/ai/kilocode/client/session/update/ProgressTrackingTest.kt index f4db69ddd5..03fd591a5a 100644 --- a/packages/kilo-jetbrains/frontend/src/test/kotlin/ai/kilocode/client/session/ProgressTrackingTest.kt +++ b/packages/kilo-jetbrains/frontend/src/test/kotlin/ai/kilocode/client/session/update/ProgressTrackingTest.kt @@ -1,4 +1,4 @@ -package ai.kilocode.client.session +package ai.kilocode.client.session.update import ai.kilocode.client.session.model.SessionModelEvent import ai.kilocode.client.session.model.SessionState diff --git a/packages/kilo-jetbrains/frontend/src/test/kotlin/ai/kilocode/client/session/PromptLifecycleTest.kt b/packages/kilo-jetbrains/frontend/src/test/kotlin/ai/kilocode/client/session/update/PromptLifecycleTest.kt similarity index 99% rename from packages/kilo-jetbrains/frontend/src/test/kotlin/ai/kilocode/client/session/PromptLifecycleTest.kt rename to packages/kilo-jetbrains/frontend/src/test/kotlin/ai/kilocode/client/session/update/PromptLifecycleTest.kt index 38cb5abf77..8e3cea3ba9 100644 --- a/packages/kilo-jetbrains/frontend/src/test/kotlin/ai/kilocode/client/session/PromptLifecycleTest.kt +++ b/packages/kilo-jetbrains/frontend/src/test/kotlin/ai/kilocode/client/session/update/PromptLifecycleTest.kt @@ -1,4 +1,4 @@ -package ai.kilocode.client.session +package ai.kilocode.client.session.update import ai.kilocode.client.session.model.SessionState import ai.kilocode.rpc.dto.ChatEventDto diff --git a/packages/kilo-jetbrains/frontend/src/test/kotlin/ai/kilocode/client/session/SessionArtifactsTest.kt b/packages/kilo-jetbrains/frontend/src/test/kotlin/ai/kilocode/client/session/update/SessionArtifactsTest.kt similarity index 99% rename from packages/kilo-jetbrains/frontend/src/test/kotlin/ai/kilocode/client/session/SessionArtifactsTest.kt rename to packages/kilo-jetbrains/frontend/src/test/kotlin/ai/kilocode/client/session/update/SessionArtifactsTest.kt index e25d544235..d2afd1387e 100644 --- a/packages/kilo-jetbrains/frontend/src/test/kotlin/ai/kilocode/client/session/SessionArtifactsTest.kt +++ b/packages/kilo-jetbrains/frontend/src/test/kotlin/ai/kilocode/client/session/update/SessionArtifactsTest.kt @@ -1,4 +1,4 @@ -package ai.kilocode.client.session +package ai.kilocode.client.session.update import ai.kilocode.rpc.dto.ChatEventDto import ai.kilocode.rpc.dto.DiffFileDto diff --git a/packages/kilo-jetbrains/frontend/src/test/kotlin/ai/kilocode/client/session/SessionControllerTestBase.kt b/packages/kilo-jetbrains/frontend/src/test/kotlin/ai/kilocode/client/session/update/SessionControllerTestBase.kt similarity index 99% rename from packages/kilo-jetbrains/frontend/src/test/kotlin/ai/kilocode/client/session/SessionControllerTestBase.kt rename to packages/kilo-jetbrains/frontend/src/test/kotlin/ai/kilocode/client/session/update/SessionControllerTestBase.kt index 83688adb05..0ed6891bf8 100644 --- a/packages/kilo-jetbrains/frontend/src/test/kotlin/ai/kilocode/client/session/SessionControllerTestBase.kt +++ b/packages/kilo-jetbrains/frontend/src/test/kotlin/ai/kilocode/client/session/update/SessionControllerTestBase.kt @@ -1,4 +1,4 @@ -package ai.kilocode.client.session +package ai.kilocode.client.session.update import ai.kilocode.client.app.KiloAppService import ai.kilocode.client.app.KiloSessionService diff --git a/packages/kilo-jetbrains/frontend/src/test/kotlin/ai/kilocode/client/session/SessionCreationTest.kt b/packages/kilo-jetbrains/frontend/src/test/kotlin/ai/kilocode/client/session/update/SessionCreationTest.kt similarity index 96% rename from packages/kilo-jetbrains/frontend/src/test/kotlin/ai/kilocode/client/session/SessionCreationTest.kt rename to packages/kilo-jetbrains/frontend/src/test/kotlin/ai/kilocode/client/session/update/SessionCreationTest.kt index ac7d2c9a94..f89654996d 100644 --- a/packages/kilo-jetbrains/frontend/src/test/kotlin/ai/kilocode/client/session/SessionCreationTest.kt +++ b/packages/kilo-jetbrains/frontend/src/test/kotlin/ai/kilocode/client/session/update/SessionCreationTest.kt @@ -1,4 +1,4 @@ -package ai.kilocode.client.session +package ai.kilocode.client.session.update class SessionCreationTest : SessionControllerTestBase() { diff --git a/packages/kilo-jetbrains/frontend/src/test/kotlin/ai/kilocode/client/session/SessionQueueCondenserTest.kt b/packages/kilo-jetbrains/frontend/src/test/kotlin/ai/kilocode/client/session/update/SessionQueueCondenserTest.kt similarity index 99% rename from packages/kilo-jetbrains/frontend/src/test/kotlin/ai/kilocode/client/session/SessionQueueCondenserTest.kt rename to packages/kilo-jetbrains/frontend/src/test/kotlin/ai/kilocode/client/session/update/SessionQueueCondenserTest.kt index f114099717..c7871d4332 100644 --- a/packages/kilo-jetbrains/frontend/src/test/kotlin/ai/kilocode/client/session/SessionQueueCondenserTest.kt +++ b/packages/kilo-jetbrains/frontend/src/test/kotlin/ai/kilocode/client/session/update/SessionQueueCondenserTest.kt @@ -1,6 +1,5 @@ -package ai.kilocode.client.session +package ai.kilocode.client.session.update -import ai.kilocode.client.session.update.SessionQueueCondenser import ai.kilocode.rpc.dto.ChatEventDto import ai.kilocode.rpc.dto.DiffFileDto import ai.kilocode.rpc.dto.MessageDto diff --git a/packages/kilo-jetbrains/frontend/src/test/kotlin/ai/kilocode/client/session/SessionRecoveryTest.kt b/packages/kilo-jetbrains/frontend/src/test/kotlin/ai/kilocode/client/session/update/SessionRecoveryTest.kt similarity index 99% rename from packages/kilo-jetbrains/frontend/src/test/kotlin/ai/kilocode/client/session/SessionRecoveryTest.kt rename to packages/kilo-jetbrains/frontend/src/test/kotlin/ai/kilocode/client/session/update/SessionRecoveryTest.kt index 05af93de74..e407fb61b4 100644 --- a/packages/kilo-jetbrains/frontend/src/test/kotlin/ai/kilocode/client/session/SessionRecoveryTest.kt +++ b/packages/kilo-jetbrains/frontend/src/test/kotlin/ai/kilocode/client/session/update/SessionRecoveryTest.kt @@ -1,4 +1,4 @@ -package ai.kilocode.client.session +package ai.kilocode.client.session.update import ai.kilocode.client.session.model.SessionState import ai.kilocode.rpc.dto.PermissionRequestDto diff --git a/packages/kilo-jetbrains/frontend/src/test/kotlin/ai/kilocode/client/session/SessionUpdateQueueTest.kt b/packages/kilo-jetbrains/frontend/src/test/kotlin/ai/kilocode/client/session/update/SessionUpdateQueueTest.kt similarity index 99% rename from packages/kilo-jetbrains/frontend/src/test/kotlin/ai/kilocode/client/session/SessionUpdateQueueTest.kt rename to packages/kilo-jetbrains/frontend/src/test/kotlin/ai/kilocode/client/session/update/SessionUpdateQueueTest.kt index ed084a1584..a204f24dc3 100644 --- a/packages/kilo-jetbrains/frontend/src/test/kotlin/ai/kilocode/client/session/SessionUpdateQueueTest.kt +++ b/packages/kilo-jetbrains/frontend/src/test/kotlin/ai/kilocode/client/session/update/SessionUpdateQueueTest.kt @@ -1,10 +1,9 @@ -package ai.kilocode.client.session +package ai.kilocode.client.session.update import ai.kilocode.client.session.model.Tool import ai.kilocode.client.session.model.ToolExecState import ai.kilocode.client.session.model.SessionModelEvent import ai.kilocode.client.session.model.SessionState -import ai.kilocode.client.session.update.SessionController import ai.kilocode.rpc.dto.ChatEventDto import ai.kilocode.rpc.dto.DiffFileDto import ai.kilocode.rpc.dto.SessionStatusDto diff --git a/packages/kilo-jetbrains/frontend/src/test/kotlin/ai/kilocode/client/session/StatusComputationTest.kt b/packages/kilo-jetbrains/frontend/src/test/kotlin/ai/kilocode/client/session/update/StatusComputationTest.kt similarity index 97% rename from packages/kilo-jetbrains/frontend/src/test/kotlin/ai/kilocode/client/session/StatusComputationTest.kt rename to packages/kilo-jetbrains/frontend/src/test/kotlin/ai/kilocode/client/session/update/StatusComputationTest.kt index 98719ec3c3..27adf70441 100644 --- a/packages/kilo-jetbrains/frontend/src/test/kotlin/ai/kilocode/client/session/StatusComputationTest.kt +++ b/packages/kilo-jetbrains/frontend/src/test/kotlin/ai/kilocode/client/session/update/StatusComputationTest.kt @@ -1,4 +1,4 @@ -package ai.kilocode.client.session +package ai.kilocode.client.session.update import ai.kilocode.client.session.model.SessionModelEvent import ai.kilocode.rpc.dto.ChatEventDto diff --git a/packages/kilo-jetbrains/frontend/src/test/kotlin/ai/kilocode/client/session/TurnLifecycleTest.kt b/packages/kilo-jetbrains/frontend/src/test/kotlin/ai/kilocode/client/session/update/TurnLifecycleTest.kt similarity index 99% rename from packages/kilo-jetbrains/frontend/src/test/kotlin/ai/kilocode/client/session/TurnLifecycleTest.kt rename to packages/kilo-jetbrains/frontend/src/test/kotlin/ai/kilocode/client/session/update/TurnLifecycleTest.kt index 317271b1a6..80aa836751 100644 --- a/packages/kilo-jetbrains/frontend/src/test/kotlin/ai/kilocode/client/session/TurnLifecycleTest.kt +++ b/packages/kilo-jetbrains/frontend/src/test/kotlin/ai/kilocode/client/session/update/TurnLifecycleTest.kt @@ -1,4 +1,4 @@ -package ai.kilocode.client.session +package ai.kilocode.client.session.update import ai.kilocode.client.session.model.SessionState import ai.kilocode.rpc.dto.ChatEventDto diff --git a/packages/kilo-jetbrains/frontend/src/test/kotlin/ai/kilocode/client/session/ViewSwitchingTest.kt b/packages/kilo-jetbrains/frontend/src/test/kotlin/ai/kilocode/client/session/update/ViewSwitchingTest.kt similarity index 94% rename from packages/kilo-jetbrains/frontend/src/test/kotlin/ai/kilocode/client/session/ViewSwitchingTest.kt rename to packages/kilo-jetbrains/frontend/src/test/kotlin/ai/kilocode/client/session/update/ViewSwitchingTest.kt index 66f687eb88..2edc4f7fbb 100644 --- a/packages/kilo-jetbrains/frontend/src/test/kotlin/ai/kilocode/client/session/ViewSwitchingTest.kt +++ b/packages/kilo-jetbrains/frontend/src/test/kotlin/ai/kilocode/client/session/update/ViewSwitchingTest.kt @@ -1,4 +1,4 @@ -package ai.kilocode.client.session +package ai.kilocode.client.session.update class ViewSwitchingTest : SessionControllerTestBase() { diff --git a/packages/kilo-jetbrains/frontend/src/test/kotlin/ai/kilocode/client/session/WorkspaceWatchingTest.kt b/packages/kilo-jetbrains/frontend/src/test/kotlin/ai/kilocode/client/session/update/WorkspaceWatchingTest.kt similarity index 96% rename from packages/kilo-jetbrains/frontend/src/test/kotlin/ai/kilocode/client/session/WorkspaceWatchingTest.kt rename to packages/kilo-jetbrains/frontend/src/test/kotlin/ai/kilocode/client/session/update/WorkspaceWatchingTest.kt index 92ba9f7978..2aa2ce3f66 100644 --- a/packages/kilo-jetbrains/frontend/src/test/kotlin/ai/kilocode/client/session/WorkspaceWatchingTest.kt +++ b/packages/kilo-jetbrains/frontend/src/test/kotlin/ai/kilocode/client/session/update/WorkspaceWatchingTest.kt @@ -1,4 +1,4 @@ -package ai.kilocode.client.session +package ai.kilocode.client.session.update class WorkspaceWatchingTest : SessionControllerTestBase() {