a9cd7750f4
CI / unit-test (push) Has been cancelled
CI / detect-changes (push) Has been cancelled
CI / build (push) Has been cancelled
Publish docs via GitHub Pages / Deploy docs (push) Has been cancelled
CI / test-harness (push) Has been cancelled
CI / generate-e2e-matrix (push) Has been cancelled
CI / e2e (push) Has been cancelled
CI / build-ui (push) Has been cancelled
Release Drafter / update_release_draft (push) Has been cancelled
UI v2 Integration CI / E2E (Integration) (push) Has been cancelled
UI v2 CI / Lint, Format & Test (push) Has been cancelled
UI v2 CI / E2E (Mocked) (push) Has been cancelled
120 lines
5.8 KiB
Groovy
120 lines
5.8 KiB
Groovy
import java.security.MessageDigest
|
|
|
|
plugins {
|
|
id 'java'
|
|
}
|
|
|
|
repositories {
|
|
maven { url 'https://repo.spring.io/snapshot' }
|
|
maven { url 'https://repo.spring.io/milestone' }
|
|
}
|
|
|
|
// --- sqlite-vec loadable extensions -------------------------------------------------------------
|
|
// sqlite-vec has no Maven artifact and no JVM binding, so we download the official, checksum-pinned
|
|
// loadable binaries at build time and package them as jar resources under /sqlite-vec/<platform>/.
|
|
// SqliteVecExtensions extracts the right one at runtime. Apache-2.0/MIT licensed, redistributable.
|
|
ext.sqliteVecVersion = '0.1.9'
|
|
ext.sqliteVecArtifacts = [
|
|
'linux-x86_64' : 'b959baa1d8dc88861b1edb337b8587178cdcb12d60b4998f9d10b6a82052d5d7',
|
|
'linux-aarch64' : 'ea03d39541e478fab5974253c461e1cb5d77742f69e40cf96e3fad5bc309a37c',
|
|
'macos-aarch64' : '8282126333399ddfe98bbbcc7a1936e7252625aac49df056a98be602e46bfd29',
|
|
'macos-x86_64' : '53ad76e400786515e2edcaed2f01271dda846316390b761fadbd2dcf56aa4713',
|
|
'windows-x86_64': '51581189d52066b4dfc6631f6d7a3eab7dedc2260656ab09ca97ab3fb8165983',
|
|
]
|
|
def sqliteVecResourceDir = layout.buildDirectory.dir('generated/resources/sqlite-vec')
|
|
|
|
def downloadSqliteVec = tasks.register('downloadSqliteVec') {
|
|
description = 'Downloads, verifies and stages the sqlite-vec loadable extensions as jar resources.'
|
|
group = 'build'
|
|
inputs.property('version', sqliteVecVersion)
|
|
inputs.property('artifacts', sqliteVecArtifacts)
|
|
outputs.dir(sqliteVecResourceDir)
|
|
doLast {
|
|
def base = sqliteVecResourceDir.get().asFile
|
|
def cache = new File(temporaryDir, 'archives')
|
|
cache.mkdirs()
|
|
sqliteVecArtifacts.each { platform, expectedSha ->
|
|
def archive = new File(cache, "sqlite-vec-${platform}.tar.gz")
|
|
if (!archive.exists()) {
|
|
def url = "https://github.com/asg017/sqlite-vec/releases/download/v${sqliteVecVersion}/sqlite-vec-${sqliteVecVersion}-loadable-${platform}.tar.gz"
|
|
logger.lifecycle("Downloading sqlite-vec ${platform} from ${url}")
|
|
ant.get(src: url, dest: archive, verbose: false)
|
|
}
|
|
def digest = MessageDigest.getInstance('SHA-256')
|
|
archive.eachByte(64 * 1024) { buf, len -> digest.update(buf, 0, len) }
|
|
def actualSha = digest.digest().encodeHex().toString()
|
|
if (actualSha != expectedSha) {
|
|
throw new GradleException("Checksum mismatch for sqlite-vec ${platform}: expected ${expectedSha}, got ${actualSha}")
|
|
}
|
|
def platformDir = new File(base, "sqlite-vec/${platform}")
|
|
platformDir.mkdirs()
|
|
copy {
|
|
from tarTree(resources.gzip(archive))
|
|
into platformDir
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
// Register the task provider (not the bare directory) as a resource source dir so that every
|
|
// consumer of the resources — processResources, sourcesJar, etc. — automatically depends on
|
|
// downloadSqliteVec instead of racing it.
|
|
sourceSets.main.resources.srcDir(downloadSqliteVec)
|
|
|
|
dependencies {
|
|
compileOnly 'org.springframework.boot:spring-boot-starter'
|
|
// Needed to compile A2A push-notification callback controller and AgentSpan activation glue;
|
|
// supplied by the server at runtime.
|
|
compileOnly 'org.springframework.boot:spring-boot-starter-web'
|
|
compileOnly 'org.springframework.boot:spring-boot-autoconfigure'
|
|
|
|
implementation project(':conductor-common')
|
|
implementation project(':conductor-core')
|
|
|
|
api "org.springframework.ai:spring-ai-model:${revSpringAI}"
|
|
api "org.springframework.ai:spring-ai-client-chat:${revSpringAI}"
|
|
api "org.springframework.ai:spring-ai-mistral-ai:${revSpringAI}"
|
|
api "org.springframework.ai:spring-ai-bedrock-converse:${revSpringAI}"
|
|
api "org.springframework.ai:spring-ai-ollama:${revSpringAI}"
|
|
|
|
api "com.google.auth:google-auth-library-oauth2-http:1.33.0"
|
|
api "com.networknt:json-schema-validator:${revJSonSchemaValidator}"
|
|
|
|
api("io.modelcontextprotocol.sdk:mcp-core:${revMCP}")
|
|
api "com.squareup.okhttp3:okhttp:4.12.0"
|
|
api "org.apache.commons:commons-lang3"
|
|
|
|
// Markdown parsing and PDF generation
|
|
// Exclude openhtmltopdf-pdfbox (pulled in by flexmark-pdf-converter inside flexmark-all):
|
|
// it was compiled against fontbox 2.x and calls TTFParser.parse(InputStream) which was
|
|
// removed in fontbox 3.x, causing a NoSuchMethodError at runtime in GENERATE_PDF tasks.
|
|
// The custom MarkdownToPdfConverter uses PDFBox 3.x directly and does not need openhtmltopdf.
|
|
implementation("com.vladsch.flexmark:flexmark-all:${revFlexmark}") {
|
|
exclude group: "com.openhtmltopdf", module: "openhtmltopdf-pdfbox"
|
|
exclude group: "de.rototor.pdfbox", module: "graphics2d"
|
|
}
|
|
implementation "org.apache.pdfbox:pdfbox:3.0.5"
|
|
|
|
//Vector Databases
|
|
|
|
api "org.mongodb:mongodb-driver-sync:${mongodb}"
|
|
api "org.mongodb:mongodb-driver-core:${mongodb}"
|
|
api "org.mongodb:bson:${mongodb}"
|
|
api "io.pinecone:pinecone-client:${pinecone}"
|
|
api "com.pgvector:pgvector:${pgVector}"
|
|
// SQLite + sqlite-vec backend. The native vec0 extension is supplied by the operator at
|
|
// runtime (no JVM binding / Maven artifact exists); see SqliteConfig.
|
|
api "org.xerial:sqlite-jdbc:${sqliteJdbc}"
|
|
api "org.springframework.boot:spring-boot-starter-jdbc"
|
|
|
|
|
|
testImplementation 'org.springframework.boot:spring-boot-starter-web'
|
|
testImplementation "com.squareup.okhttp3:mockwebserver:4.12.0"
|
|
testImplementation "org.testcontainers:mongodb:${revTestContainer}"
|
|
testImplementation "org.testcontainers:postgresql:${revTestContainer}"
|
|
testImplementation "org.postgresql:postgresql:${revPostgres}"
|
|
testImplementation "org.apache.commons:commons-compress:${revCommonsCompress}"
|
|
testImplementation "com.h2database:h2:2.4.240"
|
|
|
|
}
|