package com.plexworlds.l3.config import com.plexworlds.l3.llm.provider.Ollama import com.intellij.openapi.application.ApplicationManager import com.intellij.openapi.components.PersistentStateComponent import com.intellij.openapi.components.Storage import com.intellij.openapi.components.State import com.intellij.util.xmlb.XmlSerializerUtil import com.plexworlds.l3.llm.model.DummyModel import com.plexworlds.l3.llm.model.Model import com.plexworlds.l3.llm.provider.DummyProvider import com.plexworlds.l3.llm.provider.Provider /** * Presumably used to store the state of the L3 plugin between sessions. */ @State( name = "com.plexworlds.l3.config.L3PersistentState", storages = [Storage("local-llama-link-plugin.xml")] ) class L3PersistentState : PersistentStateComponent { @JvmField var model: Model = DummyModel @JvmField var modelOverride: String = "" @JvmField var url: String = "" @JvmField var provider: Provider = DummyProvider override fun getState(): L3PersistentState = this override fun loadState(l3PersistentState: L3PersistentState) { XmlSerializerUtil.copyBean(l3PersistentState, this) } companion object { fun getInstance(): L3PersistentState { return ApplicationManager.getApplication().getService(L3PersistentState::class.java) } } }