Skip to content
Merged
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: 1 addition & 0 deletions .github/workflows/e2e-script.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -231,6 +231,7 @@ jobs:
printf 'NEMOCLAW_ENDPOINT_URL=https://inference-api.nvidia.com/v1\n'
printf 'NEMOCLAW_MODEL=nvidia/nvidia/nemotron-3-super-v3\n'
printf 'NEMOCLAW_COMPAT_MODEL=nvidia/nvidia/nemotron-3-super-v3\n'
printf 'NEMOCLAW_PREFERRED_API=openai-completions\n'
printf 'COMPATIBLE_API_KEY=%s\n' "${NVIDIA_INFERENCE_API_KEY}"
} >> "$GITHUB_ENV"

Expand Down
1 change: 1 addition & 0 deletions .github/workflows/e2e-vitest-scenarios.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -992,6 +992,7 @@ jobs:
NEMOCLAW_ENDPOINT_URL: https://inference-api.nvidia.com/v1
NEMOCLAW_MODEL: nvidia/nvidia/nemotron-3-super-v3
NEMOCLAW_COMPAT_MODEL: nvidia/nvidia/nemotron-3-super-v3
NEMOCLAW_PREFERRED_API: openai-completions
run: |
set -euo pipefail
npx vitest run --project e2e-scenarios-live \
Expand Down
18 changes: 18 additions & 0 deletions .github/workflows/nightly-e2e.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -470,6 +470,7 @@ jobs:
NEMOCLAW_ENDPOINT_URL: https://inference-api.nvidia.com/v1
NEMOCLAW_MODEL: nvidia/nvidia/nemotron-3-super-v3
NEMOCLAW_COMPAT_MODEL: nvidia/nvidia/nemotron-3-super-v3
NEMOCLAW_PREFERRED_API: openai-completions
COMPATIBLE_API_KEY: ${{ (github.event_name != 'workflow_dispatch' || inputs.target_ref == '') && secrets.NVIDIA_INFERENCE_API_KEY || '' }}
NEMOCLAW_NON_INTERACTIVE: "1"
NEMOCLAW_ACCEPT_THIRD_PARTY_SOFTWARE: "1"
Expand Down Expand Up @@ -545,6 +546,7 @@ jobs:
NEMOCLAW_ENDPOINT_URL: https://inference-api.nvidia.com/v1
NEMOCLAW_MODEL: nvidia/nvidia/nemotron-3-super-v3
NEMOCLAW_COMPAT_MODEL: nvidia/nvidia/nemotron-3-super-v3
NEMOCLAW_PREFERRED_API: openai-completions
COMPATIBLE_API_KEY: ${{ (github.event_name != 'workflow_dispatch' || inputs.target_ref == '') && secrets.NVIDIA_INFERENCE_API_KEY || '' }}
NEMOCLAW_ISSUE_4434_LIVE: "1"
NEMOCLAW_NON_INTERACTIVE: "1"
Expand Down Expand Up @@ -973,6 +975,7 @@ jobs:
NEMOCLAW_ENDPOINT_URL: https://inference-api.nvidia.com/v1
NEMOCLAW_MODEL: nvidia/nvidia/nemotron-3-super-v3
NEMOCLAW_COMPAT_MODEL: nvidia/nvidia/nemotron-3-super-v3
NEMOCLAW_PREFERRED_API: openai-completions
COMPATIBLE_API_KEY: ${{ (github.event_name != 'workflow_dispatch' || inputs.target_ref == '') && secrets.NVIDIA_INFERENCE_API_KEY || '' }}
NEMOCLAW_NON_INTERACTIVE: "1"
NEMOCLAW_ACCEPT_THIRD_PARTY_SOFTWARE: "1"
Expand Down Expand Up @@ -1270,6 +1273,7 @@ jobs:
NEMOCLAW_ENDPOINT_URL: https://inference-api.nvidia.com/v1
NEMOCLAW_MODEL: nvidia/nvidia/nemotron-3-super-v3
NEMOCLAW_COMPAT_MODEL: nvidia/nvidia/nemotron-3-super-v3
NEMOCLAW_PREFERRED_API: openai-completions
COMPATIBLE_API_KEY: ${{ (github.event_name != 'workflow_dispatch' || inputs.target_ref == '') && secrets.NVIDIA_INFERENCE_API_KEY || '' }}
NEMOCLAW_NON_INTERACTIVE: "1"
NEMOCLAW_ACCEPT_THIRD_PARTY_SOFTWARE: "1"
Expand Down Expand Up @@ -1576,6 +1580,7 @@ jobs:
NEMOCLAW_ENDPOINT_URL: https://inference-api.nvidia.com/v1
NEMOCLAW_MODEL: nvidia/nvidia/nemotron-3-super-v3
NEMOCLAW_COMPAT_MODEL: nvidia/nvidia/nemotron-3-super-v3
NEMOCLAW_PREFERRED_API: openai-completions
COMPATIBLE_API_KEY: ${{ (github.event_name != 'workflow_dispatch' || inputs.target_ref == '') && secrets.NVIDIA_INFERENCE_API_KEY || '' }}
E2E_ARTIFACT_DIR: ${{ github.workspace }}/e2e-artifacts/vitest/credential-migration
NEMOCLAW_RUN_E2E_SCENARIOS: "1"
Expand Down Expand Up @@ -1801,6 +1806,7 @@ jobs:
NEMOCLAW_ENDPOINT_URL: https://inference-api.nvidia.com/v1
NEMOCLAW_MODEL: nvidia/nvidia/nemotron-3-super-v3
NEMOCLAW_COMPAT_MODEL: nvidia/nvidia/nemotron-3-super-v3
NEMOCLAW_PREFERRED_API: openai-completions
COMPATIBLE_API_KEY: ${{ (github.event_name != 'workflow_dispatch' || inputs.target_ref == '') && secrets.NVIDIA_INFERENCE_API_KEY || '' }}
NEMOCLAW_NON_INTERACTIVE: "1"
NEMOCLAW_ACCEPT_THIRD_PARTY_SOFTWARE: "1"
Expand All @@ -1813,6 +1819,7 @@ jobs:
NEMOCLAW_ENDPOINT_URL: https://inference-api.nvidia.com/v1
NEMOCLAW_MODEL: nvidia/nvidia/nemotron-3-super-v3
NEMOCLAW_COMPAT_MODEL: nvidia/nvidia/nemotron-3-super-v3
NEMOCLAW_PREFERRED_API: openai-completions
COMPATIBLE_API_KEY: ${{ (github.event_name != 'workflow_dispatch' || inputs.target_ref == '') && secrets.NVIDIA_INFERENCE_API_KEY || '' }}
NEMOCLAW_NON_INTERACTIVE: "1"
NEMOCLAW_ACCEPT_THIRD_PARTY_SOFTWARE: "1"
Expand Down Expand Up @@ -1851,6 +1858,7 @@ jobs:
NEMOCLAW_ENDPOINT_URL: https://inference-api.nvidia.com/v1
NEMOCLAW_MODEL: nvidia/nvidia/nemotron-3-super-v3
NEMOCLAW_COMPAT_MODEL: nvidia/nvidia/nemotron-3-super-v3
NEMOCLAW_PREFERRED_API: openai-completions
COMPATIBLE_API_KEY: ${{ (github.event_name != 'workflow_dispatch' || inputs.target_ref == '') && secrets.NVIDIA_INFERENCE_API_KEY || '' }}
NEMOCLAW_NON_INTERACTIVE: "1"
NEMOCLAW_ACCEPT_THIRD_PARTY_SOFTWARE: "1"
Expand All @@ -1863,6 +1871,7 @@ jobs:
NEMOCLAW_ENDPOINT_URL: https://inference-api.nvidia.com/v1
NEMOCLAW_MODEL: nvidia/nvidia/nemotron-3-super-v3
NEMOCLAW_COMPAT_MODEL: nvidia/nvidia/nemotron-3-super-v3
NEMOCLAW_PREFERRED_API: openai-completions
COMPATIBLE_API_KEY: ${{ (github.event_name != 'workflow_dispatch' || inputs.target_ref == '') && secrets.NVIDIA_INFERENCE_API_KEY || '' }}
NEMOCLAW_NON_INTERACTIVE: "1"
NEMOCLAW_ACCEPT_THIRD_PARTY_SOFTWARE: "1"
Expand Down Expand Up @@ -1901,6 +1910,7 @@ jobs:
NEMOCLAW_ENDPOINT_URL: https://inference-api.nvidia.com/v1
NEMOCLAW_MODEL: nvidia/nvidia/nemotron-3-super-v3
NEMOCLAW_COMPAT_MODEL: nvidia/nvidia/nemotron-3-super-v3
NEMOCLAW_PREFERRED_API: openai-completions
COMPATIBLE_API_KEY: ${{ (github.event_name != 'workflow_dispatch' || inputs.target_ref == '') && secrets.NVIDIA_INFERENCE_API_KEY || '' }}
NEMOCLAW_NON_INTERACTIVE: "1"
NEMOCLAW_ACCEPT_THIRD_PARTY_SOFTWARE: "1"
Expand All @@ -1913,6 +1923,7 @@ jobs:
NEMOCLAW_ENDPOINT_URL: https://inference-api.nvidia.com/v1
NEMOCLAW_MODEL: nvidia/nvidia/nemotron-3-super-v3
NEMOCLAW_COMPAT_MODEL: nvidia/nvidia/nemotron-3-super-v3
NEMOCLAW_PREFERRED_API: openai-completions
COMPATIBLE_API_KEY: ${{ (github.event_name != 'workflow_dispatch' || inputs.target_ref == '') && secrets.NVIDIA_INFERENCE_API_KEY || '' }}
NEMOCLAW_NON_INTERACTIVE: "1"
NEMOCLAW_ACCEPT_THIRD_PARTY_SOFTWARE: "1"
Expand Down Expand Up @@ -1952,6 +1963,7 @@ jobs:
NEMOCLAW_ENDPOINT_URL: https://inference-api.nvidia.com/v1
NEMOCLAW_MODEL: nvidia/nvidia/nemotron-3-super-v3
NEMOCLAW_COMPAT_MODEL: nvidia/nvidia/nemotron-3-super-v3
NEMOCLAW_PREFERRED_API: openai-completions
COMPATIBLE_API_KEY: ${{ (github.event_name != 'workflow_dispatch' || inputs.target_ref == '') && secrets.NVIDIA_INFERENCE_API_KEY || '' }}
NEMOCLAW_NON_INTERACTIVE: "1"
NEMOCLAW_ACCEPT_THIRD_PARTY_SOFTWARE: "1"
Expand All @@ -1964,6 +1976,7 @@ jobs:
NEMOCLAW_ENDPOINT_URL: https://inference-api.nvidia.com/v1
NEMOCLAW_MODEL: nvidia/nvidia/nemotron-3-super-v3
NEMOCLAW_COMPAT_MODEL: nvidia/nvidia/nemotron-3-super-v3
NEMOCLAW_PREFERRED_API: openai-completions
COMPATIBLE_API_KEY: ${{ (github.event_name != 'workflow_dispatch' || inputs.target_ref == '') && secrets.NVIDIA_INFERENCE_API_KEY || '' }}
NEMOCLAW_NON_INTERACTIVE: "1"
NEMOCLAW_ACCEPT_THIRD_PARTY_SOFTWARE: "1"
Expand Down Expand Up @@ -2003,6 +2016,7 @@ jobs:
NEMOCLAW_ENDPOINT_URL: https://inference-api.nvidia.com/v1
NEMOCLAW_MODEL: nvidia/nvidia/nemotron-3-super-v3
NEMOCLAW_COMPAT_MODEL: nvidia/nvidia/nemotron-3-super-v3
NEMOCLAW_PREFERRED_API: openai-completions
COMPATIBLE_API_KEY: ${{ (github.event_name != 'workflow_dispatch' || inputs.target_ref == '') && secrets.NVIDIA_INFERENCE_API_KEY || '' }}
NEMOCLAW_NON_INTERACTIVE: "1"
NEMOCLAW_ACCEPT_THIRD_PARTY_SOFTWARE: "1"
Expand All @@ -2016,6 +2030,7 @@ jobs:
NEMOCLAW_ENDPOINT_URL: https://inference-api.nvidia.com/v1
NEMOCLAW_MODEL: nvidia/nvidia/nemotron-3-super-v3
NEMOCLAW_COMPAT_MODEL: nvidia/nvidia/nemotron-3-super-v3
NEMOCLAW_PREFERRED_API: openai-completions
COMPATIBLE_API_KEY: ${{ (github.event_name != 'workflow_dispatch' || inputs.target_ref == '') && secrets.NVIDIA_INFERENCE_API_KEY || '' }}
NEMOCLAW_NON_INTERACTIVE: "1"
NEMOCLAW_ACCEPT_THIRD_PARTY_SOFTWARE: "1"
Expand Down Expand Up @@ -2057,6 +2072,7 @@ jobs:
NEMOCLAW_ENDPOINT_URL: https://inference-api.nvidia.com/v1
NEMOCLAW_MODEL: nvidia/nvidia/nemotron-3-super-v3
NEMOCLAW_COMPAT_MODEL: nvidia/nvidia/nemotron-3-super-v3
NEMOCLAW_PREFERRED_API: openai-completions
COMPATIBLE_API_KEY: ${{ (github.event_name != 'workflow_dispatch' || inputs.target_ref == '') && secrets.NVIDIA_INFERENCE_API_KEY || '' }}
NEMOCLAW_NON_INTERACTIVE: "1"
NEMOCLAW_ACCEPT_THIRD_PARTY_SOFTWARE: "1"
Expand All @@ -2070,6 +2086,7 @@ jobs:
NEMOCLAW_ENDPOINT_URL: https://inference-api.nvidia.com/v1
NEMOCLAW_MODEL: nvidia/nvidia/nemotron-3-super-v3
NEMOCLAW_COMPAT_MODEL: nvidia/nvidia/nemotron-3-super-v3
NEMOCLAW_PREFERRED_API: openai-completions
COMPATIBLE_API_KEY: ${{ (github.event_name != 'workflow_dispatch' || inputs.target_ref == '') && secrets.NVIDIA_INFERENCE_API_KEY || '' }}
NEMOCLAW_NON_INTERACTIVE: "1"
NEMOCLAW_ACCEPT_THIRD_PARTY_SOFTWARE: "1"
Expand Down Expand Up @@ -2149,6 +2166,7 @@ jobs:
NEMOCLAW_ENDPOINT_URL: https://inference-api.nvidia.com/v1
NEMOCLAW_MODEL: nvidia/nvidia/nemotron-3-super-v3
NEMOCLAW_COMPAT_MODEL: nvidia/nvidia/nemotron-3-super-v3
NEMOCLAW_PREFERRED_API: openai-completions
COMPATIBLE_API_KEY: ${{ (github.event_name != 'workflow_dispatch' || inputs.target_ref == '') && secrets.NVIDIA_INFERENCE_API_KEY || '' }}
NEMOCLAW_NON_INTERACTIVE: "1"
NEMOCLAW_ACCEPT_THIRD_PARTY_SOFTWARE: "1"
Expand Down
16 changes: 16 additions & 0 deletions src/lib/onboard/providers.test.ts
Original file line number Diff line number Diff line change
Expand Up @@ -59,6 +59,7 @@ function withProviderEnv(next: Record<string, string | undefined>, testBody: ()
"NEMOCLAW_ENDPOINT_URL",
"NEMOCLAW_MODEL",
"NEMOCLAW_COMPAT_MODEL",
"NEMOCLAW_PREFERRED_API",
"NEMOCLAW_CLOUD_EXPERIMENTAL_MODEL",
"NEMOCLAW_E2E_USE_HOSTED_INFERENCE",
"COMPATIBLE_API_KEY",
Expand Down Expand Up @@ -303,11 +304,26 @@ describe("onboard provider helpers", () => {
expect(process.env.NEMOCLAW_ENDPOINT_URL).toBe(HOSTED_INFERENCE_ENDPOINT_URL);
expect(process.env.NEMOCLAW_MODEL).toBe(HOSTED_INFERENCE_MODEL);
expect(process.env.NEMOCLAW_COMPAT_MODEL).toBe(HOSTED_INFERENCE_MODEL);
expect(process.env.NEMOCLAW_PREFERRED_API).toBe("openai-completions");
expect(process.env.COMPATIBLE_API_KEY).toBe("repo-hosted-key");
},
);
});

