Added Usage page.

This commit is contained in:
decolua
2026-01-19 10:39:30 +07:00
parent da15660681
commit 3804357aba
12 changed files with 237 additions and 138 deletions

View File

@@ -39,7 +39,6 @@ export const PROVIDER_MODELS = {
{ id: "deepseek-v3.2-chat", name: "DeepSeek V3.2 Chat" },
{ id: "deepseek-v3.2-reasoner", name: "DeepSeek V3.2 Reasoner" },
{ id: "minimax-m2", name: "MiniMax M2" },
{ id: "glm-4.6", name: "GLM 4.6" },
{ id: "glm-4.7", name: "GLM 4.7" },
],
ag: [ // Antigravity - special case: models call different backends
@@ -70,7 +69,7 @@ export const PROVIDER_MODELS = {
{ id: "grok-code-fast-1", name: "Grok Code Fast 1" },
],
kr: [ // Kiro AI
{ id: "claude-opus-4.5", name: "Claude Opus 4.5" },
// { id: "claude-opus-4.5", name: "Claude Opus 4.5" },
{ id: "claude-sonnet-4.5", name: "Claude Sonnet 4.5" },
{ id: "claude-haiku-4.5", name: "Claude Haiku 4.5" },
],
@@ -99,7 +98,6 @@ export const PROVIDER_MODELS = {
],
glm: [
{ id: "glm-4.7", name: "GLM 4.7" },
{ id: "glm-4.6", name: "GLM 4.6" },
{ id: "glm-4.6v", name: "GLM 4.6V (Vision)" },
],
kimi: [

View File

@@ -8,6 +8,9 @@ import { normalizeThinkingConfig } from "../services/provider.js";
const requestRegistry = new Map();
const responseRegistry = new Map();
// Track initialization state
let initialized = false;
// Register translator
export function register(from, to, requestFn, responseFn) {
const key = `${from}:${to}`;
@@ -19,8 +22,30 @@ export function register(from, to, requestFn, responseFn) {
}
}
// Lazy load translators (called once on first use)
function ensureInitialized() {
if (initialized) return;
initialized = true;
// Request translators - sync require pattern for bundler
require("./request/claude-to-openai.js");
require("./request/openai-to-claude.js");
require("./request/gemini-to-openai.js");
require("./request/openai-to-gemini.js");
require("./request/openai-responses.js");
require("./request/openai-to-kiro.js");
// Response translators
require("./response/claude-to-openai.js");
require("./response/openai-to-claude.js");
require("./response/gemini-to-openai.js");
require("./response/openai-responses.js");
require("./response/kiro-to-openai.js");
}
// Translate request: source -> openai -> target
export function translateRequest(sourceFormat, targetFormat, model, body, stream = true, credentials = null, provider = null) {
ensureInitialized();
let result = body;
// Normalize thinking config: remove if lastMessage is not user
@@ -66,6 +91,7 @@ export function translateRequest(sourceFormat, targetFormat, model, body, stream
// Translate response chunk: target -> openai -> source
export function translateResponse(targetFormat, sourceFormat, chunk, state) {
ensureInitialized();
// If same format, return as-is
if (sourceFormat === targetFormat) {
return [chunk];
@@ -155,20 +181,7 @@ export function initState(sourceFormat) {
return base;
}
// Initialize all translators
export async function initTranslators() {
// Request translators
await import("./request/claude-to-openai.js");
await import("./request/openai-to-claude.js");
await import("./request/gemini-to-openai.js");
await import("./request/openai-to-gemini.js");
await import("./request/openai-responses.js");
await import("./request/openai-to-kiro.js");
// Response translators
await import("./response/claude-to-openai.js");
await import("./response/openai-to-claude.js");
await import("./response/gemini-to-openai.js");
await import("./response/openai-responses.js");
await import("./response/kiro-to-openai.js");
// Initialize all translators (kept for backward compatibility)
export function initTranslators() {
ensureInitialized();
}