Skip to content

feat(sidecar): add provider manifest client - #6042

Closed
KooshaPari wants to merge 5 commits into
diegosouzapw:release/v3.8.47from
KooshaPari:koosha/sidecar-provider-manifest-client
Closed

KooshaPari wants to merge 5 commits into
diegosouzapw:release/v3.8.47from
KooshaPari:koosha/sidecar-provider-manifest-client

Conversation

@KooshaPari

Copy link
Copy Markdown
Contributor

Summary

Adds a reusable provider plugin manifest HTTP client for sidecars and backend adapters.

What changed

  • Adds open-sse/config/providerPluginManifestClient.ts with URL resolution and schemaVersion 1 fetch validation.
  • Supports OMNIROUTE_PROVIDER_MANIFEST_URL, explicit manifest URL, explicit OmniRoute base URL, and local API fallback.
  • Adds node:test coverage for URL precedence, fetch headers, failed HTTP responses, and malformed manifest responses.
  • Documents the client as the supported sidecar consumption boundary.

Why

Bifrost, CLIProxyAPI, and future native sidecars should consume provider metadata through a stable HTTP manifest contract instead of importing TypeScript provider registry internals. This is an incremental step toward moving provider execution behind a Go/native sidecar while preserving the current TypeScript backend and fallback behavior.

Depends on #6001 for the GET /api/v1/provider-plugin-manifest endpoint.

Validation

  • node --import file:///C:/Users/koosh/omniroute-pr-sidecar-manifest-header/node_modules/tsx/dist/loader.mjs --test --test-force-exit tests/unit/provider-plugin-manifest-client.test.ts tests/unit/api/v1/provider-plugin-manifest-route.test.ts tests/unit/provider-plugin-manifest.test.ts
  • npm run check:doc-links
  • git diff --check

@KooshaPari
KooshaPari requested a review from diegosouzapw as a code owner July 3, 2026 03:58
@gemini-code-assist

Copy link
Copy Markdown
Contributor

Warning

You have reached your daily quota limit. Please wait up to 24 hours and I will start processing your requests again!

@KooshaPari
KooshaPari force-pushed the koosha/sidecar-provider-manifest-client branch from 0434ff1 to 210728d Compare July 3, 2026 04:01
KooshaPari added a commit to KooshaPari/OmniRoute that referenced this pull request Jul 3, 2026
Port upstream diegosouzapw#6042. Adds an HTTP client for the read-only provider plugin
manifest so sidecars/relays discover providers over the network instead of
hard-coding the /api/v1/provider-plugin-manifest route.

- resolveProviderPluginManifestUrl: explicit manifestUrl > OMNIROUTE_PROVIDER_MANIFEST_URL env > baseUrl > local API default
- fetchProviderPluginManifest: fetch + schemaVersion 1 validation
- getProviderPluginManifestEntryForModelFromManifest / fetchProviderPluginManifestEntryForModel: model->provider lookup by prefix, alias, or model id

Excludes branch-drift noise from the upstream diff (translator responses test
rename, should-promote-latest.sh CI tweak) unrelated to the sidecar client.
@KooshaPari
KooshaPari force-pushed the koosha/sidecar-provider-manifest-client branch from 210728d to 99ac656 Compare July 3, 2026 08:31
@KooshaPari

Copy link
Copy Markdown
Contributor Author

Superseded by replay PR #6083 on release/v3.8.44. Closing this stale branch copy so review and CI continue on the live replacement.

@KooshaPari KooshaPari closed this Jul 3, 2026
@diegosouzapw

Copy link
Copy Markdown
Owner

Thanks @KooshaPari. The manifest-client idea is aligned with the sidecar/native-router roadmap, but this PR duplicates work already merged in #6001: on release/v3.8.44 we already have providerPluginManifest.ts, providerPluginManifestRegistry.ts, providerPluginManifestUrl.ts, and GET /api/v1/provider-plugin-manifest. This PR re-adds route.ts as a new file and re-declares resolveProviderPluginManifestUrl/PROVIDER_PLUGIN_MANIFEST_PATH (collision), plus it drags in unrelated churn (stryker.conf.json, should-promote-latest.sh, a translator-test swap). Could you re-cut cleanly off the current tip, keep only the genuinely new client functions (fetchProviderPluginManifest* + getProviderPluginManifestEntryForModelFromManifest) and their tests, reuse the existing providerPluginManifestUrl.ts instead of re-declaring it, and drop route.ts + the foreign churn? Then it's a clean, small addition. 🙏

@KooshaPari KooshaPari reopened this Jul 4, 2026
@diegosouzapw
diegosouzapw changed the base branch from release/v3.8.44 to release/v3.8.45 July 4, 2026 17:36
@diegosouzapw
diegosouzapw changed the base branch from release/v3.8.45 to release/v3.8.46 July 6, 2026 04:09
@diegosouzapw

Copy link
Copy Markdown
Owner

🔀 Cycle moved: base retargeted to release/v3.8.46 — release/v3.8.45 is frozen for the release in progress (#6313). No action needed.

@KooshaPari
KooshaPari force-pushed the koosha/sidecar-provider-manifest-client branch from 10e6ae4 to 1d7146d Compare July 7, 2026 05:42
@diegosouzapw
diegosouzapw changed the base branch from release/v3.8.46 to release/v3.8.47 July 7, 2026 11:04
@diegosouzapw

Copy link
Copy Markdown
Owner

Thanks for this — a couple of things before it's mergeable. First, providerPluginManifestClient.ts doesn't have any caller yet in the codebase (external sidecars like Bifrost/CLIProxyAPI would hit the HTTP endpoint directly, not import a TS module), so right now it's scaffolding for the #6044 migration plan rather than something in active use — let's track it there instead of merging speculatively. Second, this diff also carries unrelated changes to CoolingConnectionsPanel.tsx (import source + component swap), HomePageClient.tsx, a DAST test, and the complexity baseline that have nothing to do with the sidecar manifest client — please rebase and drop those so the PR stays scoped to its stated purpose. Closing for now — happy to revisit once #6044 is agreed and this has a real consumer; feel free to re-open a focused version referencing that plan.

@KooshaPari
KooshaPari deleted the koosha/sidecar-provider-manifest-client branch August 13, 2026 06:54
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants