fix(agents): ignore native placeholder artifacts

This commit is contained in:
t8y2 2026-08-03 13:18:47 +08:00
parent 3dac9d715a
commit fa17c01c3b
No known key found for this signature in database
2 changed files with 34 additions and 2 deletions

View File

@ -66,7 +66,8 @@ export function collectReusableAssetPlan({ registry, release, versions, modules,
throw new Error(`Previous agent version mismatch for ${moduleName}: registry=${driver.version}, expected=${versions[moduleName]}`);
}
if (driver.jar) {
const reusableJar = driver.jar && driver.jar.size > 0;
if (reusableJar) {
driverAssets.push({
...requireReleaseAsset(assets, driver.jar, `${moduleName} Java package`),
moduleName,
@ -95,7 +96,7 @@ export function collectReusableAssetPlan({ registry, release, versions, modules,
});
}
if (!driver.jar && nativePlatforms.length === 0) {
if (!reusableJar && nativePlatforms.length === 0) {
throw new Error(`Previous agent registry has no reusable artifacts for module: ${moduleName}`);
}
}

View File

@ -60,6 +60,37 @@ test("rejects an incomplete reusable native platform set", () => {
);
});
test("ignores zero-size legacy JAR placeholders for native-only modules", () => {
const native = Object.fromEntries(
platforms.map((platform, index) => [platform, artifact(`dbx-agent-duckdb-0.1.2-${platform}.tar.zst`, String(index + 1))]),
);
const registry = {
drivers: {
duckdb: {
version: "0.1.2",
jar: {
url: "https://example.invalid/dbx-agent-duckdb-legacy-placeholder.jar",
size: 0,
sha256: "",
},
native,
},
},
jres: {},
};
const plan = collectReusableAssetPlan({
registry,
release: releaseFor(Object.values(native)),
versions: { duckdb: "0.1.2" },
modules: ["duckdb"],
reuseJre: false,
});
assert.equal(plan.driverAssets.length, 6);
assert.equal(plan.driverAssets.some((asset) => asset.kind === "jar"), false);
});
test("rejects a registry version that differs from the effective baseline", () => {
const access = artifact("dbx-agent-access-0.1.33.tar.zst", "a");
const registry = { drivers: { access: { version: "0.1.33", jar: access } }, jres: {} };