agents: keep full-access truth for host runs

This commit is contained in:
Eva
2026-04-11 02:38:41 +07:00
committed by Peter Steinberger
parent dba2e189e7
commit 9f476107ea
2 changed files with 37 additions and 6 deletions

View File

@@ -1,5 +1,6 @@
import { describe, expect, it } from "vitest";
import { buildEmbeddedSandboxInfo } from "./pi-embedded-runner.js";
import { resolveEmbeddedFullAccessState } from "./pi-embedded-runner/sandbox-info.js";
import type { SandboxContext } from "./sandbox.js";
function createSandboxContext(overrides?: Partial<SandboxContext>): SandboxContext {
@@ -113,3 +114,36 @@ describe("buildEmbeddedSandboxInfo", () => {
});
});
});
describe("resolveEmbeddedFullAccessState", () => {
it("treats direct host runs with allowed elevation as full-access available", () => {
expect(
resolveEmbeddedFullAccessState({
sandboxEnabled: false,
execElevated: {
enabled: true,
allowed: true,
defaultLevel: "full",
},
}),
).toEqual({ available: true });
});
it("keeps explicit runtime blocks even when host exec is allowed", () => {
expect(
resolveEmbeddedFullAccessState({
sandboxEnabled: false,
execElevated: {
enabled: true,
allowed: true,
defaultLevel: "full",
fullAccessAvailable: false,
fullAccessBlockedReason: "runtime",
},
}),
).toEqual({
available: false,
blockedReason: "runtime",
});
});
});

View File

@@ -6,12 +6,6 @@ export function resolveEmbeddedFullAccessState(params: {
sandboxEnabled: boolean;
execElevated?: ExecElevatedDefaults;
}): { available: boolean; blockedReason?: EmbeddedFullAccessBlockedReason } {
if (!params.sandboxEnabled) {
return {
available: false,
blockedReason: "runtime",
};
}
if (params.execElevated?.fullAccessAvailable === true) {
return { available: true };
}
@@ -27,6 +21,9 @@ export function resolveEmbeddedFullAccessState(params: {
blockedReason: "host-policy",
};
}
if (!params.sandboxEnabled) {
return { available: true };
}
return { available: true };
}