Files
9router/open-sse/providers/schema.js
T
decoluaandCursor 34ea763d80 refactor(open-sse): add provider/model schema skeleton (C-prep)
New unwired modules providers/schema.js + models/schema.js with PROVIDER_DEFAULTS,
ENDPOINT_DEFAULTS, resolveProvider, MODEL_DEFAULTS, resolveModel (3-tier merge).
Foundation for upcoming registry tasks; no runtime wiring yet.

Co-authored-by: Cursor <cursoragent@cursor.com>
2026-06-13 17:05:42 +07:00

32 lines
1.3 KiB
JavaScript

// Provider transport schema: shared defaults + endpoint defaults + resolver (skeleton, not wired)
import { DEFAULT_RETRY_CONFIG, FETCH_CONNECT_TIMEOUT_MS } from "../config/runtimeConfig.js";
// Shared defaults: provider only overrides fields that differ
export const PROVIDER_DEFAULTS = {
format: "openai",
headers: {},
auth: { header: "Authorization", scheme: "bearer", source: ["accessToken", "apiKey"] },
retry: DEFAULT_RETRY_CONFIG,
timeoutMs: FETCH_CONNECT_TIMEOUT_MS,
executor: "default"
};
// Default endpoints per format (provider only overrides what differs)
export const ENDPOINT_DEFAULTS = {
openai: { chat: "/chat/completions", test: "/models", models: "/models" },
claude: { chat: "/messages", test: "/models", countTokens: "/messages/count_tokens" },
gemini: { chat: "/{model}:streamGenerateContent", models: "/models", test: "/models" }
};
// Deep-merge a provider entry over PROVIDER_DEFAULTS (defensive for missing transport)
export function resolveProvider(entry) {
const transport = (entry && entry.transport) || {};
return {
...PROVIDER_DEFAULTS,
...transport,
headers: { ...PROVIDER_DEFAULTS.headers, ...transport.headers },
auth: { ...PROVIDER_DEFAULTS.auth, ...transport.auth },
retry: { ...PROVIDER_DEFAULTS.retry, ...transport.retry }
};
}