[ { "language": ".kt", "conventions": [ { "label": "agents", "method_count": 5, "algorithm": "CRX", "grammar": "root ::= \"slot\"? (\"defaultCapabilityId\" | \"summarize\")? \"ToolInvocationRequest\"? \"ToolingRequest\"? \"ToolInvocationResult\"? (\"String\" | \"answer\" | \"any\" | \"assertEquals\" | \"capture\" | \"captured\" | \"every\" | \"generateText\" | \"invoke\" | \"invokeTools\" | \"promptRunner\" | \"toolProfile\" | \"verify\")?+ \"prompt\"? \"contains\"?+", "mdl_score": 142012, "imports": [ "import eu.corentic.springrag.agent.capability.AgentCapabilityHandler", "import eu.corentic.springrag.agent.capability.AgentCapabilityInvocationGateway", "import com.embabel.agent.api.common.ActionContext", "import com.embabel.agent.api.common.PromptRunner", "import eu.corentic.springrag.agent.tooling.embabel.DEFAULT_TOOL_PROFILE", "import eu.corentic.springrag.agent.tooling.embabel.ToolInvocationAction", "import eu.corentic.springrag.agent.tooling.embabel.ToolInvocationRequest", "import eu.corentic.springrag.agent.tooling.embabel.ToolInvocationResult", "import io.mockk.every", "import io.mockk.mockk", "import io.mockk.slot", "import io.mockk.verify", "import kotlin.test.assertEquals", "import org.junit.jupiter.api.Test" ], "arg_patterns": {} }, { "label": "agents/capability/ports/src/main/kotlin/eu/corentic/springrag/agent/capability", "method_count": 5, "algorithm": "CRX", "grammar": "root ::= \"DescribedAgentCapability\"? \"listCapabilities\"? \"AgentExecutionContext\"? \"TransportExposedAgentCapability\"? \"firstOrNull\"?+ \"return AgentCapabilityDescriptor(\n id = id,\n capabilityType = capabilityType,\n displayName = describedCapability?.displayName ?: id,\n description = describedCapability?.description,\n exposedOverHttp = exposedCapability?.exposedOverHttp ?: false,\n exposedOverMcp = exposedCapability?.exposedOverMcp ?: false\n )\"? \"id\"? \"AgentCapabilityDescriptor\"? \"displayName\"? \"description\"? \"exposedOverHttp\"? \"exposedOverMcp\"?", "mdl_score": 1553, "imports": [], "arg_patterns": {} }, { "label": "agents/capability/support/src/main/kotlin/eu/corentic/springrag/agent/capability/support", "method_count": 5, "algorithm": "CRX", "grammar": "root ::= \"resolve\"?+ \"newVirtualThreadPerTaskExecutor\"?+ \"flatMap\"?+ (\"DefaultAgentCapabilityDirectory\" | \"defaultCapabilityId\")?+ \"capabilityIdSelector\"? \"asCoroutineDispatcher\"?+ \"capabilityDescriptors\"?+ \"authorize\"?+ \"distinctBy\"?+ (\"AgentCapabilityDescriptor\" | \"capabilityType\" | \"compareBy\" | \"id\" | \"sortedWith\" | \"thenBy\")?+ \"return capability.invoke(request)\"? \"invoke\"?+", "mdl_score": 0, "imports": [ "import eu.corentic.springrag.agent.capability.AgentCapabilityDirectory", "import eu.corentic.springrag.agent.capability.AgentCapabilityRegistry", "import kotlinx.coroutines.CoroutineDispatcher", "import kotlinx.coroutines.asCoroutineDispatcher", "import org.springframework.context.annotation.Bean", "import org.springframework.context.annotation.Configuration", "import java.util.concurrent.Executors", "import eu.corentic.springrag.agent.capability.AgentCapabilityDescriptor", "import eu.corentic.springrag.agent.capability.AgentCapabilityHandler", "import eu.corentic.springrag.agent.capability.AgentCapabilityInvocationAuthorizer", "import eu.corentic.springrag.agent.capability.AgentCapabilityInvocationGateway", "import eu.corentic.springrag.agent.capability.AgentCapabilityResolver" ], "arg_patterns": {} }, { "label": "agents/capability/support/src/test/kotlin/eu/corentic/springrag/agent/capability/support", "method_count": 6, "algorithm": "CRX", "grammar": "root ::= \"runTest\"? \"TestRequest\"? (\"AgentCapabilityDescriptor\" | \"DefaultAgentCapabilityDirectory\" | \"IllegalStateException\" | \"assertEquals\" | \"assertFailsWith\" | \"authorize\" | \"capabilityDescriptors\" | \"coEvery\" | \"coVerify\" | \"defaultCapabilityId\" | \"every\" | \"id\" | \"invoke\" | \"listOf\" | \"message\" | \"resolve\" | \"verify\")?+ (\"any\" | \"listCapabilities\")?+", "mdl_score": 790670, "imports": [ "import eu.corentic.springrag.agent.capability.AgentCapabilityDescriptor", "import eu.corentic.springrag.agent.capability.AgentCapabilityRegistry", "import io.mockk.every", "import io.mockk.mockk", "import org.junit.jupiter.api.Assertions.assertEquals", "import org.junit.jupiter.api.Test", "import eu.corentic.springrag.agent.capability.AgentCapabilityHandler", "import eu.corentic.springrag.agent.capability.AgentCapabilityInvocationAuthorizer", "import eu.corentic.springrag.agent.capability.AgentCapabilityResolver", "import io.mockk.coEvery", "import io.mockk.coVerify", "import io.mockk.verify", "import kotlinx.coroutines.test.runTest", "import kotlin.test.Test", "import kotlin.test.assertEquals", "import kotlin.test.assertFailsWith" ], "arg_patterns": {} }, { "label": "agents/examples/simple-rag/src/main/kotlin/eu/corentic/springrag/example/rag/simple", "method_count": 9, "algorithm": "CRX", "grammar": "root ::= \"prompt\"?+ \"if\"? \"system\"?+ \"isEmpty\"?+ \"user\"?+ \"call\"?+ \"content\"?+", "mdl_score": 0, "imports": [ "import eu.corentic.springrag.model.VectorChunk", "import org.slf4j.LoggerFactory", "import org.springframework.ai.chat.client.ChatClient", "import tools.jackson.databind.ObjectMapper", "import eu.corentic.springrag.agent.rag.RagAgent", "import eu.corentic.springrag.agent.rag.RagRequest", "import eu.corentic.springrag.agent.capability.AgentExecutionContext", "import eu.corentic.springrag.agent.rag.support.RagDocumentSupport", "import eu.corentic.springrag.model.ChatResponse", "import eu.corentic.springrag.service.port.ChatGraphLookupPort", "import eu.corentic.springrag.service.port.RetrievalPort", "import kotlinx.coroutines.CoroutineDispatcher", "import kotlinx.coroutines.withContext", "import io.github.oshai.kotlinlogging.KotlinLogging" ], "arg_patterns": {} }, { "label": "agents/examples/simple-rag/src/test/kotlin/eu/corentic/springrag/example/rag/simple", "method_count": 14, "algorithm": "CRX", "grammar": "root ::= \"runTest\"? (\"ChatClientRequestSpec\" | \"mockk\")?+ \"CallResponseSpec\"? (\"String\" | \"any\" | \"call\" | \"every\" | \"prompt\" | \"system\" | \"user\")?+ \"content\"?+", "mdl_score": 3710, "imports": [ "import eu.corentic.springrag.model.VectorChunk", "import io.mockk.every", "import io.mockk.mockk", "import io.mockk.slot", "import kotlinx.coroutines.test.runTest", "import org.junit.jupiter.api.Assertions.assertEquals", "import org.junit.jupiter.api.Test", "import org.springframework.ai.chat.client.ChatClient", "import org.springframework.ai.chat.client.ChatClient.CallResponseSpec", "import org.springframework.ai.chat.client.ChatClient.ChatClientRequestSpec", "import eu.corentic.springrag.agent.rag.RagAgent", "import eu.corentic.springrag.agent.rag.RagRequest", "import eu.corentic.springrag.common.ids.asKnowledgeBaseId", "import eu.corentic.springrag.service.port.ChatGraphLookupPort", "import eu.corentic.springrag.service.port.RetrievalPort", "import io.mockk.coEvery", "import io.mockk.coVerify", "import io.mockk.verify", "import kotlinx.coroutines.test.StandardTestDispatcher", "import org.junit.jupiter.api.Assertions.assertTrue", "import io.mockk.clearAllMocks", "import org.junit.jupiter.api.AfterEach", "import org.junit.jupiter.api.Assertions.assertFalse", "import tools.jackson.databind.json.JsonMapper", "import tools.jackson.module.kotlin.KotlinModule" ], "arg_patterns": {} }, { "label": "agents/rag/embabel/src/main/kotlin/eu/corentic/springrag/agent/rag/embabel", "method_count": 58, "imports": [ "import com.fasterxml.jackson.databind.ObjectMapper", "import org.springframework.context.annotation.Bean", "import org.springframework.context.annotation.Configuration", "import com.embabel.agent.api.invocation.AgentInvocation", "import com.embabel.agent.core.AgentPlatform", "import com.embabel.agent.core.resultOfType", "import com.embabel.agent.core.Identities", "import com.embabel.agent.core.ProcessOptions", "import com.embabel.agent.core.support.InMemoryBlackboard", "import eu.corentic.springrag.agent.capability.AgentExecutionContext", "import eu.corentic.springrag.agent.capability.DescribedAgentCapability", "import eu.corentic.springrag.agent.capability.TransportExposedAgentCapability", "import eu.corentic.springrag.agent.rag.RagAgent", "import eu.corentic.springrag.agent.rag.RagInvocation", "import eu.corentic.springrag.agent.rag.RagRequest", "import eu.corentic.springrag.model.ChatResponse", "import kotlinx.coroutines.CoroutineDispatcher", "import kotlinx.coroutines.withContext", "import org.springframework.beans.factory.annotation.Value", "import org.springframework.stereotype.Component", "import org.springframework.stereotype.Service", "import kotlin.math.max", "import eu.corentic.springrag.agent.rag.support.RagDocumentSupport", "import eu.corentic.springrag.model.Source", "import eu.corentic.springrag.model.VectorChunk", "import eu.corentic.springrag.service.port.ChatGraphLookupPort", "import eu.corentic.springrag.service.port.RetrievalPort", "import io.github.oshai.kotlinlogging.KotlinLogging", "import org.springframework.ai.chat.memory.ChatMemory", "import com.embabel.agent.api.annotation.AchievesGoal", "import com.embabel.agent.api.annotation.Action", "import com.embabel.agent.api.annotation.Agent", "import com.embabel.agent.api.annotation.Condition", "import com.embabel.agent.api.common.ActionContext", "import com.embabel.agent.domain.io.UserInput", "import eu.corentic.springrag.agent.summarizer.SummarizeRequest", "import eu.corentic.springrag.common.ids.KnowledgeBaseId", "import eu.corentic.springrag.service.knowledgebase.KnowledgeBaseQueryPort", "import io.micrometer.common.KeyValue", "import io.micrometer.common.KeyValues", "import org.springframework.ai.chat.client.observation.ChatClientObservationContext", "import org.springframework.ai.chat.client.observation.DefaultChatClientObservationConvention", "import io.micrometer.observation.ObservationRegistry", "import java.util.function.Supplier", "import org.springframework.ai.chat.client.ChatClient", "import org.springframework.ai.chat.model.ChatModel", "import org.springframework.ai.chat.client.advisor.PromptChatMemoryAdvisor", "import org.springframework.ai.chat.prompt.ChatOptions", "import org.springframework.cloud.client.circuitbreaker.CircuitBreakerFactory" ], "arg_patterns": {} }, { "label": "agents/rag/embabel/src/main/kotlin/eu/corentic/springrag/agent/rag/embabel/librechat", "method_count": 13, "imports": [ "import com.embabel.agent.api.annotation.AchievesGoal", "import com.embabel.agent.api.annotation.Action", "import com.embabel.agent.api.annotation.Agent", "import com.embabel.agent.api.annotation.Condition", "import com.embabel.agent.api.common.ActionContext", "import eu.corentic.springrag.agent.rag.RagRequest", "import eu.corentic.springrag.agent.rag.embabel.ConversationMemoryContext", "import eu.corentic.springrag.agent.rag.embabel.EmbabelJudgeDecision", "import eu.corentic.springrag.agent.rag.embabel.EmbabelRagDecisionPolicy", "import eu.corentic.springrag.agent.rag.embabel.EmbabelWorkflowObservationContext", "import eu.corentic.springrag.agent.rag.embabel.EmbabelWorkflowObservationConvention", "import eu.corentic.springrag.agent.rag.embabel.EmbabelWorkflowPromptService", "import eu.corentic.springrag.agent.rag.embabel.JudgeOutcome", "import eu.corentic.springrag.agent.rag.embabel.RagDecisionState", "import eu.corentic.springrag.agent.rag.embabel.RetrievedEvidence", "import eu.corentic.springrag.agent.rag.librechat.LibreChatRetrievalRequest", "import eu.corentic.springrag.agent.rag.librechat.LibreChatRetrievalResult", "import eu.corentic.springrag.agent.rag.support.RagDocumentSupport", "import eu.corentic.springrag.model.VectorChunk", "import eu.corentic.springrag.common.ids.JobId", "import eu.corentic.springrag.common.ids.KnowledgeBaseId", "import eu.corentic.springrag.service.port.ChatGraphLookupPort", "import eu.corentic.springrag.service.port.RetrievalPort", "import eu.corentic.springrag.service.port.VectorDocumentPort", "import io.github.oshai.kotlinlogging.KotlinLogging", "import org.springframework.stereotype.Service", "import com.embabel.agent.core.AgentPlatform", "import com.embabel.agent.core.Identities", "import com.embabel.agent.core.ProcessOptions", "import com.embabel.agent.core.resultOfType", "import com.embabel.agent.core.support.InMemoryBlackboard", "import eu.corentic.springrag.agent.rag.librechat.LibreChatRetrievalInvoker", "import org.springframework.beans.factory.annotation.Value", "import org.springframework.stereotype.Component" ], "arg_patterns": {} }, { "label": "agents/rag/embabel/src/test/kotlin/eu/corentic/springrag/agent/rag/embabel", "method_count": 36, "algorithm": "CRX", "grammar": "root ::= \"every\"? \"listKnowledgeBases\"?+ \"RagRequest\"? \"checkKnowledgeBase\"?+ \"assertEquals\"? \"of\"?+ \"request\"? \"knowledgeBaseId\"?", "mdl_score": 66, "imports": [ "import com.embabel.agent.api.invocation.AgentInvocation", "import com.embabel.agent.core.Agent", "import com.embabel.agent.core.AgentPlatform", "import com.embabel.agent.core.AgentProcess", "import com.embabel.agent.core.ProcessOptions", "import eu.corentic.springrag.agent.capability.AgentExecutionContext", "import eu.corentic.springrag.agent.rag.RagInvocation", "import eu.corentic.springrag.agent.rag.RagRequest", "import eu.corentic.springrag.common.ids.asKnowledgeBaseId", "import eu.corentic.springrag.model.ChatResponse", "import io.mockk.every", "import io.mockk.mockk", "import io.mockk.mockkObject", "import io.mockk.slot", "import io.mockk.unmockkAll", "import io.mockk.verify", "import org.junit.jupiter.api.AfterEach", "import org.junit.jupiter.api.Assertions.assertEquals", "import org.junit.jupiter.api.Assertions.assertNull", "import org.junit.jupiter.api.Test", "import kotlinx.coroutines.test.StandardTestDispatcher", "import kotlinx.coroutines.test.runTest", "import eu.corentic.springrag.model.PageTextElement", "import eu.corentic.springrag.model.VectorChunk", "import eu.corentic.springrag.service.port.ChatGraphLookupPort", "import eu.corentic.springrag.service.port.RetrievalPort", "import org.junit.jupiter.api.Assertions.assertTrue", "import org.springframework.ai.chat.memory.ChatMemory", "import eu.corentic.springrag.common.ids.KnowledgeBaseId", "import eu.corentic.springrag.service.knowledgebase.KnowledgeBaseListItem", "import eu.corentic.springrag.service.knowledgebase.KnowledgeBaseQueryPort", "import org.springframework.ai.chat.client.ChatClientRequest", "import org.springframework.ai.chat.client.observation.ChatClientObservationContext", "import org.springframework.ai.chat.prompt.Prompt", "import eu.corentic.springrag.testsupport.NoOpCircuitBreakerFactory", "import io.micrometer.observation.ObservationRegistry", "import org.springframework.ai.chat.memory.InMemoryChatMemoryRepository", "import org.springframework.ai.chat.memory.MessageWindowChatMemory", "import org.springframework.ai.chat.messages.AssistantMessage", "import org.springframework.ai.chat.messages.MessageType", "import org.springframework.ai.chat.messages.UserMessage", "import org.springframework.ai.chat.model.ChatModel", "import org.springframework.ai.chat.model.ChatResponse", "import org.springframework.ai.chat.model.Generation", "import eu.corentic.springrag.agent.rag.embabel.EmbabelJudgeDecision", "import eu.corentic.springrag.agent.rag.embabel.EmbabelRagDecisionPolicy", "import eu.corentic.springrag.agent.rag.embabel.EmbabelRagWorkflowAgentProperties", "import eu.corentic.springrag.agent.rag.embabel.EmbabelWorkflowPromptService", "import eu.corentic.springrag.common.ids.JobId", "import eu.corentic.springrag.agent.rag.librechat.LibreChatRetrievalRequest", "import eu.corentic.springrag.service.port.VectorDocumentPort" ], "arg_patterns": {} }, { "label": "agents/rag/embabel/src/test/kotlin/eu/corentic/springrag/testsupport", "method_count": 3, "algorithm": "CRX", "grammar": "root ::= (\"Any\" | \"Builder\" | \"get\")+", "mdl_score": 15, "imports": [ "import java.util.function.Function", "import java.util.function.Supplier", "import org.springframework.cloud.client.circuitbreaker.CircuitBreaker", "import org.springframework.cloud.client.circuitbreaker.CircuitBreakerFactory", "import org.springframework.cloud.client.circuitbreaker.ConfigBuilder" ], "arg_patterns": {} }, { "label": "agents/rag/ports/src/main/kotlin/eu/corentic/springrag/agent/rag", "method_count": 4, "algorithm": "CRX", "grammar": "root ::= \"defaultCapabilityId\"? \"answer\"? \"request\"? \"AgentExecutionContext\"? \"RagRequest\"? \"executionContext\"? \"let\"?+ \"KnowledgeBaseId\"?", "mdl_score": 242, "imports": [ "import eu.corentic.springrag.agent.capability.AgentCapability", "import eu.corentic.springrag.agent.capability.AgentCapabilityHandler", "import eu.corentic.springrag.agent.capability.AgentExecutionContext", "import eu.corentic.springrag.common.ids.KnowledgeBaseId", "import eu.corentic.springrag.model.ChatResponse", "import eu.corentic.springrag.agent.capability.AgentCapabilityInvocationGateway" ], "arg_patterns": {} }, { "label": "agents/rag/ports/src/test/kotlin/eu/corentic/springrag/agent/rag", "method_count": 3, "algorithm": "CRX", "grammar": "root ::= \"runTest\"? \"return ChatResponse(answer = \\\"ok\\\", sources = emptyList())\"? \"RecordingRagAgent\"? \"ChatResponse\"? \"RagInvocation\"? \"emptyList\"?+ \"RagRequest\"? \"invoke\"?+ (\"answer\" | \"asKnowledgeBaseId\" | \"assertEquals\" | \"conversationId\" | \"knowledgeBaseId\" | \"lastRequest\" | \"message\")?+ \"agentId\"? \"executionContext\"? \"lastContext\"?", "mdl_score": 3304, "imports": [ "import eu.corentic.springrag.agent.capability.AgentExecutionContext", "import eu.corentic.springrag.common.ids.asKnowledgeBaseId", "import eu.corentic.springrag.model.ChatResponse", "import kotlinx.coroutines.test.runTest", "import org.junit.jupiter.api.Assertions.assertEquals", "import org.junit.jupiter.api.Test" ], "arg_patterns": {} }, { "label": "agents/rag/ports/src/test/kotlin/eu/corentic/springrag/model", "method_count": 3, "algorithm": "CRX", "grammar": "root ::= \"ChatResponse\"? (\"Source\" | \"emptyList\" | \"listOf\")?+ \"toMarkdownSummary\"?+ (\"assertTrue\" | \"contains\")?+", "mdl_score": 858, "imports": [ "import org.junit.jupiter.api.Assertions.assertTrue", "import org.junit.jupiter.api.Test" ], "arg_patterns": {} }, { "label": "agents/rag/support/src/main/kotlin/eu/corentic/springrag/agent/rag/support", "method_count": 13, "algorithm": "CRX", "grammar": "root ::= (\"String\" | \"metadata\")+", "mdl_score": 62, "imports": [ "import eu.corentic.springrag.agent.capability.AgentCapabilityDescriptor", "import eu.corentic.springrag.agent.capability.toDescriptor", "import eu.corentic.springrag.agent.rag.RagAgent", "import eu.corentic.springrag.agent.rag.RagAgentRegistry", "import org.springframework.stereotype.Component", "import eu.corentic.springrag.common.ids.KnowledgeBaseId", "import eu.corentic.springrag.model.Source", "import eu.corentic.springrag.model.VectorChunk", "import eu.corentic.springrag.service.port.ChatGraphLookupPort", "import eu.corentic.springrag.service.port.RetrievalPort", "import io.github.oshai.kotlinlogging.KotlinLogging" ], "arg_patterns": {} }, { "label": "agents/rag/support/src/test/kotlin/eu/corentic/springrag/agent/rag/support", "method_count": 11, "algorithm": "CRX", "grammar": "root ::= \"VectorChunk\"? \"mapOf\"?+ (\"every\" | \"id\")?+ \"capabilityType\"? \"DefaultRagAgentRegistry\"? \"listOf\"?+ \"assertEquals\"?", "mdl_score": 100, "imports": [ "import eu.corentic.springrag.agent.capability.AgentExecutionContext", "import eu.corentic.springrag.agent.rag.RagAgent", "import eu.corentic.springrag.agent.rag.RagAgentInvocationAuthorizer", "import eu.corentic.springrag.agent.rag.RagInvocation", "import eu.corentic.springrag.agent.rag.RagAgentRegistry", "import eu.corentic.springrag.agent.rag.RagRequest", "import eu.corentic.springrag.common.ids.asKnowledgeBaseId", "import eu.corentic.springrag.model.ChatResponse", "import io.mockk.coEvery", "import io.mockk.coVerify", "import io.mockk.every", "import io.mockk.mockk", "import io.mockk.verify", "import kotlinx.coroutines.test.runTest", "import org.junit.jupiter.api.Assertions.assertEquals", "import org.junit.jupiter.api.Test", "import eu.corentic.springrag.agent.capability.AgentCapabilityDescriptor", "import eu.corentic.springrag.agent.capability.DescribedAgentCapability", "import eu.corentic.springrag.agent.capability.TransportExposedAgentCapability", "import org.junit.jupiter.api.Assertions.assertThrows", "import org.junit.jupiter.api.Assertions.assertDoesNotThrow", "import eu.corentic.springrag.model.PageTextElement", "import eu.corentic.springrag.model.SourceImage", "import eu.corentic.springrag.model.VectorChunk", "import eu.corentic.springrag.service.port.ChatGraphLookupPort", "import eu.corentic.springrag.service.port.RetrievalPort", "import kotlin.test.Test", "import kotlin.test.assertEquals", "import kotlin.test.assertTrue" ], "arg_patterns": {} }, { "label": "agents/summarizer/embabel/src/main/kotlin/eu/corentic/springrag/agent/summarizer/embabel", "method_count": 13, "imports": [ "import eu.corentic.springrag.agent.capability.AgentCapabilityDescriptor", "import eu.corentic.springrag.agent.capability.toDescriptor", "import eu.corentic.springrag.agent.summarizer.SummarizerAgent", "import eu.corentic.springrag.agent.summarizer.SummarizerAgentRegistry", "import org.springframework.stereotype.Component", "import com.embabel.agent.api.invocation.AgentInvocation", "import com.embabel.agent.core.AgentPlatform", "import com.embabel.agent.core.Identities", "import com.embabel.agent.core.ProcessOptions", "import eu.corentic.springrag.agent.capability.DescribedAgentCapability", "import eu.corentic.springrag.agent.capability.TransportExposedAgentCapability", "import eu.corentic.springrag.agent.summarizer.SummarizeRequest", "import eu.corentic.springrag.agent.summarizer.SummaryResponse", "import kotlinx.coroutines.CoroutineDispatcher", "import kotlinx.coroutines.Dispatchers", "import kotlinx.coroutines.withContext", "import org.springframework.stereotype.Service", "import com.embabel.agent.api.annotation.AchievesGoal", "import com.embabel.agent.api.annotation.Action", "import com.embabel.agent.api.annotation.Agent", "import com.embabel.agent.api.common.ActionContext", "import com.embabel.agent.domain.io.UserInput", "import com.embabel.common.ai.model.LlmOptions", "import eu.corentic.springrag.agent.tooling.embabel.DEFAULT_TOOL_PROFILE", "import eu.corentic.springrag.agent.tooling.embabel.ToolInvocationAction", "import eu.corentic.springrag.agent.tooling.embabel.ToolInvocationRequest", "import org.springframework.beans.factory.annotation.Value", "import eu.corentic.springrag.agent.summarizer.SummarizerInvocationAuthorizer", "import io.github.oshai.kotlinlogging.KotlinLogging" ], "arg_patterns": {} }, { "label": "agents/summarizer/embabel/src/test/kotlin/eu/corentic/springrag/agent/summarizer/embabel", "method_count": 14, "imports": [ "import com.embabel.agent.api.invocation.AgentInvocation", "import com.embabel.agent.core.AgentPlatform", "import com.embabel.agent.core.ProcessOptions", "import eu.corentic.springrag.agent.capability.AgentExecutionContext", "import eu.corentic.springrag.agent.summarizer.SummarizeRequest", "import eu.corentic.springrag.agent.summarizer.SummaryResponse", "import io.mockk.every", "import io.mockk.mockk", "import io.mockk.mockkObject", "import io.mockk.slot", "import io.mockk.unmockkAll", "import io.mockk.verify", "import org.junit.jupiter.api.AfterEach", "import org.junit.jupiter.api.Assertions.assertEquals", "import org.junit.jupiter.api.Assertions.assertNull", "import org.junit.jupiter.api.Test", "import eu.corentic.springrag.agent.capability.AgentCapabilityDescriptor", "import eu.corentic.springrag.agent.summarizer.SummarizerAgent", "import org.junit.jupiter.api.Assertions.assertThrows", "import eu.corentic.springrag.agent.summarizer.SummarizerInvocationAuthorizer", "import io.mockk.coEvery", "import io.mockk.coVerify", "import kotlinx.coroutines.test.runTest", "import kotlinx.coroutines.test.StandardTestDispatcher", "import com.embabel.agent.api.common.ActionContext", "import com.embabel.agent.api.common.Ai", "import com.embabel.agent.api.common.PromptRunner", "import com.embabel.common.ai.model.LlmOptions", "import org.junit.jupiter.api.Assertions.assertDoesNotThrow" ], "arg_patterns": {} }, { "label": "agents/tooling/agent/src/main/kotlin/eu/corentic/springrag/agent/tooling/agent", "method_count": 4, "algorithm": "CRX", "grammar": "root ::= \"ToolingRequest\"? \"goal\"? (\"buildString\" | \"forEachIndexed\" | \"if\" | \"ifBlank\" | \"isEmpty\" | \"response\" | \"return buildString {\n result.toolCalls.forEachIndexed { index, call ->\n if (index > 0) append(\\\"\\\\n\\\\n\\\")\n append(\\\"Tool: \\\").append(call.tool).append(\\\"\\\\n\\\")\n append(\\\"Input: \\\").append(call.input).append(\\\"\\\\n\\\")\n append(\\\"Output:\\\\n\\\").append(call.output)\n }\n }\" | \"return result.response.ifBlank { \\\"No tool results were captured.\\\" }\" | \"toolCalls\")?+ \"content\"? \"renderToolResults\"? (\"append\" | \"input\" | \"tool\")?+ \"trimIndent\"?+ \"output\"? \"promptRunner\"?+ \"return toolInvocationAction.invoke(\n ToolInvocationRequest(\n prompt = prompt,\n toolProfile = request.toolProfile\n ),\n context\n )\"? \"LlmOptions\"? \"invoke\"?+ \"emptySet\"?+ \"ToolInvocationRequest\"? \"emptyList\"?+ \"toolProfile\"? \"generateText\"?+ \"trim\"?+ \"return ToolingResponse(answer = answer)\"? \"ToolingResponse\"?", "mdl_score": 0, "imports": [ "import com.embabel.agent.api.annotation.AchievesGoal", "import com.embabel.agent.api.annotation.Action", "import com.embabel.agent.api.annotation.Agent", "import com.embabel.agent.api.common.ActionContext", "import com.embabel.agent.domain.io.UserInput", "import com.embabel.common.ai.model.LlmOptions", "import eu.corentic.springrag.agent.tooling.embabel.ToolInvocationAction", "import eu.corentic.springrag.agent.tooling.embabel.ToolInvocationRequest", "import eu.corentic.springrag.agent.tooling.embabel.ToolInvocationResult", "import org.springframework.stereotype.Service" ], "arg_patterns": {} }, { "label": "agents/tooling/embabel/src/main/kotlin/eu/corentic/springrag/agent/tooling/embabel", "method_count": 12, "imports": [ "import com.fasterxml.jackson.databind.ObjectMapper", "import org.springframework.boot.autoconfigure.condition.ConditionalOnMissingBean", "import org.springframework.context.annotation.Bean", "import org.springframework.context.annotation.Configuration", "import com.embabel.agent.api.tool.ToolObject", "import com.embabel.agent.api.annotation.Action", "import com.embabel.agent.api.common.ActionContext", "import com.embabel.agent.api.common.ContextualPromptElement", "import com.embabel.common.ai.model.LlmOptions", "import com.embabel.common.ai.prompt.PromptContributor", "import com.embabel.agent.prompt.element.FocusedToolCallControl", "import com.embabel.agent.prompt.element.ToolCallControl", "import eu.corentic.springrag.agent.tooling.embabel.recording.ToolCallRecord", "import eu.corentic.springrag.agent.tooling.embabel.recording.ToolInvocationRecorder", "import org.springframework.stereotype.Service", "import org.springframework.boot.context.properties.ConfigurationProperties", "import org.springaicommunity.agent.tools.FileSystemTools", "import org.springaicommunity.agent.tools.GrepTool", "import org.springaicommunity.agent.tools.GlobTool", "import org.springaicommunity.agent.tools.ShellTools", "import org.springaicommunity.agent.tools.SmartWebFetchTool", "import org.springframework.ai.chat.client.ChatClient", "import org.springframework.boot.context.properties.EnableConfigurationProperties" ], "arg_patterns": {} }, { "label": "agents/tooling/embabel/src/main/kotlin/eu/corentic/springrag/agent/tooling/embabel/recording", "method_count": 11, "imports": [ "import com.embabel.agent.api.event.AgentProcessEvent", "import com.embabel.agent.api.event.AgenticEventListener", "import com.embabel.agent.api.event.ToolCallResponseEvent", "import com.fasterxml.jackson.core.JsonProcessingException", "import com.fasterxml.jackson.databind.ObjectMapper", "import org.slf4j.LoggerFactory", "import java.util.concurrent.ConcurrentHashMap", "import com.embabel.agent.api.common.PlatformServices", "import com.embabel.agent.api.event.MulticastAgenticEventListener", "import org.springframework.beans.factory.config.BeanPostProcessor", "import org.springframework.boot.context.properties.EnableConfigurationProperties", "import org.springframework.context.annotation.Bean", "import org.springframework.context.annotation.Configuration" ], "arg_patterns": {} }, { "label": "agents/tooling/embabel/src/test/kotlin/eu/corentic/springrag/agent/tooling/embabel", "method_count": 6, "algorithm": "CRX", "grammar": "root ::= \"ToolInvocationPolicyProperties\"? (\"AgentProcess\" | \"Any\" | \"PolicyAwareToolInvocationToolProvider\" | \"StaticToolInvocationToolProvider\" | \"ToolInvocationAction\" | \"ToolInvocationRequest\" | \"ToolObject\" | \"ToolProfilePolicy\" | \"addObject\" | \"agent\" | \"agentProcess\" | \"any\" | \"assertEquals\" | \"assertFalse\" | \"assertTrue\" | \"blackboard\" | \"capture\" | \"com\" | \"core\" | \"embabel\" | \"every\" | \"filter\" | \"generateText\" | \"get\" | \"id\" | \"invoke\" | \"listOf\" | \"mapOf\" | \"mockk\" | \"processContext\" | \"promptRunner\" | \"response\" | \"set\" | \"setOf\" | \"single\" | \"slot\" | \"toolObjectsFor\" | \"toolProfile\" | \"verify\" | \"withToolChainingFromAny\")?+ (\"captured\" | \"emptyList\")?+", "mdl_score": 16597680, "imports": [ "import com.embabel.agent.api.tool.ToolObject", "import kotlin.test.assertFalse", "import kotlin.test.assertTrue", "import kotlin.test.assertEquals", "import org.junit.jupiter.api.Test", "import com.embabel.agent.api.common.ActionContext", "import com.embabel.agent.api.common.PromptRunner", "import com.embabel.agent.core.Blackboard", "import com.embabel.agent.core.ProcessContext", "import io.mockk.Runs", "import io.mockk.every", "import io.mockk.just", "import io.mockk.mockk", "import io.mockk.slot", "import io.mockk.verify" ], "arg_patterns": {} }, { "label": "agents/wikipedia/adapters/src/main/kotlin/eu/corentic/springrag/agent/wikipedia", "method_count": 4, "algorithm": "CRX", "grammar": "root ::= \"when\"? \"values\"? \"debug\"?+ \"isNullOrBlank\"?+ \"sortedBy\"?+ \"topic\"? \"else\"? \"id\"? \"error\"?+ \"map\"?+ \"toDescriptor\"?+", "mdl_score": 0, "imports": [ "import eu.corentic.springrag.agent.capability.AgentCapabilityDescriptor", "import eu.corentic.springrag.agent.capability.toDescriptor", "import org.springframework.stereotype.Component", "import io.github.oshai.kotlinlogging.KotlinLogging" ], "arg_patterns": {} }, { "label": "agents/wikipedia/adapters/src/test/kotlin/eu/corentic/springrag/agent/wikipedia", "method_count": 8, "algorithm": "CRX", "grammar": "root ::= (\"every\" | \"id\")?+ \"defaultCapabilityId\"?+ \"capabilityType\"? \"DefaultWikipediaLookupAgentRegistry\"? (\"assertEquals\" | \"listOf\")?+ \"AgentCapabilityDescriptor\"? \"capabilityDescriptors\"?+", "mdl_score": 32, "imports": [ "import eu.corentic.springrag.agent.capability.AgentCapabilityDescriptor", "import eu.corentic.springrag.agent.capability.DescribedAgentCapability", "import eu.corentic.springrag.agent.capability.TransportExposedAgentCapability", "import io.mockk.every", "import io.mockk.mockk", "import org.junit.jupiter.api.Assertions.assertEquals", "import org.junit.jupiter.api.Assertions.assertThrows", "import org.junit.jupiter.api.Test", "import io.mockk.coEvery", "import io.mockk.coVerify", "import io.mockk.verify", "import kotlinx.coroutines.test.runTest", "import org.junit.jupiter.api.Assertions.assertDoesNotThrow" ], "arg_patterns": {} }, { "label": "agents/wikipedia/static/src/main/kotlin/eu/corentic/springrag/agent/wikipedia", "method_count": 3, "algorithm": "CRX", "grammar": "root ::= (\"WikipediaLookupResponse\" | \"contains\" | \"firstOrNull\" | \"normalize\" | \"return keywordMatch ?: WikipediaLookupResponse(\n topic = request.topic,\n summary = \\\"No static encyclopedia entry was found for \\\\\\\"${request.topic}\\\\\\\". This static capability can later be replaced with a real Wikipedia or MCP-backed lookup agent.\\\",\n wikipediaUrl = null,\n found = false\n )\" | \"topic\")?+ \"trim\"?+ \"lowercase\"?+ \"replace\"?+ \"Regex\"?", "mdl_score": 120, "imports": [ "import eu.corentic.springrag.agent.capability.DescribedAgentCapability", "import eu.corentic.springrag.agent.capability.TransportExposedAgentCapability", "import org.springframework.stereotype.Component" ], "arg_patterns": {} }, { "label": "agents/wikipedia/static/src/test/kotlin/eu/corentic/springrag/agent/wikipedia", "method_count": 3, "algorithm": "CRX", "grammar": "root ::= \"runTest\"? \"invoke\"?+ \"WikipediaLookupRequest\"? \"assertFalse\"? (\"assertEquals\" | \"assertTrue\" | \"contains\" | \"found\" | \"summary\" | \"topic\")?+ \"wikipediaUrl\"?", "mdl_score": 8136, "imports": [ "import kotlinx.coroutines.test.runTest", "import org.junit.jupiter.api.Assertions.assertEquals", "import org.junit.jupiter.api.Assertions.assertFalse", "import org.junit.jupiter.api.Assertions.assertTrue", "import org.junit.jupiter.api.Test" ], "arg_patterns": {} }, { "label": "app/src", "method_count": 6, "algorithm": "CRX", "grammar": "root ::= (\"assertTrue\" | \"isRunning\" | \"neo4jContainer\" | \"ollamaContainer\" | \"qdrantContainer\")?+ \"YamlPropertiesFactoryBean\"? \"getenv\"?+ \"activeProfiles\"? \"assertNotNull\"? \"setResources\"?+ \"return WebTestClient.bindToServer().baseUrl(baseUrl).build()\"? \"joinToString\"?+ \"ClassPathResource\"? \"bindToServer\"?+ \"ifBlank\"?+ \"`object`\"? \"baseUrl\"?+ (\"ConfigurableEnvironment\" | \"EnumerablePropertySource\" | \"String\" | \"add\" | \"first\" | \"forEach\" | \"getProperty\" | \"if\" | \"info\" | \"linkedSetOf\" | \"map\" | \"propertyNames\" | \"propertySources\" | \"return\" | \"return if (SECRET_KEY_PATTERNS.any { it.containsMatchIn(key) }) \\\"******\\\" else value\" | \"return value\" | \"size\" | \"sortedBy\" | \"warn\")?+ \"emptyMap\"?+ \"build\"?+ \"maskValue\"? \"any\"?+ (\"assertEquals\" | \"replace\" | \"toString\")?+ \"containsMatchIn\"?+ \"else\"?", "mdl_score": 0, "imports": [ "import io.cucumber.spring.CucumberContextConfiguration", "import org.springframework.boot.test.context.SpringBootTest", "import org.springframework.boot.test.context.TestConfiguration", "import org.springframework.context.annotation.Bean", "import org.springframework.context.annotation.Import", "import org.springframework.test.context.ActiveProfiles", "import org.springframework.test.web.reactive.server.WebTestClient", "import io.github.oshai.kotlinlogging.KotlinLogging", "import org.springframework.boot.ApplicationArguments", "import org.springframework.boot.ApplicationRunner", "import org.springframework.core.env.ConfigurableEnvironment", "import org.springframework.core.env.Environment", "import org.springframework.core.env.EnumerablePropertySource", "import org.springframework.stereotype.Component", "import eu.corentic.springrag.config.BaseSystemTest", "import eu.corentic.springrag.testcontainers.SharedContainers", "import kotlin.test.assertNotNull", "import org.junit.jupiter.api.Assertions.assertTrue", "import org.junit.jupiter.api.Test", "import org.springframework.boot.webtestclient.autoconfigure.AutoConfigureWebTestClient", "import kotlin.test.assertEquals", "import org.springframework.beans.factory.config.YamlPropertiesFactoryBean", "import org.springframework.core.io.ClassPathResource" ], "arg_patterns": {} }, { "label": "app/src/e2eTest/kotlin/eu/corentic/springrag/e2e/cucumber/steps", "method_count": 17, "algorithm": "CRX", "grammar": "root ::= \"post\"?+ \"exchange\"?+ \"uri\"?+ \"expectStatus\"?+ \"contentType\"?+", "mdl_score": 0, "imports": [ "import eu.corentic.springrag.e2e.cucumber.config.ScenarioContext", "import io.cucumber.java.en.Given", "import org.springframework.beans.factory.annotation.Autowired", "import org.springframework.http.MediaType", "import org.springframework.test.web.reactive.server.WebTestClient", "import java.util.UUID", "import io.cucumber.java.en.Then", "import io.cucumber.java.en.When", "import io.cucumber.java.Before", "import org.junit.jupiter.api.Assertions.assertNotNull", "import org.awaitility.Awaitility.await", "import org.junit.jupiter.api.Assertions.assertEquals", "import org.springframework.http.client.MultipartBodyBuilder", "import org.springframework.web.reactive.function.BodyInserters", "import java.io.File", "import java.time.Duration" ], "arg_patterns": {} }, { "label": "app/src/integrationTest/kotlin/eu/corentic/springrag/config", "method_count": 15, "imports": [ "import org.springframework.batch.core.repository.JobRepository", "import org.springframework.batch.test.JobRepositoryTestUtils", "import org.springframework.boot.test.context.TestConfiguration", "import org.springframework.context.annotation.Bean", "import ai.docling.serve.api.DoclingServeApi", "import eu.corentic.springrag.agent.rag.embabel.EmbabelRagResponseInvoker", "import eu.corentic.springrag.agent.summarizer.embabel.EmbabelSummarizerResponseInvoker", "import com.embabel.agent.core.AgentPlatform", "import io.mockk.mockk", "import io.qdrant.client.QdrantClient", "import org.neo4j.driver.Driver", "import org.neo4j.driver.Session", "import org.springframework.ai.chat.model.ChatModel", "import org.springframework.ai.chat.prompt.ChatOptions", "import org.springframework.ai.embedding.EmbeddingModel", "import org.springframework.ai.vectorstore.VectorStore", "import org.springframework.context.annotation.Primary", "import org.springframework.security.authentication.ReactiveAuthenticationManager", "import org.springframework.batch.core.launch.JobOperator" ], "arg_patterns": {} }, { "label": "app/src/integrationTest/kotlin/eu/corentic/springrag/controller", "method_count": 5, "algorithm": "CRX", "grammar": "root ::= \"generateToken\"?+ (\"Ok\" | \"ParsedJwt\" | \"SimpleGrantedAuthority\" | \"any\" | \"every\" | \"extractAuthorities\" | \"extractUsername\" | \"listOf\" | \"parseToken\" | \"validateToken\")?+ \"get\"?+ \"ByteArray\"? \"User\"? \"bindToServer\"?+ \"InputStreamResource\"?+ \"ROLE_ADMIN\"? \"baseUrl\"?+ \"ByteArrayInputStream\"? \"mutate\"?+ \"fun\"? \"defaultHeader\"?+ \"Long\"?+ \"MultipartBodyBuilder\"? \"part\"?+ (\"header\" | \"post\" | \"uri\")?+ \"AUTHORIZATION\"? \"contentType\"?+ \"MULTIPART_FORM_DATA\"? \"body\"?+ \"fromMultipartData\"?+ \"build\"?+ \"exchange\"?+ \"expectStatus\"?+ \"isOk\"? \"isNotFound\"? \"expectBody\"?+ \"jsonPath\"?+ \"isEqualTo\"?+", "mdl_score": 0, "imports": [ "import eu.corentic.springrag.config.IntegrationTestConfig", "import eu.corentic.springrag.security.model.Role", "import eu.corentic.springrag.security.model.User", "import eu.corentic.springrag.security.service.JwtService", "import org.junit.jupiter.api.Test", "import org.junit.jupiter.api.BeforeEach", "import org.springframework.beans.factory.annotation.Autowired", "import org.springframework.boot.test.context.SpringBootTest", "import org.springframework.boot.webtestclient.autoconfigure.AutoConfigureWebTestClient", "import org.springframework.context.annotation.Import", "import org.springframework.http.HttpHeaders", "import org.springframework.test.context.ActiveProfiles", "import org.springframework.test.web.reactive.server.WebTestClient", "import com.ninjasquad.springmockk.MockkBean", "import eu.corentic.springrag.common.Outcome", "import eu.corentic.springrag.service.job.JobService", "import eu.corentic.springrag.service.knowledgebase.KnowledgeBaseService", "import io.mockk.every", "import java.io.ByteArrayInputStream", "import org.springframework.core.io.InputStreamResource", "import org.springframework.http.HttpStatus", "import org.springframework.http.MediaType", "import org.springframework.http.client.MultipartBodyBuilder", "import org.springframework.security.core.authority.SimpleGrantedAuthority", "import org.springframework.web.reactive.function.BodyInserters", "import org.springframework.boot.test.web.server.LocalServerPort" ], "arg_patterns": {} }, { "label": "app/src/integrationTest/kotlin/eu/corentic/springrag/service", "method_count": 3, "algorithm": "CRX", "grammar": "root ::= (\"Instant\" | \"JobId\" | \"KnowledgeBaseId\" | \"common\" | \"corentic\" | \"ids\" | \"of\" | \"parse\" | \"randomUUID\" | \"springrag\" | \"time\")?+ \"stream\"?+ \"model\"? (\"Assertions\" | \"anyMatch\" | \"api\" | \"assertTrue\" | \"expected\" | \"java\" | \"junit\" | \"jupiter\")?+ \"KnowledgeBase\"?+ \"simpleName\"? (\"every\" | \"existsById\")?+ \"findById\"?+ \"existsByJobIdAndKnowledgeBaseId\"?+ \"deleteKnowledgeBase\"?+ \"deleteDocument\"?+ \"KnowledgeBaseDeletionRequested\"? \"DocumentDeletionRequested\"? \"assertApplicationEventPublished\"?", "mdl_score": 0, "imports": [ "import com.ninjasquad.springmockk.MockkBean", "import eu.corentic.springrag.config.IntegrationTestConfig", "import eu.corentic.springrag.model.event.DocumentDeletionRequested", "import eu.corentic.springrag.model.event.KnowledgeBaseDeletionRequested", "import eu.corentic.springrag.service.knowledgebase.KnowledgeBaseApplicationService", "import eu.corentic.springrag.service.port.KnowledgeBaseDocumentPort", "import eu.corentic.springrag.service.port.KnowledgeBasePort", "import io.mockk.every", "import java.util.UUID", "import org.junit.jupiter.api.BeforeEach", "import org.junit.jupiter.api.Test", "import org.springframework.beans.factory.annotation.Autowired", "import org.springframework.boot.test.context.SpringBootTest", "import org.springframework.context.annotation.Import", "import org.springframework.test.context.ActiveProfiles", "import org.springframework.test.context.event.ApplicationEvents", "import org.springframework.test.context.event.RecordApplicationEvents" ], "arg_patterns": {} }, { "label": "app/src/systemTest/kotlin/eu/corentic/springrag/config", "method_count": 14, "imports": [ "import eu.corentic.springrag.testcontainers.OllamaModelSupport", "import eu.corentic.springrag.testcontainers.QdrantTestSupport", "import eu.corentic.springrag.testcontainers.QdrantTestSupport.recreateTestCollection", "import eu.corentic.springrag.testcontainers.SharedContainers", "import eu.corentic.springrag.testcontainers.SharedContainers.ContainerType", "import io.qdrant.client.QdrantClient", "import java.time.Duration", "import java.time.Instant", "import java.util.UUID", "import org.junit.jupiter.api.Assumptions", "import org.junit.jupiter.api.BeforeAll", "import org.junit.jupiter.api.BeforeEach", "import org.neo4j.driver.Driver", "import org.springframework.beans.factory.annotation.Autowired", "import org.springframework.boot.test.context.SpringBootTest", "import org.springframework.boot.webtestclient.autoconfigure.AutoConfigureWebTestClient", "import org.springframework.jdbc.core.JdbcTemplate", "import org.springframework.security.crypto.password.PasswordEncoder", "import org.springframework.test.context.ActiveProfiles", "import org.springframework.test.context.DynamicPropertyRegistry", "import org.springframework.test.context.DynamicPropertySource", "import org.springframework.test.context.TestPropertySource", "import org.springframework.test.web.reactive.server.WebTestClient", "import org.testcontainers.junit.jupiter.Testcontainers", "import java.sql.Timestamp", "import org.springframework.batch.core.repository.JobRepository", "import org.springframework.batch.test.JobRepositoryTestUtils", "import org.springframework.boot.test.context.TestConfiguration", "import org.springframework.context.annotation.Bean", "import org.mockito.Mockito", "import org.springframework.context.annotation.Primary" ], "arg_patterns": {} }, { "label": "app/src/systemTest/kotlin/eu/corentic/springrag/system", "method_count": 46, "imports": [ "import eu.corentic.springrag.config.BaseSystemTest", "import eu.corentic.springrag.controller.SessionChatRequest", "import eu.corentic.springrag.model.ChatResponse", "import java.time.Duration", "import org.junit.jupiter.api.Assertions.assertEquals", "import org.junit.jupiter.api.Assertions.assertNotNull", "import org.junit.jupiter.api.Assertions.assertTrue", "import org.junit.jupiter.api.Test", "import org.springframework.test.web.reactive.server.returnResult", "import eu.corentic.springrag.config.StorageProperties", "import eu.corentic.springrag.repository.VectorRepository", "import eu.corentic.springrag.repository.graph.DocumentJobNodeRepository", "import eu.corentic.springrag.service.job.JobStatus", "import eu.corentic.springrag.service.job.JobStatusType", "import eu.corentic.springrag.service.port.ObjectStoragePort", "import eu.corentic.springrag.common.ids.asJobId", "import eu.corentic.springrag.common.ids.asLogicalDocumentId", "import eu.corentic.springrag.common.ids.asStorageUri", "import java.io.File", "import java.nio.file.Files", "import java.nio.file.Path", "import java.nio.file.StandardCopyOption", "import kotlin.io.path.createDirectory", "import org.awaitility.Awaitility.await", "import org.junit.jupiter.api.Assertions.assertNotEquals", "import org.junit.jupiter.api.io.TempDir", "import org.springframework.beans.factory.annotation.Autowired", "import org.springframework.core.io.ClassPathResource", "import org.springframework.http.MediaType", "import org.springframework.http.client.MultipartBodyBuilder", "import org.springframework.web.reactive.function.BodyInserters", "import io.modelcontextprotocol.client.McpClient", "import io.modelcontextprotocol.client.McpSyncClient", "import io.modelcontextprotocol.client.transport.WebClientStreamableHttpTransport", "import io.modelcontextprotocol.spec.McpSchema", "import org.springframework.boot.test.web.server.LocalServerPort", "import org.springframework.test.web.reactive.server.WebTestClient", "import org.springframework.web.reactive.function.client.WebClient", "import eu.corentic.springrag.common.ids.asKnowledgeBaseId", "import kotlin.test.assertEquals", "import kotlin.test.assertNotEquals", "import kotlin.test.assertTrue", "import org.neo4j.driver.Values", "import eu.corentic.springrag.service.job.JobService", "import kotlinx.coroutines.runBlocking", "import org.junit.jupiter.api.assertThrows", "import java.util.*", "import eu.corentic.springrag.model.VectorChunk", "import eu.corentic.springrag.testcontainers.QdrantTestSupport", "import java.util.stream.Stream", "import org.awaitility.core.ConditionTimeoutException", "import org.junit.jupiter.api.Assertions.*", "import org.junit.jupiter.params.ParameterizedTest", "import org.junit.jupiter.params.provider.Arguments", "import org.junit.jupiter.params.provider.MethodSource" ], "arg_patterns": {} }, { "label": "app/src/test/kotlin/eu/corentic/springrag/architecture", "method_count": 87, "imports": [ "import java.nio.file.Files", "import java.nio.file.Path", "import kotlin.io.path.exists", "import org.junit.jupiter.api.Assertions.assertTrue", "import org.junit.jupiter.api.Test", "import org.junit.jupiter.api.fail", "import com.lemonappdev.konsist.api.Konsist", "import com.lemonappdev.konsist.api.ext.list.withAnnotationOf", "import com.lemonappdev.konsist.api.verify.assertTrue", "import org.springframework.stereotype.Service", "import java.io.IOException", "import java.nio.file.FileVisitResult", "import java.nio.file.Paths", "import java.nio.file.SimpleFileVisitor", "import java.nio.file.attribute.BasicFileAttributes" ], "arg_patterns": {} }, { "label": "app/src/test/kotlin/eu/corentic/springrag/config", "method_count": 3, "algorithm": "CRX", "grammar": "root ::= \"YamlPropertiesFactoryBean\"? \"loadYaml\"? \"setResources\"?+ \"assertFalse\"? \"ClassPathResource\"? (\"assertEquals\" | \"assertTrue\" | \"containsKey\")?+ \"return factory.`object` ?: emptyMap()\"? \"`object`\"? \"emptyMap\"?+", "mdl_score": 480, "imports": [ "import kotlin.test.assertEquals", "import kotlin.test.assertFalse", "import kotlin.test.assertTrue", "import org.junit.jupiter.api.Test", "import org.springframework.beans.factory.config.YamlPropertiesFactoryBean", "import org.springframework.core.io.ClassPathResource" ], "arg_patterns": {} }, { "label": "buildSrc/src/main/kotlin", "method_count": 8, "algorithm": "CRX", "grammar": "root ::= \"getByType\"+ \"SourceSetContainer\"?", "mdl_score": 5, "imports": [ "import org.gradle.api.Project", "import org.gradle.api.artifacts.VersionCatalogsExtension", "import org.gradle.api.file.SourceDirectorySet", "import org.gradle.api.plugins.JavaPluginExtension", "import org.gradle.api.tasks.SourceSet", "import org.gradle.api.tasks.SourceSetContainer", "import org.gradle.api.tasks.TaskProvider", "import org.gradle.api.tasks.testing.Test", "import org.gradle.jvm.toolchain.JavaLanguageVersion", "import org.gradle.kotlin.dsl.get", "import org.gradle.kotlin.dsl.getByType", "import org.gradle.kotlin.dsl.named", "import org.gradle.kotlin.dsl.register", "import org.gradle.kotlin.dsl.withType" ], "arg_patterns": {} }, { "label": "buildSrc/src/test/kotlin", "method_count": 5, "algorithm": "CRX", "grammar": "root ::= (\"build\" | \"builder\" | \"withName\" | \"withParent\")?+ \"withType\"?+ \"configureStandardRepositories\"?+ \"pluginManager\"? \"MavenArtifactRepository\"? \"mavenRepositoryUrls\"?+ \"apply\"?+ \"extensions\"? \"getByType\"?+ \"SourceSetContainer\"? \"java\"? \"create\"?+ \"registerJvmTestTask\"?+ (\"get\" | \"named\" | \"register\" | \"registerStandardAggregateVerificationTasks\" | \"tasks\")?+ (\"URI\" | \"assertEquals\" | \"assertFalse\" | \"assertNotNull\" | \"assertTrue\" | \"classesDirs\" | \"classpath\" | \"contains\" | \"description\" | \"files\" | \"getDependencies\" | \"group\" | \"map\" | \"output\" | \"path\" | \"runtimeClasspath\" | \"setOf\" | \"size\" | \"taskDependencies\" | \"testClassesDirs\" | \"toSet\" | \"url\")?+ \"isEmpty\"?+ \"filter\"? \"isFailOnNoMatchingTests\"?", "mdl_score": 0, "imports": [ "import java.net.URI", "import kotlin.test.assertEquals", "import kotlin.test.assertFalse", "import kotlin.test.assertNotNull", "import kotlin.test.assertTrue", "import org.gradle.api.artifacts.repositories.MavenArtifactRepository", "import org.gradle.api.tasks.SourceSetContainer", "import org.gradle.testfixtures.ProjectBuilder", "import org.junit.jupiter.api.Test" ], "arg_patterns": {} }, { "label": "entrypoints/agent-mcp-server/src/main/kotlin/eu/corentic/springrag/mcp", "method_count": 3, "algorithm": "CRX", "grammar": "root ::= \"mono\"? \"listCapabilities\"?+ \"filter\"?+ \"AgentCapabilityDescriptor\"? (\"KnowledgeBaseId\" | \"RagInvocation\" | \"RagRequest\" | \"WikipediaLookupRequest\" | \"addTextContent\" | \"builder\" | \"capabilityType\" | \"description\" | \"displayName\" | \"else\" | \"id\" | \"if\" | \"invoke\" | \"isEmpty\" | \"isNullOrBlank\" | \"joinToString\" | \"let\" | \"mapOf\" | \"mcp\" | \"structuredContent\" | \"summary\" | \"toMarkdownSummary\" | \"topic\" | \"wikipediaUrl\")?+ \"found\"? \"build\"?+", "mdl_score": 1512, "imports": [ "import eu.corentic.springrag.agent.capability.AgentCapabilityDescriptor", "import eu.corentic.springrag.agent.capability.AgentCapabilityDirectory", "import eu.corentic.springrag.agent.capability.isExposedOverMcp", "import io.modelcontextprotocol.spec.McpSchema.CallToolResult", "import kotlinx.coroutines.reactor.mono", "import org.springaicommunity.mcp.annotation.McpTool", "import org.springframework.stereotype.Component", "import reactor.core.publisher.Mono", "import eu.corentic.springrag.agent.capability.AgentExecutionContext", "import eu.corentic.springrag.agent.rag.RagAgentInvocationGateway", "import eu.corentic.springrag.agent.rag.RagInvocation", "import eu.corentic.springrag.agent.rag.RagRequest", "import eu.corentic.springrag.common.ids.KnowledgeBaseId", "import eu.corentic.springrag.model.toMarkdownSummary", "import org.springaicommunity.mcp.annotation.McpToolParam", "import eu.corentic.springrag.agent.wikipedia.WikipediaLookupInvocationGateway", "import eu.corentic.springrag.agent.wikipedia.WikipediaLookupRequest" ], "arg_patterns": {} }, { "label": "entrypoints/agent-mcp-server/src/test/kotlin/eu/corentic/springrag/mcp", "method_count": 3, "algorithm": "CRX", "grammar": "root ::= \"ChatResponse\"? \"AgentCapabilityDescriptor\"?+ \"WikipediaLookupResponse\"? \"every\"? (\"Source\" | \"listCapabilities\" | \"listOf\")?+ \"coEvery\"? \"invoke\"?+ \"any\"? (\"ragAnswer\" | \"wikipediaLookup\")?+ \"block\"?+ \"content\"?+ \"first\"?+ \"TextContent\"? (\"assertTrue\" | \"contains\" | \"text\")?+ \"@\"? \"Suppress\"?+ (\"Any\" | \"List\" | \"Map\" | \"String\" | \"assertEquals\" | \"structuredContent\")?+ \"size\"?", "mdl_score": 0, "imports": [ "import eu.corentic.springrag.agent.capability.AgentCapabilityDescriptor", "import eu.corentic.springrag.agent.capability.AgentCapabilityDirectory", "import io.mockk.every", "import io.mockk.mockk", "import io.modelcontextprotocol.spec.McpSchema.TextContent", "import org.junit.jupiter.api.Assertions.assertEquals", "import org.junit.jupiter.api.Assertions.assertTrue", "import org.junit.jupiter.api.Test", "import eu.corentic.springrag.agent.rag.RagAgentInvocationGateway", "import eu.corentic.springrag.model.ChatResponse", "import eu.corentic.springrag.model.Source", "import io.mockk.coEvery", "import eu.corentic.springrag.agent.wikipedia.WikipediaLookupInvocationGateway", "import eu.corentic.springrag.agent.wikipedia.WikipediaLookupResponse" ], "arg_patterns": {} }, { "label": "entrypoints/web/src/main/kotlin/eu/corentic/springrag/config", "method_count": 3, "algorithm": "CRX", "grammar": "root ::= \"addMapping\"?+ \"defer\"?+ \"allowedOriginPatterns\"?+ \"split\"?+ \"map\"?+ \"trim\"?+ (\"contains\" | \"doFinally\" | \"else\" | \"filter\" | \"if\" | \"method\" | \"name\" | \"nanoTime\" | \"path\" | \"pathWithinApplication\" | \"put\" | \"request\" | \"response\" | \"return chain.filter(exchange)\" | \"return chain.filter(exchange)\n .doFinally {\n val tookMs = (System.nanoTime() - startedAt) / 1_000_000\n val status = exchange.response.statusCode?.value() ?: 0\n logger.info { \\\"LIBRECHAT $method $path -> $status (${tookMs}ms)\\\" }\n }\" | \"startsWith\" | \"statusCode\" | \"uri\" | \"value\" | \"when\")?+ (\"info\" | \"remove\")?+ \"isNotEmpty\"?+ \"toTypedArray\"?+ \"allowedMethods\"?+ \"allowedHeaders\"?+ \"allowCredentials\"?+", "mdl_score": 0, "imports": [ "import org.springframework.beans.factory.annotation.Value", "import org.springframework.context.annotation.Configuration", "import org.springframework.web.reactive.config.CorsRegistry", "import org.springframework.web.reactive.config.WebFluxConfigurer", "import org.slf4j.MDC", "import org.springframework.boot.autoconfigure.condition.ConditionalOnProperty", "import org.springframework.web.server.ServerWebExchange", "import org.springframework.web.server.WebFilter", "import org.springframework.web.server.WebFilterChain", "import reactor.core.publisher.Mono", "import io.github.oshai.kotlinlogging.KotlinLogging", "import org.springframework.core.Ordered", "import org.springframework.core.annotation.Order", "import org.springframework.stereotype.Component" ], "arg_patterns": {} }, { "label": "entrypoints/web/src/main/kotlin/eu/corentic/springrag/controller", "method_count": 58, "algorithm": "CRX", "grammar": "root ::= \"warn\"?+ \"message\"? \"status\"?+", "mdl_score": 14, "imports": [ "import eu.corentic.springrag.common.ids.BatchId", "import eu.corentic.springrag.config.StorageProperties", "import eu.corentic.springrag.service.job.BatchOwnershipService", "import eu.corentic.springrag.service.job.JobService", "import eu.corentic.springrag.service.job.JobStatus", "import eu.corentic.springrag.service.knowledgebase.KnowledgeBaseApplicationService", "import eu.corentic.springrag.service.knowledgebase.KnowledgeBaseNotFoundException", "import jakarta.validation.constraints.NotBlank", "import jakarta.validation.constraints.Pattern", "import org.springframework.http.ResponseEntity", "import org.springframework.security.access.prepost.PreAuthorize", "import org.springframework.security.core.Authentication", "import org.springframework.validation.annotation.Validated", "import org.springframework.web.bind.annotation.*", "import eu.corentic.springrag.agent.capability.AgentCapabilityDescriptor", "import eu.corentic.springrag.model.ChatResponse", "import eu.corentic.springrag.service.chat.ChatService", "import jakarta.validation.Valid", "import org.springframework.web.bind.annotation.GetMapping", "import org.springframework.web.bind.annotation.PostMapping", "import org.springframework.web.bind.annotation.RequestBody", "import org.springframework.web.bind.annotation.RequestMapping", "import org.springframework.web.bind.annotation.RestController", "import kotlinx.coroutines.TimeoutCancellationException", "import kotlinx.coroutines.withTimeout", "import io.github.oshai.kotlinlogging.KotlinLogging", "import org.springframework.beans.factory.annotation.Value", "import java.util.UUID", "import eu.corentic.springrag.controller.dto.ErrorResponse", "import eu.corentic.springrag.security.service.PasswordPolicyViolationException", "import eu.corentic.springrag.security.service.UserAlreadyExistsException", "import eu.corentic.springrag.service.knowledgebase.KnowledgeBaseAlreadyExistsException", "import eu.corentic.springrag.service.knowledgebase.DocumentNotFoundInKnowledgeBaseException", "import eu.corentic.springrag.service.knowledgebase.InvalidKnowledgeBaseNameException", "import eu.corentic.springrag.service.knowledgebase.KnowledgeBaseSizeLimitExceededException", "import eu.corentic.springrag.service.job.JobAlreadyCompleteException", "import eu.corentic.springrag.service.job.JobAlreadyRunningException", "import eu.corentic.springrag.service.job.JobExecutionNotFoundException", "import eu.corentic.springrag.service.job.BatchOwnershipException", "import eu.corentic.springrag.service.job.BatchNotFoundException", "import eu.corentic.springrag.service.job.BatchOwnerRequiredException", "import eu.corentic.springrag.service.job.JobInputValidationException", "import jakarta.validation.ConstraintViolationException", "import org.springframework.http.HttpStatus", "import org.springframework.http.converter.HttpMessageNotReadableException", "import org.springframework.core.io.buffer.DataBufferLimitException", "import org.springframework.web.bind.MethodArgumentNotValidException", "import org.springframework.web.bind.annotation.ExceptionHandler", "import org.springframework.web.bind.annotation.RestControllerAdvice", "import org.springframework.web.method.annotation.MethodArgumentTypeMismatchException", "import org.springframework.web.server.ServerWebInputException", "import org.springframework.web.server.MissingRequestValueException", "import org.springframework.web.bind.support.WebExchangeBindException", "import eu.corentic.springrag.service.knowledgebase.*", "import io.swagger.v3.oas.annotations.Operation", "import io.swagger.v3.oas.annotations.tags.Tag", "import io.swagger.v3.oas.annotations.Parameter", "import java.security.Principal", "import kotlinx.coroutines.reactor.awaitSingle", "import org.springframework.http.codec.multipart.FilePart", "import eu.corentic.springrag.common.ids.Filename", "import eu.corentic.springrag.common.ids.StorageUri", "import eu.corentic.springrag.service.job.StagedUploadCleanupService", "import eu.corentic.springrag.service.port.ObjectStoragePort", "import kotlinx.coroutines.reactor.awaitSingleOrNull", "import java.nio.file.Files", "import java.nio.file.Path", "import org.springframework.core.io.buffer.DataBufferUtils", "import org.springframework.stereotype.Component", "import eu.corentic.springrag.security.service.JwtService", "import eu.corentic.springrag.security.service.UserService", "import org.springframework.security.crypto.password.PasswordEncoder" ], "arg_patterns": {} }, { "label": "entrypoints/web/src/main/kotlin/eu/corentic/springrag/controller/librechat", "method_count": 29, "imports": [ "import com.fasterxml.jackson.annotation.JsonProperty", "import eu.corentic.springrag.common.ids.JobId", "import eu.corentic.springrag.common.ids.Filename", "import eu.corentic.springrag.common.ids.asStorageUri", "import eu.corentic.springrag.model.GraphTableElement", "import eu.corentic.springrag.model.GraphTextElement", "import eu.corentic.springrag.service.document.DocumentIdentity", "import eu.corentic.springrag.service.port.DocumentIdPort", "import eu.corentic.springrag.service.port.DocumentImagePort", "import eu.corentic.springrag.service.port.DocumentParserPort", "import eu.corentic.springrag.service.port.DocumentParsingRequest", "import eu.corentic.springrag.service.port.ObjectStoragePort", "import eu.corentic.springrag.service.port.VectorDocumentDeletionPort", "import eu.corentic.springrag.service.port.VectorDocumentPort", "import eu.corentic.springrag.agent.rag.librechat.LibreChatRetrievalInvoker", "import eu.corentic.springrag.agent.rag.librechat.LibreChatRetrievalRequest", "import eu.corentic.springrag.service.job.JobService", "import eu.corentic.springrag.service.job.JobStatusType", "import eu.corentic.springrag.service.port.AgentKnowledgeBasePort", "import jakarta.validation.Valid", "import jakarta.validation.constraints.NotBlank", "import jakarta.validation.constraints.NotEmpty", "import kotlinx.coroutines.CoroutineDispatcher", "import kotlinx.coroutines.withContext", "import kotlinx.coroutines.reactor.awaitSingleOrNull", "import org.springframework.http.MediaType", "import org.springframework.http.ResponseEntity", "import org.springframework.http.codec.multipart.FilePart", "import org.springframework.web.bind.annotation.*", "import org.springframework.core.io.buffer.DataBufferUtils", "import kotlin.math.max", "import kotlin.math.min", "import eu.corentic.springrag.common.ids.BatchId", "import eu.corentic.springrag.common.ids.StorageUri", "import eu.corentic.springrag.config.StorageProperties", "import eu.corentic.springrag.controller.InvalidUploadRequestException", "import eu.corentic.springrag.service.job.StagedUploadCleanupService", "import java.nio.file.Files", "import java.nio.file.Path", "import java.util.UUID", "import kotlin.time.Duration.Companion.seconds", "import kotlinx.coroutines.delay", "import org.springframework.stereotype.Component" ], "arg_patterns": {} }, { "label": "entrypoints/web/src/main/kotlin/eu/corentic/springrag/controller/web", "method_count": 6, "algorithm": "CRX", "grammar": "root ::= \"collectList\"?+ (\"return \\\"chat\\\"\" | \"return \\\"index\\\"\" | \"return \\\"jobs\\\"\" | \"return \\\"knowledge-bases\\\"\" | \"return \\\"upload\\\"\")? \"awaitSingle\"?+ \"try\"? \"handleUpload\"?+ \"name\"? (\"IllegalArgumentException\" | \"InvalidUploadRequestException\" | \"KnowledgeBaseNotFoundException\" | \"RuntimeException\" | \"badRequest\" | \"body\" | \"catch\" | \"internalServerError\" | \"mapOf\" | \"message\" | \"return ResponseEntity.badRequest()\n .body(mapOf(\\\"error\\\" to (e.message ?: \\\"Invalid request\\\")))\" | \"return ResponseEntity.badRequest()\n .body(mapOf(\\\"error\\\" to (e.message ?: \\\"Invalid upload request\\\")))\" | \"return ResponseEntity.badRequest()\n .body(mapOf(\\\"error\\\" to (e.message ?: \\\"Knowledge base not found\\\")))\" | \"return ResponseEntity.internalServerError()\n .body(mapOf(\\\"error\\\" to \\\"Failed to upload files: ${e.message}\\\"))\")?+ \"mutableMapOf\"?+ \"String\"?+ \"Any\"? \"batchId\"? \"fileCount\"? \"files\"? \"if\"? \"jobTriggered\"? \"jobId\"? \"jobError\"? \"let\"?+ \"return ResponseEntity.ok(response)\"? \"ok\"?+", "mdl_score": 0, "imports": [ "import eu.corentic.springrag.controller.UploadWorkflow", "import eu.corentic.springrag.controller.InvalidUploadRequestException", "import eu.corentic.springrag.service.knowledgebase.KnowledgeBaseNotFoundException", "import java.security.Principal", "import kotlinx.coroutines.reactor.awaitSingle", "import org.springframework.http.MediaType", "import org.springframework.http.ResponseEntity", "import org.springframework.http.codec.multipart.FilePart", "import org.springframework.stereotype.Controller", "import org.springframework.web.bind.annotation.PostMapping", "import org.springframework.web.bind.annotation.RequestParam", "import org.springframework.web.bind.annotation.RequestPart", "import org.springframework.web.bind.annotation.ResponseBody", "import reactor.core.publisher.Flux", "import org.springframework.web.bind.annotation.GetMapping" ], "arg_patterns": {} }, { "label": "entrypoints/web/src/test/kotlin/eu/corentic/springrag/config", "method_count": 4, "algorithm": "CRX", "grammar": "root ::= \"from\"?+ \"bindToWebHandler\"?+ \"webTestClient\"? \"post\"?+ \"WebHandler\"? (\"OK\" | \"response\" | \"setStatusCode\")?+ \"setComplete\"?+ \"webFilter\"?+ \"build\"?+ (\"AtomicReference\" | \"String\")?+ \"WebFilterChain\"? (\"assertEquals\" | \"assertNull\" | \"block\" | \"empty\" | \"filter\" | \"get\" | \"set\")?+ \"uri\"?+ \"exchange\"?+ \"expectStatus\"?+ \"isOk\"?", "mdl_score": 0, "imports": [ "import java.util.concurrent.atomic.AtomicReference", "import org.junit.jupiter.api.Assertions.assertEquals", "import org.junit.jupiter.api.Assertions.assertNull", "import org.junit.jupiter.api.Test", "import org.slf4j.MDC", "import org.springframework.mock.http.server.reactive.MockServerHttpRequest", "import org.springframework.mock.web.server.MockServerWebExchange", "import org.springframework.web.server.WebFilterChain", "import reactor.core.publisher.Mono", "import org.springframework.http.HttpStatus", "import org.springframework.test.web.reactive.server.WebTestClient", "import org.springframework.web.server.WebHandler" ], "arg_patterns": {} }, { "label": "entrypoints/web/src/test/kotlin/eu/corentic/springrag/controller", "method_count": 83, "algorithm": "CRX", "grammar": "root ::= \"expectBody\"?+ \"post\"?+ \"jsonPath\"?+ \"uri\"?+ \"isEqualTo\"?+ \"exchange\"?+ \"expectStatus\"?+", "mdl_score": 0, "imports": [ "import eu.corentic.springrag.common.ids.BatchId", "import eu.corentic.springrag.config.StorageProperties", "import eu.corentic.springrag.service.job.BatchOwnershipService", "import eu.corentic.springrag.service.job.JobService", "import eu.corentic.springrag.service.job.BatchOwnershipException", "import eu.corentic.springrag.service.job.JobStatus", "import eu.corentic.springrag.service.job.JobStatusType", "import eu.corentic.springrag.service.knowledgebase.KnowledgeBaseApplicationService", "import eu.corentic.springrag.service.knowledgebase.KnowledgeBaseResponse", "import io.mockk.every", "import io.mockk.mockk", "import io.mockk.verify", "import java.nio.file.Path", "import java.time.Duration", "import java.time.LocalDateTime", "import org.junit.jupiter.api.BeforeEach", "import org.junit.jupiter.api.Test", "import org.junit.jupiter.api.io.TempDir", "import org.springframework.test.web.reactive.server.WebTestClient", "import eu.corentic.springrag.service.job.BatchNotFoundException", "import eu.corentic.springrag.agent.capability.AgentCapabilityDescriptor", "import eu.corentic.springrag.model.ChatResponse", "import eu.corentic.springrag.model.Source", "import eu.corentic.springrag.service.chat.ChatService", "import io.mockk.coEvery", "import io.mockk.coVerify", "import kotlinx.coroutines.test.runTest", "import org.springframework.http.codec.json.JacksonJsonDecoder", "import org.springframework.http.codec.json.JacksonJsonEncoder", "import tools.jackson.databind.json.JsonMapper", "import tools.jackson.module.kotlin.KotlinModule", "import org.junit.jupiter.api.Assertions.assertEquals", "import org.junit.jupiter.api.Assertions.assertNotNull", "import eu.corentic.springrag.security.service.PasswordPolicyViolationException", "import eu.corentic.springrag.security.service.UserAlreadyExistsException", "import eu.corentic.springrag.service.knowledgebase.DocumentNotFoundInKnowledgeBaseException", "import eu.corentic.springrag.service.knowledgebase.KnowledgeBaseAlreadyExistsException", "import eu.corentic.springrag.service.knowledgebase.KnowledgeBaseSizeLimitExceededException", "import eu.corentic.springrag.service.knowledgebase.InvalidKnowledgeBaseNameException", "import eu.corentic.springrag.service.knowledgebase.KnowledgeBaseNotFoundException", "import eu.corentic.springrag.service.job.JobAlreadyCompleteException", "import eu.corentic.springrag.service.job.BatchOwnerRequiredException", "import eu.corentic.springrag.service.job.JobAlreadyRunningException", "import eu.corentic.springrag.service.job.JobExecutionNotFoundException", "import eu.corentic.springrag.service.job.JobInputValidationException", "import java.io.ByteArrayInputStream", "import kotlin.test.assertEquals", "import org.springframework.core.io.buffer.DataBufferLimitException", "import org.springframework.core.MethodParameter", "import org.springframework.http.HttpHeaders", "import org.springframework.http.HttpInputMessage", "import org.springframework.http.HttpStatus", "import org.springframework.http.converter.HttpMessageNotReadableException", "import org.springframework.web.method.annotation.MethodArgumentTypeMismatchException", "import eu.corentic.springrag.service.knowledgebase.CreateKnowledgeBaseRequest", "import eu.corentic.springrag.service.knowledgebase.KnowledgeBaseListItem", "import eu.corentic.springrag.service.knowledgebase.KnowledgeBaseStatistics", "import io.mockk.just", "import io.mockk.runs", "import java.time.Instant", "import kotlinx.coroutines.runBlocking", "import org.springframework.http.MediaType", "import eu.corentic.springrag.service.job.StagedUploadCleanupService", "import eu.corentic.springrag.service.port.ObjectStoragePort", "import io.mockk.slot", "import java.io.File", "import org.springframework.http.client.MultipartBodyBuilder", "import org.springframework.web.reactive.function.BodyInserters" ], "arg_patterns": {} }, { "label": "entrypoints/web/src/test/kotlin/eu/corentic/springrag/controller/auth", "method_count": 5, "algorithm": "CRX", "grammar": "root ::= (\"CREATED\" | \"LoginRequest\" | \"LoginResponse\" | \"OK\" | \"ROLE_USER\" | \"RegisterRequest\" | \"UNAUTHORIZED\" | \"User\" | \"UserAlreadyExistsException\" | \"assertEquals\" | \"assertThrows\" | \"body\" | \"every\" | \"findByUsername\" | \"generateToken\" | \"login\" | \"matches\" | \"register\" | \"registerUser\" | \"runBlocking\" | \"statusCode\" | \"token\" | \"username\")?+ \"init\"?+ \"Map\"?+ \"name\"? \"AuthController\"? \"assertTrue\"? \"role\"?", "mdl_score": 34845, "imports": [ "import eu.corentic.springrag.security.model.Role", "import eu.corentic.springrag.security.model.User", "import eu.corentic.springrag.security.service.JwtService", "import eu.corentic.springrag.security.service.UserAlreadyExistsException", "import eu.corentic.springrag.security.service.UserService", "import io.mockk.MockKAnnotations", "import io.mockk.every", "import io.mockk.impl.annotations.MockK", "import kotlinx.coroutines.runBlocking", "import org.junit.jupiter.api.Assertions.assertEquals", "import org.junit.jupiter.api.Assertions.assertTrue", "import org.junit.jupiter.api.BeforeEach", "import org.junit.jupiter.api.Test", "import org.junit.jupiter.api.assertThrows", "import org.springframework.http.HttpStatus", "import org.springframework.security.crypto.password.PasswordEncoder" ], "arg_patterns": {} }, { "label": "entrypoints/web/src/test/kotlin/eu/corentic/springrag/controller/librechat", "method_count": 46, "algorithm": "CRX", "grammar": "root ::= \"every\"? \"exchange\"?+ (\"get\" | \"post\")?+ \"expectStatus\"?+ \"uri\"?+ \"isOk\"? \"contentType\"?+ \"expectBody\"?+ \"jsonPath\"?+ \"isEqualTo\"?+", "mdl_score": 0, "imports": [ "import eu.corentic.springrag.agent.rag.librechat.LibreChatRetrievalInvoker", "import eu.corentic.springrag.agent.rag.librechat.LibreChatRetrievalRequest", "import eu.corentic.springrag.agent.rag.librechat.LibreChatRetrievalResult", "import eu.corentic.springrag.common.ids.JobId", "import eu.corentic.springrag.common.ids.asStorageUri", "import eu.corentic.springrag.controller.GlobalExceptionHandler", "import eu.corentic.springrag.model.GraphDocument", "import eu.corentic.springrag.model.GraphTableElement", "import eu.corentic.springrag.model.GraphTextElement", "import eu.corentic.springrag.model.ParsedDocument", "import eu.corentic.springrag.model.VectorChunk", "import eu.corentic.springrag.service.job.JobService", "import eu.corentic.springrag.service.job.JobStatus", "import eu.corentic.springrag.service.job.JobStatusType", "import eu.corentic.springrag.service.port.AgentKnowledgeBasePort", "import eu.corentic.springrag.service.port.DocumentIdPort", "import eu.corentic.springrag.service.port.DocumentImageInfo", "import eu.corentic.springrag.service.port.DocumentImagePort", "import eu.corentic.springrag.service.port.DocumentParserPort", "import eu.corentic.springrag.service.port.ObjectStoragePort", "import eu.corentic.springrag.service.port.VectorDocumentDeletionPort", "import eu.corentic.springrag.service.port.VectorDocumentPort", "import kotlinx.coroutines.CoroutineDispatcher", "import kotlinx.coroutines.test.UnconfinedTestDispatcher", "import io.mockk.coEvery", "import io.mockk.coVerify", "import io.mockk.every", "import io.mockk.mockk", "import io.mockk.slot", "import io.mockk.verify", "import org.junit.jupiter.api.BeforeEach", "import org.junit.jupiter.api.Test", "import org.springframework.http.HttpMethod", "import org.springframework.http.MediaType", "import org.springframework.http.client.MultipartBodyBuilder", "import org.springframework.test.web.reactive.server.WebTestClient", "import org.springframework.web.reactive.function.BodyInserters", "import kotlin.test.assertEquals", "import kotlin.test.assertNotNull", "import kotlin.test.assertTrue", "import eu.corentic.springrag.common.ids.StorageUri", "import eu.corentic.springrag.config.StorageProperties", "import eu.corentic.springrag.controller.InvalidUploadRequestException", "import eu.corentic.springrag.service.job.StagedUploadCleanupService", "import kotlinx.coroutines.test.runTest", "import org.springframework.core.io.buffer.DefaultDataBufferFactory", "import org.springframework.http.HttpHeaders", "import org.springframework.http.codec.multipart.FilePart", "import reactor.core.publisher.Flux", "import kotlin.test.assertContains", "import kotlin.test.assertFailsWith" ], "arg_patterns": {} }, { "label": "entrypoints/web/src/test/kotlin/eu/corentic/springrag/controller/web", "method_count": 10, "algorithm": "CRX", "grammar": "root ::= \"RuntimeException\"? \"runBlocking\"? \"verify\"? \"handleFileUpload\"?+ \"controller\"? \"just\"?+ (\"every\" | \"knowledgeBaseExists\")?+ \"filePart\"? \"startBulkJob\"?+ (\"OK\" | \"assertEquals\" | \"statusCode\")?+ \"any\"?+ \"body\"? \"get\"?+", "mdl_score": 0, "imports": [ "import eu.corentic.springrag.config.StorageProperties", "import eu.corentic.springrag.controller.UploadWorkflow", "import eu.corentic.springrag.service.job.BatchOwnershipService", "import eu.corentic.springrag.service.job.JobService", "import eu.corentic.springrag.service.job.StagedUploadCleanupService", "import eu.corentic.springrag.service.knowledgebase.KnowledgeBaseApplicationService", "import eu.corentic.springrag.service.port.ObjectStoragePort", "import eu.corentic.springrag.service.knowledgebase.KnowledgeBaseResponse", "import io.mockk.every", "import io.mockk.mockk", "import io.mockk.verify", "import java.nio.file.Files", "import java.nio.file.Path", "import java.time.Duration", "import java.time.Instant", "import kotlinx.coroutines.runBlocking", "import org.junit.jupiter.api.Assertions.assertEquals", "import org.junit.jupiter.api.Assertions.assertFalse", "import org.junit.jupiter.api.Assertions.assertTrue", "import org.junit.jupiter.api.Test", "import org.junit.jupiter.api.io.TempDir", "import org.springframework.http.HttpHeaders", "import org.springframework.http.HttpStatus", "import org.springframework.http.codec.multipart.FilePart", "import reactor.core.publisher.Flux", "import reactor.core.publisher.Mono" ], "arg_patterns": {} }, { "label": "infrastructure/adapters", "method_count": 3, "algorithm": "CRX", "grammar": "root ::= \"builder\"?+ \"return Neo4jTransactionManager(driver)\"? \"return CommandLineRunner {\n try {\n driver.session().use { session ->\n logger.info { \\\"[NEO4J] Initializing schema constraints...\\\" }\n\n session.run(\n \\\"CREATE CONSTRAINT document_id_unique IF NOT EXISTS FOR (d:Document) REQUIRE d.id IS UNIQUE\\\"\n )\n session.run(\n \\\"CREATE CONSTRAINT page_id_unique IF NOT EXISTS FOR (p:Page) REQUIRE p.id IS UNIQUE\\\"\n )\n session.run(\n \\\"CREATE CONSTRAINT image_id_unique IF NOT EXISTS FOR (i:ImageData) REQUIRE i.id IS UNIQUE\\\"\n )\n session.run(\n \\\"CREATE CONSTRAINT text_id_unique IF NOT EXISTS FOR (t:TextElement) REQUIRE t.id IS UNIQUE\\\"\n )\n session.run(\n \\\"CREATE CONSTRAINT table_id_unique IF NOT EXISTS FOR (t:TableElement) REQUIRE t.id IS UNIQUE\\\"\n )\n session.run(\n \\\"CREATE CONSTRAINT header_id_unique IF NOT EXISTS FOR (h:SectionHeaderElement) REQUIRE h.id IS UNIQUE\\\"\n )\n session.run(\n \\\"CREATE CONSTRAINT picture_id_unique IF NOT EXISTS FOR (p:PictureElement) REQUIRE p.id IS UNIQUE\\\"\n )\n session.run(\n \\\"CREATE CONSTRAINT knowledge_base_id_unique IF NOT EXISTS FOR (kb:KnowledgeBase) REQUIRE kb.id IS UNIQUE\\\"\n )\n\n session.run(\\\"MATCH (d:Document) WHERE d.version IS NULL SET d.version = 0\\\")\n session.run(\\\"MATCH (p:Page) WHERE p.version IS NULL SET p.version = 0\\\")\n session.run(\\\"MATCH (i:ImageData) WHERE i.version IS NULL SET i.version = 0\\\")\n session.run(\\\"MATCH (t:TextElement) WHERE t.version IS NULL SET t.version = 0\\\")\n session.run(\\\"MATCH (t:TableElement) WHERE t.version IS NULL SET t.version = 0\\\")\n session.run(\\\"MATCH (p:PictureElement) WHERE p.version IS NULL SET p.version = 0\\\")\n session.run(\\\"MATCH (h:SectionHeaderElement) WHERE h.version IS NULL SET h.version = 0\\\")\n session.run(\\\"MATCH (k:KnowledgeBase) WHERE k.version IS NULL SET k.version = 0\\\")\n\n logger.info { \\\"[NEO4J] All unique constraints verified/created\\\" }\n }\n } catch (e: RuntimeException) {\n logger.error(e) { \\\"[NEO4J] Failed to initialize schema\\\" }\n throw e\n }\n }\"? \"chatMemoryRepository\"?+ \"Neo4jTransactionManager\"? \"CommandLineRunner\"? \"maxMessages\"?+ \"try\"? \"build\"?+ \"session\"?+ \"use\"?+ (\"info\" | \"run\")?+ \"catch\"? \"RuntimeException\"? \"error\"?+ \"throw e\"? \"throw\"?", "mdl_score": 0, "imports": [ "import org.springframework.ai.chat.memory.ChatMemory", "import org.springframework.ai.chat.memory.ChatMemoryRepository", "import org.springframework.ai.chat.memory.MessageWindowChatMemory", "import org.springframework.beans.factory.annotation.Value", "import org.springframework.context.annotation.Bean", "import org.springframework.context.annotation.Configuration", "import org.neo4j.driver.Driver", "import org.springframework.boot.autoconfigure.condition.ConditionalOnProperty", "import org.springframework.context.annotation.Primary", "import org.springframework.data.neo4j.core.transaction.Neo4jTransactionManager", "import org.springframework.transaction.PlatformTransactionManager", "import io.github.oshai.kotlinlogging.KotlinLogging", "import org.springframework.boot.CommandLineRunner" ], "arg_patterns": {} }, { "label": "infrastructure/adapters/ai-provider/src/main/kotlin/eu/corentic/springrag/config", "method_count": 4, "algorithm": "CRX", "grammar": "root ::= \"connectTimeout\"? \"timeout\"? (\"region\" | \"writeValueAsString\")?+ \"toMillis\"?+ \"read\"? \"coerceAtMost\"?+ \"MAX_VALUE\"? \"toLong\"?+ \"toInt\"?+ (\"CONNECT_TIMEOUT_MILLIS\" | \"END\" | \"InputType\" | \"LoggingCohereEmbeddingBedrockApi\" | \"ReactorClientHttpRequestFactory\" | \"ReadTimeoutHandler\" | \"SEARCH_DOCUMENT\" | \"SECONDS\" | \"Truncate\" | \"WriteTimeoutHandler\" | \"addHandlerLast\" | \"baseUrl\" | \"build\" | \"builder\" | \"create\" | \"debug\" | \"doOnConnected\" | \"embedding\" | \"embeddings\" | \"firstOrNull\" | \"getModelId\" | \"info\" | \"inputType\" | \"ofSeconds\" | \"option\" | \"readTimeout\" | \"requestFactory\" | \"responseTimeout\" | \"restClientBuilder\" | \"return OllamaApi.builder()\n .baseUrl(properties.baseUrl)\n .restClientBuilder(restClientBuilder)\n .build()\" | \"return ReactorClientHttpRequestFactory(httpClient)\" | \"return try {\n val response = super.embedding(request)\n logger.debug { \\\"Cohere embedding success: ${response.embeddings().size} embeddings\\\" }\n response\n } catch (e: Exception) {\n logger.error(e) { \\\"Cohere embedding failed: ${e.message}\\\" }\n throw e\n }\" | \"seconds\" | \"size\" | \"take\" | \"texts\" | \"trace\" | \"truncate\" | \"try\" | \"writeTimeout\")?+ \"return BedrockCohereEmbeddingModel(api, options)\"? \"catch\"? \"BedrockCohereEmbeddingModel\"? \"Exception\"? \"error\"?+ \"message\"? \"throw e\"? \"throw\"?", "mdl_score": 0, "imports": [ "import io.netty.channel.ChannelOption", "import io.netty.handler.timeout.ReadTimeoutHandler", "import io.netty.handler.timeout.WriteTimeoutHandler", "import java.util.concurrent.TimeUnit", "import org.springframework.context.annotation.Bean", "import org.springframework.context.annotation.Configuration", "import org.springframework.http.client.ClientHttpRequestFactory", "import org.springframework.http.client.ReactorClientHttpRequestFactory", "import reactor.netty.http.client.HttpClient", "import com.fasterxml.jackson.databind.ObjectMapper", "import io.github.oshai.kotlinlogging.KotlinLogging", "import org.springframework.ai.bedrock.cohere.BedrockCohereEmbeddingModel", "import org.springframework.ai.bedrock.cohere.BedrockCohereEmbeddingOptions", "import org.springframework.ai.bedrock.cohere.api.CohereEmbeddingBedrockApi", "import org.springframework.ai.bedrock.cohere.api.CohereEmbeddingBedrockApi.CohereEmbeddingRequest", "import org.springframework.ai.bedrock.cohere.api.CohereEmbeddingBedrockApi.CohereEmbeddingResponse", "import org.springframework.ai.embedding.EmbeddingModel", "import org.springframework.beans.factory.annotation.Qualifier", "import org.springframework.boot.autoconfigure.condition.ConditionalOnProperty", "import org.springframework.context.annotation.Primary", "import software.amazon.awssdk.auth.credentials.AwsCredentialsProvider", "import software.amazon.awssdk.regions.providers.AwsRegionProvider", "import java.time.Duration", "import org.springframework.ai.ollama.api.OllamaApi", "import org.springframework.context.annotation.Profile", "import org.springframework.web.client.RestClient" ], "arg_patterns": {} }, { "label": "infrastructure/adapters/ai-provider/src/main/kotlin/eu/corentic/springrag/health", "method_count": 3, "algorithm": "CRX", "grammar": "root ::= \"run\"?+ \"fromCallable\"?+ \"Supplier\"? \"runWithCircuitBreaker\"? \"action\"? \"listModels\"?+ \"throw throwable ?: IllegalStateException(\\\"Ollama circuit breaker fallback\\\")\"? \"models\"?+ \"throw\"? \"subscribeOn\"?+ \"IllegalStateException\"? \"boundedElastic\"?+ \"map\"?+ \"mapNotNull\"?+ \"name\"?+ \"listOf\"?+ \"filterNot\"?+ \"any\"?+ \"modelMatches\"? \"if\"? \"return true\"? \"isEmpty\"?+ \"substringBefore\"?+ \"up\"?+ \"return normalizedRequired == normalizedAvailable\"? (\"build\" | \"down\" | \"else\" | \"just\" | \"onErrorResume\" | \"withDetail\")?+", "mdl_score": 0, "imports": [ "import org.springframework.ai.ollama.api.OllamaApi", "import org.springframework.beans.factory.annotation.Value", "import org.springframework.boot.health.contributor.Health", "import org.springframework.boot.health.contributor.ReactiveHealthIndicator", "import org.springframework.cloud.client.circuitbreaker.CircuitBreakerFactory", "import org.springframework.context.annotation.Profile", "import org.springframework.stereotype.Component", "import java.util.function.Supplier", "import reactor.core.publisher.Mono", "import reactor.core.scheduler.Schedulers" ], "arg_patterns": {} }, { "label": "infrastructure/adapters/ai-provider/src/test/kotlin/eu/corentic/springrag/config", "method_count": 6, "algorithm": "CRX", "grammar": "root ::= \"assertThrows\"? \"IllegalArgumentException\"? \"java\"? \"EmbabelAiHttpClientProperties\"? \"OllamaClientProperties\"? \"Timeout\"?+ (\"assertEquals\" | \"baseUrl\" | \"ofSeconds\" | \"readTimeout\" | \"writeTimeout\")?+ \"connectTimeout\"? \"timeout\"? \"read\"?", "mdl_score": 12825, "imports": [ "import java.time.Duration", "import kotlin.test.assertEquals", "import org.junit.jupiter.api.Assertions.assertThrows", "import org.junit.jupiter.api.Test" ], "arg_patterns": {} }, { "label": "infrastructure/adapters/ai-provider/src/test/kotlin/eu/corentic/springrag/health", "method_count": 4, "algorithm": "CRX", "grammar": "root ::= \"`when`\"? \"listModels\"?+ \"thenReturn\"?+ \"thenThrow\"?+ \"ListModelResponse\"?+ \"RuntimeException\"? \"listOf\"?+ (\"Model\" | \"now\")?+ \"requireNotNull\"?+ \"OllamaHealthIndicator\"? \"NoOpCircuitBreakerFactory\"? \"health\"?+ \"block\"?+ \"assertEquals\"? \"status\"? \"code\"?", "mdl_score": 0, "imports": [ "import java.time.Instant", "import eu.corentic.springrag.testsupport.NoOpCircuitBreakerFactory", "import org.junit.jupiter.api.Assertions.assertEquals", "import org.junit.jupiter.api.Test", "import org.mockito.Mockito.mock", "import org.mockito.Mockito.`when`", "import org.springframework.ai.ollama.api.OllamaApi" ], "arg_patterns": {} }, { "label": "infrastructure/adapters/ai-provider/src/test/kotlin/eu/corentic/springrag/service/embedding", "method_count": 5, "algorithm": "CRX", "grammar": "root ::= \"builder\"?+ (\"BedrockCohereEmbeddingModel\" | \"CapturingCohereApi\" | \"CohereEmbeddingResponse\" | \"EmbeddingRequest\" | \"FloatArray\" | \"InputType\" | \"NONE\" | \"SEARCH_DOCUMENT\" | \"Truncate\" | \"assertEquals\" | \"assertNotNull\" | \"build\" | \"call\" | \"capturedRequest\" | \"embed\" | \"inputType\" | \"listOf\" | \"map\" | \"println\" | \"readTree\" | \"return CohereEmbeddingResponse(\n \\\"test-id\\\",\n fakeEmbeddings,\n request.texts(),\n \\\"embeddings_floats\\\",\n null\n )\" | \"texts\" | \"truncate\" | \"writeValueAsString\")?+", "mdl_score": 1027200, "imports": [ "import com.fasterxml.jackson.databind.ObjectMapper", "import org.junit.jupiter.api.Assertions.assertEquals", "import org.junit.jupiter.api.Assertions.assertNotNull", "import org.junit.jupiter.api.Test", "import org.springframework.ai.bedrock.cohere.BedrockCohereEmbeddingModel", "import org.springframework.ai.bedrock.cohere.BedrockCohereEmbeddingOptions", "import org.springframework.ai.bedrock.cohere.api.CohereEmbeddingBedrockApi", "import org.springframework.ai.bedrock.cohere.api.CohereEmbeddingBedrockApi.CohereEmbeddingRequest", "import org.springframework.ai.bedrock.cohere.api.CohereEmbeddingBedrockApi.CohereEmbeddingResponse", "import org.springframework.ai.embedding.EmbeddingRequest", "import software.amazon.awssdk.auth.credentials.AnonymousCredentialsProvider", "import software.amazon.awssdk.regions.Region", "import java.time.Duration" ], "arg_patterns": {} }, { "label": "infrastructure/adapters/ai-provider/src/test/kotlin/eu/corentic/springrag/testsupport", "method_count": 3, "algorithm": "CRX", "grammar": "root ::= (\"Any\" | \"Builder\" | \"get\")+", "mdl_score": 15, "imports": [ "import java.util.function.Function", "import java.util.function.Supplier", "import org.springframework.cloud.client.circuitbreaker.CircuitBreaker", "import org.springframework.cloud.client.circuitbreaker.CircuitBreakerFactory", "import org.springframework.cloud.client.circuitbreaker.ConfigBuilder" ], "arg_patterns": {} }, { "label": "infrastructure/adapters/chat-memory/src/test/kotlin/eu/corentic/springrag/config", "method_count": 6, "algorithm": "CRX", "grammar": "root ::= \"ChatMemoryConfig\"? \"Message\"? \"chatMemory\"?+ (\"Any\" | \"MutableMap\" | \"String\" | \"fun\" | \"mutableMapOf\")?+ \"repeat\"?+ \"MessageType\"? (\"add\" | \"makeMessage\")?+ \"USER\"? (\"assertEquals\" | \"get\" | \"size\" | \"text\")?+", "mdl_score": 0, "imports": [ "import org.junit.jupiter.api.Assertions.assertEquals", "import org.junit.jupiter.api.Test", "import org.springframework.ai.chat.memory.InMemoryChatMemoryRepository", "import org.springframework.ai.chat.messages.Message", "import org.springframework.ai.chat.messages.MessageType" ], "arg_patterns": {} }, { "label": "infrastructure/adapters/doc-parser/src", "method_count": 6, "algorithm": "CRX", "grammar": "root ::= \"fromCallable\"?+ (\"File\" | \"builder\")?+ \"health\"?+ \"subscribeOn\"?+ \"boundedElastic\"?+ (\"ByteArray\" | \"DocumentParsingRequest\" | \"GraphDocument\" | \"absolutePath\" | \"asDocumentId\" | \"asFilename\" | \"asJobId\" | \"asLogicalDocumentId\" | \"assertTrue\" | \"build\" | \"content\" | \"convertDocument\" | \"doTableStructure\" | \"down\" | \"else\" | \"emptyList\" | \"every\" | \"exists\" | \"filename\" | \"generatePageImages\" | \"getStatus\" | \"if\" | \"imagesScale\" | \"just\" | \"let\" | \"map\" | \"name\" | \"onErrorResume\" | \"options\" | \"readBytes\" | \"requireNotNull\" | \"up\" | \"value\" | \"withDetail\")?+ \"tables\"? \"jobId\"? \"isNotEmpty\"?+ \"return ParsedDocument(graphDocument = graphDocument)\"? \"parse\"?+ \"assertEquals\"? \"assertNull\"? \"ParsedDocument\"? \"graphDocument\"?", "mdl_score": 0, "imports": [ "import ai.docling.serve.api.DoclingServeApi", "import org.springframework.boot.health.contributor.Health", "import org.springframework.boot.health.contributor.ReactiveHealthIndicator", "import org.springframework.stereotype.Component", "import reactor.core.publisher.Mono", "import reactor.core.scheduler.Schedulers", "import eu.corentic.springrag.service.docling.DoclingGraphDocumentMapper", "import eu.corentic.springrag.service.docling.DoclingService", "import eu.corentic.springrag.service.port.DocumentParserPort", "import eu.corentic.springrag.service.port.DocumentParsingRequest", "import eu.corentic.springrag.model.ParsedDocument", "import eu.corentic.springrag.config.BaseSystemTest", "import eu.corentic.springrag.config.DoclingConfig", "import java.io.File", "import org.junit.jupiter.api.Assertions.assertTrue", "import org.junit.jupiter.api.Test", "import org.springframework.beans.factory.annotation.Autowired", "import org.springframework.core.io.ClassPathResource", "import org.springframework.test.context.TestPropertySource", "import ai.docling.core.DoclingDocument", "import eu.corentic.springrag.model.GraphDocument", "import eu.corentic.springrag.common.ids.asDocumentId", "import eu.corentic.springrag.common.ids.asFilename", "import eu.corentic.springrag.common.ids.asJobId", "import eu.corentic.springrag.common.ids.asLogicalDocumentId", "import io.mockk.every", "import io.mockk.mockk", "import org.junit.jupiter.api.Assertions.assertEquals", "import org.junit.jupiter.api.Assertions.assertNull" ], "arg_patterns": {} }, { "label": "infrastructure/adapters/doc-parser/src/main/kotlin/eu/corentic/springrag/config", "method_count": 3, "algorithm": "CRX", "grammar": "root ::= (\"IllegalStateException\" | \"bucket\" | \"error\" | \"generatePageImages\" | \"generatePictureImages\" | \"if\" | \"imageExportMode\" | \"includeImages\" | \"info\" | \"isBlank\" | \"s3Target\" | \"setOf\" | \"throw\" | \"throw IllegalStateException(errorMsg)\" | \"toFormats\" | \"useS3Target\")?+ \"Method\"? \"validateCriticalSettings\"? (\"DoclingServeJackson3Client\" | \"getDeclaredMethod\" | \"invoke\" | \"isAccessible\" | \"java\")?+ \"Builder\"? \"return builder\n .baseUrl(URI.create(config.baseUrl))\n .asyncPollInterval(Duration.ofMillis(config.pollIntervalMillis))\n .asyncTimeout(Duration.ofSeconds(config.timeoutSeconds))\n .build()\"? (\"baseUrl\" | \"create\")?+ \"asyncPollInterval\"?+ \"ofMillis\"?+ \"pollIntervalMillis\"? \"asyncTimeout\"?+ \"ofSeconds\"?+ \"timeoutSeconds\"? \"build\"?+", "mdl_score": 0, "imports": [ "import ai.docling.serve.api.DoclingServeApi", "import ai.docling.serve.client.DoclingServeJackson3Client", "import org.springframework.context.annotation.Bean", "import org.springframework.context.annotation.Configuration", "import java.lang.reflect.Method", "import java.net.URI", "import java.time.Duration", "import jakarta.validation.constraints.Min", "import jakarta.validation.constraints.NotBlank", "import jakarta.annotation.PostConstruct", "import org.slf4j.LoggerFactory", "import org.springframework.boot.context.properties.ConfigurationProperties", "import org.springframework.validation.annotation.Validated" ], "arg_patterns": {} }, { "label": "infrastructure/adapters/doc-parser/src/main/kotlin/eu/corentic/springrag/service/docling", "method_count": 21, "imports": [ "import com.google.auth.oauth2.GoogleCredentials", "import com.google.auth.oauth2.IdTokenCredentials", "import com.google.auth.oauth2.IdTokenProvider", "import ai.docling.core.DoclingDocument", "import eu.corentic.springrag.common.ids.JobId", "import eu.corentic.springrag.model.GraphDocument", "import eu.corentic.springrag.model.GraphImagePayload", "import eu.corentic.springrag.model.GraphPage", "import eu.corentic.springrag.model.GraphPictureElement", "import eu.corentic.springrag.model.GraphTableElement", "import eu.corentic.springrag.model.GraphTextElement", "import io.github.oshai.kotlinlogging.KotlinLogging", "import org.springframework.stereotype.Component", "import java.util.Base64", "import ai.docling.serve.api.DoclingServeApi", "import ai.docling.serve.api.convert.request.options.ConvertDocumentOptions", "import ai.docling.serve.api.convert.request.options.ImageRefMode", "import ai.docling.serve.api.convert.request.options.OcrEngine", "import ai.docling.serve.api.convert.request.options.PdfBackend", "import ai.docling.serve.api.convert.request.options.ProcessingPipeline", "import ai.docling.serve.api.convert.request.options.OutputFormat", "import ai.docling.serve.api.convert.request.source.FileSource", "import ai.docling.serve.api.convert.request.target.InBodyTarget", "import ai.docling.serve.api.convert.request.target.S3Target", "import eu.corentic.springrag.config.DoclingConfig", "import java.util.function.Supplier", "import java.time.Duration", "import jakarta.annotation.PostConstruct", "import org.springframework.cloud.client.circuitbreaker.CircuitBreakerFactory", "import org.springframework.stereotype.Service" ], "arg_patterns": {} }, { "label": "infrastructure/adapters/doc-parser/src/systemTest/kotlin/eu/corentic/springrag/config", "method_count": 6, "algorithm": "CRX", "grammar": "root ::= \"registerProperties\"?+ \"return try {\n buildWithNoArgFactory(config)\n } catch (_: NoSuchMethodException) {\n buildWithClassLoaderFactory(config)\n }\"? \"DoclingServeClientBuilderFactory\"? \"assumeTrue\"?+ \"try\"? \"corentic\"? (\"ClassLoader\" | \"String\" | \"baseUrl\" | \"getMethod\" | \"invoke\" | \"java\" | \"javaClass\" | \"return buildMethod.invoke(configuredBuilder) as DoclingServeApi\")?+ \"buildWithNoArgFactory\"? \"springrag\"? \"classLoader\"? \"DoclingServeApi\"? \"testcontainers\"? \"return configureAndBuild(builder, config)\"? (\"ClassCastException\" | \"IllegalAccessException\" | \"IllegalStateException\" | \"InvocationTargetException\" | \"NoSuchMethodException\" | \"catch\" | \"cause\" | \"throw\" | \"throw IllegalStateException(\\\"Docling test client builder API is incompatible\\\", e)\" | \"throw IllegalStateException(\\\"Docling test client builder API is not accessible\\\", e)\" | \"throw IllegalStateException(\\\"Docling test client builder invocation failed\\\", e.cause ?: e)\" | \"throw IllegalStateException(\\\"Docling test client builder returned an unexpected type\\\", e)\")?+ \"GpuSupport\"? \"configureAndBuild\"? \"buildWithClassLoaderFactory\"? \"isDockerAvailable\"?+ \"start\"?+ \"pullAndWarmup\"?+ \"ollamaContainer\"?", "mdl_score": 0, "imports": [ "import eu.corentic.springrag.testcontainers.OllamaModelSupport", "import eu.corentic.springrag.testcontainers.SharedContainers", "import eu.corentic.springrag.testcontainers.SharedContainers.ContainerType", "import org.junit.jupiter.api.Assumptions", "import org.junit.jupiter.api.BeforeAll", "import org.springframework.boot.test.context.SpringBootTest", "import org.springframework.test.context.ActiveProfiles", "import org.springframework.test.context.DynamicPropertyRegistry", "import org.springframework.test.context.DynamicPropertySource", "import org.testcontainers.junit.jupiter.Testcontainers", "import ai.docling.serve.api.DoclingServeApi", "import ai.docling.serve.client.DoclingServeClientBuilderFactory", "import java.lang.reflect.InvocationTargetException", "import org.springframework.context.annotation.Bean", "import org.springframework.context.annotation.Configuration" ], "arg_patterns": {} }, { "label": "infrastructure/adapters/doc-parser/src/test/kotlin/eu/corentic/springrag/config", "method_count": 12, "algorithm": "CRX", "grammar": "root ::= \"assertThatThrownBy\"? \"DoclingConfig\"? \"validateCriticalSettings\"?+ \"baseUrl\"? \"isInstanceOf\"?+ (\"includeImages\" | \"options\")?+ \"IllegalStateException\"? \"imageExportMode\"? \"java\"? \"hasMessageContaining\"?+", "mdl_score": 18, "imports": [ "import kotlin.test.assertNotNull", "import org.junit.jupiter.api.Test", "import org.assertj.core.api.Assertions.assertThat", "import org.assertj.core.api.Assertions.assertThatThrownBy", "import org.junit.jupiter.api.Assertions.assertNull" ], "arg_patterns": {} }, { "label": "infrastructure/adapters/doc-parser/src/test/kotlin/eu/corentic/springrag/health", "method_count": 3, "algorithm": "CRX", "grammar": "root ::= \"`when`\"? (\"DoclingHealthIndicator\" | \"IllegalStateException\" | \"RuntimeException\" | \"assertEquals\" | \"block\" | \"build\" | \"builder\" | \"health\" | \"requireNotNull\" | \"status\" | \"thenReturn\" | \"thenThrow\")?+ \"code\"?", "mdl_score": 685824, "imports": [ "import ai.docling.serve.api.DoclingServeApi", "import ai.docling.serve.api.health.HealthCheckResponse", "import kotlin.test.assertEquals", "import org.junit.jupiter.api.Test", "import org.mockito.Mockito.mock", "import org.mockito.Mockito.`when`" ], "arg_patterns": {} }, { "label": "infrastructure/adapters/doc-parser/src/test/kotlin/eu/corentic/springrag/service/docling", "method_count": 10, "algorithm": "CRX", "grammar": "root ::= \"mockk\"? \"options\"? \"DoclingDocument\"? (\"builder\" | \"document\")?+ \"jsonContent\"?+ (\"build\" | \"status\")?+ \"slot\"? \"ConvertDocumentRequest\"? \"every\"? \"convertSourceAsync\"?+ \"capture\"? \"completedFuture\"?+ \"convertDocument\"?+ \"toByteArray\"?+ \"captured\"?", "mdl_score": 0, "imports": [ "import ai.docling.core.DoclingDocument", "import eu.corentic.springrag.common.ids.asJobId", "import java.util.Base64", "import org.junit.jupiter.api.Assertions.assertArrayEquals", "import org.junit.jupiter.api.Assertions.assertEquals", "import org.junit.jupiter.api.Assertions.assertNotNull", "import org.junit.jupiter.api.Assertions.assertTrue", "import org.junit.jupiter.api.Test", "import ai.docling.serve.api.DoclingServeApi", "import ai.docling.serve.api.convert.request.ConvertDocumentRequest", "import ai.docling.serve.api.convert.request.options.ImageRefMode", "import ai.docling.serve.api.convert.request.options.OcrEngine", "import ai.docling.serve.api.convert.request.options.OutputFormat", "import ai.docling.serve.api.convert.request.options.PdfBackend", "import ai.docling.serve.api.convert.request.options.ProcessingPipeline", "import ai.docling.serve.api.convert.response.InBodyConvertDocumentResponse", "import ai.docling.serve.api.convert.response.DocumentResponse", "import eu.corentic.springrag.config.DoclingConfig", "import eu.corentic.springrag.config.PipelineOptions", "import eu.corentic.springrag.testsupport.NoOpCircuitBreakerFactory", "import io.mockk.clearAllMocks", "import tools.jackson.databind.ObjectMapper", "import ai.docling.serve.api.convert.request.target.S3Target", "import ai.docling.serve.api.convert.request.target.InBodyTarget", "import io.mockk.every", "import io.mockk.mockk", "import io.mockk.slot", "import io.mockk.verify", "import java.util.concurrent.CompletableFuture", "import kotlin.test.assertEquals", "import kotlin.test.assertNotNull", "import kotlin.test.assertTrue", "import org.junit.jupiter.api.AfterEach", "import org.junit.jupiter.api.BeforeEach", "import org.junit.jupiter.api.assertThrows" ], "arg_patterns": {} }, { "label": "infrastructure/adapters/doc-parser/src/test/kotlin/eu/corentic/springrag/testsupport", "method_count": 3, "algorithm": "CRX", "grammar": "root ::= (\"Any\" | \"Builder\" | \"get\")+", "mdl_score": 15, "imports": [ "import java.util.function.Function", "import java.util.function.Supplier", "import org.springframework.cloud.client.circuitbreaker.CircuitBreaker", "import org.springframework.cloud.client.circuitbreaker.CircuitBreakerFactory", "import org.springframework.cloud.client.circuitbreaker.ConfigBuilder" ], "arg_patterns": {} }, { "label": "infrastructure/adapters/search/src/main/kotlin/eu/corentic/springrag/health", "method_count": 7, "algorithm": "CRX", "grammar": "root ::= \"withDetail\"?+ \"build\"?+ \"onErrorResume\"?+ \"just\"?+", "mdl_score": 4, "imports": [ "import org.neo4j.driver.Driver", "import java.time.Duration", "import org.springframework.boot.health.contributor.Health", "import org.springframework.boot.health.contributor.ReactiveHealthIndicator", "import org.springframework.stereotype.Component", "import reactor.core.publisher.Mono", "import com.google.common.util.concurrent.FutureCallback", "import com.google.common.util.concurrent.Futures", "import com.google.common.util.concurrent.ListenableFuture", "import com.google.common.util.concurrent.MoreExecutors", "import io.qdrant.client.QdrantClient", "import java.util.concurrent.ExecutionException", "import java.util.concurrent.TimeoutException", "import org.springframework.beans.factory.annotation.Value", "import org.springframework.context.annotation.Profile" ], "arg_patterns": {} }, { "label": "infrastructure/adapters/search/src/main/kotlin/eu/corentic/springrag/model/graph", "method_count": 9, "algorithm": "CRX", "grammar": "root ::= (\"id\" | \"if\" | \"jobId\" | \"pageNo\" | \"return false\" | \"return true\")?+ \"hashCode\"?+ \"return result\"?", "mdl_score": 2568, "imports": [ "import java.time.Instant", "import org.springframework.data.annotation.Version", "import org.springframework.data.neo4j.core.schema.Id", "import org.springframework.data.neo4j.core.schema.Node", "import org.springframework.data.neo4j.core.schema.Relationship", "import org.springframework.data.neo4j.core.schema.Property" ], "arg_patterns": {} }, { "label": "infrastructure/adapters/search/src/main/kotlin/eu/corentic/springrag/repository", "method_count": 24, "algorithm": "CRX", "grammar": "root ::= \"build\"?+ \"builder\"?+ \"return runWithCircuitBreaker { vectorStore.similaritySearch(request).map { it.toVectorChunk() } }\"? \"query\"?+ \"runWithCircuitBreaker\"? \"topK\"?+ \"similaritySearch\"?+ \"filterExpression\"?+ \"map\"?+ \"toVectorChunk\"?+", "mdl_score": 0, "imports": [ "import eu.corentic.springrag.model.VectorChunk", "import org.springframework.ai.document.Document", "import eu.corentic.springrag.common.ids.DocumentId", "import eu.corentic.springrag.common.ids.JobId", "import eu.corentic.springrag.common.ids.KnowledgeBaseId", "import eu.corentic.springrag.common.ids.LogicalDocumentId", "import java.util.function.Supplier", "import org.springframework.ai.vectorstore.SearchRequest", "import org.springframework.ai.vectorstore.VectorStore", "import org.springframework.cloud.client.circuitbreaker.CircuitBreakerFactory", "import io.github.oshai.kotlinlogging.KotlinLogging", "import org.springframework.stereotype.Repository" ], "arg_patterns": {} }, { "label": "infrastructure/adapters/search/src/main/kotlin/eu/corentic/springrag/service/agent", "method_count": 3, "algorithm": "CRX", "grammar": "root ::= \"return agentRepository.findKnowledgeBaseIdByAgentId(agentId)\"? \"now\"?+ \"return try {\n val existingId = agentRepository.findKnowledgeBaseIdByAgentId(agentId)\n if (existingId != null) return existingId\n doCreate(agentId)\n } catch (e: Exception) {\n // Concurrent thread created the agent+KB first \u2014 read and return their result.\n agentRepository.findKnowledgeBaseIdByAgentId(agentId) ?: throw e\n }\"? (\"KnowledgeBaseNode\" | \"save\")?+ \"try\"? \"AgentNode\"? (\"Exception\" | \"catch\" | \"doCreate\" | \"findKnowledgeBaseIdByAgentId\" | \"if\" | \"return existingId\")?+ \"return kbId\"? \"throw e\"? \"throw\"?", "mdl_score": 3132, "imports": [ "import eu.corentic.springrag.model.graph.AgentNode", "import eu.corentic.springrag.model.graph.KnowledgeBaseNode", "import eu.corentic.springrag.repository.graph.AgentRepository", "import eu.corentic.springrag.repository.graph.KnowledgeBaseRepository", "import eu.corentic.springrag.service.port.AgentKnowledgeBasePort", "import org.springframework.stereotype.Service", "import org.springframework.transaction.annotation.Transactional", "import java.time.Instant" ], "arg_patterns": {} }, { "label": "infrastructure/adapters/search/src/main/kotlin/eu/corentic/springrag/service/cleanup", "method_count": 4, "algorithm": "CRX", "grammar": "root ::= \"info\"?+ (\"deleteByJobId\" | \"deleteByKnowledgeBaseId\" | \"jobId\" | \"knowledgeBaseId\" | \"value\")?+", "mdl_score": 1685, "imports": [ "import eu.corentic.springrag.model.event.DocumentDeletionRequested", "import eu.corentic.springrag.service.graph.GraphIngestionOrchestrator", "import io.github.oshai.kotlinlogging.KotlinLogging", "import org.springframework.boot.autoconfigure.condition.ConditionalOnProperty", "import org.springframework.modulith.events.ApplicationModuleListener", "import org.springframework.stereotype.Component", "import eu.corentic.springrag.model.event.KnowledgeBaseDeletionRequested", "import eu.corentic.springrag.repository.VectorRepository" ], "arg_patterns": {} }, { "label": "infrastructure/adapters/search/src/main/kotlin/eu/corentic/springrag/service/graph", "method_count": 12, "imports": [ "import eu.corentic.springrag.common.ids.DocumentId", "import eu.corentic.springrag.common.ids.Filename", "import eu.corentic.springrag.common.ids.JobId", "import eu.corentic.springrag.common.ids.KnowledgeBaseId", "import eu.corentic.springrag.common.ids.LogicalDocumentId", "import eu.corentic.springrag.common.ids.StorageUri", "import eu.corentic.springrag.model.DocumentGraphJob", "import eu.corentic.springrag.model.GraphDocument", "import eu.corentic.springrag.model.GraphImagePayload", "import eu.corentic.springrag.model.GraphPictureElement", "import eu.corentic.springrag.model.GraphTableElement", "import eu.corentic.springrag.model.GraphTextElement", "import eu.corentic.springrag.model.graph.DocumentJobNode", "import eu.corentic.springrag.model.graph.ImageData", "import eu.corentic.springrag.model.graph.PageNode", "import eu.corentic.springrag.model.graph.PictureElement", "import eu.corentic.springrag.model.graph.TableElement", "import eu.corentic.springrag.model.graph.TextElement", "import eu.corentic.springrag.service.port.DocumentGraphJobPort", "import eu.corentic.springrag.service.port.GraphIndexPort", "import eu.corentic.springrag.service.port.KnowledgeBasePort", "import eu.corentic.springrag.service.port.ObjectStoragePort", "import java.util.function.Supplier", "import io.github.oshai.kotlinlogging.KotlinLogging", "import org.springframework.cloud.client.circuitbreaker.CircuitBreakerFactory", "import org.springframework.stereotype.Component", "import org.springframework.transaction.annotation.Propagation", "import org.springframework.transaction.annotation.Transactional", "import java.time.Instant", "import java.util.concurrent.CompletableFuture", "import java.util.concurrent.Executors" ], "arg_patterns": {} }, { "label": "infrastructure/adapters/search/src/main/kotlin/eu/corentic/springrag/service/port/adapter", "method_count": 45, "imports": [ "import eu.corentic.springrag.common.ids.StorageUri", "import eu.corentic.springrag.model.PageTextElement", "import eu.corentic.springrag.model.SourceImage", "import eu.corentic.springrag.repository.graph.ImageDataRepository", "import eu.corentic.springrag.repository.graph.TextElementRepository", "import eu.corentic.springrag.repository.graph.TableElementRepository", "import eu.corentic.springrag.service.port.ChatGraphLookupPort", "import eu.corentic.springrag.service.port.ObjectStoragePort", "import java.util.Base64", "import org.springframework.stereotype.Component", "import eu.corentic.springrag.common.ids.DocumentId", "import eu.corentic.springrag.common.ids.Filename", "import eu.corentic.springrag.common.ids.JobId", "import eu.corentic.springrag.common.ids.KnowledgeBaseId", "import eu.corentic.springrag.common.ids.LogicalDocumentId", "import eu.corentic.springrag.model.DocumentGraphJob", "import eu.corentic.springrag.model.graph.DocumentJobNode", "import eu.corentic.springrag.repository.graph.DocumentJobNodeRepository", "import eu.corentic.springrag.service.port.DocumentGraphJobPort", "import java.time.Instant", "import eu.corentic.springrag.service.port.DocumentIdPort", "import eu.corentic.springrag.service.port.DocumentImageInfo", "import eu.corentic.springrag.service.port.DocumentImagePort", "import eu.corentic.springrag.repository.graph.GraphMaintenanceRepository", "import eu.corentic.springrag.service.graph.GraphDeletePort", "import eu.corentic.springrag.service.graph.GraphStorePort", "import eu.corentic.springrag.service.port.KnowledgeBaseDocumentPort", "import eu.corentic.springrag.model.KnowledgeBase", "import eu.corentic.springrag.model.KnowledgeBaseStats", "import eu.corentic.springrag.model.graph.KnowledgeBaseNode", "import eu.corentic.springrag.repository.graph.KnowledgeBaseRepository", "import eu.corentic.springrag.service.port.KnowledgeBasePort", "import eu.corentic.springrag.model.VectorChunk", "import eu.corentic.springrag.repository.VectorRepository", "import eu.corentic.springrag.service.port.ChunkIndexPort", "import io.github.oshai.kotlinlogging.KotlinLogging", "import eu.corentic.springrag.service.port.VectorDocumentDeletionPort", "import eu.corentic.springrag.service.port.VectorDocumentPort", "import eu.corentic.springrag.service.port.RetrievalPort" ], "arg_patterns": {} }, { "label": "infrastructure/adapters/search/src/main/kotlin/eu/corentic/springrag/service/storage", "method_count": 40, "imports": [ "import eu.corentic.springrag.common.ids.JobId", "import eu.corentic.springrag.common.ids.StorageUri", "import eu.corentic.springrag.config.ObjectStorageProperties", "import eu.corentic.springrag.service.port.ObjectStoragePort", "import io.github.oshai.kotlinlogging.KotlinLogging", "import org.springframework.boot.autoconfigure.condition.ConditionalOnProperty", "import org.springframework.stereotype.Component", "import software.amazon.awssdk.auth.credentials.DefaultCredentialsProvider", "import software.amazon.awssdk.regions.Region", "import software.amazon.awssdk.services.s3.S3Client", "import software.amazon.awssdk.services.s3.model.Delete", "import software.amazon.awssdk.services.s3.model.DeleteObjectRequest", "import software.amazon.awssdk.services.s3.model.DeleteObjectsRequest", "import software.amazon.awssdk.services.s3.model.HeadObjectRequest", "import software.amazon.awssdk.services.s3.model.ListObjectsV2Request", "import software.amazon.awssdk.services.s3.model.NoSuchBucketException", "import software.amazon.awssdk.services.s3.model.PutObjectRequest", "import software.amazon.awssdk.services.s3.model.S3Exception", "import software.amazon.awssdk.core.sync.RequestBody", "import com.google.cloud.storage.BlobId", "import com.google.cloud.storage.BlobInfo", "import com.google.cloud.storage.Storage", "import com.google.cloud.storage.StorageOptions", "import java.net.URI", "import software.amazon.awssdk.auth.credentials.AwsBasicCredentials", "import software.amazon.awssdk.auth.credentials.StaticCredentialsProvider", "import software.amazon.awssdk.services.s3.S3Configuration", "import software.amazon.awssdk.services.s3.model.CreateBucketRequest", "import software.amazon.awssdk.services.s3.model.HeadBucketRequest" ], "arg_patterns": {} }, { "label": "infrastructure/adapters/search/src/systemTest/kotlin/eu/corentic/springrag/config", "method_count": 4, "algorithm": "CRX", "grammar": "root ::= \"run\"?+ \"assumeTrue\"?+ (\"recreateTestCollection\" | \"registerProperties\")?+ \"collectionPointCount\"?+ \"corentic\"? \"springrag\"? \"testcontainers\"? \"GpuSupport\"? \"isDockerAvailable\"?+ \"start\"?+ \"pullAndWarmup\"?+ \"ollamaContainer\"?", "mdl_score": 0, "imports": [ "import eu.corentic.springrag.testcontainers.OllamaModelSupport", "import eu.corentic.springrag.testcontainers.QdrantTestSupport", "import eu.corentic.springrag.testcontainers.QdrantTestSupport.recreateTestCollection", "import eu.corentic.springrag.testcontainers.SharedContainers", "import eu.corentic.springrag.testcontainers.SharedContainers.ContainerType", "import io.qdrant.client.QdrantClient", "import org.junit.jupiter.api.Assumptions", "import org.junit.jupiter.api.BeforeAll", "import org.junit.jupiter.api.BeforeEach", "import org.springframework.beans.factory.annotation.Autowired", "import org.springframework.boot.test.context.SpringBootTest", "import org.springframework.test.context.ActiveProfiles", "import org.springframework.test.context.DynamicPropertyRegistry", "import org.springframework.test.context.DynamicPropertySource", "import org.springframework.test.context.TestPropertySource", "import org.testcontainers.junit.jupiter.Testcontainers" ], "arg_patterns": {} }, { "label": "infrastructure/adapters/search/src/systemTest/kotlin/eu/corentic/springrag/repository/graph", "method_count": 23, "algorithm": "CRX", "grammar": "root ::= \"saveAll\"?+ \"findById\"?+ (\"parse\" | \"runBlocking\")?+ \"listOf\"?+ \"orElseThrow\"?+", "mdl_score": 0, "imports": [ "import eu.corentic.springrag.config.BaseSystemTest", "import eu.corentic.springrag.model.graph.DocumentJobNode", "import eu.corentic.springrag.model.graph.ImageData", "import eu.corentic.springrag.model.graph.KnowledgeBaseNode", "import eu.corentic.springrag.model.graph.PageNode", "import eu.corentic.springrag.model.graph.TextElement", "import java.time.Instant", "import org.junit.jupiter.api.Assertions.*", "import org.junit.jupiter.api.Test", "import org.springframework.beans.factory.annotation.Autowired", "import org.springframework.test.annotation.DirtiesContext", "import org.springframework.test.annotation.DirtiesContext.ClassMode.BEFORE_EACH_TEST_METHOD", "import kotlinx.coroutines.runBlocking", "import org.junit.jupiter.api.AfterEach", "import org.junit.jupiter.api.BeforeEach", "import eu.corentic.springrag.model.graph.TableElement", "import org.junit.jupiter.api.Assertions.assertEquals", "import org.springframework.context.annotation.Import" ], "arg_patterns": {} }, { "label": "infrastructure/adapters/search/src/systemTest/kotlin/eu/corentic/springrag/system", "method_count": 6, "algorithm": "CRX", "grammar": "root ::= \"setupTestCollection\"? \"runBlocking\"? \"listOf\"?+ (\"VectorChunk\" | \"mapOf\")?+ \"addChunks\"?+ \"searchSimilar\"?+ (\"any\" | \"asJobId\" | \"assertEquals\" | \"assertTrue\" | \"contains\" | \"deleteByJobId\" | \"fetchByJobId\" | \"isNotEmpty\" | \"metadata\" | \"single\" | \"size\" | \"text\")?+ \"isEmpty\"?+", "mdl_score": 0, "imports": [ "import eu.corentic.springrag.common.ids.asJobId", "import eu.corentic.springrag.config.BaseSystemTest", "import eu.corentic.springrag.model.VectorChunk", "import eu.corentic.springrag.repository.VectorRepository", "import kotlinx.coroutines.runBlocking", "import org.junit.jupiter.api.Assertions.assertEquals", "import org.junit.jupiter.api.Assertions.assertTrue", "import org.junit.jupiter.api.BeforeEach", "import org.junit.jupiter.api.Test", "import org.springframework.beans.factory.annotation.Autowired", "import org.springframework.test.annotation.DirtiesContext", "import org.springframework.test.annotation.DirtiesContext.ClassMode.BEFORE_CLASS" ], "arg_patterns": {} }, { "label": "infrastructure/adapters/search/src/test/kotlin/eu/corentic/springrag/config", "method_count": 3, "algorithm": "CRX", "grammar": "root ::= (\"IllegalStateException\" | \"`when`\" | \"anyString\" | \"assertThrows\" | \"atLeastOnce\" | \"contains\" | \"java\" | \"neo4jSchemaInitializer\" | \"run\" | \"session\" | \"thenReturn\" | \"thenThrow\" | \"times\" | \"verify\")?+ \"mockk\"? \"close\"?+ \"Driver\"? \"Neo4jConfig\"? \"transactionManager\"?+ \"assertTrue\"? \"Neo4jTransactionManager\"?", "mdl_score": 13300, "imports": [ "import io.mockk.mockk", "import org.junit.jupiter.api.Assertions.assertEquals", "import org.junit.jupiter.api.Assertions.assertTrue", "import org.junit.jupiter.api.Test", "import org.neo4j.driver.Driver", "import org.springframework.data.neo4j.core.transaction.Neo4jTransactionManager", "import org.junit.jupiter.api.Assertions.assertThrows", "import org.mockito.ArgumentMatchers.anyString", "import org.mockito.ArgumentMatchers.contains", "import org.mockito.Mockito.mock", "import org.mockito.Mockito.times", "import org.mockito.Mockito.atLeastOnce", "import org.mockito.Mockito.verify", "import org.mockito.Mockito.`when`", "import org.neo4j.driver.Result", "import org.neo4j.driver.Session" ], "arg_patterns": {} }, { "label": "infrastructure/adapters/search/src/test/kotlin/eu/corentic/springrag/health", "method_count": 6, "algorithm": "CRX", "grammar": "root ::= (\"HealthCheckReply\" | \"`when`\" | \"collectionExistsAsync\" | \"getDefaultInstance\" | \"healthCheckAsync\" | \"immediateFuture\" | \"thenReturn\" | \"verifyConnectivityAsync\")?+ \"completedFuture\"?+ \"immediateFailedFuture\"?+ \"failedFuture\"?+ (\"InterruptedException\" | \"TimeoutException\")? \"IllegalStateException\"? (\"Neo4jDriverHealthIndicator\" | \"QdrantVectorStoreHealthIndicator\" | \"assertEquals\" | \"assertTrue\" | \"block\" | \"code\" | \"currentThread\" | \"health\" | \"interrupted\" | \"isInterrupted\" | \"requireNotNull\" | \"status\")?+", "mdl_score": 0, "imports": [ "import java.util.concurrent.CompletableFuture", "import org.junit.jupiter.api.Assertions.assertEquals", "import org.junit.jupiter.api.Test", "import org.mockito.Mockito.mock", "import org.neo4j.driver.Driver", "import org.mockito.Mockito.`when`", "import com.google.common.util.concurrent.Futures", "import io.qdrant.client.QdrantClient", "import io.qdrant.client.grpc.QdrantOuterClass", "import java.util.concurrent.TimeoutException", "import kotlin.test.assertEquals", "import kotlin.test.assertTrue" ], "arg_patterns": {} }, { "label": "infrastructure/adapters/search/src/test/kotlin/eu/corentic/springrag/model/graph", "method_count": 7, "algorithm": "CRX", "grammar": "root ::= \"assertEquals\"?+ \"ImageData\"? \"hashCode\"?+ \"copy\"?+ \"assertNotEquals\"?", "mdl_score": 21, "imports": [ "import kotlin.test.assertEquals", "import kotlin.test.assertNotEquals", "import org.junit.jupiter.api.Test", "import org.junit.jupiter.api.Assertions.assertEquals", "import org.junit.jupiter.api.Assertions.assertNotEquals" ], "arg_patterns": {} }, { "label": "infrastructure/adapters/search/src/test/kotlin/eu/corentic/springrag/repository", "method_count": 19, "algorithm": "CRX", "grammar": "root ::= \"every\"? \"assertEquals\"? \"listOf\"?+ \"map\"?+ \"text\"? \"verify\"? \"delete\"?+ \"similaritySearch\"?+ \"match\"? \"any\"? \"String\"?+ \"SearchRequest\"? (\"contains\" | \"filterExpression\" | \"toString\")?+", "mdl_score": 0, "imports": [ "import eu.corentic.springrag.common.ids.asDocumentId", "import eu.corentic.springrag.common.ids.asJobId", "import eu.corentic.springrag.common.ids.asKnowledgeBaseId", "import eu.corentic.springrag.common.ids.asLogicalDocumentId", "import eu.corentic.springrag.model.VectorChunk", "import eu.corentic.springrag.testsupport.NoOpCircuitBreakerFactory", "import io.mockk.every", "import io.mockk.just", "import io.mockk.mockk", "import io.mockk.runs", "import io.mockk.verify", "import org.junit.jupiter.api.BeforeEach", "import org.junit.jupiter.api.Test", "import org.springframework.ai.document.Document", "import org.springframework.ai.vectorstore.SearchRequest", "import org.springframework.ai.vectorstore.VectorStore", "import kotlin.test.assertEquals", "import kotlin.test.assertTrue" ], "arg_patterns": {} }, { "label": "infrastructure/adapters/search/src/test/kotlin/eu/corentic/springrag/service/cleanup", "method_count": 4, "algorithm": "CRX", "grammar": "root ::= (\"DocumentDeletionRequested\" | \"KnowledgeBaseDeletionRequested\" | \"asJobId\" | \"asKnowledgeBaseId\" | \"deleteByJobId\" | \"deleteByKnowledgeBaseId\" | \"every\" | \"onDocumentDeletionRequested\" | \"onKnowledgeBaseDeletionRequested\" | \"verify\")+", "mdl_score": 388660, "imports": [ "import eu.corentic.springrag.model.event.DocumentDeletionRequested", "import eu.corentic.springrag.service.graph.GraphIngestionOrchestrator", "import eu.corentic.springrag.common.ids.asJobId", "import eu.corentic.springrag.common.ids.asKnowledgeBaseId", "import io.mockk.every", "import io.mockk.just", "import io.mockk.mockk", "import io.mockk.runs", "import io.mockk.verify", "import org.junit.jupiter.api.Test", "import eu.corentic.springrag.model.event.KnowledgeBaseDeletionRequested", "import eu.corentic.springrag.repository.VectorRepository" ], "arg_patterns": {} }, { "label": "infrastructure/adapters/search/src/test/kotlin/eu/corentic/springrag/service/graph", "method_count": 30, "algorithm": "CRX", "grammar": "root ::= \"asJobId\"?+ \"asDocumentId\"?+ \"every\"? \"asLogicalDocumentId\"?+ \"findOrCreateInactive\"?+ \"asFilename\"?+ \"any\"?+ \"stubDocumentGraphJob\"?", "mdl_score": 0, "imports": [ "import eu.corentic.springrag.model.DocumentGraphJob", "import eu.corentic.springrag.model.GraphDocument", "import eu.corentic.springrag.model.GraphImagePayload", "import eu.corentic.springrag.model.GraphPage", "import eu.corentic.springrag.model.GraphPictureElement", "import eu.corentic.springrag.model.GraphTableElement", "import eu.corentic.springrag.model.GraphTextElement", "import eu.corentic.springrag.service.port.DocumentGraphJobPort", "import eu.corentic.springrag.service.port.KnowledgeBasePort", "import eu.corentic.springrag.service.port.ObjectStoragePort", "import eu.corentic.springrag.testsupport.NoOpCircuitBreakerFactory", "import eu.corentic.springrag.common.ids.asDocumentId", "import eu.corentic.springrag.common.ids.asFilename", "import eu.corentic.springrag.common.ids.asJobId", "import eu.corentic.springrag.common.ids.asKnowledgeBaseId", "import eu.corentic.springrag.common.ids.asLogicalDocumentId", "import eu.corentic.springrag.common.ids.asStorageUri", "import io.mockk.*", "import io.mockk.impl.annotations.MockK", "import io.mockk.junit5.MockKExtension", "import org.junit.jupiter.api.Assertions.*", "import org.junit.jupiter.api.BeforeEach", "import org.junit.jupiter.api.Test", "import org.junit.jupiter.api.extension.ExtendWith" ], "arg_patterns": {} }, { "label": "infrastructure/adapters/search/src/test/kotlin/eu/corentic/springrag/service/port/adapter", "method_count": 28, "imports": [ "import eu.corentic.springrag.model.graph.ImageData", "import eu.corentic.springrag.model.graph.TableElement", "import eu.corentic.springrag.model.graph.TextElement", "import eu.corentic.springrag.repository.graph.ImageDataRepository", "import eu.corentic.springrag.repository.graph.TableElementRepository", "import eu.corentic.springrag.repository.graph.TextElementRepository", "import eu.corentic.springrag.service.port.ObjectStoragePort", "import eu.corentic.springrag.common.ids.asStorageUri", "import io.mockk.every", "import io.mockk.mockk", "import io.mockk.verify", "import java.util.Optional", "import org.junit.jupiter.api.Assertions.assertEquals", "import org.junit.jupiter.api.Assertions.assertNull", "import org.junit.jupiter.api.Test", "import eu.corentic.springrag.model.DocumentGraphJob", "import eu.corentic.springrag.model.graph.DocumentJobNode", "import eu.corentic.springrag.model.graph.KnowledgeBaseNode", "import eu.corentic.springrag.repository.graph.DocumentJobNodeRepository", "import eu.corentic.springrag.common.ids.asDocumentId", "import eu.corentic.springrag.common.ids.asFilename", "import eu.corentic.springrag.common.ids.asJobId", "import eu.corentic.springrag.common.ids.asKnowledgeBaseId", "import eu.corentic.springrag.common.ids.asLogicalDocumentId", "import java.time.Instant", "import org.junit.jupiter.api.Assertions.assertTrue", "import eu.corentic.springrag.repository.graph.GraphMaintenanceRepository", "import io.mockk.just", "import io.mockk.runs", "import eu.corentic.springrag.model.KnowledgeBase", "import eu.corentic.springrag.repository.graph.KnowledgeBaseRepository", "import eu.corentic.springrag.model.VectorChunk", "import eu.corentic.springrag.repository.VectorRepository" ], "arg_patterns": {} }, { "label": "infrastructure/adapters/search/src/test/kotlin/eu/corentic/springrag/service/storage", "method_count": 3, "algorithm": "CRX", "grammar": "root ::= \"assertNull\"? \"parseS3Location\"? \"error\"?+ (\"assertEquals\" | \"bucket\")?+ \"key\"?", "mdl_score": 182, "imports": [ "import kotlin.test.Test", "import kotlin.test.assertEquals", "import kotlin.test.assertNull" ], "arg_patterns": {} }, { "label": "infrastructure/adapters/search/src/test/kotlin/eu/corentic/springrag/testsupport", "method_count": 3, "algorithm": "CRX", "grammar": "root ::= (\"Any\" | \"Builder\" | \"get\")+", "mdl_score": 15, "imports": [ "import java.util.function.Function", "import java.util.function.Supplier", "import org.springframework.cloud.client.circuitbreaker.CircuitBreaker", "import org.springframework.cloud.client.circuitbreaker.CircuitBreakerFactory", "import org.springframework.cloud.client.circuitbreaker.ConfigBuilder" ], "arg_patterns": {} }, { "label": "modules/chat/src/integrationTest/kotlin/eu/corentic/springrag/service/chat", "method_count": 4, "algorithm": "CRX", "grammar": "root ::= \"mockk\"? \"runBlocking\"? \"ChatService\"? \"every\"? \"ChatResponse\"? \"defaultAgentId\"? \"listCapabilities\"? \"emptyList\"?+ \"RagInvocation\"? \"RagRequest\"? \"of\"?+ \"http\"?+ \"coEvery\"? (\"answer\" | \"assertEquals\" | \"chatWithSources\" | \"coVerify\" | \"invoke\")?+", "mdl_score": 95, "imports": [ "import eu.corentic.springrag.agent.capability.AgentCapabilityDirectory", "import eu.corentic.springrag.agent.rag.RagAgentInvocationGateway", "import org.springframework.boot.SpringBootConfiguration", "import org.springframework.boot.autoconfigure.EnableAutoConfiguration", "import org.springframework.context.annotation.Bean", "import eu.corentic.springrag.agent.capability.AgentExecutionContext", "import eu.corentic.springrag.agent.rag.RagInvocation", "import eu.corentic.springrag.agent.rag.RagRequest", "import eu.corentic.springrag.common.ids.KnowledgeBaseId", "import eu.corentic.springrag.model.ChatResponse", "import io.mockk.every", "import io.mockk.coEvery", "import io.mockk.coVerify", "import io.mockk.mockk", "import kotlinx.coroutines.runBlocking", "import org.junit.jupiter.api.Assertions.assertEquals", "import org.junit.jupiter.api.Test", "import org.springframework.beans.factory.annotation.Autowired", "import org.springframework.boot.test.context.SpringBootTest", "import org.springframework.boot.test.context.TestConfiguration", "import org.springframework.test.context.ActiveProfiles" ], "arg_patterns": {} }, { "label": "modules/chat/src/main/kotlin/eu/corentic/springrag/service/chat", "method_count": 6, "algorithm": "CRX", "grammar": "root ::= \"info\"?+ \"let\"?+ \"defaultAgentId\"?+ \"KnowledgeBaseId\"? \"listCapabilities\"?+ (\"RagInvocation\" | \"RagRequest\" | \"invoke\" | \"return ragAgentInvocationGateway.invoke(\n RagInvocation(\n request = request,\n executionContext = AgentExecutionContext.http()\n )\n )\" | \"return ragAgentInvocationGateway.invoke(\n RagInvocation(\n request = request,\n executionContext = AgentExecutionContext.http(contextId = conversationId)\n )\n )\")?+ \"map\"?+ \"filter\"?+ \"http\"?+ \"id\"? \"AgentCapabilityDescriptor\"?", "mdl_score": 0, "imports": [ "import eu.corentic.springrag.agent.capability.AgentCapabilityDescriptor", "import eu.corentic.springrag.agent.capability.AgentCapabilityDirectory", "import eu.corentic.springrag.agent.capability.AgentExecutionContext", "import eu.corentic.springrag.agent.capability.isExposedOverHttp", "import eu.corentic.springrag.agent.rag.RagAgentInvocationGateway", "import eu.corentic.springrag.agent.rag.RagInvocation", "import eu.corentic.springrag.agent.rag.RagRequest", "import eu.corentic.springrag.common.ids.KnowledgeBaseId", "import eu.corentic.springrag.model.ChatResponse", "import jakarta.annotation.PostConstruct", "import io.github.oshai.kotlinlogging.KotlinLogging", "import org.springframework.stereotype.Service" ], "arg_patterns": {} }, { "label": "modules/chat/src/systemTest/kotlin/eu/corentic/springrag/config", "method_count": 15, "imports": [ "import eu.corentic.springrag.testcontainers.OllamaModelSupport", "import eu.corentic.springrag.testcontainers.QdrantTestSupport", "import eu.corentic.springrag.testcontainers.QdrantTestSupport.recreateTestCollection", "import eu.corentic.springrag.testcontainers.SharedContainers", "import eu.corentic.springrag.testcontainers.SharedContainers.ContainerType", "import io.qdrant.client.QdrantClient", "import java.time.Duration", "import java.time.Instant", "import java.util.UUID", "import org.junit.jupiter.api.Assumptions", "import org.junit.jupiter.api.BeforeAll", "import org.junit.jupiter.api.BeforeEach", "import org.neo4j.driver.Driver", "import org.springframework.beans.factory.annotation.Autowired", "import org.springframework.boot.test.context.SpringBootTest", "import org.springframework.boot.webtestclient.autoconfigure.AutoConfigureWebTestClient", "import org.springframework.jdbc.core.JdbcTemplate", "import org.springframework.security.crypto.password.PasswordEncoder", "import org.springframework.test.context.ActiveProfiles", "import org.springframework.test.context.DynamicPropertyRegistry", "import org.springframework.test.context.DynamicPropertySource", "import org.springframework.test.context.TestPropertySource", "import org.springframework.test.web.reactive.server.WebTestClient", "import org.testcontainers.junit.jupiter.Testcontainers", "import java.sql.Timestamp", "import org.springframework.ai.chat.memory.ChatMemory", "import org.springframework.ai.chat.memory.ChatMemoryRepository", "import org.springframework.ai.chat.memory.MessageWindowChatMemory", "import org.springframework.context.annotation.Bean", "import org.springframework.context.annotation.Configuration", "import org.springframework.boot.SpringBootConfiguration", "import org.springframework.boot.autoconfigure.EnableAutoConfiguration", "import org.springframework.boot.context.properties.ConfigurationPropertiesScan", "import org.springframework.context.annotation.ComponentScan", "import org.springframework.data.neo4j.repository.config.EnableNeo4jRepositories", "import org.springframework.data.jdbc.repository.config.EnableJdbcRepositories", "import org.springframework.jdbc.datasource.DataSourceTransactionManager", "import org.springframework.transaction.PlatformTransactionManager", "import javax.sql.DataSource", "import ai.docling.serve.api.DoclingServeApi", "import ai.docling.serve.client.DoclingServeClientBuilderFactory", "import java.lang.reflect.InvocationTargetException" ], "arg_patterns": {} }, { "label": "modules/chat/src/systemTest/kotlin/eu/corentic/springrag/system", "method_count": 4, "algorithm": "CRX", "grammar": "root ::= \"runBlocking\"? \"setupTestCollection\"? \"addChunks\"?+ \"listOf\"?+ \"VectorChunk\"? \"mapOf\"?+ (\"ChatResponse\" | \"SessionChatRequest\" | \"String\" | \"adminClient\" | \"answer\" | \"any\" | \"assertEquals\" | \"assertNotNull\" | \"assertTrue\" | \"atMost\" | \"await\" | \"blockFirst\" | \"bodyValue\" | \"contains\" | \"conversationId\" | \"exchange\" | \"expectBody\" | \"expectStatus\" | \"get\" | \"isEqualTo\" | \"isNotBlank\" | \"isOk\" | \"jsonPath\" | \"lowercase\" | \"ofSeconds\" | \"post\" | \"responseBody\" | \"returnResult\" | \"text\" | \"untilAsserted\" | \"uri\" | \"value\")?+ \"isEmpty\"?", "mdl_score": 3008, "imports": [ "import eu.corentic.springrag.config.BaseSystemTest", "import eu.corentic.springrag.controller.SessionChatRequest", "import eu.corentic.springrag.model.ChatResponse", "import eu.corentic.springrag.model.VectorChunk", "import eu.corentic.springrag.repository.VectorRepository", "import java.time.Duration", "import kotlinx.coroutines.runBlocking", "import org.awaitility.Awaitility.await", "import org.junit.jupiter.api.Assertions.assertEquals", "import org.junit.jupiter.api.Assertions.assertNotNull", "import org.junit.jupiter.api.Assertions.assertTrue", "import org.junit.jupiter.api.Test", "import org.springframework.ai.chat.memory.ChatMemory", "import org.springframework.beans.factory.annotation.Autowired", "import org.springframework.boot.webtestclient.autoconfigure.AutoConfigureWebTestClient", "import org.springframework.test.web.reactive.server.WebTestClient", "import org.springframework.test.web.reactive.server.returnResult" ], "arg_patterns": {} }, { "label": "modules/chat/src/test/kotlin/eu/corentic/springrag/service/chat", "method_count": 8, "algorithm": "CRX", "grammar": "root ::= \"runTest\"? \"assertEquals\"? \"answer\"? \"coVerify\"? (\"ChatResponse\" | \"RagInvocation\" | \"RagRequest\" | \"asKnowledgeBaseId\" | \"coEvery\" | \"defaultAgentId\" | \"emptyList\" | \"every\" | \"http\" | \"invoke\" | \"listCapabilities\")?+ \"ChatService\"?", "mdl_score": 639936, "imports": [ "import eu.corentic.springrag.agent.capability.AgentCapabilityDirectory", "import eu.corentic.springrag.agent.capability.AgentExecutionContext", "import eu.corentic.springrag.agent.rag.RagAgentInvocationGateway", "import eu.corentic.springrag.agent.rag.RagInvocation", "import eu.corentic.springrag.agent.rag.RagRequest", "import eu.corentic.springrag.common.ids.asKnowledgeBaseId", "import eu.corentic.springrag.model.ChatResponse", "import io.mockk.coEvery", "import io.mockk.coVerify", "import io.mockk.every", "import io.mockk.mockk", "import kotlinx.coroutines.test.StandardTestDispatcher", "import kotlinx.coroutines.test.runTest", "import org.junit.jupiter.api.Assertions.assertEquals", "import org.junit.jupiter.api.Test", "import eu.corentic.springrag.agent.capability.AgentCapabilityDescriptor", "import org.junit.jupiter.api.BeforeEach" ], "arg_patterns": {} }, { "label": "modules/common/src/main/kotlin/eu/corentic/springrag/common", "method_count": 7, "algorithm": "CRX", "grammar": "root ::= \"when\" \"Ok\"? \"Err\"?", "mdl_score": 4, "imports": [], "arg_patterns": {} }, { "label": "modules/common/src/main/kotlin/eu/corentic/springrag/common/ids", "method_count": 18, "imports": [], "arg_patterns": {} }, { "label": "modules/common/src/test/kotlin/eu/corentic/springrag/common/ids", "method_count": 8, "algorithm": "CRX", "grammar": "root ::= \"assertEquals\"? (\"IllegalArgumentException\" | \"assertFailsWith\" | \"of\" | \"value\")?+", "mdl_score": 2768, "imports": [ "import kotlin.test.Test", "import kotlin.test.assertEquals", "import kotlin.test.assertFailsWith" ], "arg_patterns": {} }, { "label": "modules/ingestion/src/integrationTest/kotlin/eu/corentic/springrag/service/job", "method_count": 34, "imports": [ "import com.ninjasquad.springmockk.MockkBean", "import eu.corentic.springrag.batch.DocumentIngestionJobConfig", "import eu.corentic.springrag.batch.model.DocumentInput", "import eu.corentic.springrag.batch.model.ProcessedDocument", "import eu.corentic.springrag.batch.processor.DocumentProcessingItemProcessor", "import eu.corentic.springrag.common.ids.Filename", "import eu.corentic.springrag.common.ids.JobId", "import eu.corentic.springrag.service.port.DocumentParserPort", "import eu.corentic.springrag.service.port.ChunkIndexPort", "import eu.corentic.springrag.service.port.GraphIndexPort", "import io.mockk.clearMocks", "import io.mockk.every", "import java.io.File", "import java.time.Duration", "import org.awaitility.Awaitility.await", "import org.junit.jupiter.api.Assertions", "import org.junit.jupiter.api.Assertions.assertEquals", "import org.junit.jupiter.api.Assertions.assertTrue", "import org.junit.jupiter.api.AfterEach", "import org.junit.jupiter.api.BeforeEach", "import org.junit.jupiter.api.Test", "import io.github.oshai.kotlinlogging.KotlinLogging", "import org.springframework.beans.factory.annotation.Autowired", "import org.springframework.boot.test.context.SpringBootTest", "import org.springframework.test.context.ActiveProfiles", "import eu.corentic.springrag.batch.model.ProcessingError", "import org.junit.jupiter.api.Assertions.assertNotNull", "import org.springframework.jdbc.core.JdbcTemplate", "import eu.corentic.springrag.common.ids.DocumentId", "import eu.corentic.springrag.common.ids.KnowledgeBaseId", "import eu.corentic.springrag.common.ids.LogicalDocumentId", "import eu.corentic.springrag.batch.listener.BatchJobListener", "import eu.corentic.springrag.batch.listener.SimpleDocumentTrackingListener", "import eu.corentic.springrag.batch.partition.DocumentPartitioner", "import eu.corentic.springrag.batch.reader.FileBasedDocumentItemReader", "import eu.corentic.springrag.batch.writer.GraphStoreItemWriter", "import java.nio.file.Files", "import java.util.concurrent.CountDownLatch", "import java.util.concurrent.TimeUnit", "import java.util.concurrent.atomic.AtomicLong", "import org.springframework.batch.core.job.Job", "import org.springframework.batch.core.job.JobExecution", "import org.springframework.batch.core.job.JobInstance", "import org.springframework.batch.core.job.parameters.JobParameters", "import org.springframework.batch.core.launch.JobOperator", "import org.junit.jupiter.api.Assertions.assertNull", "import eu.corentic.springrag.common.ids.StorageUri", "import eu.corentic.springrag.service.port.ObjectStoragePort", "import java.util.concurrent.ConcurrentHashMap", "import org.springframework.context.annotation.Bean", "import org.springframework.context.annotation.Configuration", "import org.springframework.context.annotation.Profile" ], "arg_patterns": {} }, { "label": "modules/ingestion/src/main/kotlin/eu/corentic/springrag/batch", "method_count": 16, "imports": [ "import eu.corentic.springrag.batch.listener.BatchJobListener", "import eu.corentic.springrag.batch.listener.DocumentActivationWriteListener", "import eu.corentic.springrag.batch.listener.DocumentIngestionStageWriteListener", "import eu.corentic.springrag.batch.listener.SimpleDocumentTrackingListener", "import eu.corentic.springrag.batch.model.DocumentInput", "import eu.corentic.springrag.batch.model.ProcessedDocument", "import eu.corentic.springrag.batch.partition.DocumentPartitioner", "import eu.corentic.springrag.batch.processor.DocumentProcessingItemProcessor", "import eu.corentic.springrag.batch.reader.FileBasedDocumentItemReader", "import eu.corentic.springrag.batch.writer.DocumentActivationWriter", "import eu.corentic.springrag.batch.writer.DocumentIngestionStageWriter", "import eu.corentic.springrag.service.job.IngestionDocumentState", "import eu.corentic.springrag.service.job.IngestionDocumentStateRepository", "import eu.corentic.springrag.config.BatchProperties", "import eu.corentic.springrag.service.port.ObjectStoragePort", "import javax.sql.DataSource", "import io.github.oshai.kotlinlogging.KotlinLogging", "import org.springframework.batch.core.configuration.annotation.StepScope", "import org.springframework.batch.core.job.Job", "import org.springframework.batch.core.job.builder.JobBuilder", "import org.springframework.batch.core.repository.JobRepository", "import org.springframework.batch.core.partition.PartitionHandler", "import org.springframework.batch.core.partition.support.TaskExecutorPartitionHandler", "import org.springframework.batch.core.step.Step", "import org.springframework.batch.core.step.builder.StepBuilder", "import org.springframework.batch.core.step.skip.SkipPolicy", "import org.springframework.batch.core.listener.SkipListener", "import org.springframework.batch.infrastructure.item.database.JdbcCursorItemReader", "import org.springframework.batch.infrastructure.item.database.builder.JdbcCursorItemReaderBuilder", "import org.springframework.beans.factory.annotation.Qualifier", "import org.springframework.beans.factory.annotation.Value", "import org.springframework.context.annotation.Bean", "import org.springframework.context.annotation.Configuration", "import org.springframework.core.task.TaskExecutor", "import org.springframework.core.retry.RetryPolicy", "import org.springframework.dao.TransientDataAccessException", "import org.springframework.transaction.PlatformTransactionManager", "import org.springframework.util.backoff.FixedBackOff", "import java.io.IOException", "import eu.corentic.springrag.service.chunk.DocumentChunkService", "import eu.corentic.springrag.service.port.DocumentParserPort", "import eu.corentic.springrag.service.port.DocumentParsingRequest", "import org.springframework.batch.infrastructure.item.ItemProcessor", "import org.springframework.stereotype.Component" ], "arg_patterns": {} }, { "label": "modules/ingestion/src/main/kotlin/eu/corentic/springrag/batch/listener", "method_count": 16, "algorithm": "CRX", "grammar": "root ::= (\"filename\" | \"jobId\" | \"recordFailure\")?+ \"forEach\"?+ \"markFailed\"?+ \"documentId\"?", "mdl_score": 93, "imports": [ "import io.github.oshai.kotlinlogging.KotlinLogging", "import org.springframework.batch.core.BatchStatus", "import org.springframework.batch.core.job.JobExecution", "import org.springframework.batch.core.listener.JobExecutionListener", "import org.springframework.stereotype.Component", "import eu.corentic.springrag.service.job.StagedUploadCleanupService", "import eu.corentic.springrag.service.job.DocumentTrackingRepository", "import eu.corentic.springrag.service.job.IngestionDocumentState", "import eu.corentic.springrag.service.job.IngestionDocumentStateRepository", "import org.springframework.batch.core.listener.ItemWriteListener", "import org.springframework.batch.core.listener.SkipListener", "import org.springframework.batch.infrastructure.item.Chunk", "import eu.corentic.springrag.batch.model.ProcessedDocument", "import eu.corentic.springrag.batch.model.ProcessingError", "import eu.corentic.springrag.common.ids.Filename", "import eu.corentic.springrag.batch.model.DocumentInput", "import org.springframework.batch.core.listener.ItemProcessListener" ], "arg_patterns": {} }, { "label": "modules/ingestion/src/main/kotlin/eu/corentic/springrag/batch/model", "method_count": 4, "algorithm": "CRX", "grammar": "root ::= \"entries\"? (\"DocumentInput\" | \"content\" | \"contentEquals\" | \"documentId\" | \"fileStorageUri\" | \"filename\" | \"if\" | \"javaClass\" | \"jobId\" | \"knowledgeBaseId\" | \"logicalDocumentId\" | \"return false\" | \"return true\" | \"submittedBy\")?+ (\"contentHashCode\" | \"hashCode\")?+ \"filter\"?+ \"return result\"? (\"key\" | \"startsWith\")?+ \"endsWith\"?+ \"mapNotNull\"?+ \"value\"? (\"Boolean\" | \"DocumentParsingError\" | \"ERROR\" | \"GenericError\" | \"Int\" | \"Long\" | \"NetworkTimeoutError\" | \"String\" | \"ValidationError\" | \"WARNING\" | \"else\" | \"let\" | \"return when (errorType) {\n \\\"DocumentParsingError\\\" -> ProcessingError.DocumentParsingError(\n filename = this[\\\"document.doc${index}.error.filename\\\"] as? String ?: \\\"unknown\\\",\n line = this[\\\"document.doc${index}.error.line\\\"] as? Int,\n message = message ?: \\\"Unknown parsing error\\\",\n retryable = retryable,\n severity = severity?.let { ErrorSeverity.valueOf(it) } ?: ErrorSeverity.ERROR\n )\n \\\"NetworkTimeoutError\\\" -> ProcessingError.NetworkTimeoutError(\n timeoutMs = this[\\\"document.doc${index}.error.timeoutMs\\\"] as? Long ?: 30000,\n message = message ?: \\\"Unknown timeout error\\\",\n retryable = retryable,\n severity = severity?.let { ErrorSeverity.valueOf(it) } ?: ErrorSeverity.WARNING\n )\n \\\"ValidationError\\\" -> ProcessingError.ValidationError(\n field = this[\\\"document.doc${index}.error.field\\\"] as? String ?: \\\"unknown\\\",\n value = this[\\\"document.doc${index}.error.value\\\"] as? String ?: \\\"unknown\\\",\n message = message ?: \\\"Unknown validation error\\\",\n retryable = retryable,\n severity = severity?.let { ErrorSeverity.valueOf(it) } ?: ErrorSeverity.ERROR\n )\n else -> ProcessingError.GenericError(\n exceptionType = errorType ?: \\\"UnknownError\\\",\n message = message ?: \\\"Unknown error\\\",\n retryable = retryable,\n severity = severity?.let { ErrorSeverity.valueOf(it) } ?: ErrorSeverity.ERROR\n )\n }\" | \"valueOf\" | \"when\")?+ \"return ErrorSummary(\n totalErrors = errors.size,\n retryableErrors = errors.count { it.contains(\\\"timeout\\\") || it.contains(\\\"retryable\\\") },\n firstError = errors.firstOrNull()\n )\"? \"ErrorSummary\"? \"size\"? \"count\"?+ \"contains\"?+ \"firstOrNull\"?+", "mdl_score": 0, "imports": [ "import eu.corentic.springrag.common.ids.DocumentId", "import eu.corentic.springrag.common.ids.Filename", "import eu.corentic.springrag.common.ids.JobId", "import eu.corentic.springrag.common.ids.KnowledgeBaseId", "import eu.corentic.springrag.common.ids.LogicalDocumentId", "import eu.corentic.springrag.common.ids.StorageUri", "import eu.corentic.springrag.model.GraphDocument", "import eu.corentic.springrag.model.VectorChunk", "import java.time.Instant" ], "arg_patterns": {} }, { "label": "modules/ingestion/src/main/kotlin/eu/corentic/springrag/batch/partition", "method_count": 4, "algorithm": "CRX", "grammar": "root ::= \"values\"? \"mutableMapOf\"?+ \"firstOrNull\"?+ \"getString\"?+ (\"Exception\" | \"ExecutionContext\" | \"Filename\" | \"IllegalStateException\" | \"List\" | \"String\" | \"UUID\" | \"appendPath\" | \"catch\" | \"compareTo\" | \"createEmptyPartitions\" | \"else\" | \"error\" | \"exists\" | \"fileName\" | \"filenameFromUri\" | \"filter\" | \"for\" | \"forEachIndexed\" | \"getDefault\" | \"getPathMatcher\" | \"if\" | \"info\" | \"isDirectory\" | \"isEmpty\" | \"isNotEmpty\" | \"isObjectStorageUri\" | \"isRegularFile\" | \"list\" | \"listObjects\" | \"listOf\" | \"listTrackedFilenames\" | \"logPartitioningInfo\" | \"map\" | \"mapNotNull\" | \"matches\" | \"message\" | \"of\" | \"put\" | \"putInt\" | \"putString\" | \"queueDocuments\" | \"randomUUID\" | \"removeSuffix\" | \"resolveFiles\" | \"resolvePath\" | \"return Files.list(rootPath).use { stream ->\n stream\n .filter { Files.isRegularFile(it) }\n .filter { matcher.matches(it.fileName) }\n .filter { Files.size(it) > 0L }\n .sorted { a, b -> a.fileName.toString().compareTo(b.fileName.toString()) }\n .toList()\n }\" | \"return createEmptyPartitions(gridSize, \\\"ERROR: No inputPath provided\\\")\" | \"return partitions\" | \"size\" | \"sorted\" | \"throw\" | \"throw IllegalStateException(\\\"Input path does not exist: $rootPath\\\")\" | \"throw IllegalStateException(\\\"Input path is not a directory: $rootPath\\\")\" | \"throw IllegalStateException(\\\"Invalid inputPath: $normalizedInputPath\\\")\" | \"toString\" | \"toUri\" | \"try\" | \"use\" | \"util\" | \"value\" | \"warn\")?+ \"toList\"?+", "mdl_score": 0, "imports": [ "import eu.corentic.springrag.common.ids.Filename", "import eu.corentic.springrag.common.ids.JobId", "import eu.corentic.springrag.common.ids.StorageUri", "import eu.corentic.springrag.config.StorageProperties", "import eu.corentic.springrag.service.job.DocumentTrackingRepository", "import eu.corentic.springrag.service.port.ObjectStoragePort", "import io.github.oshai.kotlinlogging.KotlinLogging", "import java.nio.file.FileSystems", "import java.nio.file.Files", "import java.nio.file.Path", "import kotlin.streams.toList", "import org.springframework.batch.core.configuration.annotation.StepScope", "import org.springframework.batch.core.partition.Partitioner", "import org.springframework.batch.infrastructure.item.ExecutionContext", "import org.springframework.beans.factory.annotation.Value", "import org.springframework.stereotype.Component" ], "arg_patterns": {} }, { "label": "modules/ingestion/src/main/kotlin/eu/corentic/springrag/batch/reader", "method_count": 4, "algorithm": "CRX", "grammar": "root ::= \"poll\"?+ (\"DocumentInput\" | \"IllegalStateException\" | \"KnowledgeBaseId\" | \"List\" | \"String\" | \"containsKey\" | \"debug\" | \"documentVersionId\" | \"else\" | \"error\" | \"exists\" | \"filenameFromUri\" | \"forEach\" | \"get\" | \"getResource\" | \"identityHashCode\" | \"if\" | \"info\" | \"inputStream\" | \"isNotEmpty\" | \"isObjectStorageUri\" | \"isReadable\" | \"it\" | \"java\" | \"let\" | \"loadObject\" | \"logicalDocumentId\" | \"mapNotNull\" | \"name\" | \"objectExists\" | \"of\" | \"offer\" | \"partitionedFiles\" | \"readBytes\" | \"requireNotNull\" | \"return\" | \"return DocumentInput(\n jobId = resolvedJobId,\n documentId = documentId,\n logicalDocumentId = logicalDocumentId,\n filename = resolvedFilename,\n content = content,\n fileStorageUri = StorageUri.of(uri),\n knowledgeBaseId = resolvedKnowledgeBaseId,\n submittedBy = submittedBy\n )\" | \"return null\" | \"size\" | \"throw\" | \"throw IllegalStateException(\\\"Object not found at $uri\\\")\" | \"throw IllegalStateException(\\\"Resource not readable: $uri\\\")\" | \"use\" | \"value\" | \"warn\" | \"when\")?+ (\"clear\" | \"initialize\")?+", "mdl_score": 532496, "imports": [ "import eu.corentic.springrag.batch.model.DocumentInput", "import eu.corentic.springrag.common.ids.Filename", "import eu.corentic.springrag.common.ids.JobId", "import eu.corentic.springrag.common.ids.KnowledgeBaseId", "import eu.corentic.springrag.common.ids.StorageUri", "import eu.corentic.springrag.config.StorageProperties", "import eu.corentic.springrag.service.document.DocumentIdentity", "import eu.corentic.springrag.service.port.ObjectStoragePort", "import io.github.oshai.kotlinlogging.KotlinLogging", "import org.springframework.batch.infrastructure.item.ExecutionContext", "import org.springframework.batch.infrastructure.item.ItemStreamReader", "import org.springframework.beans.factory.annotation.Value", "import org.springframework.core.io.ResourceLoader", "import java.util.concurrent.ConcurrentLinkedQueue" ], "arg_patterns": {} }, { "label": "modules/ingestion/src/main/kotlin/eu/corentic/springrag/batch/writer", "method_count": 3, "algorithm": "CRX", "grammar": "root ::= \"items\"? \"forEach\"?+ (\"addChunks\" | \"chunks\" | \"content\" | \"debug\" | \"documentId\" | \"else\" | \"enforce\" | \"fileStorageUri\" | \"filename\" | \"graphDocument\" | \"if\" | \"input\" | \"isEmpty\" | \"jobId\" | \"knowledgeBaseId\" | \"let\" | \"logicalDocumentId\" | \"pictures\" | \"size\" | \"stageDocumentGraph\" | \"submittedBy\" | \"tables\" | \"texts\" | \"toLong\" | \"upsertStaging\" | \"value\" | \"warn\")?+ \"activate\"?+", "mdl_score": 71388, "imports": [ "import eu.corentic.springrag.service.job.DocumentActivationService", "import eu.corentic.springrag.service.job.IngestionDocumentState", "import org.springframework.batch.infrastructure.item.Chunk", "import org.springframework.batch.infrastructure.item.ItemWriter", "import org.springframework.stereotype.Component", "import eu.corentic.springrag.batch.model.ProcessedDocument", "import eu.corentic.springrag.service.chunk.EmbeddingInputGuard", "import eu.corentic.springrag.service.job.IngestionDocumentStateRepository", "import eu.corentic.springrag.service.port.ChunkIndexPort", "import eu.corentic.springrag.service.port.GraphIndexPort", "import io.github.oshai.kotlinlogging.KotlinLogging" ], "arg_patterns": {} }, { "label": "modules/ingestion/src/main/kotlin/eu/corentic/springrag/config", "method_count": 26, "imports": [ "import javax.sql.DataSource", "import org.springframework.batch.core.configuration.support.JdbcDefaultBatchConfiguration", "import org.springframework.context.annotation.Bean", "import org.springframework.context.annotation.Configuration", "import org.springframework.core.task.TaskDecorator", "import org.springframework.core.task.TaskExecutor", "import org.springframework.core.task.VirtualThreadTaskExecutor", "import org.springframework.core.task.support.TaskExecutorAdapter", "import org.springframework.jdbc.datasource.DataSourceTransactionManager", "import org.springframework.transaction.PlatformTransactionManager", "import org.springframework.transaction.annotation.Isolation", "import eu.corentic.springrag.common.ids.BatchId", "import eu.corentic.springrag.common.ids.Filename", "import eu.corentic.springrag.common.ids.StorageUri", "import jakarta.annotation.PostConstruct", "import jakarta.validation.constraints.NotBlank", "import java.net.URI", "import java.nio.file.Path", "import java.time.Duration", "import org.slf4j.LoggerFactory", "import org.springframework.boot.context.properties.ConfigurationProperties", "import org.springframework.validation.annotation.Validated" ], "arg_patterns": {} }, { "label": "modules/ingestion/src/main/kotlin/eu/corentic/springrag/service/chunk", "method_count": 18, "algorithm": "CRX", "grammar": "root ::= \"trim\"?+ \"if\" \"isBlank\"?+", "mdl_score": 4, "imports": [ "import eu.corentic.springrag.config.HybridChunkingConfig", "import eu.corentic.springrag.common.ids.DocumentId", "import eu.corentic.springrag.common.ids.Filename", "import eu.corentic.springrag.common.ids.JobId", "import eu.corentic.springrag.common.ids.KnowledgeBaseId", "import eu.corentic.springrag.common.ids.LogicalDocumentId", "import eu.corentic.springrag.model.GraphDocument", "import eu.corentic.springrag.model.GraphTableElement", "import eu.corentic.springrag.model.GraphTextElement", "import eu.corentic.springrag.model.ParsedDocument", "import eu.corentic.springrag.model.VectorChunk", "import org.springframework.stereotype.Service", "import org.springframework.stereotype.Component", "import eu.corentic.springrag.config.EmbabelModelProperties", "import kotlin.math.min", "import com.knuddels.jtokkit.Encodings", "import com.knuddels.jtokkit.api.Encoding", "import com.knuddels.jtokkit.api.EncodingType" ], "arg_patterns": {} }, { "label": "modules/ingestion/src/main/kotlin/eu/corentic/springrag/service/document", "method_count": 3, "algorithm": "CRX", "grammar": "root ::= (\"lowercase\" | \"trim\" | \"value\")?+ \"joinToString\"? \"getInstance\"?+ \"format\"?+ \"digest\"?+ \"toByteArray\"?+ \"toHex\"?+ (\"return DocumentId.of(\\\"doc-$hex\\\")\" | \"return LogicalDocumentId.of(\\\"ldoc-$hex\\\")\")? \"of\"?+", "mdl_score": 0, "imports": [ "import eu.corentic.springrag.common.ids.DocumentId", "import eu.corentic.springrag.common.ids.Filename", "import eu.corentic.springrag.common.ids.JobId", "import eu.corentic.springrag.common.ids.KnowledgeBaseId", "import eu.corentic.springrag.common.ids.LogicalDocumentId", "import java.security.MessageDigest" ], "arg_patterns": {} }, { "label": "modules/ingestion/src/main/kotlin/eu/corentic/springrag/service/job", "method_count": 62, "imports": [ "import java.sql.Timestamp", "import java.time.Instant", "import org.springframework.jdbc.core.JdbcTemplate", "import org.springframework.stereotype.Component", "from ingestion_batch_ownership", "import eu.corentic.springrag.common.DomainException", "import io.github.oshai.kotlinlogging.KotlinLogging", "import org.springframework.stereotype.Service", "import eu.corentic.springrag.model.event.DocumentActivationFailed", "import eu.corentic.springrag.service.port.ChunkIndexPort", "import org.springframework.modulith.events.ApplicationModuleListener", "import eu.corentic.springrag.service.port.GraphIndexPort", "import org.springframework.context.ApplicationEventPublisher", "import eu.corentic.springrag.model.event.DocumentDeletionRequested", "import eu.corentic.springrag.batch.model.ErrorSeverity", "import eu.corentic.springrag.batch.model.ProcessingError", "import eu.corentic.springrag.common.ids.Filename", "import eu.corentic.springrag.common.ids.JobId", "import java.sql.ResultSet", "import org.springframework.transaction.annotation.Transactional", "from ingestion_document_tracking", "import eu.corentic.springrag.common.ids.DocumentId", "import eu.corentic.springrag.common.ids.KnowledgeBaseId", "import eu.corentic.springrag.common.ids.LogicalDocumentId", "import org.springframework.jdbc.core.RowMapper", "from ingestion_document_state", "import org.springframework.batch.core.job.JobExecution", "import org.springframework.batch.core.job.JobInstance", "import org.springframework.batch.core.repository.JobRepository", "import eu.corentic.springrag.common.ids.StorageUri", "import eu.corentic.springrag.config.StorageProperties", "import eu.corentic.springrag.service.port.ObjectStoragePort", "import org.springframework.core.io.ResourceLoader", "import org.springframework.batch.core.job.Job", "import org.springframework.batch.core.job.parameters.JobParameters", "import org.springframework.batch.core.launch.JobOperator", "import java.util.UUID", "import org.springframework.batch.core.job.parameters.JobParametersBuilder", "import java.io.File", "import java.util.*", "import org.springframework.batch.core.launch.JobExecutionAlreadyRunningException", "import org.springframework.batch.core.launch.JobInstanceAlreadyCompleteException", "import eu.corentic.springrag.batch.DocumentIngestionJobConfig", "import org.springframework.batch.core.launch.NoSuchJobException", "import eu.corentic.springrag.batch.model.ErrorSummary", "import org.springframework.batch.core.BatchStatus", "import eu.corentic.springrag.model.event.KnowledgeBaseDeletionRequested", "import java.net.URI", "import java.nio.file.Path", "import org.springframework.scheduling.annotation.Scheduled", "import org.springframework.util.FileSystemUtils" ], "arg_patterns": {} }, { "label": "modules/ingestion/src/test/kotlin/eu/corentic/springrag/batch", "method_count": 17, "imports": [ "import eu.corentic.springrag.config.BatchProperties", "import eu.corentic.springrag.service.job.IngestionDocumentStateRepository", "import io.mockk.mockk", "import kotlin.test.assertEquals", "import org.junit.jupiter.api.Test", "import org.springframework.jdbc.datasource.embedded.EmbeddedDatabaseBuilder", "import org.springframework.jdbc.datasource.embedded.EmbeddedDatabaseType", "import java.io.IOException", "import kotlin.test.assertFalse", "import kotlin.test.assertTrue", "import org.springframework.core.retry.RetryPolicy", "import org.springframework.dao.TransientDataAccessResourceException", "import org.springframework.util.backoff.FixedBackOff", "import org.springframework.batch.core.step.skip.SkipPolicy", "import kotlin.test.assertNotNull", "import org.springframework.batch.core.listener.ItemProcessListener", "import org.springframework.batch.core.listener.JobExecutionListener" ], "arg_patterns": {} }, { "label": "modules/ingestion/src/test/kotlin/eu/corentic/springrag/batch/listener", "method_count": 34, "imports": [ "import eu.corentic.springrag.config.StorageProperties", "import java.io.IOException", "import java.nio.file.Files", "import java.nio.file.Path", "import java.time.Duration", "import org.junit.jupiter.api.Assertions.assertTrue", "import org.junit.jupiter.api.BeforeEach", "import org.junit.jupiter.api.Test", "import org.junit.jupiter.api.io.TempDir", "import org.springframework.batch.core.BatchStatus", "import org.springframework.batch.core.job.JobExecution", "import org.springframework.batch.core.job.JobInstance", "import org.springframework.batch.core.job.parameters.JobParameters", "import org.springframework.batch.core.job.parameters.JobParametersBuilder", "import org.springframework.batch.test.MetaDataInstanceFactory", "import eu.corentic.springrag.service.job.StagedUploadCleanupService", "import eu.corentic.springrag.service.port.ObjectStoragePort", "import io.mockk.mockk", "import eu.corentic.springrag.service.job.DocumentTrackingRepository", "import eu.corentic.springrag.service.job.IngestionDocumentState", "import eu.corentic.springrag.service.job.IngestionDocumentStateRepository", "import eu.corentic.springrag.common.ids.asDocumentId", "import eu.corentic.springrag.common.ids.asFilename", "import eu.corentic.springrag.common.ids.asJobId", "import eu.corentic.springrag.common.ids.asLogicalDocumentId", "import io.mockk.every", "import io.mockk.just", "import io.mockk.runs", "import io.mockk.verify", "import org.springframework.batch.infrastructure.item.Chunk", "import eu.corentic.springrag.batch.model.DocumentInput", "import eu.corentic.springrag.batch.model.ProcessedDocument", "import eu.corentic.springrag.batch.model.ProcessingError", "import java.io.EOFException", "import java.net.SocketTimeoutException", "import javax.net.ssl.SSLException", "import kotlin.test.assertEquals", "import eu.corentic.springrag.model.VectorChunk", "import io.mockk.slot" ], "arg_patterns": {} }, { "label": "modules/ingestion/src/test/kotlin/eu/corentic/springrag/batch/model", "method_count": 8, "algorithm": "CRX", "grammar": "root ::= \"mapOf\"?+ \"DocumentInput\"? (\"assertNotEquals\" | \"severity\")? \"String\"?+ \"asJobId\"?+ \"Any\"? \"asDocumentId\"?+ \"requireNotNull\"?+ \"asLogicalDocumentId\"?+ \"getDocumentError\"?+ \"asFilename\"?+ \"assertTrue\"? \"byteArrayOf\"?+ \"ProcessingError\"? \"asStorageUri\"?+ \"asKnowledgeBaseId\"?+", "mdl_score": 0, "imports": [ "import eu.corentic.springrag.common.ids.asDocumentId", "import eu.corentic.springrag.common.ids.asFilename", "import eu.corentic.springrag.common.ids.asJobId", "import eu.corentic.springrag.common.ids.asKnowledgeBaseId", "import eu.corentic.springrag.common.ids.asLogicalDocumentId", "import eu.corentic.springrag.common.ids.asStorageUri", "import kotlin.test.assertEquals", "import kotlin.test.assertNotEquals", "import org.junit.jupiter.api.Test", "import org.junit.jupiter.api.Assertions.assertEquals", "import org.junit.jupiter.api.Assertions.assertTrue" ], "arg_patterns": {} }, { "label": "modules/ingestion/src/test/kotlin/eu/corentic/springrag/batch/partition", "method_count": 7, "algorithm": "CRX", "grammar": "root ::= (\"resolve\" | \"writeString\")?+ \"mockk\"? \"DocumentTrackingRepository\"? (\"any\" | \"asJobId\" | \"assertEquals\" | \"assertTrue\" | \"containsAll\" | \"emptyList\" | \"every\" | \"getString\" | \"listOf\" | \"listTrackedFilenames\" | \"map\" | \"match\" | \"partition\" | \"partitioner\" | \"queueDocuments\" | \"size\" | \"sorted\" | \"value\" | \"values\" | \"verify\")?+ \"all\"?+ \"error\"?+ \"getInt\"?+", "mdl_score": 0, "imports": [ "import eu.corentic.springrag.service.job.DocumentTrackingRepository", "import eu.corentic.springrag.service.port.ObjectStoragePort", "import eu.corentic.springrag.common.ids.asFilename", "import eu.corentic.springrag.common.ids.asJobId", "import eu.corentic.springrag.common.ids.asStorageUri", "import io.mockk.every", "import io.mockk.just", "import io.mockk.mockk", "import io.mockk.runs", "import io.mockk.verify", "import java.nio.file.Files", "import java.nio.file.Path", "import kotlin.test.assertEquals", "import kotlin.test.assertTrue", "import org.junit.jupiter.api.Test", "import org.junit.jupiter.api.io.TempDir" ], "arg_patterns": {} }, { "label": "modules/ingestion/src/test/kotlin/eu/corentic/springrag/batch/processor", "method_count": 5, "algorithm": "CRX", "grammar": "root ::= \"clearAllMocks\"? \"DocumentInput\"? (\"DocumentParsingRequest\" | \"GraphDocument\" | \"ParsedDocument\" | \"RuntimeException\" | \"VectorChunk\" | \"any\" | \"asDocumentId\" | \"asFilename\" | \"asJobId\" | \"asKnowledgeBaseId\" | \"asLogicalDocumentId\" | \"assertEquals\" | \"assertNotNull\" | \"assertThrows\" | \"byteArrayOf\" | \"content\" | \"createChunks\" | \"documentId\" | \"emptyList\" | \"every\" | \"filename\" | \"graphDocument\" | \"input\" | \"jobId\" | \"listOf\" | \"logicalDocumentId\" | \"parse\" | \"process\" | \"toList\" | \"verify\" | \"withArg\")?+ (\"chunks\" | \"knowledgeBaseId\")?", "mdl_score": 86178481, "imports": [ "import eu.corentic.springrag.batch.model.DocumentInput", "import eu.corentic.springrag.model.GraphDocument", "import eu.corentic.springrag.model.ParsedDocument", "import eu.corentic.springrag.model.VectorChunk", "import eu.corentic.springrag.service.chunk.DocumentChunkService", "import eu.corentic.springrag.service.port.DocumentParserPort", "import eu.corentic.springrag.service.port.DocumentParsingRequest", "import eu.corentic.springrag.common.ids.asDocumentId", "import eu.corentic.springrag.common.ids.asFilename", "import eu.corentic.springrag.common.ids.asJobId", "import eu.corentic.springrag.common.ids.asKnowledgeBaseId", "import eu.corentic.springrag.common.ids.asLogicalDocumentId", "import io.mockk.clearAllMocks", "import io.mockk.every", "import io.mockk.mockk", "import io.mockk.verify", "import java.util.UUID", "import kotlin.test.assertEquals", "import kotlin.test.assertNotNull", "import org.junit.jupiter.api.BeforeEach", "import org.junit.jupiter.api.Test", "import org.junit.jupiter.api.assertThrows" ], "arg_patterns": {} }, { "label": "modules/ingestion/src/test/kotlin/eu/corentic/springrag/batch/reader", "method_count": 12, "algorithm": "CRX", "grammar": "root ::= (\"DefaultResourceLoader\" | \"File\" | \"FileBasedDocumentItemReader\" | \"absolutePath\" | \"byteArrayOf\" | \"core\" | \"io\" | \"open\" | \"springframework\" | \"writeBytes\")?+ \"batch\"? \"infrastructure\"? \"item\"? \"ExecutionContext\"?+ \"read\"?+ \"assertNotNull\"? \"assertNull\"? \"assertEquals\"? \"filename\"? \"value\"?", "mdl_score": 5820, "imports": [ "import eu.corentic.springrag.service.document.DocumentIdentity", "import java.io.File", "import eu.corentic.springrag.common.ids.asDocumentId", "import eu.corentic.springrag.common.ids.asFilename", "import eu.corentic.springrag.common.ids.asJobId", "import eu.corentic.springrag.common.ids.asKnowledgeBaseId", "import eu.corentic.springrag.common.ids.asLogicalDocumentId", "import eu.corentic.springrag.common.ids.asStorageUri", "import eu.corentic.springrag.service.port.ObjectStoragePort", "import io.mockk.mockk", "import org.junit.jupiter.api.Assertions.*", "import org.junit.jupiter.api.Test", "import org.junit.jupiter.api.io.TempDir" ], "arg_patterns": {} }, { "label": "modules/ingestion/src/test/kotlin/eu/corentic/springrag/batch/writer", "method_count": 14, "algorithm": "CRX", "grammar": "root ::= \"emptyList\"?+ \"runTest\"? \"write\"?+ \"ProcessedDocument\"? \"Chunk\"? \"coVerify\"? \"DocumentInput\"? \"listOf\"?+ \"stageDocumentGraph\"?+ \"asJobId\"?+ \"any\"?+ \"asDocumentId\"?+ \"asLogicalDocumentId\"?+ \"asFilename\"?+ \"byteArrayOf\"?+", "mdl_score": 0, "imports": [ "import eu.corentic.springrag.service.job.DocumentActivationService", "import eu.corentic.springrag.service.job.IngestionDocumentState", "import eu.corentic.springrag.common.ids.asDocumentId", "import eu.corentic.springrag.common.ids.asFilename", "import eu.corentic.springrag.common.ids.asJobId", "import eu.corentic.springrag.common.ids.asLogicalDocumentId", "import io.mockk.every", "import io.mockk.just", "import io.mockk.mockk", "import io.mockk.runs", "import org.junit.jupiter.api.Test", "import org.springframework.batch.infrastructure.item.Chunk", "import kotlin.test.assertFailsWith", "import eu.corentic.springrag.batch.model.DocumentInput", "import eu.corentic.springrag.batch.model.ProcessedDocument", "import eu.corentic.springrag.common.ids.asStorageUri", "import eu.corentic.springrag.model.GraphDocument", "import eu.corentic.springrag.model.VectorChunk", "import eu.corentic.springrag.service.chunk.EmbeddingInputGuard", "import eu.corentic.springrag.service.chunk.EmbeddingInputTooLargeException", "import eu.corentic.springrag.service.job.IngestionDocumentStateRepository", "import eu.corentic.springrag.service.port.ChunkIndexPort", "import eu.corentic.springrag.service.port.GraphIndexPort", "import io.mockk.verify", "import io.mockk.*", "import io.mockk.impl.annotations.MockK", "import io.mockk.junit5.MockKExtension", "import kotlinx.coroutines.test.runTest", "import org.junit.jupiter.api.AfterEach", "import org.junit.jupiter.api.Assertions.*", "import org.junit.jupiter.api.BeforeEach", "import org.junit.jupiter.api.extension.ExtendWith" ], "arg_patterns": {} }, { "label": "modules/ingestion/src/test/kotlin/eu/corentic/springrag/service/chunk", "method_count": 8, "algorithm": "CRX", "grammar": "root ::= \"HybridChunkingConfig\"? \"service\"? \"GraphDocument\"? \"listOf\"?+ (\"GraphTableElement\" | \"GraphTextElement\")? \"createChunks\"?+ \"asJobId\"?+ \"asDocumentId\"?+ \"asLogicalDocumentId\"?+ \"asFilename\"?+ \"ParsedDocument\"? (\"assertEquals\" | \"size\")?+ \"assertTrue\"? \"all\"?+ \"metadata\"? \"Int\"?+", "mdl_score": 0, "imports": [ "import eu.corentic.springrag.config.HybridChunkingConfig", "import eu.corentic.springrag.config.EmbabelModelProperties", "import eu.corentic.springrag.common.ids.asDocumentId", "import eu.corentic.springrag.common.ids.asFilename", "import eu.corentic.springrag.common.ids.asJobId", "import eu.corentic.springrag.common.ids.asKnowledgeBaseId", "import eu.corentic.springrag.common.ids.asLogicalDocumentId", "import eu.corentic.springrag.model.GraphDocument", "import eu.corentic.springrag.model.GraphTableElement", "import eu.corentic.springrag.model.GraphTextElement", "import eu.corentic.springrag.model.ParsedDocument", "import kotlin.test.assertEquals", "import kotlin.test.assertNotNull", "import kotlin.test.assertTrue", "import org.junit.jupiter.api.Test" ], "arg_patterns": {} }, { "label": "modules/ingestion/src/test/kotlin/eu/corentic/springrag/service/job", "method_count": 49, "imports": [ "import io.mockk.every", "import io.mockk.mockk", "import io.mockk.verify", "import kotlin.test.assertEquals", "import kotlin.test.assertFailsWith", "import org.junit.jupiter.api.Test", "import eu.corentic.springrag.model.event.DocumentActivationFailed", "import eu.corentic.springrag.service.port.ChunkIndexPort", "import eu.corentic.springrag.common.ids.asDocumentId", "import eu.corentic.springrag.common.ids.asKnowledgeBaseId", "import eu.corentic.springrag.common.ids.asLogicalDocumentId", "import io.mockk.just", "import io.mockk.runs", "import eu.corentic.springrag.service.port.GraphIndexPort", "import eu.corentic.springrag.common.ids.asFilename", "import eu.corentic.springrag.common.ids.asJobId", "import org.springframework.context.ApplicationEventPublisher", "import eu.corentic.springrag.model.event.DocumentDeletionRequested", "import java.time.LocalDateTime", "import kotlin.test.assertNull", "import org.springframework.batch.core.job.JobExecution", "import org.springframework.batch.core.job.JobInstance", "import org.springframework.batch.core.job.parameters.JobParametersBuilder", "import org.springframework.batch.core.repository.JobRepository", "import java.io.File", "import eu.corentic.springrag.common.ids.asStorageUri", "import eu.corentic.springrag.service.port.ObjectStoragePort", "import org.junit.jupiter.api.Assertions.assertThrows", "import org.springframework.core.io.DefaultResourceLoader", "import org.junit.jupiter.api.Assertions.assertNull", "import org.junit.jupiter.api.Assertions.assertEquals", "import org.junit.jupiter.api.Assertions.assertSame", "import org.junit.jupiter.api.assertThrows", "import org.slf4j.MDC", "import org.springframework.batch.core.job.Job", "import org.springframework.batch.core.launch.JobOperator", "import kotlin.test.assertNotNull", "import io.mockk.slot", "import org.junit.jupiter.api.Assertions.assertNotEquals", "import org.junit.jupiter.api.Assertions.assertTrue", "import org.springframework.batch.core.BatchStatus", "import org.springframework.batch.core.launch.JobExecutionAlreadyRunningException", "import org.springframework.batch.core.launch.JobInstanceAlreadyCompleteException", "import org.springframework.batch.core.job.parameters.JobParameters", "import org.springframework.batch.test.MetaDataInstanceFactory", "import kotlin.test.assertTrue", "import eu.corentic.springrag.model.event.KnowledgeBaseDeletionRequested", "import eu.corentic.springrag.config.StorageProperties", "import java.nio.file.Files", "import java.nio.file.Path", "import java.time.Duration", "import java.time.Instant", "import org.junit.jupiter.api.Assertions.assertFalse", "import org.junit.jupiter.api.io.TempDir" ], "arg_patterns": {} }, { "label": "modules/knowledgebase/ports/src/main/kotlin/eu/corentic/springrag/model", "method_count": 5, "algorithm": "CRX", "grammar": "root ::= \"return stats.canAcceptMoreContent(additionalBytes, sizeLimitBytes)\"? \"return sizeInBytes + additionalBytes <= sizeLimitBytes\"? (\"return copy(\n stats = stats.applySizeDelta(sizeDelta),\n updatedAt = Instant.now()\n )\" | \"return copy(sizeInBytes = sizeInBytes + sizeDelta)\" | \"return copy(updatedAt = Instant.now())\")? \"canAcceptMoreContent\"?+ \"copy\"? \"applySizeDelta\"?+ \"now\"?+", "mdl_score": 39, "imports": [ "import eu.corentic.springrag.common.ids.KnowledgeBaseId", "import java.time.Instant" ], "arg_patterns": {} }, { "label": "modules/knowledgebase/src/main/kotlin/eu/corentic/springrag/service/knowledgebase", "method_count": 11, "algorithm": "CRX", "grammar": "root ::= \"stats\"? \"of\"?+ (\"debug\" | \"info\")?+ \"documentCount\"? \"findById\"?+ \"toInt\"?+ \"throw KnowledgeBaseNotFoundException(kbId)\"? \"throw\"? \"KnowledgeBaseNotFoundException\"?", "mdl_score": 10, "imports": [ "import eu.corentic.springrag.common.ids.KnowledgeBaseId", "import eu.corentic.springrag.model.KnowledgeBase", "import eu.corentic.springrag.service.port.KnowledgeBasePort", "import io.github.oshai.kotlinlogging.KotlinLogging", "import org.springframework.beans.factory.annotation.Value", "import org.springframework.boot.CommandLineRunner", "import org.springframework.boot.autoconfigure.condition.ConditionalOnProperty", "import org.springframework.context.annotation.Bean", "import org.springframework.context.annotation.Configuration", "import java.time.Instant", "import eu.corentic.springrag.common.ids.JobId", "import eu.corentic.springrag.model.event.DocumentDeletionRequested", "import eu.corentic.springrag.model.event.KnowledgeBaseDeletionRequested", "import eu.corentic.springrag.service.port.KnowledgeBaseDocumentPort", "import org.springframework.context.ApplicationEventPublisher", "import org.springframework.stereotype.Service", "import org.springframework.transaction.annotation.Transactional", "import java.util.*" ], "arg_patterns": {} }, { "label": "modules/knowledgebase/src/test/kotlin/eu/corentic/springrag/service/knowledgebase", "method_count": 16, "algorithm": "CRX", "grammar": "root ::= \"parse\"?+ \"corentic\"? \"springrag\"? \"model\"? \"KnowledgeBase\"?+ (\"asKnowledgeBaseId\" | \"every\" | \"findById\")?+", "mdl_score": 267, "imports": [ "import org.junit.jupiter.api.Assertions.assertEquals", "import org.junit.jupiter.api.Test", "import jakarta.validation.Validation", "import kotlin.test.assertFalse", "import kotlin.test.assertTrue", "import eu.corentic.springrag.model.event.DocumentDeletionRequested", "import eu.corentic.springrag.model.event.KnowledgeBaseDeletionRequested", "import eu.corentic.springrag.service.port.KnowledgeBasePort", "import eu.corentic.springrag.service.port.KnowledgeBaseDocumentPort", "import eu.corentic.springrag.common.ids.asJobId", "import eu.corentic.springrag.common.ids.asKnowledgeBaseId", "import io.mockk.every", "import io.mockk.just", "import io.mockk.mockk", "import io.mockk.runs", "import io.mockk.slot", "import io.mockk.verify", "import java.time.Instant", "import kotlin.test.assertEquals", "import kotlin.test.assertNotNull", "import org.junit.jupiter.api.Assertions.assertThrows", "import org.springframework.context.ApplicationEventPublisher" ], "arg_patterns": {} }, { "label": "modules/security/src/main/kotlin/eu/corentic/springrag/security/config", "method_count": 5, "algorithm": "CRX", "grammar": "root ::= \"UserDetailsRepositoryReactiveAuthenticationManager\"? \"BCryptPasswordEncoder\"? (\"Boolean\" | \"getProperty\" | \"java\")?+ \"request\"? \"CommandLineRunner\"? \"setPasswordEncoder\"?+ \"acceptsProfiles\"?+ \"headers\"? \"return manager\"? \"of\"?+ \"getFirst\"?+ \"activeProfiles\"? \"AUTHORIZATION\"? \"isEmpty\"?+ \"return http\n // Temporary: Thymeleaf pages may post forms; keep CSRF for browser endpoints.\n // Long-term: JWT-only API (no cookie auth), so this can be revisited.\n .csrf {\n it.csrfTokenRepository(CookieServerCsrfTokenRepository.withHttpOnlyFalse())\n it.requireCsrfProtectionMatcher(\n AndServerWebExchangeMatcher(\n CsrfWebFilter.DEFAULT_CSRF_MATCHER,\n NegatedServerWebExchangeMatcher(\n // CSRF is only relevant for browser cookie-based interactions.\n // LibreChat calls our /librechat/** endpoints server-to-server and won't send CSRF tokens.\n ServerWebExchangeMatchers.pathMatchers(\\\"/api/**\\\", \\\"/mcp/**\\\", \\\"/librechat/**\\\")\n )\n )\n )\n }\n .httpBasic { it.disable() }\n .formLogin {\n if (!enableFormLogin) {\n it.disable()\n }\n }\n .logout { it.disable() }\n .authenticationManager(authenticationManager)\n .authorizeExchange { exchange ->\n if (permitAll) {\n exchange.anyExchange().permitAll()\n } else {\n exchange\n // Public assets and auth endpoints\n .pathMatchers(\\\"/api/auth/**\\\", \\\"/login\\\", \\\"/logout\\\", \\\"/librechat/**\\\").permitAll()\n .pathMatchers(\\\"/actuator/health/**\\\", \\\"/mcp/**\\\").permitAll()\n .apply {\n if (permitLibreChat) {\n pathMatchers(\\\"/librechat/**\\\").permitAll()\n } else {\n pathMatchers(\\\"/librechat/**\\\").authenticated()\n }\n }\n .pathMatchers(\\\"/css/**\\\", \\\"/js/**\\\", \\\"/images/**\\\", \\\"/webjars/**\\\").permitAll()\n .pathMatchers(\\\"/\\\", \\\"/upload\\\", \\\"/jobs\\\", \\\"/chat\\\", \\\"/knowledge-bases\\\", \\\"/web/**\\\")\n .hasAnyAuthority(\\\"ROLE_USER\\\", \\\"ROLE_ADMIN\\\")\n .anyExchange().authenticated()\n }\n }\n .addFilterAt(jwtAuthenticationFilter, SecurityWebFiltersOrder.AUTHENTICATION)\n .build()\"? \"csrf\"?+ \"csrfTokenRepository\"?+ \"withHttpOnlyFalse\"?+ \"requireCsrfProtectionMatcher\"?+ \"AndServerWebExchangeMatcher\"? \"DEFAULT_CSRF_MATCHER\"? \"NegatedServerWebExchangeMatcher\"? (\"ROLE_ADMIN\" | \"anyExchange\" | \"apply\" | \"authenticated\" | \"authenticationManager\" | \"authorizeExchange\" | \"disable\" | \"else\" | \"findByUsername\" | \"formLogin\" | \"hasAnyAuthority\" | \"httpBasic\" | \"if\" | \"info\" | \"logout\" | \"pathMatchers\" | \"permitAll\" | \"registerUser\")?+ \"ROLE_USER\"? \"startsWith\"?+ \"addFilterAt\"?+ \"substring\"?+ \"AUTHENTICATION\"? \"when\"? \"build\"?+ \"parseToken\"?+ (\"Err\" | \"Ok\" | \"Outcome\" | \"UsernamePasswordAuthenticationToken\" | \"authorities\" | \"contextWrite\" | \"filter\" | \"return chain.filter(exchange)\" | \"return chain.filter(exchange)\n .contextWrite(ReactiveSecurityContextHolder.withAuthentication(authentication))\" | \"username\" | \"value\" | \"withAuthentication\")?+", "mdl_score": 0, "imports": [ "import eu.corentic.springrag.common.Outcome", "import eu.corentic.springrag.security.service.JwtService", "import org.springframework.http.HttpHeaders", "import org.springframework.security.authentication.UsernamePasswordAuthenticationToken", "import org.springframework.security.core.context.ReactiveSecurityContextHolder", "import org.springframework.stereotype.Component", "import org.springframework.web.server.ServerWebExchange", "import org.springframework.web.server.WebFilter", "import org.springframework.web.server.WebFilterChain", "import reactor.core.publisher.Mono", "import org.springframework.context.annotation.Bean", "import org.springframework.context.annotation.Configuration", "import org.springframework.security.config.annotation.method.configuration.EnableReactiveMethodSecurity", "import org.springframework.security.config.annotation.web.reactive.EnableWebFluxSecurity", "import org.springframework.security.config.web.server.SecurityWebFiltersOrder", "import org.springframework.security.config.web.server.ServerHttpSecurity", "import org.springframework.security.crypto.bcrypt.BCryptPasswordEncoder", "import org.springframework.security.crypto.password.PasswordEncoder", "import org.springframework.security.web.server.SecurityWebFilterChain", "import org.springframework.security.authentication.ReactiveAuthenticationManager", "import org.springframework.security.core.userdetails.ReactiveUserDetailsService", "import org.springframework.security.authentication.UserDetailsRepositoryReactiveAuthenticationManager", "import org.springframework.security.web.server.csrf.CookieServerCsrfTokenRepository", "import org.springframework.security.web.server.csrf.CsrfWebFilter", "import org.springframework.security.web.server.util.matcher.AndServerWebExchangeMatcher", "import org.springframework.security.web.server.util.matcher.NegatedServerWebExchangeMatcher", "import org.springframework.security.web.server.util.matcher.ServerWebExchangeMatchers", "import org.springframework.core.env.Environment", "import org.springframework.core.env.Profiles", "import eu.corentic.springrag.security.model.Role", "import eu.corentic.springrag.security.service.UserService", "import io.github.oshai.kotlinlogging.KotlinLogging", "import org.springframework.boot.CommandLineRunner", "import org.springframework.boot.autoconfigure.condition.ConditionalOnProperty" ], "arg_patterns": {} }, { "label": "modules/security/src/main/kotlin/eu/corentic/springrag/security/service", "method_count": 10, "algorithm": "CRX", "grammar": "root ::= \"parser\"?+ \"if\"? \"verifyWith\"?+ \"build\"?+ \"parseSignedClaims\"?+ \"payload\"?", "mdl_score": 6, "imports": [ "import eu.corentic.springrag.security.repository.UserRepository", "import org.springframework.security.core.userdetails.ReactiveUserDetailsService", "import org.springframework.security.core.userdetails.User", "import org.springframework.security.core.userdetails.UserDetails", "import org.springframework.stereotype.Service", "import reactor.core.publisher.Mono", "import reactor.core.scheduler.Schedulers", "import eu.corentic.springrag.common.DomainException", "import eu.corentic.springrag.common.Outcome", "import eu.corentic.springrag.security.model.User", "import io.jsonwebtoken.ExpiredJwtException", "import io.jsonwebtoken.Jwts", "import io.jsonwebtoken.MalformedJwtException", "import io.jsonwebtoken.UnsupportedJwtException", "import io.jsonwebtoken.security.Keys", "import io.jsonwebtoken.security.SecurityException", "import java.nio.charset.StandardCharsets", "import java.util.*", "import javax.crypto.SecretKey", "import eu.corentic.springrag.security.config.JwtProperties", "import org.springframework.security.core.GrantedAuthority", "import org.springframework.security.core.authority.SimpleGrantedAuthority", "import java.util.UUID", "import org.springframework.data.relational.core.mapping.event.BeforeConvertCallback", "import org.springframework.stereotype.Component", "import eu.corentic.springrag.security.model.Role", "import io.github.oshai.kotlinlogging.KotlinLogging", "import org.springframework.security.crypto.password.PasswordEncoder", "import org.springframework.transaction.annotation.Transactional" ], "arg_patterns": {} }, { "label": "modules/security/src/test/kotlin/eu/corentic/springrag/security/config", "method_count": 6, "algorithm": "CRX", "grammar": "root ::= \"passwordEncoder\"?+ \"http\"?+ \"assertTrue\"? \"ReactiveAuthenticationManager\"? \"BCryptPasswordEncoder\"? \"empty\"?+ (\"ROLE_ADMIN\" | \"any\" | \"every\" | \"findByUsername\" | \"mockk\" | \"registerUser\" | \"run\" | \"seedUsers\" | \"verify\")?+ \"parseToken\"?+ \"ROLE_USER\"? \"JwtService\"? \"Err\"?+ \"Ok\"?+ \"JwtAuthenticationFilter\"? \"Malformed\"?+ \"ParsedJwt\"?+ \"springSecurityFilterChain\"?+ (\"AUTHORIZATION\" | \"AtomicReference\" | \"Authentication\" | \"SimpleGrantedAuthority\" | \"WebFilterChain\" | \"assertEquals\" | \"assertNull\" | \"authentication\" | \"block\" | \"build\" | \"doOnNext\" | \"filter\" | \"from\" | \"get\" | \"getContext\" | \"header\" | \"listOf\" | \"name\" | \"requireNotNull\" | \"set\" | \"then\")?+ \"assertNotNull\"? \"authorities\"? \"toList\"?+", "mdl_score": 0, "imports": [ "import eu.corentic.springrag.common.Outcome", "import eu.corentic.springrag.security.service.JwtService", "import eu.corentic.springrag.security.service.JwtValidationError", "import io.mockk.every", "import io.mockk.mockk", "import java.util.concurrent.atomic.AtomicReference", "import org.junit.jupiter.api.Assertions.assertEquals", "import org.junit.jupiter.api.Assertions.assertNull", "import org.junit.jupiter.api.Test", "import org.springframework.http.HttpHeaders", "import org.springframework.mock.http.server.reactive.MockServerHttpRequest", "import org.springframework.mock.web.server.MockServerWebExchange", "import org.springframework.security.core.Authentication", "import org.springframework.security.core.authority.SimpleGrantedAuthority", "import org.springframework.security.core.context.ReactiveSecurityContextHolder", "import org.springframework.web.server.WebFilterChain", "import org.junit.jupiter.api.Assertions.assertNotNull", "import org.junit.jupiter.api.Assertions.assertTrue", "import org.springframework.mock.env.MockEnvironment", "import org.springframework.security.authentication.ReactiveAuthenticationManager", "import org.springframework.security.config.web.server.ServerHttpSecurity", "import org.springframework.security.crypto.bcrypt.BCryptPasswordEncoder", "import reactor.core.publisher.Mono", "import eu.corentic.springrag.security.model.Role", "import eu.corentic.springrag.security.service.UserService", "import io.mockk.just", "import io.mockk.runs", "import io.mockk.verify" ], "arg_patterns": {} }, { "label": "modules/security/src/test/kotlin/eu/corentic/springrag/security/service", "method_count": 15, "algorithm": "CRX", "grammar": "root ::= \"every\"? \"JwtService\"? \"existsByUsername\"?+ \"JwtProperties\"? \"any\"? \"assertThrows\"? \"PasswordPolicyViolationException\"? \"java\"? \"registerUser\"?+ \"assertEquals\"? \"errorCode\"?", "mdl_score": 481, "imports": [ "import eu.corentic.springrag.common.Outcome", "import eu.corentic.springrag.security.model.Role", "import eu.corentic.springrag.security.model.User", "import eu.corentic.springrag.security.config.JwtProperties", "import io.jsonwebtoken.Jwts", "import io.jsonwebtoken.security.Keys", "import java.nio.charset.StandardCharsets", "import java.util.UUID", "import java.util.Date", "import org.junit.jupiter.api.Assertions.assertEquals", "import org.junit.jupiter.api.Assertions.assertFalse", "import org.junit.jupiter.api.Assertions.assertTrue", "import org.junit.jupiter.api.Test", "import eu.corentic.springrag.security.repository.UserRepository", "import io.mockk.MockKAnnotations", "import io.mockk.every", "import io.mockk.impl.annotations.MockK", "import io.mockk.verify", "import org.junit.jupiter.api.Assertions.assertThrows", "import org.junit.jupiter.api.BeforeEach", "import org.springframework.security.crypto.password.PasswordEncoder" ], "arg_patterns": {} }, { "label": "platform/test-support/src/main/kotlin/eu/corentic/springrag/testcontainers", "method_count": 13, "imports": [ "import com.github.dockerjava.api.model.DeviceRequest", "import org.testcontainers.DockerClientFactory", "import org.testcontainers.containers.GenericContainer", "import io.github.oshai.kotlinlogging.KotlinLogging", "import io.qdrant.client.QdrantClient", "import io.qdrant.client.grpc.Collections.Distance", "import io.qdrant.client.grpc.Collections.VectorParams", "import java.util.concurrent.ExecutionException", "import eu.corentic.springrag.testcontainers.GpuSupport.withGpuIfAvailable", "import java.io.File", "import java.time.Duration", "import org.testcontainers.containers.BindMode", "import org.testcontainers.containers.Neo4jContainer", "import org.testcontainers.containers.PostgreSQLContainer", "import org.testcontainers.containers.wait.strategy.Wait", "import org.testcontainers.junit.jupiter.Container" ], "arg_patterns": {} }, { "label": "platform/test-support/src/test/kotlin/eu/corentic/springrag/testcontainers", "method_count": 5, "algorithm": "CRX", "grammar": "root ::= \"@\"? \"Suppress\"?+ (\"ArgumentMatchers\" | \"CollectionConfig\" | \"CollectionInfo\" | \"CollectionOperationResponse\" | \"CollectionParams\" | \"Collections\" | \"Cosine\" | \"Distance\" | \"ExecResult\" | \"GenericContainer\" | \"IllegalStateException\" | \"InterruptedException\" | \"ListenableFuture\" | \"Mockito\" | \"RuntimeException\" | \"VectorParams\" | \"VectorsConfig\" | \"`when`\" | \"any\" | \"anyString\" | \"apply\" | \"assertEquals\" | \"assertThrows\" | \"assertTrue\" | \"build\" | \"collectionPointCount\" | \"createCollectionAsync\" | \"currentThread\" | \"deleteCollectionAsync\" | \"eq\" | \"execInContainer\" | \"get\" | \"getCollectionInfoAsync\" | \"getDefaultInstance\" | \"immediateFailedFuture\" | \"immediateFuture\" | \"interrupted\" | \"isInterrupted\" | \"java\" | \"mock\" | \"mockito\" | \"newBuilder\" | \"pullAndWarmup\" | \"recreateTestCollection\" | \"setConfig\" | \"setDistance\" | \"setParams\" | \"setSize\" | \"setVectorsConfig\" | \"thenReturn\" | \"thenThrow\" | \"times\" | \"verify\" | \"with\")?+ \"message\"? \"contains\"?+", "mdl_score": 473418, "imports": [ "import org.junit.jupiter.api.Test", "import org.mockito.Mockito.mock", "import org.mockito.Mockito.times", "import org.mockito.Mockito.verify", "import org.testcontainers.containers.Container", "import org.testcontainers.containers.GenericContainer", "import com.google.common.util.concurrent.Futures", "import com.google.common.util.concurrent.ListenableFuture", "import io.qdrant.client.QdrantClient", "import io.qdrant.client.grpc.Collections", "import org.junit.jupiter.api.assertThrows", "import org.mockito.ArgumentMatchers.any", "import org.mockito.Mockito.`when`", "import kotlin.test.assertEquals", "import kotlin.test.assertTrue" ], "arg_patterns": {} }, { "label": "(other)", "method_count": 6, "imports": [], "arg_patterns": {} } ], "total_methods": 1609 }, { "language": ".js", "conventions": [ { "label": "compose/patches", "method_count": 17, "imports": [], "arg_patterns": { "require": { "occurrences": 24, "arg_count": { "min": 1, "max": 1, "common": 1 }, "patterns": [ { "count": 24, "args": 1, "types": [ "lit" ] } ] }, "Set": { "occurrences": 3, "arg_count": { "min": 1, "max": 1, "common": 1 }, "patterns": [ { "count": 3, "args": 1, "types": [ "var" ] } ] }, "generateShortLivedToken": { "occurrences": 2, "arg_count": { "min": 1, "max": 1, "common": 1 }, "patterns": [ { "count": 2, "args": 1, "types": [ "var" ] } ] }, "filterFilesByAgentAccess": { "occurrences": 2, "arg_count": { "min": 1, "max": 1, "common": 1 }, "patterns": [ { "count": 2, "args": 1, "types": [ "other" ] } ] }, "getFiles": { "occurrences": 2, "arg_count": { "min": 3, "max": 3, "common": 3 }, "patterns": [ { "count": 2, "args": 3, "types": [ "other", "lit", "other" ] } ] }, "tool": { "occurrences": 2, "arg_count": { "min": 2, "max": 2, "common": 2 }, "patterns": [ { "count": 2, "args": 2, "types": [ "other", "other" ] } ] }, "new": { "occurrences": 3, "arg_count": { "min": 0, "max": 1, "common": 0 }, "patterns": [ { "count": 2, "args": 0, "types": [] }, { "count": 1, "args": 1, "types": [ "var" ] } ] }, "Map": { "occurrences": 3, "arg_count": { "min": 0, "max": 0, "common": 0 }, "patterns": [ { "count": 3, "args": 0, "types": [] } ] }, "setTimeout": { "occurrences": 4, "arg_count": { "min": 2, "max": 2, "common": 2 }, "patterns": [ { "count": 4, "args": 2, "types": [ "other", "other" ] } ] }, "clearTimeout": { "occurrences": 2, "arg_count": { "min": 1, "max": 1, "common": 1 }, "patterns": [ { "count": 2, "args": 1, "types": [ "other" ] } ] }, "EmbeddingPollerImpl": { "occurrences": 2, "arg_count": { "min": 0, "max": 0, "common": 0 }, "patterns": [ { "count": 2, "args": 0, "types": [] } ] } } }, { "label": "testing/steps", "method_count": 68, "imports": [ "import { Given, When, Then } from '@cucumber/cucumber';", "import { expect } from '@playwright/test';", "import { BeforeAll, AfterAll, Before, After, setDefaultTimeout } from '@cucumber/cucumber';" ], "arg_patterns": { "expect": { "occurrences": 40, "arg_count": { "min": 1, "max": 1, "common": 1 }, "patterns": [ { "count": 16, "args": 1, "types": [ "var" ] }, { "count": 14, "args": 1, "types": [ "other" ] }, { "count": 10, "args": 1, "types": [ "call" ] } ] }, "When": { "occurrences": 54, "arg_count": { "min": 2, "max": 2, "common": 2 }, "patterns": [ { "count": 54, "args": 2, "types": [ "lit", "other" ] } ] }, "fetch": { "occurrences": 6, "arg_count": { "min": 1, "max": 1, "common": 1 }, "patterns": [ { "count": 6, "args": 1, "types": [ "lit" ] } ] }, "Then": { "occurrences": 40, "arg_count": { "min": 2, "max": 2, "common": 2 }, "patterns": [ { "count": 40, "args": 2, "types": [ "lit", "other" ] } ] }, "Given": { "occurrences": 24, "arg_count": { "min": 2, "max": 2, "common": 2 }, "patterns": [ { "count": 24, "args": 2, "types": [ "lit", "other" ] } ] }, "createAgent": { "occurrences": 4, "arg_count": { "min": 2, "max": 2, "common": 2 }, "patterns": [ { "count": 4, "args": 2, "types": [ "lit", "lit" ] } ] }, "setDefaultTimeout": { "occurrences": 2, "arg_count": { "min": 1, "max": 1, "common": 1 }, "patterns": [ { "count": 2, "args": 1, "types": [ "lit" ] } ] }, "Before": { "occurrences": 2, "arg_count": { "min": 1, "max": 1, "common": 1 }, "patterns": [ { "count": 2, "args": 1, "types": [ "other" ] } ] }, "After": { "occurrences": 2, "arg_count": { "min": 1, "max": 1, "common": 1 }, "patterns": [ { "count": 2, "args": 1, "types": [ "other" ] } ] } } }, { "label": "testing/support", "method_count": 3, "algorithm": "CRX", "grammar": "root ::= (\"await\" | \"catch\" | \"chromium\" | \"close\" | \"launch\" | \"newContext\" | \"process\")?+ \"return\"? \"newPage\"? \"Date\"?+ \"now\"? \"toString\"?", "mdl_score": 7112, "imports": [ "import { chromium } from '@playwright/test';", "import { setWorldConstructor } from '@cucumber/cucumber';" ], "arg_patterns": { "setWorldConstructor": { "occurrences": 2, "arg_count": { "min": 1, "max": 1, "common": 1 }, "patterns": [ { "count": 2, "args": 1, "types": [ "var" ] } ] } } }, { "label": "(other)", "method_count": 1, "imports": [], "arg_patterns": {} } ], "total_methods": 89 }, { "language": ".java", "conventions": [], "total_methods": 0 }, { "language": ".go", "conventions": [ { "label": "tools/setup-ui", "method_count": 44, "imports": [ "import (" ], "arg_patterns": { "len": { "occurrences": 42, "arg_count": { "min": 1, "max": 1, "common": 1 }, "patterns": [ { "count": 30, "args": 1, "types": [ "other" ] }, { "count": 12, "args": 1, "types": [ "var" ] } ] }, "append": { "occurrences": 51, "arg_count": { "min": 2, "max": 2, "common": 2 }, "patterns": [ { "count": 24, "args": 2, "types": [ "var", "call" ] }, { "count": 9, "args": 2, "types": [ "var", "var" ] }, { "count": 6, "args": 2, "types": [ "other", "other" ] }, { "count": 6, "args": 2, "types": [ "var", "other" ] }, { "count": 3, "args": 2, "types": [ "other", "var" ] } ] }, "writeExport": { "occurrences": 8, "arg_count": { "min": 3, "max": 3, "common": 3 }, "patterns": [ { "count": 4, "args": 3, "types": [ "var", "other", "call" ] }, { "count": 2, "args": 3, "types": [ "var", "var", "other" ] }, { "count": 2, "args": 3, "types": [ "var", "other", "other" ] } ] }, "string": { "occurrences": 4, "arg_count": { "min": 1, "max": 1, "common": 1 }, "patterns": [ { "count": 4, "args": 1, "types": [ "other" ] } ] }, "shellEscape": { "occurrences": 2, "arg_count": { "min": 1, "max": 1, "common": 1 }, "patterns": [ { "count": 2, "args": 1, "types": [ "var" ] } ] }, "sectionTitle": { "occurrences": 10, "arg_count": { "min": 1, "max": 1, "common": 1 }, "patterns": [ { "count": 10, "args": 1, "types": [ "other" ] } ] }, "isSensitiveKey": { "occurrences": 2, "arg_count": { "min": 1, "max": 1, "common": 1 }, "patterns": [ { "count": 2, "args": 1, "types": [ "var" ] } ] }, "newConfig": { "occurrences": 2, "arg_count": { "min": 0, "max": 0, "common": 0 }, "patterns": [ { "count": 2, "args": 0, "types": [] } ] }, "muted": { "occurrences": 8, "arg_count": { "min": 1, "max": 1, "common": 1 }, "patterns": [ { "count": 4, "args": 1, "types": [ "other" ] }, { "count": 2, "args": 1, "types": [ "expr" ] }, { "count": 2, "args": 1, "types": [ "var" ] } ] }, "float64": { "occurrences": 4, "arg_count": { "min": 1, "max": 1, "common": 1 }, "patterns": [ { "count": 2, "args": 1, "types": [ "expr" ] }, { "count": 2, "args": 1, "types": [ "call" ] } ] }, "sortedKeys": { "occurrences": 4, "arg_count": { "min": 1, "max": 1, "common": 1 }, "patterns": [ { "count": 4, "args": 1, "types": [ "other" ] } ] }, "make": { "occurrences": 9, "arg_count": { "min": 3, "max": 3, "common": 3 }, "patterns": [ { "count": 9, "args": 3, "types": [ "other", "other", "call" ] } ] }, "initialModel": { "occurrences": 2, "arg_count": { "min": 0, "max": 0, "common": 0 }, "patterns": [ { "count": 2, "args": 0, "types": [] } ] }, "buildSteps": { "occurrences": 2, "arg_count": { "min": 0, "max": 0, "common": 0 }, "patterns": [ { "count": 2, "args": 0, "types": [] } ] }, "runStart": { "occurrences": 2, "arg_count": { "min": 0, "max": 0, "common": 0 }, "patterns": [ { "count": 2, "args": 0, "types": [] } ] }, "errorStyle": { "occurrences": 2, "arg_count": { "min": 1, "max": 1, "common": 1 }, "patterns": [ { "count": 2, "args": 1, "types": [ "other" ] } ] }, "summarizeConfig": { "occurrences": 2, "arg_count": { "min": 1, "max": 1, "common": 1 }, "patterns": [ { "count": 2, "args": 1, "types": [ "expr" ] } ] }, "accent": { "occurrences": 2, "arg_count": { "min": 1, "max": 1, "common": 1 }, "patterns": [ { "count": 2, "args": 1, "types": [ "other" ] } ] }, "banner": { "occurrences": 2, "arg_count": { "min": 0, "max": 0, "common": 0 }, "patterns": [ { "count": 2, "args": 0, "types": [] } ] }, "repoRoot": { "occurrences": 2, "arg_count": { "min": 0, "max": 0, "common": 0 }, "patterns": [ { "count": 2, "args": 0, "types": [] } ] }, "writeEnvFile": { "occurrences": 2, "arg_count": { "min": 1, "max": 1, "common": 1 }, "patterns": [ { "count": 2, "args": 1, "types": [ "other" ] } ] }, "removeString": { "occurrences": 2, "arg_count": { "min": 2, "max": 2, "common": 2 }, "patterns": [ { "count": 2, "args": 2, "types": [ "other", "other" ] } ] } } } ], "total_methods": 44 } ]