Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
1 change: 0 additions & 1 deletion scripts/checks/test-create-require-budget.mts
Original file line number Diff line number Diff line change
Expand Up @@ -53,7 +53,6 @@ export const TEST_SUPPORT_CREATE_REQUIRE_FILES = [
"test/helpers/base-image-test-harness.ts",
"test/helpers/destroy-flow-test-harness.ts",
"test/helpers/rebuild-flow-harness.ts",
"test/helpers/rebuild-flow-test-harness.ts",
"test/support/connect-flow-test-harness.ts",
"test/support/status-flow-test-harness.ts",
] as const;
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -6,7 +6,7 @@ import {
createRebuildFlowHarness,
installRebuildFlowTestHooks,
snapshotEnv,
} from "../../../../test/helpers/rebuild-flow-test-harness";
} from "../../../../test/helpers/rebuild-flow-generic-harness";
import {
SANDBOX_BASE_RESOLUTION_LABEL,
type SandboxBaseImageResolutionMetadata,
Expand Down
10 changes: 4 additions & 6 deletions src/lib/actions/sandbox/rebuild-dcode-artifact-drift.test.ts
Original file line number Diff line number Diff line change
@@ -1,22 +1,20 @@
// SPDX-FileCopyrightText: Copyright (c) 2026 NVIDIA CORPORATION & AFFILIATES. All rights reserved.
// SPDX-License-Identifier: Apache-2.0

import { afterEach, beforeEach, describe, expect, it } from "vitest";
import { describe, expect, it } from "vitest";
import {
configureDcodeSession,
makeDcodeSandboxEntry,
} from "../../../../test/helpers/rebuild-dcode-flow-helpers";
import { expectNoSandboxDelete } from "../../../../test/helpers/rebuild-delete-assertions";
import {
createRebuildFlowHarness,
resetRebuildFlowTestEnvironment,
restoreRebuildFlowTestEnvironment,
installRebuildFlowTestHooks,
snapshotEnv,
} from "../../../../test/helpers/rebuild-flow-harness";
} from "../../../../test/helpers/rebuild-flow-dcode-harness";

