diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..3a8370c --- /dev/null +++ b/.gitignore @@ -0,0 +1,38 @@ +# Docker volumes data +postgres_data/ +es_data/ +ollama_data/ +minio_data/ + +# Environment files +.env +.env.local +.env.*.local +*.env + +# Mac +.DS_Store + +# Windows +Thumbs.db +ehthumbs.db +Desktop.ini + +# Logs +*.log + +# Memory bank (sensitive project information) +memory-bank/ + +# TaskMaster files (project management) +.taskmaster/ + +# IDE +.vscode/ +.idea/ + +# Temporary files +*.tmp +*.bak +*.swp +*~ \ No newline at end of file diff --git a/core/.gitignore b/core/.gitignore new file mode 100644 index 0000000..8252081 --- /dev/null +++ b/core/.gitignore @@ -0,0 +1,65 @@ +# Compiled class files +*.class + +# Log files +*.log + +# Package Files +*.jar +*.war +*.nar +*.ear +*.zip +*.tar.gz +*.rar + +# Gradle +.gradle +**/build/ +!src/**/build/ +gradle-app.setting +!gradle-wrapper.jar +!gradle-wrapper.properties + +# IntelliJ IDEA +.idea +*.iws +*.iml +*.ipr +out/ +!**/src/main/**/out/ +!**/src/test/**/out/ + +# Eclipse +.apt_generated +.classpath +.factorypath +.project +.settings +.springBeans +.sts4-cache +bin/ +!**/src/main/**/bin/ +!**/src/test/**/bin/ + +# Spring Boot +*.jar.original +HELP.md + +# Application specific +application-local.yml +application-*.yml +!application.yml +!application-docker.yml + +# Test coverage reports +/coverage +/.nyc_output + +# QueryDSL generated files +**/generated/ + +# Temporary files +*.tmp +*.bak +*.swp \ No newline at end of file diff --git a/core/build.gradle b/core/build.gradle index 0eae4d0..1de20c8 100644 --- a/core/build.gradle +++ b/core/build.gradle @@ -1,7 +1,8 @@ plugins { id 'java' - id 'org.springframework.boot' version '3.2.0' - id 'io.spring.dependency-management' version '1.1.4' + id 'org.springframework.boot' version '3.3.11' + id 'io.spring.dependency-management' version '1.1.6' + id 'com.ewerk.gradle.plugins.querydsl' version '1.0.10' } group = 'com.opencontext' @@ -32,16 +33,36 @@ dependencies { // Database runtimeOnly 'org.postgresql:postgresql' + + // Database Migration + implementation 'org.flywaydb:flyway-core' + runtimeOnly 'org.flywaydb:flyway-database-postgresql' + + // LangChain4j - Core RAG Framework + implementation 'dev.langchain4j:langchain4j:0.36.2' + implementation 'dev.langchain4j:langchain4j-spring-boot-starter:0.36.2' + implementation 'dev.langchain4j:langchain4j-document-parser-apache-pdfbox:0.36.2' + implementation 'dev.langchain4j:langchain4j-embeddings:0.36.2' + implementation 'dev.langchain4j:langchain4j-ollama:0.36.2' + + // QueryDSL - Type-safe dynamic queries + implementation 'com.querydsl:querydsl-jpa:5.0.0:jakarta' + annotationProcessor 'com.querydsl:querydsl-apt:5.0.0:jakarta' + annotationProcessor 'jakarta.annotation:jakarta.annotation-api' + annotationProcessor 'jakarta.persistence:jakarta.persistence-api' // API Documentation - implementation 'org.springdoc:springdoc-openapi-starter-webmvc-ui:2.2.0' + implementation 'org.springdoc:springdoc-openapi-starter-webmvc-ui:2.7.0' // Object Storage (MinIO) - implementation 'io.minio:minio:8.5.7' + implementation 'io.minio:minio:8.5.12' // HTTP Client implementation 'org.springframework.boot:spring-boot-starter-webflux' + // Structured Logging + implementation 'net.logstash.logback:logstash-logback-encoder:7.4' + // Utilities compileOnly 'org.projectlombok:lombok' annotationProcessor 'org.projectlombok:lombok' @@ -58,14 +79,38 @@ dependencies { testImplementation 'org.testcontainers:junit-jupiter' testImplementation 'org.testcontainers:postgresql' testImplementation 'org.testcontainers:elasticsearch' + testRuntimeOnly 'com.h2database:h2' } dependencyManagement { imports { - mavenBom "org.testcontainers:testcontainers-bom:1.19.3" + mavenBom "org.testcontainers:testcontainers-bom:1.20.4" } } tasks.named('test') { useJUnitPlatform() } + +// QueryDSL Configuration +def querydslDir = layout.buildDirectory.dir("generated/querydsl").get().asFile + +querydsl { + jpa = true + querydslSourcesDir = querydslDir +} + +sourceSets { + main.java.srcDir querydslDir +} + +compileQuerydsl { + options.annotationProcessorPath = configurations.querydsl +} + +configurations { + compileOnly { + extendsFrom annotationProcessor + } + querydsl.extendsFrom compileClasspath +} diff --git a/core/gradlew b/core/gradlew old mode 100644 new mode 100755 diff --git a/mcp-adapter/.gitignore b/mcp-adapter/.gitignore new file mode 100644 index 0000000..a6c4445 --- /dev/null +++ b/mcp-adapter/.gitignore @@ -0,0 +1,37 @@ +# Dependencies +node_modules/ +npm-debug.log* +yarn-debug.log* +yarn-error.log* + +# Lock files +package-lock.json +yarn.lock + +# Runtime data +pids +*.pid +*.seed +*.pid.lock + +# Coverage directory used by tools like istanbul +coverage/ +*.lcov + +# Output of 'npm pack' +*.tgz + +# Yarn Integrity file +.yarn-integrity + +# Environment variables +.env +.env.local +.env.*.local + +# Logs +logs +*.log + +# Optional REPL history +.node_repl_history \ No newline at end of file