* feat(llm): add native Novita AI provider via OpenAI-compatible endpoint Wire Novita AI (https://api.novita.ai/openai/v1) as a first-class LLM provider, following the same pattern used for DeepSeek/HuggingFace/NanoGPT: dispatched through the existing OpenAIAdapter, resolved via NOVITA_API_KEY, with a default model, model catalog entries, config/setup wiring, and regression tests. * fixup(llm): use deepseek/deepseek-v4-flash-0731 as the second Novita model Swap the curated Novita model catalog's second entry from qwen/qwen3-coder-30b-a3b-instruct to deepseek/deepseek-v4-flash-0731 per requested model selection. Verified live against api.novita.ai/openai/v1/models. * fixup(llm): replace superseded DeepSeek Flash id with current Pro flagship QA flagged that deepseek/deepseek-v4-flash-0731 has been superseded in the live Novita catalog; deepseek/deepseek-v4-pro-0813 is now the current serving DeepSeek flagship. Swap the second Novita model catalog entry accordingly. --------- Co-authored-by: jax-novita <jax-novita@users.noreply.github.com> Co-authored-by: Joseph Magly <1159087+jmagly@users.noreply.github.com>
38 lines
1.8 KiB
Bash
38 lines
1.8 KiB
Bash
# T3MP3ST environment — copy to `.env` and fill in. NEVER commit your real .env.
|
|
# At least one LLM provider key is required (OpenRouter is the default backbone).
|
|
|
|
# ── LLM providers (set the one(s) you use) ──
|
|
OPENROUTER_API_KEY=sk-or-v1-xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
|
|
VENICE_API_KEY=xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
|
|
ANTHROPIC_API_KEY=sk-ant-xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
|
|
OPENAI_API_KEY=sk-xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
|
|
DEEPSEEK_API_KEY=sk-xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
|
|
# Hugging Face — open models via the OpenAI-compatible Inference Providers router.
|
|
# HF_TOKEN is canonical; HUGGINGFACE_API_KEY / HUGGINGFACE_TOKEN also work.
|
|
HF_TOKEN=hf_xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
|
|
# Novita AI — OpenAI-compatible API serving open-source and frontier models.
|
|
NOVITA_API_KEY=sk_xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
|
|
GROQ_API_KEY=
|
|
TOGETHER_API_KEY=
|
|
REPLICATE_API_TOKEN=
|
|
|
|
# ── Target authentication (both values are required) ──
|
|
# Exact origin that may receive the configured headers (scheme + host + optional port).
|
|
# TEMPEST_TARGET_ORIGIN=https://target.example
|
|
# JSON object of headers injected into HTTP requests to that exact origin.
|
|
# Explicit per-request headers override these defaults case-insensitively.
|
|
# Bearer token: TEMPEST_TARGET_HEADERS={"Authorization":"Bearer eyJhbGc..."}
|
|
# Cookie: TEMPEST_TARGET_HEADERS={"Cookie":"session=abc123"}
|
|
# Multiple: TEMPEST_TARGET_HEADERS={"Authorization":"Bearer token","X-Tenant":"acme"}
|
|
# TEMPEST_TARGET_HEADERS=
|
|
|
|
# ── GitHub (xbow-bench challenge fetch / gh operations) ──
|
|
GITHUB_TOKEN=
|
|
|
|
# ── optional: default backbone overrides ──
|
|
# LLM_PROVIDER=openrouter
|
|
# LLM_MODEL=claude-opus-4-8
|
|
|
|
# Optional: Venice uncensored inference (OpenAI-compatible). https://venice.ai
|
|
VENICE_API_KEY=
|