Files
wehub-resource-sync 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
chore: import upstream snapshot with attribution
2026-07-13 12:37:56 +08:00

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"
}