Skip to content
Open
Show file tree
Hide file tree
Changes from 1 commit
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