[Init] Initial commit - NetMesh terminal manager
Some checks failed
build-packages / resolve bundled mosh-client (push) Has been cancelled
build-packages / resolve bundled et-client (push) Has been cancelled
build-packages / build-macos (push) Has been cancelled
build-packages / build-windows (push) Has been cancelled
build-packages / build-linux-x64 (push) Has been cancelled
build-packages / build-linux-arm64 (push) Has been cancelled
build-packages / release (push) Has been cancelled
build-packages / update Nix release metadata (push) Has been cancelled
build-packages / bump homebrew tap (push) Has been cancelled
test / lint-and-test (push) Has been cancelled
AI automation / Route event (push) Has been cancelled
AI automation / Hand reopened issue to maintainers (push) Has been cancelled
AI automation / Clean source issue state (push) Has been cancelled
AI automation / Reconcile handoffs (push) Has been cancelled
AI automation / Classify issue (push) Has been cancelled
AI automation / Claude Code smoke (push) Has been cancelled
AI automation / Review issue follow-up (push) Has been cancelled
AI automation / Publish issue follow-up (push) Has been cancelled
AI automation / Implement with Claude Code (push) Has been cancelled
AI automation / Publish implement PR (push) Has been cancelled
AI automation / Continue queued issue comments (push) Has been cancelled
AI automation / Codex review loop (push) Has been cancelled
AI automation / Publish Codex fix (push) Has been cancelled
AI automation / Clear Codex dispatch marker (push) Has been cancelled
AI automation / Own PR re-request Codex (push) Has been cancelled
AI automation / External PR re-request Codex (push) Has been cancelled
AI automation / Poll Codex reaction / retry (push) Has been cancelled
build-et-binaries / build-linux-x64 (push) Has been cancelled
build-et-binaries / build-linux-arm64 (push) Has been cancelled
build-et-binaries / build-macos-universal (push) Has been cancelled
build-et-binaries / build-windows-x64 (push) Has been cancelled
build-et-binaries / release (push) Has been cancelled
Some checks failed
build-packages / resolve bundled mosh-client (push) Has been cancelled
build-packages / resolve bundled et-client (push) Has been cancelled
build-packages / build-macos (push) Has been cancelled
build-packages / build-windows (push) Has been cancelled
build-packages / build-linux-x64 (push) Has been cancelled
build-packages / build-linux-arm64 (push) Has been cancelled
build-packages / release (push) Has been cancelled
build-packages / update Nix release metadata (push) Has been cancelled
build-packages / bump homebrew tap (push) Has been cancelled
test / lint-and-test (push) Has been cancelled
AI automation / Route event (push) Has been cancelled
AI automation / Hand reopened issue to maintainers (push) Has been cancelled
AI automation / Clean source issue state (push) Has been cancelled
AI automation / Reconcile handoffs (push) Has been cancelled
AI automation / Classify issue (push) Has been cancelled
AI automation / Claude Code smoke (push) Has been cancelled
AI automation / Review issue follow-up (push) Has been cancelled
AI automation / Publish issue follow-up (push) Has been cancelled
AI automation / Implement with Claude Code (push) Has been cancelled
AI automation / Publish implement PR (push) Has been cancelled
AI automation / Continue queued issue comments (push) Has been cancelled
AI automation / Codex review loop (push) Has been cancelled
AI automation / Publish Codex fix (push) Has been cancelled
AI automation / Clear Codex dispatch marker (push) Has been cancelled
AI automation / Own PR re-request Codex (push) Has been cancelled
AI automation / External PR re-request Codex (push) Has been cancelled
AI automation / Poll Codex reaction / retry (push) Has been cancelled
build-et-binaries / build-linux-x64 (push) Has been cancelled
build-et-binaries / build-linux-arm64 (push) Has been cancelled
build-et-binaries / build-macos-universal (push) Has been cancelled
build-et-binaries / build-windows-x64 (push) Has been cancelled
build-et-binaries / release (push) Has been cancelled
This commit is contained in:
58
infrastructure/ai/modelDiscoveryHeaders.ts
Normal file
58
infrastructure/ai/modelDiscoveryHeaders.ts
Normal file
@@ -0,0 +1,58 @@
|
||||
import type { ProviderStyle } from "./types";
|
||||
|
||||
/**
|
||||
* Conventional `/models`-listing path for each wire-protocol family. These
|
||||
* are the same paths the official Anthropic/OpenAI/Google clients use,
|
||||
* so they line up with what compliant Anthropic-compat or OpenAI-compat
|
||||
* third parties (DeepSeek, Moonshot, Qwen, Ollama, OpenRouter, ...)
|
||||
* expose. Google is `undefined` because Generative AI's discovery isn't
|
||||
* a standard REST listing.
|
||||
*/
|
||||
export const STYLE_DEFAULT_MODELS_ENDPOINT: Record<ProviderStyle, string | undefined> = {
|
||||
openai: "/models",
|
||||
anthropic: "/v1/models",
|
||||
google: undefined,
|
||||
};
|
||||
|
||||
/**
|
||||
* Pick the `/models` discovery path for a provider config. The resolved
|
||||
* `style` wins — keeping it aligned with {@link buildModelDiscoveryHeaders}
|
||||
* — falling back to the providerId-derived `presetEndpoint` only when the
|
||||
* style has no convention of its own.
|
||||
*/
|
||||
export function resolveModelsDiscoveryEndpoint(
|
||||
style: ProviderStyle,
|
||||
presetEndpoint?: string,
|
||||
): string | undefined {
|
||||
return STYLE_DEFAULT_MODELS_ENDPOINT[style] ?? presetEndpoint;
|
||||
}
|
||||
|
||||
/**
|
||||
* Pick auth headers for a provider's `/models` discovery endpoint.
|
||||
*
|
||||
* Each wire-protocol family uses its own auth dialect:
|
||||
* - `anthropic`: `x-api-key` + `anthropic-version`
|
||||
* - `google`: `x-goog-api-key` (Google Generative AI rejects Bearer)
|
||||
* - `openai`: `Authorization: Bearer …` (also the OpenAI-compat default)
|
||||
*
|
||||
* Returning an empty object when the key is missing lets the caller still
|
||||
* issue an unauthenticated probe (e.g. against local Ollama).
|
||||
*/
|
||||
export function buildModelDiscoveryHeaders(
|
||||
style: ProviderStyle,
|
||||
apiKey: string | undefined,
|
||||
): Record<string, string> {
|
||||
if (!apiKey) return {};
|
||||
switch (style) {
|
||||
case "anthropic":
|
||||
return {
|
||||
"x-api-key": apiKey,
|
||||
"anthropic-version": "2023-06-01",
|
||||
};
|
||||
case "google":
|
||||
return { "x-goog-api-key": apiKey };
|
||||
case "openai":
|
||||
default:
|
||||
return { Authorization: `Bearer ${apiKey}` };
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user