Skip to content

Commit a58ae81

Browse files
authored
1.8.5 (#201)
1 parent 83f28ad commit a58ae81

File tree

4 files changed

+39
-19
lines changed

4 files changed

+39
-19
lines changed

build.gradle.kts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -28,7 +28,7 @@ repositories {
2828

2929
val jetty_version = "11.0.24"
3030
val slf4j_version = "2.0.16"
31-
val skyenet_version = "1.2.16"
31+
val skyenet_version = "1.2.17"
3232
val remoterobot_version = "0.11.23"
3333
val jackson_version = "2.17.2"
3434

src/main/kotlin/com/github/simiacryptus/aicoder/actions/knowledge/DocumentDataExtractorAction.kt

Lines changed: 10 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -12,9 +12,11 @@ import com.intellij.openapi.actionSystem.ActionUpdateThread
1212
import com.intellij.openapi.actionSystem.AnActionEvent
1313
import com.intellij.openapi.vfs.VirtualFile
1414
import com.simiacryptus.jopenai.models.chatModel
15-
import com.simiacryptus.skyenet.apps.parse.CodeParsingModel
1615
import com.simiacryptus.skyenet.apps.parse.DocumentParserApp
1716
import com.simiacryptus.skyenet.apps.parse.DocumentParsingModel
17+
import com.simiacryptus.skyenet.apps.parse.ParsingModel
18+
import com.simiacryptus.skyenet.apps.parse.ParsingModel.DocumentData
19+
import com.simiacryptus.skyenet.apps.parse.ParsingModelType
1820
import com.simiacryptus.skyenet.core.platform.Session
1921
import com.simiacryptus.skyenet.core.platform.file.DataStorage
2022
import com.simiacryptus.skyenet.webui.application.AppInfoData
@@ -26,6 +28,7 @@ import java.nio.file.Path
2628
class DocumentDataExtractorAction : BaseAction() {
2729
val path = "/pdfExtractor"
2830
private var settings = DocumentParserApp.Settings()
31+
private var modelType = ParsingModelType.Document
2932

3033
override fun getActionUpdateThread() = ActionUpdateThread.BGT
3134

@@ -68,29 +71,24 @@ class DocumentDataExtractorAction : BaseAction() {
6871
return
6972
}
7073
val selectedFile = processableFiles.first()
71-
val configDialog = DocumentDataExtractorConfigDialog(e.project, settings)
74+
val configDialog = DocumentDataExtractorConfigDialog(e.project, settings, modelType)
7275
if (!configDialog.showAndGet()) return
7376
settings = configDialog.settings
77+
modelType = configDialog.modelType as ParsingModelType<DocumentParsingModel>
7478

7579
val session = Session.newGlobalID()
7680
DataStorage.sessionPaths[session] = selectedFile.toFile.parentFile
7781

7882
val smartModel = AppSettingsState.instance.smartModel.chatModel()
79-
val parsingModel = when {
80-
selectedFile.name.endsWith(".pdf", ignoreCase = true) -> DocumentParsingModel(smartModel, 0.1)
81-
selectedFile.name.endsWith(".txt", ignoreCase = true) -> DocumentParsingModel(smartModel, 0.1)
82-
selectedFile.name.endsWith(".html", ignoreCase = true) -> DocumentParsingModel(smartModel, 0.1)
83-
selectedFile.name.endsWith(".htm", ignoreCase = true) -> DocumentParsingModel(smartModel, 0.1)
84-
selectedFile.name.endsWith(".md", ignoreCase = true) -> DocumentParsingModel(smartModel, 0.1)
85-
else -> CodeParsingModel(smartModel, 0.1)
86-
}
83+
val parsingModel = ParsingModelType.getImpl(smartModel, 0.1, modelType)
8784

88-
SessionProxyServer.Companion.chats[session] = object : DocumentParserApp(
85+
SessionProxyServer.chats[session] = object : DocumentParserApp(
8986
applicationName = "Document Extractor",
9087
path = this@DocumentDataExtractorAction.path,
9188
api = this@DocumentDataExtractorAction.api,
9289
fileInputs = processableFiles.map<VirtualFile, Path> { it.toNioPath() },
93-
parsingModel = parsingModel,
90+
parsingModel = parsingModel as ParsingModel<DocumentData>,
91+
fastMode = settings.fastMode,
9492
) {
9593
override fun <T : Any> initSettings(session: Session): T = this@DocumentDataExtractorAction.settings as T
9694
override val root: File get() = selectedFile.parent.toFile

src/main/kotlin/com/github/simiacryptus/aicoder/actions/knowledge/DocumentDataExtractorConfigDialog.kt

Lines changed: 15 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -5,11 +5,13 @@ import com.intellij.openapi.ui.DialogWrapper
55
import com.intellij.ui.components.JBCheckBox
66
import com.intellij.ui.components.JBTextField
77
import com.simiacryptus.skyenet.apps.parse.DocumentParserApp
8+
import com.simiacryptus.skyenet.apps.parse.ParsingModelType
89
import javax.swing.*
910

1011
class DocumentDataExtractorConfigDialog(
1112
project: Project?,
12-
var settings: DocumentParserApp.Settings
13+
var settings: DocumentParserApp.Settings,
14+
var modelType: ParsingModelType<*>
1315
) : DialogWrapper(project) {
1416

1517
private val dpiField = JBTextField(settings.dpi.toString())
@@ -20,6 +22,11 @@ class DocumentDataExtractorConfigDialog(
2022
private val saveImageFilesCheckbox = JBCheckBox("Save Image Files", settings.saveImageFiles)
2123
private val saveTextFilesCheckbox = JBCheckBox("Save Text Files", settings.saveTextFiles)
2224
private val saveFinalJsonCheckbox = JBCheckBox("Save Final JSON", settings.saveFinalJson)
25+
private val fastModeCheckbox = JBCheckBox("Fast Mode", settings.fastMode)
26+
private val addLineNumbersCheckbox = JBCheckBox("Add Line Numbers", settings.addLineNumbers)
27+
private val modelTypeComboBox = JComboBox(ParsingModelType.values().toTypedArray()).apply {
28+
selectedItem = modelType
29+
}
2330

2431
init {
2532
init()
@@ -29,7 +36,7 @@ class DocumentDataExtractorConfigDialog(
2936
override fun createCenterPanel(): JComponent {
3037
val panel = JPanel()
3138
panel.layout = BoxLayout(panel, BoxLayout.Y_AXIS)
32-
39+
panel.add(createLabeledField("Parsing Model:", modelTypeComboBox))
3340
panel.add(createLabeledField("DPI:", dpiField))
3441
panel.add(createLabeledField("Max Pages:", maxPagesField))
3542
panel.add(createLabeledField("Output Format:", outputFormatField))
@@ -38,6 +45,8 @@ class DocumentDataExtractorConfigDialog(
3845
panel.add(saveImageFilesCheckbox)
3946
panel.add(saveTextFilesCheckbox)
4047
panel.add(saveFinalJsonCheckbox)
48+
panel.add(fastModeCheckbox)
49+
panel.add(addLineNumbersCheckbox)
4150

4251
return panel
4352
}
@@ -60,8 +69,11 @@ class DocumentDataExtractorConfigDialog(
6069
showImages = showImagesCheckbox.isSelected,
6170
saveImageFiles = saveImageFilesCheckbox.isSelected,
6271
saveTextFiles = saveTextFilesCheckbox.isSelected,
63-
saveFinalJson = saveFinalJsonCheckbox.isSelected
72+
saveFinalJson = saveFinalJsonCheckbox.isSelected,
73+
fastMode = fastModeCheckbox.isSelected,
74+
addLineNumbers = addLineNumbersCheckbox.isSelected
6475
)
76+
modelType = modelTypeComboBox.selectedItem as ParsingModelType<*>
6577
super.doOKAction()
6678
}
6779
}

src/main/kotlin/com/github/simiacryptus/aicoder/ui/SettingsWidgetFactory.kt

Lines changed: 13 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -40,16 +40,26 @@ class SettingsWidgetFactory : StatusBarWidgetFactory {
4040
private var project: Project? = null
4141
private val sessionsList = JBList<Session>()
4242
private val sessionsListModel = DefaultListModel<Session>()
43-
private fun createModelTree(title: String, selectedModel: String?): JTree {
43+
private fun createModelTree(title: String, selectedModel: String?): Tree {
4444
val root = DefaultMutableTreeNode(title)
45-
val providers = models().groupBy { it.second.provider }
45+
// Filter models by providers that have API keys set
46+
val providers = models()
47+
.filter { model ->
48+
val providerName = model.second.provider.name
49+
AppSettingsState.instance.apiKey?.get(providerName)?.isNotEmpty() == true
50+
}
51+
.groupBy { it.second.provider }
52+
4653
for ((provider, models) in providers) {
4754
val providerNode = DefaultMutableTreeNode(provider.name)
4855
for (model in models) {
4956
val modelNode = DefaultMutableTreeNode(model.second.modelName)
5057
providerNode.add(modelNode)
5158
}
52-
root.add(providerNode)
59+
// Only add provider node if it has models
60+
if (providerNode.childCount > 0) {
61+
root.add(providerNode)
62+
}
5363
}
5464
val treeModel = DefaultTreeModel(root)
5565
val tree = Tree(treeModel)

0 commit comments

Comments
 (0)