it("does not override an explicit hosted inference API preference", () => {
withProviderEnv(
{
NVIDIA_INFERENCE_API_KEY: "repo-hosted-key",
NEMOCLAW_E2E_USE_HOSTED_INFERENCE: "1",
NEMOCLAW_PREFERRED_API: "openai-responses",
},
() => {
expect(stageHostedInferenceSourceSecretEnv()).toBe(true);
expect(process.env.NEMOCLAW_PREFERRED_API).toBe("openai-responses");
},
);
});

it("keeps explicit cloud provider selection on the Build provider path", () => {
withProviderEnv(
{
Expand Down
2 changes: 2 additions & 0 deletions src/lib/onboard/providers.ts
Original file line number Diff line number Diff line change
Expand Up @@ -254,6 +254,8 @@ function stageHostedInferenceSourceSecretEnv() {
HOSTED_INFERENCE_MODEL;
process.env.NEMOCLAW_MODEL = model;
process.env.NEMOCLAW_COMPAT_MODEL = (process.env.NEMOCLAW_COMPAT_MODEL || "").trim() || model;
process.env.NEMOCLAW_PREFERRED_API =
(process.env.NEMOCLAW_PREFERRED_API || "").trim() || "openai-completions";
process.env[HOSTED_INFERENCE_CREDENTIAL_ENV] = sourceKey;
return true;
}
Expand Down
69 changes: 69 additions & 0 deletions test/e2e-advisor-dispatch.test.ts
Original file line number Diff line number Diff line change
Expand Up @@ -19,6 +19,23 @@ jobs:
cloud-e2e:
if: github.event_name != 'workflow_dispatch' || inputs.jobs == '' || contains(format(',{0},', inputs.jobs), ',cloud-e2e,')
steps: []
cloud-onboard-e2e:
if: github.event_name != 'workflow_dispatch' || inputs.jobs == '' || contains(format(',{0},', inputs.jobs), ',cloud-onboard-e2e,')
uses: ./.github/workflows/e2e-script.yaml
with:
ref: \${{ inputs.target_ref || github.ref }}
nvidia_api_key: true
secrets: *nightly-e2e-default-secrets
launchable-smoke-e2e:
if: github.event_name != 'workflow_dispatch' || inputs.jobs == '' || contains(format(',{0},', inputs.jobs), ',launchable-smoke-e2e,')
runs-on: ubuntu-latest
steps:
- name: Run launchable install-flow smoke test
env:
NVIDIA_INFERENCE_API_KEY: \${{ (github.event_name != 'workflow_dispatch' || inputs.target_ref == '') && secrets.NVIDIA_INFERENCE_API_KEY || '' }}
NEMOCLAW_E2E_USE_HOSTED_INFERENCE: "1"
COMPATIBLE_API_KEY: \${{ (github.event_name != 'workflow_dispatch' || inputs.target_ref == '') && secrets.NVIDIA_INFERENCE_API_KEY || '' }}
run: bash test/e2e/test-launchable-smoke.sh
report-to-pr:
steps: []
notify-on-failure:
Expand Down Expand Up @@ -68,6 +85,8 @@ describe("E2E advisor auto-dispatch planning", () => {

expect(jobs).toContain("network-policy-e2e");
expect(jobs).toContain("cloud-e2e");
expect(jobs).toContain("cloud-onboard-e2e");
expect(jobs).toContain("launchable-smoke-e2e");
expect(jobs).not.toContain("report-to-pr");
expect(jobs).not.toContain("notify-on-failure");
expect(jobs).not.toContain("scorecard");
Expand Down Expand Up @@ -122,6 +141,56 @@ describe("E2E advisor auto-dispatch planning", () => {
expect(plan.inputs?.jobs).toBe("network-policy-e2e,cloud-e2e");
});

it("filters hosted-inference jobs that cannot receive secrets on target-ref dispatches", () => {
const workflowText = nightlyWorkflowText();
const plan = planAutoDispatch({
result: {
confidence: "high",
requiredTests: [
{ id: "network-policy-e2e", workflow: "nightly-e2e.yaml" },
{ id: "cloud-onboard-e2e", workflow: "nightly-e2e.yaml" },
{ id: "launchable-smoke-e2e", workflow: "nightly-e2e.yaml" },
],
},
workflowText,
event: pullRequest("MEMBER"),
env: {
GITHUB_EVENT_NAME: "pull_request",
GITHUB_REPOSITORY: "NVIDIA/NemoClaw",
},
});

expect(plan.status).toBe("ready");
expect(plan.jobs).toEqual(["network-policy-e2e"]);
expect(plan.inputs?.jobs).toBe("network-policy-e2e");
expect(plan.ignoredJobs).toEqual(["cloud-onboard-e2e", "launchable-smoke-e2e"]);
expect(plan.targetRefSecretBlockedJobs).toEqual(["cloud-onboard-e2e", "launchable-smoke-e2e"]);
});

it("skips cleanly when every recommended target-ref job requires withheld secrets", () => {
const workflowText = nightlyWorkflowText();
const plan = planAutoDispatch({
result: {
confidence: "high",
requiredTests: [
{ id: "cloud-onboard-e2e", workflow: "nightly-e2e.yaml" },
{ id: "launchable-smoke-e2e", workflow: "nightly-e2e.yaml" },
],
},
workflowText,
event: pullRequest("MEMBER"),
env: {
GITHUB_EVENT_NAME: "pull_request",
GITHUB_REPOSITORY: "NVIDIA/NemoClaw",
},
});

expect(plan.status).toBe("skipped");
expect(plan.reason).toMatch(/hosted inference secrets are withheld/);
expect(plan.ignoredJobs).toEqual(["cloud-onboard-e2e", "launchable-smoke-e2e"]);
expect(plan.targetRefSecretBlockedJobs).toEqual(["cloud-onboard-e2e", "launchable-smoke-e2e"]);
});

it("plans dispatch for allowlisted authors whose private org membership appears as contributor", () => {
const workflowText = nightlyWorkflowText();
const plan = planAutoDispatch({
Expand Down
3 changes: 3 additions & 0 deletions test/e2e-script-workflow.test.ts
Original file line number Diff line number Diff line change
Expand Up @@ -547,6 +547,7 @@ describe("E2E reusable workflow contract", () => {
expect(runStep?.env?.NEMOCLAW_ENDPOINT_URL).toBe("https://inference-api.nvidia.com/v1");
expect(runStep?.env?.NEMOCLAW_MODEL).toBe("nvidia/nvidia/nemotron-3-super-v3");
expect(runStep?.env?.NEMOCLAW_COMPAT_MODEL).toBe("nvidia/nvidia/nemotron-3-super-v3");
expect(runStep?.env?.NEMOCLAW_PREFERRED_API).toBe("openai-completions");
expect(runStep?.env?.COMPATIBLE_API_KEY).toBe(GUARDED_HOSTED_INFERENCE_SECRET);
expect(runStep?.env?.GITHUB_TOKEN).toBeUndefined();
expect(runStep?.env?.NEMOCLAW_RUN_E2E_SCENARIOS).toBe("1");
Expand Down Expand Up @@ -905,6 +906,7 @@ describe("E2E reusable workflow contract", () => {
expect(exportStep?.run).toContain("NEMOCLAW_ENDPOINT_URL=https://inference-api.nvidia.com/v1");
expect(exportStep?.run).toContain("NEMOCLAW_MODEL=nvidia/nvidia/nemotron-3-super-v3");
expect(exportStep?.run).toContain("NEMOCLAW_COMPAT_MODEL=nvidia/nvidia/nemotron-3-super-v3");
expect(exportStep?.run).toContain("NEMOCLAW_PREFERRED_API=openai-completions");
expect(exportStep?.run).toContain("COMPATIBLE_API_KEY=%s");

expect(hostedJobs.length).toBeGreaterThan(20);
Expand Down Expand Up @@ -962,6 +964,7 @@ describe("E2E reusable workflow contract", () => {
expect(step.env?.NEMOCLAW_ENDPOINT_URL, jobName).toBe("https://inference-api.nvidia.com/v1");
expect(step.env?.NEMOCLAW_MODEL, jobName).toBe("nvidia/nvidia/nemotron-3-super-v3");
expect(step.env?.NEMOCLAW_COMPAT_MODEL, jobName).toBe("nvidia/nvidia/nemotron-3-super-v3");
expect(step.env?.NEMOCLAW_PREFERRED_API, jobName).toBe("openai-completions");
expect(step.env?.COMPATIBLE_API_KEY, jobName).toBe(GUARDED_HOSTED_INFERENCE_SECRET);
}

Expand Down
1 change: 1 addition & 0 deletions test/e2e/lib/ci-compatible-inference.sh
Original file line number Diff line number Diff line change
Expand Up @@ -37,6 +37,7 @@ nemoclaw_e2e_configure_compatible_inference() {
export NEMOCLAW_ENDPOINT_URL="${NEMOCLAW_ENDPOINT_URL:-https://inference-api.nvidia.com/v1}"
export NEMOCLAW_MODEL="${NEMOCLAW_MODEL:-${NEMOCLAW_CLOUD_EXPERIMENTAL_MODEL:-$NEMOCLAW_E2E_COMPATIBLE_INFERENCE_MODEL_DEFAULT}}"
export NEMOCLAW_COMPAT_MODEL="${NEMOCLAW_COMPAT_MODEL:-$NEMOCLAW_MODEL}"
export NEMOCLAW_PREFERRED_API="${NEMOCLAW_PREFERRED_API:-openai-completions}"
export COMPATIBLE_API_KEY="$NVIDIA_INFERENCE_API_KEY"
}

Expand Down
Loading
Loading