describe("rebuildSandbox DCode flow: prepared artifact drift", () => {
beforeEach(resetRebuildFlowTestEnvironment);
afterEach(restoreRebuildFlowTestEnvironment);
installRebuildFlowTestHooks({ acceptThirdPartySoftware: true });

it("preserves live DCode when retained replacement inputs drift after backup (#6195)", async () => {
const harness = createRebuildFlowHarness({
Expand Down
10 changes: 4 additions & 6 deletions src/lib/actions/sandbox/rebuild-dcode-base-image-lease.test.ts
Original file line number Diff line number Diff line change
@@ -1,17 +1,16 @@
// SPDX-FileCopyrightText: Copyright (c) 2026 NVIDIA CORPORATION & AFFILIATES. All rights reserved.
// SPDX-License-Identifier: Apache-2.0

import { afterEach, beforeEach, describe, expect, it } from "vitest";
import { describe, expect, it } from "vitest";
import {
configureDcodeSession,
makeDcodeSandboxEntry,
} from "../../../../test/helpers/rebuild-dcode-flow-helpers";
import {
createRebuildFlowHarness,
resetRebuildFlowTestEnvironment,
restoreRebuildFlowTestEnvironment,
installRebuildFlowTestHooks,
snapshotEnv,
} from "../../../../test/helpers/rebuild-flow-harness";
} from "../../../../test/helpers/rebuild-flow-dcode-harness";

const overrideEnvName = "NEMOCLAW_LANGCHAIN_DEEPAGENTS_CODE_SANDBOX_BASE_IMAGE_REF";
const trustedLocalOverride = {
Expand All @@ -21,8 +20,7 @@ const trustedLocalOverride = {
const trustedRemoteRef = `ghcr.io/nvidia/nemoclaw/langchain-deepagents-code-sandbox-base@sha256:${"d".repeat(64)}`;

describe("rebuildSandbox DCode flow: base-image trust lease", () => {
beforeEach(resetRebuildFlowTestEnvironment);
afterEach(restoreRebuildFlowTestEnvironment);
installRebuildFlowTestHooks({ acceptThirdPartySoftware: true });

it("keeps the current base-image trust lease active through replacement preparation (#6195)", async () => {
const harness = createRebuildFlowHarness({
Expand Down
10 changes: 4 additions & 6 deletions src/lib/actions/sandbox/rebuild-dcode-mutation-edge.test.ts
Original file line number Diff line number Diff line change
@@ -1,21 +1,19 @@
// SPDX-FileCopyrightText: Copyright (c) 2026 NVIDIA CORPORATION & AFFILIATES. All rights reserved.
// SPDX-License-Identifier: Apache-2.0

import { afterEach, beforeEach, describe, expect, it } from "vitest";
import { describe, expect, it } from "vitest";
import {
configureDcodeSession,
makeDcodeSandboxEntry,
} from "../../../../test/helpers/rebuild-dcode-flow-helpers";
import { expectNoSandboxDelete } from "../../../../test/helpers/rebuild-delete-assertions";
import {
createRebuildFlowHarness,
resetRebuildFlowTestEnvironment,
restoreRebuildFlowTestEnvironment,
} from "../../../../test/helpers/rebuild-flow-harness";
installRebuildFlowTestHooks,
} from "../../../../test/helpers/rebuild-flow-dcode-harness";

describe("rebuildSandbox DCode flow: mutation edge", () => {
beforeEach(resetRebuildFlowTestEnvironment);
afterEach(restoreRebuildFlowTestEnvironment);
installRebuildFlowTestHooks({ acceptThirdPartySoftware: true });

it("finishes DCode preparation and recheck before backup, delete, and recreate (#6195)", async () => {
const mcpEntry = { server: "search", providerName: "mcp-search" };
Expand Down
10 changes: 4 additions & 6 deletions src/lib/actions/sandbox/rebuild-dcode-pre-delete-drift.test.ts
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
// SPDX-FileCopyrightText: Copyright (c) 2026 NVIDIA CORPORATION & AFFILIATES. All rights reserved.
// SPDX-License-Identifier: Apache-2.0

import { afterEach, beforeEach, describe, expect, it, vi } from "vitest";
import { describe, expect, it, vi } from "vitest";
import {
configureDcodeSession,
expectNoDcodeMutation,
Expand All @@ -10,14 +10,12 @@ import {
import { expectNoSandboxDelete } from "../../../../test/helpers/rebuild-delete-assertions";
import {
createRebuildFlowHarness,
resetRebuildFlowTestEnvironment,
restoreRebuildFlowTestEnvironment,
} from "../../../../test/helpers/rebuild-flow-harness";
installRebuildFlowTestHooks,
} from "../../../../test/helpers/rebuild-flow-dcode-harness";
import { revalidateDcodeReplacementAtMutationEdge } from "./rebuild-dcode-preflight";

describe("rebuildSandbox DCode flow: pre-delete drift", () => {
beforeEach(resetRebuildFlowTestEnvironment);
afterEach(restoreRebuildFlowTestEnvironment);
installRebuildFlowTestHooks({ acceptThirdPartySoftware: true });

it("rejects prepared-image tool-disclosure drift before gateway or mutation work", async () => {
const checkGatewaySchema = vi.fn(() => true);
Expand Down
10 changes: 4 additions & 6 deletions src/lib/actions/sandbox/rebuild-dcode-preflight.test.ts
Original file line number Diff line number Diff line change
@@ -1,23 +1,21 @@
// SPDX-FileCopyrightText: Copyright (c) 2026 NVIDIA CORPORATION & AFFILIATES. All rights reserved.
// SPDX-License-Identifier: Apache-2.0

import { afterEach, beforeEach, describe, expect, it } from "vitest";
import { describe, expect, it } from "vitest";
import {
configureDcodeSession,
expectNoDcodeMutation,
makeDcodeSandboxEntry,
} from "../../../../test/helpers/rebuild-dcode-flow-helpers";
import {
createRebuildFlowHarness,
resetRebuildFlowTestEnvironment,
restoreRebuildFlowTestEnvironment,
installRebuildFlowTestHooks,
snapshotEnv,
} from "../../../../test/helpers/rebuild-flow-harness";
} from "../../../../test/helpers/rebuild-flow-dcode-harness";
import { resolveRebuildDurableConfig } from "./rebuild-durable-config";

describe("rebuildSandbox DCode flow: preflight", () => {
beforeEach(resetRebuildFlowTestEnvironment);
afterEach(restoreRebuildFlowTestEnvironment);
installRebuildFlowTestHooks({ acceptThirdPartySoftware: true });

it.each([
["defaults legacy state to disabled", undefined, undefined, "disabled", null],
Expand Down
10 changes: 4 additions & 6 deletions src/lib/actions/sandbox/rebuild-dcode-recovered-provider.test.ts
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
// SPDX-FileCopyrightText: Copyright (c) 2026 NVIDIA CORPORATION & AFFILIATES. All rights reserved.
// SPDX-License-Identifier: Apache-2.0

import { afterEach, beforeEach, describe, expect, it } from "vitest";
import { describe, expect, it } from "vitest";

import {
configureDcodeSession,
Expand All @@ -11,15 +11,13 @@ import {
} from "../../../../test/helpers/rebuild-dcode-flow-helpers";
import {
createRebuildFlowHarness,
installRebuildFlowTestHooks,
makePreparedRecoveryManifest,
resetRebuildFlowTestEnvironment,
restoreRebuildFlowTestEnvironment,
snapshotEnv,
} from "../../../../test/helpers/rebuild-flow-harness";
} from "../../../../test/helpers/rebuild-flow-dcode-harness";

describe("rebuildSandbox DCode recovered provider", () => {
beforeEach(resetRebuildFlowTestEnvironment);
afterEach(restoreRebuildFlowTestEnvironment);
installRebuildFlowTestHooks({ acceptThirdPartySoftware: true });

it("rejects incompatible keyless provider reuse after the live DCode route proof", async () => {
const restoreEnv = snapshotEnv(["COMPATIBLE_API_KEY"]);
Expand Down
10 changes: 4 additions & 6 deletions src/lib/actions/sandbox/rebuild-dcode-recovery.test.ts
Original file line number Diff line number Diff line change
@@ -1,21 +1,19 @@
// SPDX-FileCopyrightText: Copyright (c) 2026 NVIDIA CORPORATION & AFFILIATES. All rights reserved.
// SPDX-License-Identifier: Apache-2.0

import { afterEach, beforeEach, describe, expect, it } from "vitest";
import { describe, expect, it } from "vitest";
import {
configureDcodeSession,
makeDcodeSandboxEntry,
} from "../../../../test/helpers/rebuild-dcode-flow-helpers";
import {
createRebuildFlowHarness,
installRebuildFlowTestHooks,
makePreparedRecoveryManifest,
resetRebuildFlowTestEnvironment,
restoreRebuildFlowTestEnvironment,
} from "../../../../test/helpers/rebuild-flow-harness";
} from "../../../../test/helpers/rebuild-flow-dcode-harness";

describe("rebuildSandbox DCode flow: recovery", () => {
beforeEach(resetRebuildFlowTestEnvironment);
afterEach(restoreRebuildFlowTestEnvironment);
installRebuildFlowTestHooks({ acceptThirdPartySoftware: true });

it("recreates non-Ready DCode from a validated backup without requiring a live route (#6195)", async () => {
const recoveryManifest = {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -7,7 +7,7 @@ import { expectNoSandboxDelete } from "../../../../test/helpers/rebuild-delete-a
import {
createRebuildFlowHarness,
installRebuildFlowTestHooks,
} from "../../../../test/helpers/rebuild-flow-test-harness";
} from "../../../../test/helpers/rebuild-flow-generic-harness";
import { makePreparedRecoveryManifest } from "./rebuild-flow-test-fixtures";

type Harness = ReturnType<typeof createRebuildFlowHarness>;
Expand Down
2 changes: 1 addition & 1 deletion src/lib/actions/sandbox/rebuild-flow-lifecycle.test.ts
Original file line number Diff line number Diff line change
Expand Up @@ -8,7 +8,7 @@ import {
installRebuildFlowTestHooks,
originalSandboxName,
snapshotEnv,
} from "../../../../test/helpers/rebuild-flow-test-harness";
} from "../../../../test/helpers/rebuild-flow-generic-harness";
import { makePreparedRecoveryManifest } from "./rebuild-flow-test-fixtures";

describe("rebuildSandbox flow: lifecycle", () => {
Expand Down
2 changes: 1 addition & 1 deletion src/lib/actions/sandbox/rebuild-flow-recovery.test.ts
Original file line number Diff line number Diff line change
Expand Up @@ -8,7 +8,7 @@ import { expectNoSandboxDelete } from "../../../../test/helpers/rebuild-delete-a
import {
createRebuildFlowHarness,
installRebuildFlowTestHooks,
} from "../../../../test/helpers/rebuild-flow-test-harness";
} from "../../../../test/helpers/rebuild-flow-generic-harness";
import { fingerprintSandboxLiveIdentity } from "../../onboard/sandbox-recreate-transaction";
import {
makeActiveTeamsMessagingPlan,
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -11,7 +11,7 @@ import {
createRebuildFlowHarness,
installRebuildFlowTestHooks,
snapshotEnv,
} from "../../../../test/helpers/rebuild-flow-test-harness";
} from "../../../../test/helpers/rebuild-flow-generic-harness";

describe("rebuildSandbox flow: target credentials", () => {
installRebuildFlowTestHooks();
Expand Down
2 changes: 1 addition & 1 deletion src/lib/actions/sandbox/rebuild-flow-target-image.test.ts
Original file line number Diff line number Diff line change
Expand Up @@ -12,7 +12,7 @@ import {
installRebuildFlowTestHooks,
originalSandboxName,
snapshotEnv,
} from "../../../../test/helpers/rebuild-flow-test-harness";
} from "../../../../test/helpers/rebuild-flow-generic-harness";
import { fingerprintBuildContext } from "../../adapters/fs/build-context-fingerprint";
import { createBuildContextVerifier } from "./rebuild-prepared-image-context";

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -7,7 +7,7 @@ import {
createRebuildFlowHarness,
installRebuildFlowTestHooks,
snapshotEnv,
} from "../../../../test/helpers/rebuild-flow-test-harness";
} from "../../../../test/helpers/rebuild-flow-generic-harness";

describe("rebuildSandbox flow: target session", () => {
installRebuildFlowTestHooks();
Expand Down
10 changes: 4 additions & 6 deletions src/lib/actions/sandbox/rebuild-hermes-post-restore.test.ts
Original file line number Diff line number Diff line change
@@ -1,12 +1,11 @@
// SPDX-FileCopyrightText: Copyright (c) 2026 NVIDIA CORPORATION & AFFILIATES. All rights reserved.
// SPDX-License-Identifier: Apache-2.0

import { afterEach, beforeEach, describe, expect, it, vi } from "vitest";
import { describe, expect, it, vi } from "vitest";
import {
createRebuildFlowHarness,
resetRebuildFlowTestEnvironment,
restoreRebuildFlowTestEnvironment,
} from "../../../../test/helpers/rebuild-flow-harness";
installRebuildFlowTestHooks,
} from "../../../../test/helpers/rebuild-flow-dcode-harness";
import { ensureHermesGatewayAfterStateRestore } from "./rebuild-hermes-post-restore";

describe("Hermes gateway post-restore recheck", () => {
Expand Down Expand Up @@ -72,8 +71,7 @@ describe("Hermes gateway post-restore recheck", () => {
});

describe("Hermes rebuild post-restore verification", () => {
beforeEach(resetRebuildFlowTestEnvironment);
afterEach(restoreRebuildFlowTestEnvironment);
installRebuildFlowTestHooks({ acceptThirdPartySoftware: true });

it("fails instead of reporting readiness when restored state leaves the gateway down (#7084)", async () => {
const mcpEntry = {
Expand Down
10 changes: 4 additions & 6 deletions src/lib/actions/sandbox/rebuild-local-provider-recreate.test.ts
Original file line number Diff line number Diff line change
Expand Up @@ -3,13 +3,12 @@

import { createRequire } from "node:module";

import { afterEach, beforeEach, describe, expect, it, vi } from "vitest";
import { describe, expect, it, vi } from "vitest";
import {
createRebuildFlowHarness,
installRebuildFlowTestHooks,
type RebuildFlowHarness,
resetRebuildFlowTestEnvironment,
restoreRebuildFlowTestEnvironment,
} from "../../../../test/helpers/rebuild-flow-harness";
} from "../../../../test/helpers/rebuild-flow-dcode-harness";
import {
setupOllamaLocalInference,
setupVllmLocalInference,
Expand Down Expand Up @@ -136,8 +135,7 @@ function makeRouteApplier() {
});
}

beforeEach(resetRebuildFlowTestEnvironment);
afterEach(restoreRebuildFlowTestEnvironment);
installRebuildFlowTestHooks({ acceptThirdPartySoftware: true });

describe("rebuild local-provider recreation", () => {
it.each(
Expand Down
22 changes: 4 additions & 18 deletions src/lib/actions/sandbox/rebuild-prepared-recovery.test.ts
Original file line number Diff line number Diff line change
@@ -1,30 +1,16 @@
// SPDX-FileCopyrightText: Copyright (c) 2026 NVIDIA CORPORATION & AFFILIATES. All rights reserved.
// SPDX-License-Identifier: Apache-2.0

import { afterEach, beforeEach, describe, expect, it } from "vitest";
import { describe, expect, it } from "vitest";
import { expectNoSandboxDelete } from "../../../../test/helpers/rebuild-delete-assertions";
import {
createRebuildFlowHarness,
installRebuildFlowTestHooks,
makePreparedRecoveryManifest,
resetRebuildFlowTestEnvironment,
restoreRebuildFlowTestEnvironment,
snapshotEnv,
} from "../../../../test/helpers/rebuild-flow-harness";

const restoreSandboxEnv = snapshotEnv([
"NEMOCLAW_SANDBOX_NAME",
"NEMOCLAW_ACCEPT_THIRD_PARTY_SOFTWARE",
]);
} from "../../../../test/helpers/rebuild-flow-dcode-harness";

describe("prepared rebuild recovery", () => {
beforeEach(() => {
resetRebuildFlowTestEnvironment();
});

afterEach(() => {
restoreRebuildFlowTestEnvironment();
restoreSandboxEnv();
});
installRebuildFlowTestHooks({ acceptThirdPartySoftware: true });

it("restores the validated pre-upgrade manifest without taking a second backup (#6114)", async () => {
const harness = createRebuildFlowHarness({
Expand Down
2 changes: 1 addition & 1 deletion test/helpers/rebuild-dcode-flow-helpers.ts
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,7 @@
import { expect } from "vitest";

import { expectNoSandboxDelete } from "./rebuild-delete-assertions";
import type { RebuildFlowHarness } from "./rebuild-flow-harness";
import type { RebuildFlowHarness } from "./rebuild-flow-dcode-harness";

export function makeDcodeSandboxEntry(): Record<string, unknown> {
return {
Expand Down
Loading
Loading