fix(agents): ignore native placeholder artifacts

This commit is contained in:
t8y2 committed 2026-08-03 13:18:47 +08:00
1 parent 3dac9d715a
commit fa17c01c3b
2 files changed
+34 -2

No files matched your search

@@ -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]}`); 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({ driverAssets.push({
...requireReleaseAsset(assets, driver.jar, `${moduleName} Java package`), ...requireReleaseAsset(assets, driver.jar, `${moduleName} Java package`),
moduleName, 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}`); throw new Error(`Previous agent registry has no reusable artifacts for module: ${moduleName}`);
} }
} }
@@ -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", () => { test("rejects a registry version that differs from the effective baseline", () => {
const access = artifact("dbx-agent-access-0.1.33.tar.zst", "a"); const access = artifact("dbx-agent-access-0.1.33.tar.zst", "a");
const registry = { drivers: { access: { version: "0.1.33", jar: access } }, jres: {} }; const registry = { drivers: { access: { version: "0.1.33", jar: access } }, jres: {} };