Skip to content

Commit f1ee6ee

Browse files
author
hongyu9
committed
2 parents 8b9fba8 + 8c282cd commit f1ee6ee

File tree

18 files changed

+485
-5
lines changed

18 files changed

+485
-5
lines changed

README.md

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -23,6 +23,7 @@ RunVSAgent is an innovative cross-platform development tool that enables develop
2323

2424
- **[Roo Code](https://roocode.com)**: Advanced AI-powered coding assistant with intelligent code generation and refactoring capabilities
2525
- **[Cline](https://cline.bot)**: Autonomous coding agent right in your IDE, capable of creating/editing files, executing commands, using the browser, and more with your permission every step of the way.
26+
- **[Kilo Code](https://kilocode.ai)**: Open-source VS Code AI agent
2627

2728
## 🔧 Supported IDEs
2829

@@ -209,6 +210,7 @@ We thank all the contributors who have helped make this project better:
209210

210211
- [junbaor](https://github.com/junbaor)
211212
- [aheizi](https://github.com/aheizi)
213+
- [Adam Hill](https://github.com/adamhill)
212214

213215
### License
214216

README_zh.md

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -23,6 +23,7 @@ RunVSAgent 是一个创新的跨平台开发工具,使开发者能够在 JetBr
2323

2424
- **[Roo Code](https://roocode.com)**:具有智能代码生成和重构功能的高级 AI 驱动编码助手
2525
- **[Cline](https://cline.bot)**: 一个就在你 IDE 里的自主编码代理,在你的许可下,能够创建/编辑文件、执行命令、使用浏览器等更多功能,并在每一步都征求你的确认。
26+
- **[Kilo Code](https://kilocode.ai)**: 开源的VSCode AI Agent
2627

2728
## 🔧 支持的 IDE
2829

@@ -208,6 +209,7 @@ RunVSAgent/
208209

209210
- [junbaor](https://github.com/junbaor)
210211
- [aheizi](https://github.com/aheizi)
212+
- [Adam Hill](https://github.com/adamhill)
211213

212214
### 许可证
213215

jetbrains_plugin/README_EXTENSIONS.md

Lines changed: 13 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -12,6 +12,18 @@ RunVSAgent now supports a modular extension system that allows you to use differ
1212
- **Publisher**: WeCode-AI
1313
- **Directory**: `roo-code/`
1414

15+
### 2. Cline AI
16+
- **ID**: `cline`
17+
- **Description**: AI-powered coding assistant with advanced features
18+
- **Publisher**: Cline-AI
19+
- **Directory**: `cline/`
20+
21+
### 3. Kilo Code
22+
- **ID**: `kilo-code`
23+
- **Description**: AI-powered code assistant with advanced capabilities
24+
- **Publisher**: Kilo-AI
25+
- **Directory**: `kilo-code/`
26+
1527
## Quick Start
1628

1729
### For Users
@@ -28,7 +40,7 @@ RunVSAgent now supports a modular extension system that allows you to use differ
2840
```properties
2941
extension.type=roo-code
3042
```
31-
- Supported values: `roo-code`
43+
- Supported values: `roo-code`, `cline`, `kilo-code`
3244

3345
3. **Extension Directory Structure**:
3446
```

jetbrains_plugin/src/main/kotlin/com/sina/weibo/agent/actors/MainThreadLanguageFeaturesShape.kt

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -36,7 +36,7 @@ interface MainThreadLanguageFeaturesShape : Disposable {
3636
* @param selector Document selector
3737
* @param eventHandle Event handle
3838
*/
39-
fun registerCodeLensSupport(handle: Int, selector: List<Map<String, Any?>>, eventHandle: Int?)
39+
fun registerCodeLensSupport(handle: Number, selector: List<Map<String, Any?>>, eventHandle: Number?)
4040

4141
/**
4242
* Emits code lens event.
@@ -459,7 +459,7 @@ class MainThreadLanguageFeatures : MainThreadLanguageFeaturesShape {
459459
logger.info("Registering document symbol provider: handle=$handle, selector=$selector, label=$label")
460460
}
461461

462-
override fun registerCodeLensSupport(handle: Int, selector: List<Map<String, Any?>>, eventHandle: Int?) {
462+
override fun registerCodeLensSupport(handle: Number, selector: List<Map<String, Any?>>, eventHandle: Number?) {
463463
logger.info("Registering code lens support: handle=$handle, selector=$selector, eventHandle=$eventHandle")
464464
}
465465

Lines changed: 62 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,62 @@
1+
// SPDX-FileCopyrightText: 2025 Weibo, Inc.
2+
//
3+
// SPDX-License-Identifier: Apache-2.0
4+
5+
package com.sina.weibo.agent.actors
6+
7+
import com.intellij.openapi.Disposable
8+
import com.intellij.openapi.diagnostic.Logger
9+
import java.net.URI
10+
11+
/**
12+
* Main thread search service interface.
13+
* Corresponds to the MainThreadSearchShape interface in VSCode.
14+
*/
15+
interface MainThreadStatusBarShape : Disposable {
16+
fun setEntry(
17+
entryId: String,
18+
id: String,
19+
extensionId: String?,
20+
name: String,
21+
text: String,
22+
tooltip: Any?,
23+
hasTooltipProvider: Boolean,
24+
command: Map<Any, Any>?,
25+
color: Any?,
26+
backgroundColor: Any?,
27+
alignLeft: Boolean,
28+
priority: Number?,
29+
accessibilityInformation: Any?
30+
)
31+
32+
}
33+
34+
/**
35+
* Implementation of the main thread search service.
36+
* Provides search-related functionality for the IDEA platform.
37+
*/
38+
class MainThreadStatusBar : MainThreadStatusBarShape {
39+
private val logger = Logger.getInstance(MainThreadStatusBar::class.java)
40+
override fun setEntry(
41+
entryId: String,
42+
id: String,
43+
extensionId: String?,
44+
name: String,
45+
text: String,
46+
tooltip: Any?,
47+
hasTooltipProvider: Boolean,
48+
command: Map<Any, Any>?,
49+
color: Any?,
50+
backgroundColor: Any?,
51+
alignLeft: Boolean,
52+
priority: Number?,
53+
accessibilityInformation: Any?
54+
) {
55+
logger.info("Set entry $entryId")
56+
}
57+
58+
override fun dispose() {
59+
logger.info("Disposing main thread")
60+
}
61+
62+
}

jetbrains_plugin/src/main/kotlin/com/sina/weibo/agent/core/RPCManager.kt

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -34,9 +34,11 @@ class RPCManager(
3434
setupExtensionRequiredProtocols()
3535
setupWeCodeRequiredProtocols()
3636
setupRooCodeFuncitonProtocols()
37+
setupKiloCodeFunctionProtocols()
3738
setupWebviewProtocols()
3839
}
3940

41+
4042
/**
4143
* Start initializing plugin environment
4244
* Send configuration and workspace information to extension process
@@ -141,6 +143,7 @@ class RPCManager(
141143

142144
// MainThreadConfiguration
143145
rpcProtocol.set(ServiceProxyRegistry.MainContext.MainThreadConfiguration, MainThreadConfiguration())
146+
144147
}
145148

146149
/**
@@ -191,6 +194,7 @@ class RPCManager(
191194

192195
//MainThreadDocuments
193196
rpcProtocol.set(ServiceProxyRegistry.MainContext.MainThreadDocuments, MainThreadDocuments(project))
197+
194198
}
195199

196200
/**
@@ -242,6 +246,10 @@ class RPCManager(
242246
// MainThreadSecretState
243247
rpcProtocol.set(ServiceProxyRegistry.MainContext.MainThreadSecretState, MainThreadSecretState())
244248
}
249+
private fun setupKiloCodeFunctionProtocols() {
250+
// MainThreadStatusBar
251+
rpcProtocol.set(ServiceProxyRegistry.MainContext.MainThreadStatusBar, MainThreadStatusBar())
252+
}
245253

246254
private fun setupWebviewProtocols() {
247255
logger.info("Setting up protocol handlers required for Webview")

jetbrains_plugin/src/main/kotlin/com/sina/weibo/agent/core/ServiceProxyRegistry.kt

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -228,7 +228,7 @@ class ServiceProxyRegistry private constructor() {
228228
val MainThreadProgress = createProxyIdentifier<Any>("MainThreadProgress")
229229
val MainThreadQuickDiff = createProxyIdentifier<Any>("MainThreadQuickDiff")
230230
val MainThreadQuickOpen = createProxyIdentifier<Any>("MainThreadQuickOpen")
231-
val MainThreadStatusBar = createProxyIdentifier<Any>("MainThreadStatusBar")
231+
val MainThreadStatusBar = createProxyIdentifier<MainThreadStatusBarShape>("MainThreadStatusBar")
232232
val MainThreadSecretState = createProxyIdentifier<MainThreadSecretStateShape>("MainThreadSecretState")
233233
val MainThreadStorage = createProxyIdentifier<MainThreadStorageShape>("MainThreadStorage")
234234
val MainThreadSpeech = createProxyIdentifier<Any>("MainThreadSpeechProvider")

jetbrains_plugin/src/main/kotlin/com/sina/weibo/agent/extensions/common/ExtensionType.kt

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,7 @@ package com.sina.weibo.agent.extensions.common
77
enum class ExtensionType(val code: String, val displayName: String, val description: String) {
88
ROO_CODE("roo-code", "Roo Code", "AI-powered code assistant"),
99
CLINE("cline", "Cline AI", "AI-powered coding assistant with advanced features"),
10+
KILO_CODE("kilo-code", "Kilo Code", "AI-powered code assistant with advanced capabilities"),
1011
;
1112

1213
companion object {

jetbrains_plugin/src/main/kotlin/com/sina/weibo/agent/extensions/config/ExtensionConfiguration.kt

Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -181,6 +181,19 @@ data class ExtensionConfig(
181181
capabilities = emptyMap(),
182182
extensionDependencies = emptyList()
183183
)
184+
ExtensionType.KILO_CODE -> ExtensionConfig(
185+
extensionType = extensionType,
186+
codeDir = "kilo-code",
187+
displayName = "Kilo Code",
188+
description = "AI-powered code assistant with advanced capabilities",
189+
publisher = "Kilo-AI",
190+
version = "1.0.0",
191+
mainFile = "./dist/extension.js",
192+
activationEvents = listOf("onStartupFinished"),
193+
engines = mapOf("vscode" to "^1.0.0"),
194+
capabilities = emptyMap(),
195+
extensionDependencies = emptyList()
196+
)
184197
}
185198
}
186199

jetbrains_plugin/src/main/kotlin/com/sina/weibo/agent/extensions/core/ExtensionManager.kt

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -11,6 +11,7 @@ import com.sina.weibo.agent.extensions.common.ExtensionChangeListener
1111
import com.sina.weibo.agent.extensions.config.ExtensionProvider
1212
import com.sina.weibo.agent.extensions.plugin.cline.ClineExtensionProvider
1313
import com.sina.weibo.agent.extensions.plugin.roo.RooExtensionProvider
14+
import com.sina.weibo.agent.extensions.plugin.kilo.KiloCodeExtensionProvider
1415
import com.sina.weibo.agent.extensions.ui.buttons.DynamicButtonManager
1516
import java.util.concurrent.CompletableFuture
1617
import java.util.concurrent.ConcurrentHashMap
@@ -107,6 +108,7 @@ class ExtensionManager(private val project: Project) {
107108
return ArrayList<ExtensionProvider>().apply {
108109
add(RooExtensionProvider())
109110
add(ClineExtensionProvider())
111+
add(KiloCodeExtensionProvider())
110112
}
111113
}
112114

0 commit comments

Comments
 (0)