Repository navigation
feat(nodejs): add 5dive as a configure target - #11852
Merged
diegosouzapw merged 2 commits intoAug 30, 2026
Merged
diegosouzapw merged 2 commits into
diegosouzapw merged 2 commits into
Conversation
Adds `omniroute configure 5dive` / `omniroute setup-5dive`, which points a 5dive agent fleet's `claude` seats at OmniRoute by writing one 5dive auth profile. Closes the question raised in cheaper-inference#11578: `5dive agent create` is host-bound (adduser + systemctl), so this target does not call it. The operation that matches every other target is `5dive agent auth set`, which writes an auth profile and nothing else. The command form was verified against a real fleet, and needs four value flags rather than the three named in the issue: 5dive agent auth set claude --provider=<id> --base-url=<url> \ --api-key=- --auth-profile=<name> --model=<slug> --auth-profile is required because BYO credentials are profile-scoped, and --model is required because `openai` has no row in 5dive's built-in endpoint catalog, so there are no per-tier model ids to inherit. The key is passed on stdin so it never lands in argv. Three deviations from the other recipes are handled explicitly rather than left to fail late: - Writing the profile is root-only on the fleet host, so the recipe re-execs through sudo (--no-sudo opts out and prints the command). - 5dive refuses http:// for any non-loopback host, because the agent's key rides that URL. The check is reproduced locally so the operator gets the reason at the point of choosing. - Each seat carries its own runtime model pin, which outranks the profile's ANTHROPIC_DEFAULT_*_MODEL. --agent <name> (repeatable) pins the seats. 5dive is configure-only: it is a fleet manager, not a coding CLI, so there is nothing for `omniroute run` to launch.
diegosouzapw
merged commit Aug 30, 2026
0b19c5a
into
cheaper-inference:release/v3.8.51
3 checks passed
diegosouzapw
added a commit
that referenced
this pull request
Aug 30, 2026
…elease/v3.8.51 (round 3) (#12123) - api-route-typecheck: 56dddfc (antigravity loadCodeAssist metadata) made getAntigravityLoadCodeAssistMetadata() return Record<string, number> while onboardAntigravityUser() still typed the parameter Record<string, string> — TS2345 in src/lib/oauth/providers/antigravity.ts, gate red on every PR. The parameter now derives from the getter's return type. - env-doc contract: 0b19c5a (#11852, 5dive configure target) reads CLI_5DIVE_BIN and CLI_5DIVE_STATE_DIR without documenting them — Docs Gates red on every PR. Added to .env.example and ENVIRONMENT.md. Gates: check:api-typecheck OK (289 frozen), check:env-doc-sync OK, antigravity oauth tests 14/14. Refs #11852
muhamadgalihsaputra
pushed a commit
to niyatna/NiyatnaRoute
that referenced
this pull request
Sep 27, 2026
Adiciona 5dive como configure target, com teste de regressão próprio (`tests/unit/cli/setup-5dive.test.ts`) e strings i18n em 12 locales. Validado no worktree combinado (typecheck limpo, 26 testes focados).
Nota: um dos subtestes desse arquivo ("falls back to the local server when no context") depende de não haver contexto CLI ativo em `~/.omniroute/` — nesta máquina de desenvolvimento compartilhada existe um contexto real configurado, então o teste lê a config real em vez do fallback via `PORT`. Confirmado que é vazamento de ambiente do devbox (não do CI): reproduzido isoladamente, rastreado até `resolveActiveContext()` lendo `~/.omniroute/*.json` antes de cair no fallback de `PORT`. Não bloqueia o merge, mas fica registrado — o teste merece ficar hermético (mockar/isolar o data dir) numa limpeza futura.
muhamadgalihsaputra
pushed a commit
to niyatna/NiyatnaRoute
that referenced
this pull request
Sep 27, 2026
…elease/v3.8.51 (round 3) (cheaper-inference#12123) - api-route-typecheck: b18696c (antigravity loadCodeAssist metadata) made getAntigravityLoadCodeAssistMetadata() return Record<string, number> while onboardAntigravityUser() still typed the parameter Record<string, string> — TS2345 in src/lib/oauth/providers/antigravity.ts, gate red on every PR. The parameter now derives from the getter's return type. - env-doc contract: 652447e (cheaper-inference#11852, 5dive configure target) reads CLI_5DIVE_BIN and CLI_5DIVE_STATE_DIR without documenting them — Docs Gates red on every PR. Added to .env.example and ENVIRONMENT.md. Gates: check:api-typecheck OK (289 frozen), check:env-doc-sync OK, antigravity oauth tests 14/14. Refs cheaper-inference#11852
marsdevs-gairick-saha
pushed a commit
to marsdevs-gairick-saha/OmniRoute
that referenced
this pull request
Oct 27, 2026
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Summary
Adds 5dive as a
configuretarget:omniroute configure 5diveandomniroute setup-5divepoint a 5dive agent fleet's
claudeseats at OmniRoute by writing one 5diveauth profile.
This is the PR promised in #11578, after the mid-turn failover run you asked for
(transcript).
It does not call
5dive agent create. That was the deviation you flagged, and it was the rightthing to flag:
agent createis root-on-the-host by construction (adduser,systemctl enable),with no remote mode. Provisioning a worker is a different concern from pointing an existing one at
an endpoint. The operation that matches what the other targets do is
5dive agent auth set, whichwrites an auth profile and nothing else.
The command needs four value flags, not the three named in the issue. Running it against a real
fleet is what surfaced this — the form in the original issue, and the corrected form in my first
reply, both still fail:
The recipe emits that form, and hands the key over on stdin (
--api-key=-) so it never reachesargv.
Three ways 5dive deviates from the other targets, each handled explicitly rather than left to fail
late:
sudo;--no-sudoopts out and prints the command insteadhttp://is refused for any non-loopback host (the agent's key rides that URL)ANTHROPIC_DEFAULT_*_MODEL--agent <name>(repeatable) pins the seats too; otherwise it prints the command5dive is configure-only (
run: falsein the manifest): it is a fleet manager, not a coding CLI,so
omniroute run 5divewould have nothing to launch.Related Issues
Validation
npm run lint— full repo-wide pass, exit 0;prettier --checkclean on every touched filerelease/v3.8.51); focused checks rerun afterwardFocused run, on this branch:
The single failure is
cli-doctor-command.test.ts› "doctor reports warnings but no failures whendatabase is not initialized", and it reproduces on a clean checkout of the base branch with my
changes stashed. It is not from this PR.
Also green:
npm run check:docs-counts,npm run check:docs-sync,npx prettier --checkon everytouched file.
npm run check:docs-countsis what caught the stale35 toolsline inREADME.md,which this PR updates to
36.Tests Added Or Updated
tests/unit/cli/setup-5dive.test.ts— 9 tests: base-URL resolution (/v1stripped, theAnthropic surface is the root), the loopback-vs-
httpsrule including a private-LAN address,the exact auth argv (and an assertion that the key is never in it), the separate per-seat pin
command, the sudo wrapper, and shell-safe command rendering.
tests/unit/cli/configure-command.test.ts— manifest-order target list.tests/unit/cli-catalog-counts.test.ts— agent count 9 → 10, D15 agent set.tests/unit/cli-tools-schema.test.ts— registry expectation 35 → 36 entries.The drift guard (
tests/unit/cli/cli-manifest-drift.test.ts) is unchanged and passes: it is whatforced the
cliRuntime+cliToolsentries below to exist, which is the point of it.Coverage Notes
Production code touched:
bin/cli/commands/setup-5dive.mjs(new),bin/cli/cli-manifest.mjs,bin/cli/commands/configure.mjs,bin/cli/commands/registry.mjs,src/shared/services/cliRuntime.ts,src/shared/constants/cliTools.ts,src/shared/schemas/cliCatalog.ts.Every exported function in
setup-5dive.mjsexceptrunSetup5diveCommandis covered directly bythe new test file; the pure logic is factored out of the orchestrator precisely so it is testable
without spawning
5dive.runSetup5diveCommanditself is I/O orchestration (spawn + prompt) and isexercised end-to-end only against a real fleet, which is what the transcript on #11578 records.
The catalog and manifest changes are covered by the four drift/count tests above.
Reviewer Notes
--providercollision, deliberate.configure's--providerselects which model provider tofilter the picker on, and it reaches setup recipes verbatim in
setupOpts. 5dive's BYO id is adifferent thing, so the recipe reads
--byo-providerand neveropts.provider. Readingopts.providerhere would have sent--provider=openrouterinto5dive agent auth setandfailed for a non-obvious reason.
getCliConfigPathsspecial case. 5dive's credentials are root-owned and live under/var/lib/5dive/auth-profiles/, not$HOME, so the generic home-join would resolve to nothingreal. Handled the same way
opencodeandhermes-agentalready are, with aCLI_5DIVE_STATE_DIRoverride.cliTools.toolDescriptions.5diveadded to all 43 locales (pt-BR parity is a hard gate;the rest follow the convention every other tool entry uses).
image, onlyicon: "hub". I didnot want to add a logo asset to your
public/providers/uninvited. Say the word and I'll add anSVG.
docs/guides/CLI-INTEGRATIONS.mdis Prettier, not me. Adding a row to themaster table widened its columns, so
prettier --writerealigned all 16 existing rows. Theonly semantic changes in that file are the new row, the new
## 5dive agent fleetssection,the
--modeltool list, theconfiguredelegate list, and one base-URL-convention row.setup --add-providerpath, found while building this (v3.8.49): theprogram-level
--api-key <key>option shadows thesetupsubcommand's own--api-key, soomniroute setup --add-provider --api-key <key>exits with "Provider API key is required. Pass--api-key or OMNIROUTE_API_KEY" even though it was passed — and
OMNIROUTE_API_KEYdoes not workaround it, because
.omniroute/.envloads after the process environment. I configured providersthrough
POST /api/providersinstead. Happy to open that as its own issue.