Skip to content

Commit fabb4fb

Browse files
committed
refactor: try to add custom agent json
1 parent c36e8c0 commit fabb4fb

File tree

2 files changed

+69
-14
lines changed

2 files changed

+69
-14
lines changed

src/233/main/resources/META-INF/autodev-core.xml

Lines changed: 20 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -29,7 +29,8 @@
2929

3030
<applicationService serviceImplementation="cc.unitmesh.devti.settings.AutoDevSettingsState"/>
3131

32-
<statusBarWidgetFactory id="AIAssistant" implementation="cc.unitmesh.devti.statusbar.AutoDevStatusBarWidgetFactory"/>
32+
<statusBarWidgetFactory id="AIAssistant"
33+
implementation="cc.unitmesh.devti.statusbar.AutoDevStatusBarWidgetFactory"/>
3334

3435
<runConfigurationProducer
3536
implementation="cc.unitmesh.devti.runconfig.command.AutoDevFeatureConfigurationProducer"/>
@@ -49,13 +50,13 @@
4950
icon="cc.unitmesh.devti.AutoDevIcons.AI_COPILOT"
5051
factoryClass="cc.unitmesh.devti.gui.AutoDevToolWindowFactory"/>
5152

52-
<!-- <toolWindow id="AutoDev Pair"-->
53-
<!-- doNotActivateOnStart="true"-->
54-
<!-- anchor="left"-->
55-
<!-- secondary="true"-->
56-
<!-- canCloseContents="false"-->
57-
<!-- icon="cc.unitmesh.devti.AutoDevIcons.AI_PAIR"-->
58-
<!-- factoryClass="cc.unitmesh.devti.gui.AutoDevPairToolWindowFactory"/>-->
53+
<!-- <toolWindow id="AutoDev Pair"-->
54+
<!-- doNotActivateOnStart="true"-->
55+
<!-- anchor="left"-->
56+
<!-- secondary="true"-->
57+
<!-- canCloseContents="false"-->
58+
<!-- icon="cc.unitmesh.devti.AutoDevIcons.AI_PAIR"-->
59+
<!-- factoryClass="cc.unitmesh.devti.gui.AutoDevPairToolWindowFactory"/>-->
5960

6061
<notificationGroup id="AI notification group" displayType="STICKY_BALLOON" bundle="messages.AutoDevBundle"
6162
key="name"/>
@@ -72,6 +73,16 @@
7273
<daemon.intentionActionFilter
7374
implementation="cc.unitmesh.devti.gui.snippet.error.CodeBlockIntentionActionFilter"/>
7475

76+
<!-- <completion.contributor-->
77+
<!-- language="JSON"-->
78+
<!-- id="CustomAgentJsonCompletionContributor"-->
79+
<!-- implementationClass="cc.unitmesh.devti.custom.completion.CustomAgentJsonCompletionContributor"-->
80+
<!-- order="first, before JsonCompletionContributor"/>-->
81+
</extensions>
82+
83+
<extensions defaultExtensionNs="JavaScript.JsonSchema">
84+
<ProviderFactory implementation="cc.unitmesh.devti.custom.schema.AutoDevJsonSchemaProviderFactory"/>
85+
<ProviderFactory implementation="cc.unitmesh.devti.custom.schema.AutoDevPromptJsonSchemaProviderFactory"/>
7586
</extensions>
7687

7788
<extensionPoints>
@@ -136,7 +147,7 @@
136147

137148
<extensionPoint qualifiedName="cc.unitmesh.layeredArchProvider"
138149
interface="cc.unitmesh.devti.provider.architecture.LayeredArchProvider"
139-
dynamic="true" />
150+
dynamic="true"/>
140151

141152
<!-- TODO: find better way to share context -->
142153
<extensionPoint qualifiedName="cc.unitmesh.contextPrompter"
@@ -186,11 +197,6 @@
186197
<chatContextProvider implementation="cc.unitmesh.devti.provider.builtin.LanguageContextProvider"/>
187198
</extensions>
188199

189-
<extensions defaultExtensionNs="JavaScript.JsonSchema">
190-
<ProviderFactory implementation="cc.unitmesh.devti.custom.schema.AutoDevJsonSchemaProviderFactory"/>
191-
<ProviderFactory implementation="cc.unitmesh.devti.custom.schema.AutoDevPromptJsonSchemaProviderFactory"/>
192-
</extensions>
193-
194200
<actions>
195201
<group id="AutoDevIntentionsActionGroup" class="cc.unitmesh.devti.intentions.IntentionsActionGroup"
196202
icon="cc.unitmesh.devti.AutoDevIcons.AI_COPILOT" searchable="false">
Lines changed: 49 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,49 @@
1+
package cc.unitmesh.devti.custom.completion
2+
3+
import cc.unitmesh.devti.agent.model.CustomAgentConfig
4+
import cc.unitmesh.devti.custom.schema.CUSTOM_AGENT_FILE_NAME
5+
import com.intellij.codeInsight.completion.*
6+
import com.intellij.codeInsight.lookup.LookupElementBuilder
7+
import com.intellij.json.JsonElementTypes
8+
import com.intellij.json.psi.JsonStringLiteral
9+
import com.intellij.patterns.PlatformPatterns
10+
import com.intellij.patterns.PsiElementPattern
11+
import com.intellij.psi.PsiElement
12+
import com.intellij.util.ProcessingContext
13+
14+
class CustomAgentJsonCompletionContributor : CompletionContributor() {
15+
internal fun jsonPropertyName() = PlatformPatterns.psiElement(JsonElementTypes.IDENTIFIER)
16+
17+
internal fun jsonStringValue() =
18+
PlatformPatterns.psiElement(JsonElementTypes.SINGLE_QUOTED_STRING).withParent<JsonStringLiteral>()
19+
20+
internal inline fun <reified T : PsiElement> PsiElementPattern<*, *>.withParent() = this.withParent(T::class.java)
21+
22+
init {
23+
extend(
24+
CompletionType.BASIC,
25+
jsonPropertyName(),
26+
CustomAgentFieldsProvider()
27+
)
28+
}
29+
30+
override fun fillCompletionVariants(parameters: CompletionParameters, result: CompletionResultSet) {
31+
if (parameters.position.containingFile.name != CUSTOM_AGENT_FILE_NAME) {
32+
return
33+
}
34+
35+
super.fillCompletionVariants(parameters, result)
36+
}
37+
}
38+
39+
class CustomAgentFieldsProvider : CompletionProvider<CompletionParameters>() {
40+
override fun addCompletions(
41+
parameters: CompletionParameters,
42+
context: ProcessingContext,
43+
result: CompletionResultSet,
44+
) {
45+
CustomAgentConfig::class.java.declaredFields.forEach {
46+
result.addElement(LookupElementBuilder.create("\"" + it.name + "\""))
47+
}
48+
}
49+
}

0 commit comments

Comments
 (0)