From 5cdee2e7a30b264de684c7558aed2897da14702c Mon Sep 17 00:00:00 2001 From: t8y2 <1156263951@qq.com> Date: Fri, 18 Sep 2026 13:17:10 +0800 Subject: [PATCH] fix(agents): synchronize DuckDB lockfile after core extraction --- agents/drivers/duckdb/Cargo.lock | 233 +++++++++++++++++++---------- scripts/core-architecture.test.mjs | 22 +++ 2 files changed, 175 insertions(+), 80 deletions(-) diff --git a/agents/drivers/duckdb/Cargo.lock b/agents/drivers/duckdb/Cargo.lock index 6201b0bc49..f0da685a78 100644 --- a/agents/drivers/duckdb/Cargo.lock +++ b/agents/drivers/duckdb/Cargo.lock @@ -586,16 +586,6 @@ dependencies = [ "uuid", ] -[[package]] -name = "bstr" -version = "1.13.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1f7dc094d718f2e1c1559ad110e27eeaae14a5465d3d56dd6dbd793079fbd530" -dependencies = [ - "memchr", - "serde_core", -] - [[package]] name = "btoi" version = "0.5.0" @@ -823,17 +813,6 @@ version = "0.2.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "510ca239cf13b7f8d16a2b48f263de7b4f8c566f0af58d901031473c76afb1e3" -[[package]] -name = "console" -version = "0.16.4" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4fe5f465a4f6fee88fad41b85d990f84c835335e85b5d9e6e63e0d06d28cba7c" -dependencies = [ - "encode_unicode", - "libc", - "windows-sys 0.61.2", -] - [[package]] name = "const-oid" version = "0.9.6" @@ -1243,13 +1222,30 @@ version = "2.11.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "a4ae5f15dda3c708c0ade84bfee31ccab44a3da4f88015ed22f63732abe300c8" +[[package]] +name = "dbx-ai-provider" +version = "0.1.0" +dependencies = [ + "base64 0.22.1", + "bytes", + "dbx-platform", + "futures", + "httpdate", + "log", + "reqwest", + "serde", + "serde_json", + "tempfile", + "tokio", + "uuid", +] + [[package]] name = "dbx-core" version = "0.1.0" dependencies = [ "aes 0.8.4", "aes-gcm 0.10.3", - "anyhow", "arc-swap", "argon2", "async-trait", @@ -1260,16 +1256,17 @@ dependencies = [ "chrono", "crc", "csv", - "dbx-sqlite-worker", + "dbx-ai-provider", + "dbx-drivers", + "dbx-formats", + "dbx-platform", + "dbx-plugin-runtime", + "dbx-sql", + "dbx-types", "deadpool-postgres", - "ed25519-dalek 2.2.0", "encoding_rs", "flate2", - "fs2", "futures", - "httpdate", - "insta", - "json5", "jsonwebtoken", "log", "minijinja", @@ -1277,14 +1274,61 @@ dependencies = [ "mysql_async", "nix", "notify", + "percent-encoding", + "portpicker", + "prometheus-parse", + "quick-xml", + "rayon", + "redis", + "regex", + "reqwest", + "rusqlite", + "rustls 0.23.42", + "rustls-pemfile 2.2.0", + "serde", + "serde_json", + "serde_yaml_ng", + "sha1 0.10.7", + "sha2 0.10.9", + "sqlparser", + "ssfmt", + "sysinfo", + "tar", + "tempfile", + "tokio", + "tokio-postgres", + "tokio-util", + "uuid", + "webpki-roots 0.26.11", + "windows-sys 0.61.2", + "zip 4.6.1", +] + +[[package]] +name = "dbx-drivers" +version = "0.1.0" +dependencies = [ + "base64 0.22.1", + "bytes", + "chrono", + "crc", + "csv", + "dbx-platform", + "dbx-sql", + "dbx-sqlite-worker", + "dbx-types", + "deadpool-postgres", + "flate2", + "futures", + "json5", + "log", + "mongodb", + "mysql_async", "openssl", "pageant", "percent-encoding", "portpicker", "postgres-openssl", - "prometheus-parse", - "quick-xml", - "rayon", "redis", "regex", "reqwest", @@ -1293,16 +1337,10 @@ dependencies = [ "rust_decimal", "rustls 0.23.42", "rustls-pemfile 2.2.0", - "semver", "serde", "serde_json", - "serde_yaml", - "serde_yaml_ng", - "sha1 0.10.7", "sha2 0.10.9", "sqlparser", - "ssfmt", - "sysinfo", "tar", "tempfile", "tiberius", @@ -1312,12 +1350,9 @@ dependencies = [ "tokio-util", "tracing", "tracing-subscriber", - "unicode-ident", - "unicode-width", "uuid", "webpki-roots 0.26.11", "windows-sys 0.61.2", - "winnow", "zip 4.6.1", "zstd", ] @@ -1338,6 +1373,74 @@ dependencies = [ "uuid", ] +[[package]] +name = "dbx-formats" +version = "0.1.0" +dependencies = [ + "chrono", + "serde", + "serde_json", + "zip 4.6.1", +] + +[[package]] +name = "dbx-platform" +version = "0.1.0" +dependencies = [ + "futures", + "nix", + "reqwest", + "serde", + "tokio", + "uuid", +] + +[[package]] +name = "dbx-plugin-runtime" +version = "0.1.0" +dependencies = [ + "base64 0.22.1", + "bytes", + "chrono", + "dbx-platform", + "dbx-types", + "ed25519-dalek 2.2.0", + "fs2", + "futures", + "log", + "reqwest", + "semver", + "serde", + "serde_json", + "sha2 0.10.9", + "tempfile", + "tokio", + "uuid", + "zip 4.6.1", +] + +[[package]] +name = "dbx-sql" +version = "0.1.0" +dependencies = [ + "chrono", + "dbx-types", + "encoding_rs", + "log", + "notify", + "percent-encoding", + "rayon", + "regex", + "serde", + "serde_json", + "serde_yaml", + "sqlparser", + "tokio", + "unicode-ident", + "unicode-width", + "winnow", +] + [[package]] name = "dbx-sqlite-worker" version = "0.1.1" @@ -1346,6 +1449,16 @@ dependencies = [ "serde_json", ] +[[package]] +name = "dbx-types" +version = "0.1.0" +dependencies = [ + "percent-encoding", + "serde", + "serde_json", + "serde_yaml_ng", +] + [[package]] name = "deadpool" version = "0.12.3" @@ -1655,12 +1768,6 @@ dependencies = [ "zeroize", ] -[[package]] -name = "encode_unicode" -version = "1.0.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "34aa73646ffb006b8f5147f3dc182bd4bcb190227ce861fc4a4844bf8e3cb2c0" - [[package]] name = "encoding_rs" version = "0.8.35" @@ -2034,19 +2141,6 @@ dependencies = [ "polyval 0.7.3", ] -[[package]] -name = "globset" -version = "0.4.19" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e47d37d2ae4464254884b60ab7071be2b876a9c35b696bd018ddcc76847309cd" -dependencies = [ - "aho-corasick", - "bstr", - "log", - "regex-automata", - "regex-syntax", -] - [[package]] name = "half" version = "2.7.1" @@ -2546,21 +2640,6 @@ dependencies = [ "hybrid-array", ] -[[package]] -name = "insta" -version = "1.48.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "86f0f8fee8c926415c58d6ae43a08523a26faccb2323f5e6b644fe7dd4ef6b82" -dependencies = [ - "console", - "globset", - "once_cell", - "serde", - "similar", - "tempfile", - "walkdir", -] - [[package]] name = "instant" version = "0.1.13" @@ -5168,12 +5247,6 @@ version = "0.1.5" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "e3a9fe34e3e7a50316060351f37187a3f546bce95496156754b601a5fa71b76e" -[[package]] -name = "similar" -version = "2.7.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bbbb5d9659141646ae647b42fe094daf6c6192d1620870b449d9557f748b2daa" - [[package]] name = "simple_asn1" version = "0.6.4" diff --git a/scripts/core-architecture.test.mjs b/scripts/core-architecture.test.mjs index 64d1bf4986..42d2856316 100644 --- a/scripts/core-architecture.test.mjs +++ b/scripts/core-architecture.test.mjs @@ -112,6 +112,28 @@ test("CI and release tracking follow the new source owners", () => { assert.ok(read("scripts/release.mjs").includes('"crates/dbx-drivers/src/mongo_shell.rs"')); }); +test("the standalone DuckDB lockfile includes core's internal dependency closure", () => { + const lockedPackages = new Map(read("agents/drivers/duckdb/Cargo.lock") + .split("\n[[package]]\n").slice(1) + .map((block) => [block.match(/^name = "([^"]+)"$/m)[1], block])); + const visited = new Set(); + function inspect(name) { + if (visited.has(name)) return; + visited.add(name); + const pkg = members.get(name); + const locked = lockedPackages.get(name); + assert.ok(locked, `DuckDB lockfile misses ${name}`); + assert.ok(locked.includes(`version = "${pkg.version}"\n`), `DuckDB lockfile has a stale version of ${name}`); + assert.doesNotMatch(locked, /^source = /m); + const dependencies = new Set([...locked.matchAll(/^ "([^"]+)",$/gm)].map((match) => match[1].split(" ")[0])); + for (const dependency of pkg.dependencies.filter((dep) => dep.kind !== "dev" && !dep.optional && members.has(dep.name))) { + assert.ok(dependencies.has(dependency.name), `DuckDB lockfile misses ${name} -> ${dependency.name}`); + inspect(dependency.name); + } + } + inspect("dbx-core"); +}); + test("source-sensitive client tests point to existing owners", () => { function inspect(directory) { for (const entry of readdirSync(path.join(root, directory), { withFileTypes: true })) {