mirror of
https://github.com/claude-code-best/claude-code.git
synced 2026-06-18 06:15:51 +00:00
- 新增 codex API 客户端、流适配、消息/工具转换、模型映射 - 支持 CODEX_API_KEY 和 CODEX_ACCESS_TOKEN 双认证 fallback - 集成到 claude.ts 调度链和 Langfuse 可观测性 - 包含模型映射单元测试(16 cases) Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
71 lines
2.8 KiB
TypeScript
71 lines
2.8 KiB
TypeScript
// @ant/model-provider
|
|
// Model provider abstraction layer for Claude Code
|
|
//
|
|
// This package owns the model calling logic and provides:
|
|
// - Core query functions (queryModelWithStreaming, etc.)
|
|
// - Provider implementations (Anthropic, OpenAI, Gemini, Grok)
|
|
// - Type definitions (Message, Tool, Usage, etc.)
|
|
// - Dependency injection hooks (analytics, cost tracking, etc.)
|
|
//
|
|
// Initialization:
|
|
// registerClientFactories({ ... }) // inject auth clients
|
|
// registerHooks({ ... }) // inject analytics/cost/logging
|
|
|
|
// Hooks (dependency injection)
|
|
export { registerHooks, getHooks } from './hooks/index.js'
|
|
export type { ModelProviderHooks } from './hooks/types.js'
|
|
|
|
// Client factories
|
|
export { registerClientFactories, getClientFactories } from './client/index.js'
|
|
export type { ClientFactories } from './client/types.js'
|
|
|
|
// Types
|
|
export * from './types/index.js'
|
|
|
|
// Provider model mappings
|
|
export { resolveOpenAIModel } from './providers/openai/modelMapping.js'
|
|
export { resolveGrokModel } from './providers/grok/modelMapping.js'
|
|
export { resolveGeminiModel } from './providers/gemini/modelMapping.js'
|
|
|
|
// Gemini provider utilities
|
|
export { anthropicMessagesToGemini } from './providers/gemini/convertMessages.js'
|
|
export { anthropicToolsToGemini, anthropicToolChoiceToGemini } from './providers/gemini/convertTools.js'
|
|
export { adaptGeminiStreamToAnthropic } from './providers/gemini/streamAdapter.js'
|
|
export {
|
|
GEMINI_THOUGHT_SIGNATURE_FIELD,
|
|
type GeminiContent,
|
|
type GeminiGenerateContentRequest,
|
|
type GeminiPart,
|
|
type GeminiStreamChunk,
|
|
type GeminiTool,
|
|
type GeminiFunctionCallingConfig,
|
|
type GeminiFunctionDeclaration,
|
|
type GeminiFunctionCall,
|
|
type GeminiFunctionResponse,
|
|
type GeminiInlineData,
|
|
type GeminiUsageMetadata,
|
|
type GeminiCandidate,
|
|
} from './providers/gemini/types.js'
|
|
|
|
// Error utilities
|
|
export {
|
|
formatAPIError,
|
|
extractConnectionErrorDetails,
|
|
sanitizeAPIError,
|
|
getSSLErrorHint,
|
|
type ConnectionErrorDetails,
|
|
} from './errorUtils.js'
|
|
|
|
// Shared OpenAI conversion utilities
|
|
export { anthropicMessagesToOpenAI } from './shared/openaiConvertMessages.js'
|
|
export type { ConvertMessagesOptions } from './shared/openaiConvertMessages.js'
|
|
export { anthropicToolsToOpenAI, anthropicToolChoiceToOpenAI } from './shared/openaiConvertTools.js'
|
|
export { adaptOpenAIStreamToAnthropic } from './shared/openaiStreamAdapter.js'
|
|
|
|
// Codex provider utilities
|
|
export { normalizeCodexCallId, resolveCodexCallId, createCodexFallbackCallId } from './providers/codex/callIds.js'
|
|
export { resolveCodexModel, resolveCodexMaxTokens } from './providers/codex/modelMapping.js'
|
|
export { anthropicMessagesToCodexInput } from './providers/codex/convertMessages.js'
|
|
export type { CodexImageConversionOptions } from './providers/codex/convertMessages.js'
|
|
export { anthropicToolsToCodex } from './providers/codex/convertTools.js'
|