[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

This commit is contained in:
2026-09-13 18:24:01 +08:00
commit 3c72efcb7f
3255 changed files with 907009 additions and 0 deletions

View 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}` };
}
}