From ff4c29af925a0dd49fe89c78f592f352b53fd66b Mon Sep 17 00:00:00 2001 From: Dotta Date: Thu, 3 Sep 2026 03:00:27 -0500 Subject: [PATCH] fix(runner): retain qualified runtime target --- .../src/drivers/acpx/installation-integrity.ts | 13 +++++++++++-- 1 file changed, 11 insertions(+), 2 deletions(-) diff --git a/packages/paperclip-runner/src/drivers/acpx/installation-integrity.ts b/packages/paperclip-runner/src/drivers/acpx/installation-integrity.ts index 65678a8937..a283f9d444 100644 --- a/packages/paperclip-runner/src/drivers/acpx/installation-integrity.ts +++ b/packages/paperclip-runner/src/drivers/acpx/installation-integrity.ts @@ -726,6 +726,7 @@ export async function verifyQualifiedAcpxInstallation( serverPackageFormat, dependencyAncestorFormats, currentRuntimeExecutable, + runtimeExecutable?.environmentVariable ?? null, ); } catch (error) { await Promise.all([ @@ -1233,6 +1234,8 @@ function commandLease( serverPackageFormat: AcpxCommandFormat, dependencyAncestorFormats: readonly AcpxCommandFormat[], providerRuntimeExecutable: FileHandle | null, + providerRuntimeEnvironmentVariable: + VerifiedAcpxRuntimeExecutable["environmentVariable"] | null, ): VerifiedAcpxCommandLease { let consumed = false; let directoriesReleased = false; @@ -1298,11 +1301,17 @@ function commandLease( const runtimeExecutable = verifiedRuntimeExecutable(); const environment = sanitizedNodeEnvironment(options.env); environment[VERIFIED_RUNTIME_EXECUTABLE_ENV] = runtimeExecutable; - if (providerRuntimeExecutable === null) { + if ( + (providerRuntimeExecutable === null) !== + (providerRuntimeEnvironmentVariable === null) + ) { + throw new Error("ACPX provider runtime executable lease is invalid"); + } + if (providerRuntimeEnvironmentVariable === null) { delete environment[VERIFIED_PROVIDER_RUNTIME_TARGET_ENV]; } else { environment[VERIFIED_PROVIDER_RUNTIME_TARGET_ENV] = - providerRuntimeExecutable.environmentVariable; + providerRuntimeEnvironmentVariable; } child = spawnChildProcess( runtimeExecutable,