Local branch had diverged from origin/master (sibling commits on the same base). Rewrote local history linearly on top of origin/master, folding in all local content: exa/hot-platform discovery hunters, leaks ledger, nightly sweep orchestrator, updated .gitignore and skill docs, plus the latest hunt output and vault state. Remote-only files (vault keys, channel scripts) were restored rather than dropped, so the resulting tree is a full union of both sides.
1 line
65 KiB
JSON
1 line
65 KiB
JSON
{"repo": "ax-llm/ax", "files": {"tools/axir/internal/axir/templates/java/javaDeepSeek.java": {"d67fced2ea766f6ec392cdd98687b4f051fd8f45": {"t": 1785745654.2829187, "n": 732, "h": "4d8f30a2505a1246", "c": "package dev.axllm.ax;\n\nimport java.util.LinkedHashMap;\nimport java.util.Map;\n\npublic final class DeepSeekClient extends OpenAICompatibleClient {\n public DeepSeekClient(String model) {\n this(Map.of(\"model\", model));\n }\n\n public DeepSeekClient(Map<String, Object> options) {\n super(\"deepseek\", \"DeepSeek\", normalize(options), \"deepseek-v4-flash\", \"\");\n }\n\n private static Map<String, Object> normalize(Map<String, Object> options) {\n Map<String, Object> out = new LinkedHashMap<>(options == null ? Map.of() : options);\n out.putIfAbsent(\"api_key\", System.getenv(\"DEEPSEEK_API_KEY\"));\n out.putIfAbsent(\"base_url\", System.getenv().getOrDefault(\"DEEPSEEK_BASE_URL\", \"https://api.deepseek.com\"));\n return out;\n }\n}\n"}, "e252947c8619c136739b3af11275984430dd4888": {"t": 1785755417.9650023, "n": 732, "h": "4d8f30a2505a1246", "c": "package dev.axllm.ax;\n\nimport java.util.LinkedHashMap;\nimport java.util.Map;\n\npublic final class DeepSeekClient extends OpenAICompatibleClient {\n public DeepSeekClient(String model) {\n this(Map.of(\"model\", model));\n }\n\n public DeepSeekClient(Map<String, Object> options) {\n super(\"deepseek\", \"DeepSeek\", normalize(options), \"deepseek-v4-flash\", \"\");\n }\n\n private static Map<String, Object> normalize(Map<String, Object> options) {\n Map<String, Object> out = new LinkedHashMap<>(options == null ? Map.of() : options);\n out.putIfAbsent(\"api_key\", System.getenv(\"DEEPSEEK_API_KEY\"));\n out.putIfAbsent(\"base_url\", System.getenv().getOrDefault(\"DEEPSEEK_BASE_URL\", \"https://api.deepseek.com\"));\n return out;\n }\n}\n"}, "fd1b96779886076af90c63aa98f3006b4b4cdf3d": {"t": 1786067428.4074562, "n": 732, "h": "4d8f30a2505a1246", "c": "package dev.axllm.ax;\n\nimport java.util.LinkedHashMap;\nimport java.util.Map;\n\npublic final class DeepSeekClient extends OpenAICompatibleClient {\n public DeepSeekClient(String model) {\n this(Map.of(\"model\", model));\n }\n\n public DeepSeekClient(Map<String, Object> options) {\n super(\"deepseek\", \"DeepSeek\", normalize(options), \"deepseek-v4-flash\", \"\");\n }\n\n private static Map<String, Object> normalize(Map<String, Object> options) {\n Map<String, Object> out = new LinkedHashMap<>(options == null ? Map.of() : options);\n out.putIfAbsent(\"api_key\", System.getenv(\"DEEPSEEK_API_KEY\"));\n out.putIfAbsent(\"base_url\", System.getenv().getOrDefault(\"DEEPSEEK_BASE_URL\", \"https://api.deepseek.com\"));\n return out;\n }\n}\n"}, "d49db21dac8b137a84eafc932a245c45163492c9": {"t": 1786068300.172089, "n": 732, "h": "4d8f30a2505a1246", "c": "package dev.axllm.ax;\n\nimport java.util.LinkedHashMap;\nimport java.util.Map;\n\npublic final class DeepSeekClient extends OpenAICompatibleClient {\n public DeepSeekClient(String model) {\n this(Map.of(\"model\", model));\n }\n\n public DeepSeekClient(Map<String, Object> options) {\n super(\"deepseek\", \"DeepSeek\", normalize(options), \"deepseek-v4-flash\", \"\");\n }\n\n private static Map<String, Object> normalize(Map<String, Object> options) {\n Map<String, Object> out = new LinkedHashMap<>(options == null ? Map.of() : options);\n out.putIfAbsent(\"api_key\", System.getenv(\"DEEPSEEK_API_KEY\"));\n out.putIfAbsent(\"base_url\", System.getenv().getOrDefault(\"DEEPSEEK_BASE_URL\", \"https://api.deepseek.com\"));\n return out;\n }\n}\n"}}, "packages/java/dev/axllm/ax/DeepSeekClient.java": {"d67fced2ea766f6ec392cdd98687b4f051fd8f45": {"t": 1785745655.361317, "n": 732, "h": "4d8f30a2505a1246", "c": "package dev.axllm.ax;\n\nimport java.util.LinkedHashMap;\nimport java.util.Map;\n\npublic final class DeepSeekClient extends OpenAICompatibleClient {\n public DeepSeekClient(String model) {\n this(Map.of(\"model\", model));\n }\n\n public DeepSeekClient(Map<String, Object> options) {\n super(\"deepseek\", \"DeepSeek\", normalize(options), \"deepseek-v4-flash\", \"\");\n }\n\n private static Map<String, Object> normalize(Map<String, Object> options) {\n Map<String, Object> out = new LinkedHashMap<>(options == null ? Map.of() : options);\n out.putIfAbsent(\"api_key\", System.getenv(\"DEEPSEEK_API_KEY\"));\n out.putIfAbsent(\"base_url\", System.getenv().getOrDefault(\"DEEPSEEK_BASE_URL\", \"https://api.deepseek.com\"));\n return out;\n }\n}\n"}, "0df371b49d22200fb1e85d03e1bb0d7eeda3d039": {"t": 1785755421.9134822, "n": 732, "h": "4d8f30a2505a1246", "c": "package dev.axllm.ax;\n\nimport java.util.LinkedHashMap;\nimport java.util.Map;\n\npublic final class DeepSeekClient extends OpenAICompatibleClient {\n public DeepSeekClient(String model) {\n this(Map.of(\"model\", model));\n }\n\n public DeepSeekClient(Map<String, Object> options) {\n super(\"deepseek\", \"DeepSeek\", normalize(options), \"deepseek-v4-flash\", \"\");\n }\n\n private static Map<String, Object> normalize(Map<String, Object> options) {\n Map<String, Object> out = new LinkedHashMap<>(options == null ? Map.of() : options);\n out.putIfAbsent(\"api_key\", System.getenv(\"DEEPSEEK_API_KEY\"));\n out.putIfAbsent(\"base_url\", System.getenv().getOrDefault(\"DEEPSEEK_BASE_URL\", \"https://api.deepseek.com\"));\n return out;\n }\n}\n"}, "fd1b96779886076af90c63aa98f3006b4b4cdf3d": {"t": 1786067428.3851902, "n": 732, "h": "4d8f30a2505a1246", "c": "package dev.axllm.ax;\n\nimport java.util.LinkedHashMap;\nimport java.util.Map;\n\npublic final class DeepSeekClient extends OpenAICompatibleClient {\n public DeepSeekClient(String model) {\n this(Map.of(\"model\", model));\n }\n\n public DeepSeekClient(Map<String, Object> options) {\n super(\"deepseek\", \"DeepSeek\", normalize(options), \"deepseek-v4-flash\", \"\");\n }\n\n private static Map<String, Object> normalize(Map<String, Object> options) {\n Map<String, Object> out = new LinkedHashMap<>(options == null ? Map.of() : options);\n out.putIfAbsent(\"api_key\", System.getenv(\"DEEPSEEK_API_KEY\"));\n out.putIfAbsent(\"base_url\", System.getenv().getOrDefault(\"DEEPSEEK_BASE_URL\", \"https://api.deepseek.com\"));\n return out;\n }\n}\n"}, "d49db21dac8b137a84eafc932a245c45163492c9": {"t": 1786068300.1759286, "n": 732, "h": "4d8f30a2505a1246", "c": "package dev.axllm.ax;\n\nimport java.util.LinkedHashMap;\nimport java.util.Map;\n\npublic final class DeepSeekClient extends OpenAICompatibleClient {\n public DeepSeekClient(String model) {\n this(Map.of(\"model\", model));\n }\n\n public DeepSeekClient(Map<String, Object> options) {\n super(\"deepseek\", \"DeepSeek\", normalize(options), \"deepseek-v4-flash\", \"\");\n }\n\n private static Map<String, Object> normalize(Map<String, Object> options) {\n Map<String, Object> out = new LinkedHashMap<>(options == null ? Map.of() : options);\n out.putIfAbsent(\"api_key\", System.getenv(\"DEEPSEEK_API_KEY\"));\n out.putIfAbsent(\"base_url\", System.getenv().getOrDefault(\"DEEPSEEK_BASE_URL\", \"https://api.deepseek.com\"));\n return out;\n }\n}\n"}}, "src/ax/ai/deepseek/api.ts": {"d67fced2ea766f6ec392cdd98687b4f051fd8f45": {"t": 1785746029.6092582, "n": 5805, "h": "d1af3ae924159986", "c": "import type { AxAIFeatures } from '../base.js';\nimport {\n axBaseAIDefaultConfig,\n axBaseAIDefaultCreativeConfig,\n} from '../base.js';\nimport { type AxAIOpenAIArgs, AxAIOpenAIBase } from '../openai/api.js';\nimport type {\n AxAIOpenAIChatRequest,\n AxAIOpenAIConfig,\n} from '../openai/chat_types.js';\nimport type { AxAIServiceOptions } from '../types.js';\n\nimport { axModelInfoDeepSeek } from './info.js';\nimport { AxAIDeepSeekModel } from './types.js';\n\n/**\n * Configuration type for DeepSeek AI models\n */\ntype DeepSeekConfig = AxAIOpenAIConfig<AxAIDeepSeekModel, undefined>;\n\ntype DeepSeekReasoningEffort =\n | NonNullable<AxAIOpenAIChatRequest<AxAIDeepSeekModel>['reasoning_effort']>\n | 'max';\n\ntype DeepSeekChatRequest<TModel> = AxAIOpenAIChatRequest<TModel> & {\n thinking?: { type: 'enabled' | 'disabled' };\n};\n\nconst axAIDeepSeekSupportsToolChoice = (model: unknown): boolean => {\n switch (String(model)) {\n case AxAIDeepSeekModel.DeepSeekV4Flash:\n case AxAIDeepSeekModel.DeepSeekV4Pro:\n case AxAIDeepSeekModel.DeepSeekReasoner:\n return false;\n default:\n return true;\n }\n};\n\nconst axAIDeepSeekSupportsThinking = (model: unknown): boolean => {\n switch (String(model)) {\n case AxAIDeepSeekModel.DeepSeekV4Flash:\n case AxAIDeepSeekModel.DeepSeekV4Pro:\n return true;\n default:\n return false;\n }\n};\n\nconst axAIDeepSeekChatReqUpdater = <TModel>(\n req: Readonly<DeepSeekChatRequest<TModel>>,\n config: Readonly<AxAIServiceOptions>\n): DeepSeekChatRequest<TModel> => {\n const nextReq = { ...req };\n\n if (axAIDeepSeekSupportsThinking(req.model)) {\n const thinkingEnabled =\n config.thinkingTokenBudget !== 'none' &&\n nextReq.reasoning_effort !== 'none' &&\n (config.thinkingTokenBudget !== undefined ||\n nextReq.reasoning_effort !== undefined);\n\n nextReq.thinking = {\n type: thinkingEnabled ? 'enabled' : 'disabled',\n };\n\n if (!thinkingEnabled) {\n delete nextReq.reasoning_effort;\n } else {\n switch (nextReq.reasoning_effort) {\n case 'xhigh':\n (\n nextReq as { reasoning_effort?: DeepSeekReasoningEffort }\n ).reasoning_effort = 'max';\n break;\n case 'minimal':\n case 'low':\n case 'medium':\n case undefined:\n nextReq.reasoning_effort = 'high';\n break;\n }\n\n delete nextReq.temperature;\n delete nextReq.top_p;\n delete nextReq.presence_penalty;\n delete nextReq.frequency_penalty;\n }\n }\n\n if (axAIDeepSeekSupportsToolChoice(req.model)) {\n return nextReq;\n }\n\n if (nextReq.tool_choice === 'none') {\n delete nextReq.tools;\n }\n delete nextReq.tool_choice;\n return nextReq;\n};\n\n/**\n * Creates the default configuration for DeepSeek AI with the V4 Flash model\n * @returns Default DeepSeek configuration with V4 Flash settings\n */\nexport const axAIDeepSeekDefaultConfig = (): DeepSeekConfig =>\n structuredClone({\n model: AxAIDeepSeekModel.DeepSeekV4Flash,\n ...axBaseAIDefaultConfig(),\n });\n\n/**\n * Creates a configuration optimized for code generation tasks using DeepSeek V4 Pro\n * @returns DeepSeek configuration with creative settings for coding tasks\n */\nexport const axAIDeepSeekCodeConfig = (): DeepSeekConfig =>\n structuredClone({\n model: AxAIDeepSeekModel.DeepSeekV4Pro,\n ...axBaseAIDefaultCreativeConfig(),\n });\n\nconst axAIDeepSeekSupportFor = (model: AxAIDeepSeekModel): AxAIFeatures => ({\n functions: true,\n streaming: true,\n hasThinkingBudget: axAIDeepSeekSupportsThinking(model),\n hasShowThoughts: axAIDeepSeekSupportsThinking(model),\n media: {\n images: {\n supported: false,\n formats: [],\n },\n audio: {\n supported: false,\n formats: [],\n },\n files: {\n supported: false,\n formats: [],\n uploadMethod: 'none' as const,\n },\n urls: {\n supported: false,\n webSearch: false,\n contextFetching: false,\n },\n },\n caching: {\n supported: false,\n types: [],\n },\n thinking: axAIDeepSeekSupportsThinking(model),\n multiTurn: true,\n});\n\n/**\n * Arguments type for initializing DeepSeek AI instances\n * @template TModelKey - The model key type for type safety\n */\nexport type AxAIDeepSeekArgs<TModelKey> = AxAIOpenAIArgs<\n 'deepseek',\n AxAIDeepSeekModel,\n undefined,\n TModelKey\n>;\n\n/**\n * DeepSeek AI client implementation extending OpenAI base functionality\n * Provides access to DeepSeek's language models through OpenAI-compatible API\n * @template TModelKey - The model key type for type safety\n */\nexport class AxAIDeepSeek<TModelKey> extends AxAIOpenAIBase<\n AxAIDeepSeekModel,\n undefined,\n TModelKey,\n DeepSeekChatRequest<AxAIDeepSeekModel>\n> {\n /**\n * Creates a new DeepSeek AI client instance\n * @param args - Configuration arguments for the DeepSeek client\n * @param args.apiKey - DeepSeek API key for authentication\n * @param args.config - Optional configuration overrides\n * @param args.options - Optional client options\n * @param args.models - Optional model definitions\n * @param args.modelInfo - Optional additional model information\n * @throws {Error} When API key is not provided or empty\n */\n constructor({\n apiKey,\n config,\n options,\n models,\n modelInfo,\n }: Readonly<Omit<AxAIDeepSeekArgs<TModelKey>, 'name'>>) {\n if (!apiKey || apiKey === '') {\n throw new Error('DeepSeek API key not set');\n }\n const Config = {\n ...axAIDeepSeekDefaultConfig(),\n ...config,\n };\n\n modelInfo = [...axModelInfoDeepSeek, ...(modelInfo ?? [])];\n\n super({\n apiKey,\n config: Config,\n options,\n apiURL: 'https://api.deepseek.com',\n modelInfo,\n chatReqUpdater: axAIDeepSeekChatReqUpdater,\n supportFor: axAIDeepSeekSupportFor,\n models,\n });\n\n super.setName('DeepSeek');\n }\n}\n"}, "de478da3e9660d6cf727dc38ab6b43b6a0b88c4c": {"t": 1785755422.2628334, "n": 5805, "h": "d1af3ae924159986", "c": "import type { AxAIFeatures } from '../base.js';\nimport {\n axBaseAIDefaultConfig,\n axBaseAIDefaultCreativeConfig,\n} from '../base.js';\nimport { type AxAIOpenAIArgs, AxAIOpenAIBase } from '../openai/api.js';\nimport type {\n AxAIOpenAIChatRequest,\n AxAIOpenAIConfig,\n} from '../openai/chat_types.js';\nimport type { AxAIServiceOptions } from '../types.js';\n\nimport { axModelInfoDeepSeek } from './info.js';\nimport { AxAIDeepSeekModel } from './types.js';\n\n/**\n * Configuration type for DeepSeek AI models\n */\ntype DeepSeekConfig = AxAIOpenAIConfig<AxAIDeepSeekModel, undefined>;\n\ntype DeepSeekReasoningEffort =\n | NonNullable<AxAIOpenAIChatRequest<AxAIDeepSeekModel>['reasoning_effort']>\n | 'max';\n\ntype DeepSeekChatRequest<TModel> = AxAIOpenAIChatRequest<TModel> & {\n thinking?: { type: 'enabled' | 'disabled' };\n};\n\nconst axAIDeepSeekSupportsToolChoice = (model: unknown): boolean => {\n switch (String(model)) {\n case AxAIDeepSeekModel.DeepSeekV4Flash:\n case AxAIDeepSeekModel.DeepSeekV4Pro:\n case AxAIDeepSeekModel.DeepSeekReasoner:\n return false;\n default:\n return true;\n }\n};\n\nconst axAIDeepSeekSupportsThinking = (model: unknown): boolean => {\n switch (String(model)) {\n case AxAIDeepSeekModel.DeepSeekV4Flash:\n case AxAIDeepSeekModel.DeepSeekV4Pro:\n return true;\n default:\n return false;\n }\n};\n\nconst axAIDeepSeekChatReqUpdater = <TModel>(\n req: Readonly<DeepSeekChatRequest<TModel>>,\n config: Readonly<AxAIServiceOptions>\n): DeepSeekChatRequest<TModel> => {\n const nextReq = { ...req };\n\n if (axAIDeepSeekSupportsThinking(req.model)) {\n const thinkingEnabled =\n config.thinkingTokenBudget !== 'none' &&\n nextReq.reasoning_effort !== 'none' &&\n (config.thinkingTokenBudget !== undefined ||\n nextReq.reasoning_effort !== undefined);\n\n nextReq.thinking = {\n type: thinkingEnabled ? 'enabled' : 'disabled',\n };\n\n if (!thinkingEnabled) {\n delete nextReq.reasoning_effort;\n } else {\n switch (nextReq.reasoning_effort) {\n case 'xhigh':\n (\n nextReq as { reasoning_effort?: DeepSeekReasoningEffort }\n ).reasoning_effort = 'max';\n break;\n case 'minimal':\n case 'low':\n case 'medium':\n case undefined:\n nextReq.reasoning_effort = 'high';\n break;\n }\n\n delete nextReq.temperature;\n delete nextReq.top_p;\n delete nextReq.presence_penalty;\n delete nextReq.frequency_penalty;\n }\n }\n\n if (axAIDeepSeekSupportsToolChoice(req.model)) {\n return nextReq;\n }\n\n if (nextReq.tool_choice === 'none') {\n delete nextReq.tools;\n }\n delete nextReq.tool_choice;\n return nextReq;\n};\n\n/**\n * Creates the default configuration for DeepSeek AI with the V4 Flash model\n * @returns Default DeepSeek configuration with V4 Flash settings\n */\nexport const axAIDeepSeekDefaultConfig = (): DeepSeekConfig =>\n structuredClone({\n model: AxAIDeepSeekModel.DeepSeekV4Flash,\n ...axBaseAIDefaultConfig(),\n });\n\n/**\n * Creates a configuration optimized for code generation tasks using DeepSeek V4 Pro\n * @returns DeepSeek configuration with creative settings for coding tasks\n */\nexport const axAIDeepSeekCodeConfig = (): DeepSeekConfig =>\n structuredClone({\n model: AxAIDeepSeekModel.DeepSeekV4Pro,\n ...axBaseAIDefaultCreativeConfig(),\n });\n\nconst axAIDeepSeekSupportFor = (model: AxAIDeepSeekModel): AxAIFeatures => ({\n functions: true,\n streaming: true,\n hasThinkingBudget: axAIDeepSeekSupportsThinking(model),\n hasShowThoughts: axAIDeepSeekSupportsThinking(model),\n media: {\n images: {\n supported: false,\n formats: [],\n },\n audio: {\n supported: false,\n formats: [],\n },\n files: {\n supported: false,\n formats: [],\n uploadMethod: 'none' as const,\n },\n urls: {\n supported: false,\n webSearch: false,\n contextFetching: false,\n },\n },\n caching: {\n supported: false,\n types: [],\n },\n thinking: axAIDeepSeekSupportsThinking(model),\n multiTurn: true,\n});\n\n/**\n * Arguments type for initializing DeepSeek AI instances\n * @template TModelKey - The model key type for type safety\n */\nexport type AxAIDeepSeekArgs<TModelKey> = AxAIOpenAIArgs<\n 'deepseek',\n AxAIDeepSeekModel,\n undefined,\n TModelKey\n>;\n\n/**\n * DeepSeek AI client implementation extending OpenAI base functionality\n * Provides access to DeepSeek's language models through OpenAI-compatible API\n * @template TModelKey - The model key type for type safety\n */\nexport class AxAIDeepSeek<TModelKey> extends AxAIOpenAIBase<\n AxAIDeepSeekModel,\n undefined,\n TModelKey,\n DeepSeekChatRequest<AxAIDeepSeekModel>\n> {\n /**\n * Creates a new DeepSeek AI client instance\n * @param args - Configuration arguments for the DeepSeek client\n * @param args.apiKey - DeepSeek API key for authentication\n * @param args.config - Optional configuration overrides\n * @param args.options - Optional client options\n * @param args.models - Optional model definitions\n * @param args.modelInfo - Optional additional model information\n * @throws {Error} When API key is not provided or empty\n */\n constructor({\n apiKey,\n config,\n options,\n models,\n modelInfo,\n }: Readonly<Omit<AxAIDeepSeekArgs<TModelKey>, 'name'>>) {\n if (!apiKey || apiKey === '') {\n throw new Error('DeepSeek API key not set');\n }\n const Config = {\n ...axAIDeepSeekDefaultConfig(),\n ...config,\n };\n\n modelInfo = [...axModelInfoDeepSeek, ...(modelInfo ?? [])];\n\n super({\n apiKey,\n config: Config,\n options,\n apiURL: 'https://api.deepseek.com',\n modelInfo,\n chatReqUpdater: axAIDeepSeekChatReqUpdater,\n supportFor: axAIDeepSeekSupportFor,\n models,\n });\n\n super.setName('DeepSeek');\n }\n}\n"}, "b28577a4ae185bee0fc2be5a70d87d20d5cd0b5c": {"t": 1785755425.6849997, "n": 4178, "h": "69b7a1c287b48d12", "c": "import {\n axBaseAIDefaultConfig,\n axBaseAIDefaultCreativeConfig,\n} from '../base.js';\nimport { type AxAIOpenAIArgs, AxAIOpenAIBase } from '../openai/api.js';\nimport type {\n AxAIOpenAIChatRequest,\n AxAIOpenAIConfig,\n} from '../openai/chat_types.js';\n\nimport { axModelInfoDeepSeek } from './info.js';\nimport { AxAIDeepSeekModel } from './types.js';\n\n/**\n * Configuration type for DeepSeek AI models\n */\ntype DeepSeekConfig = AxAIOpenAIConfig<AxAIDeepSeekModel, undefined>;\n\nconst axAIDeepSeekSupportsToolChoice = (model: unknown): boolean => {\n switch (String(model)) {\n case AxAIDeepSeekModel.DeepSeekV4Flash:\n case AxAIDeepSeekModel.DeepSeekV4Pro:\n case AxAIDeepSeekModel.DeepSeekReasoner:\n return false;\n default:\n return true;\n }\n};\n\nconst axAIDeepSeekChatReqUpdater = <TModel>(\n req: Readonly<AxAIOpenAIChatRequest<TModel>>\n): AxAIOpenAIChatRequest<TModel> => {\n const nextReq = { ...req };\n\n if (axAIDeepSeekSupportsToolChoice(req.model)) {\n return nextReq;\n }\n\n if (nextReq.tool_choice === 'none') {\n delete nextReq.tools;\n }\n delete nextReq.tool_choice;\n return nextReq;\n};\n\n/**\n * Creates the default configuration for DeepSeek AI with the chat model\n * @returns Default DeepSeek configuration with chat model settings\n */\nexport const axAIDeepSeekDefaultConfig = (): DeepSeekConfig =>\n structuredClone({\n model: AxAIDeepSeekModel.DeepSeekChat,\n ...axBaseAIDefaultConfig(),\n });\n\n/**\n * Creates a configuration optimized for code generation tasks using DeepSeek Coder\n * @returns DeepSeek configuration with creative settings for coding tasks\n */\nexport const axAIDeepSeekCodeConfig = (): DeepSeekConfig =>\n structuredClone({\n model: AxAIDeepSeekModel.DeepSeekCoder,\n ...axBaseAIDefaultCreativeConfig(),\n });\n\n/**\n * Arguments type for initializing DeepSeek AI instances\n * @template TModelKey - The model key type for type safety\n */\nexport type AxAIDeepSeekArgs<TModelKey> = AxAIOpenAIArgs<\n 'deepseek',\n AxAIDeepSeekModel,\n undefined,\n TModelKey\n>;\n\n/**\n * DeepSeek AI client implementation extending OpenAI base functionality\n * Provides access to DeepSeek's language models through OpenAI-compatible API\n * @template TModelKey - The model key type for type safety\n */\nexport class AxAIDeepSeek<TModelKey> extends AxAIOpenAIBase<\n AxAIDeepSeekModel,\n undefined,\n TModelKey\n> {\n /**\n * Creates a new DeepSeek AI client instance\n * @param args - Configuration arguments for the DeepSeek client\n * @param args.apiKey - DeepSeek API key for authentication\n * @param args.config - Optional configuration overrides\n * @param args.options - Optional client options\n * @param args.models - Optional model definitions\n * @param args.modelInfo - Optional additional model information\n * @throws {Error} When API key is not provided or empty\n */\n constructor({\n apiKey,\n config,\n options,\n models,\n modelInfo,\n }: Readonly<Omit<AxAIDeepSeekArgs<TModelKey>, 'name'>>) {\n if (!apiKey || apiKey === '') {\n throw new Error('DeepSeek API key not set');\n }\n const Config = {\n ...axAIDeepSeekDefaultConfig(),\n ...config,\n };\n\n modelInfo = [...axModelInfoDeepSeek, ...(modelInfo ?? [])];\n\n super({\n apiKey,\n config: Config,\n options,\n apiURL: 'https://api.deepseek.com',\n modelInfo,\n chatReqUpdater: axAIDeepSeekChatReqUpdater,\n supportFor: {\n functions: true,\n streaming: true,\n hasThinkingBudget: false,\n hasShowThoughts: false,\n media: {\n images: {\n supported: false,\n formats: [],\n },\n audio: {\n supported: false,\n formats: [],\n },\n files: {\n supported: false,\n formats: [],\n uploadMethod: 'none' as const,\n },\n urls: {\n supported: false,\n webSearch: false,\n contextFetching: false,\n },\n },\n caching: {\n supported: false,\n types: [],\n },\n thinking: false,\n multiTurn: true,\n },\n models,\n });\n\n super.setName('DeepSeek');\n }\n}\n"}, "27224baeb5d72f123e11f5795a48bc7e9277a0ef": {"t": 1785755428.0768182, "n": 3453, "h": "e7fbd582130fb662", "c": "import {\n axBaseAIDefaultConfig,\n axBaseAIDefaultCreativeConfig,\n} from '../base.js';\nimport { type AxAIOpenAIArgs, AxAIOpenAIBase } from '../openai/api.js';\nimport type { AxAIOpenAIConfig } from '../openai/chat_types.js';\n\nimport { axModelInfoDeepSeek } from './info.js';\nimport { AxAIDeepSeekModel } from './types.js';\n\n/**\n * Configuration type for DeepSeek AI models\n */\ntype DeepSeekConfig = AxAIOpenAIConfig<AxAIDeepSeekModel, undefined>;\n\n/**\n * Creates the default configuration for DeepSeek AI with the chat model\n * @returns Default DeepSeek configuration with chat model settings\n */\nexport const axAIDeepSeekDefaultConfig = (): DeepSeekConfig =>\n structuredClone({\n model: AxAIDeepSeekModel.DeepSeekChat,\n ...axBaseAIDefaultConfig(),\n });\n\n/**\n * Creates a configuration optimized for code generation tasks using DeepSeek Coder\n * @returns DeepSeek configuration with creative settings for coding tasks\n */\nexport const axAIDeepSeekCodeConfig = (): DeepSeekConfig =>\n structuredClone({\n model: AxAIDeepSeekModel.DeepSeekCoder,\n ...axBaseAIDefaultCreativeConfig(),\n });\n\n/**\n * Arguments type for initializing DeepSeek AI instances\n * @template TModelKey - The model key type for type safety\n */\nexport type AxAIDeepSeekArgs<TModelKey> = AxAIOpenAIArgs<\n 'deepseek',\n AxAIDeepSeekModel,\n undefined,\n TModelKey\n>;\n\n/**\n * DeepSeek AI client implementation extending OpenAI base functionality\n * Provides access to DeepSeek's language models through OpenAI-compatible API\n * @template TModelKey - The model key type for type safety\n */\nexport class AxAIDeepSeek<TModelKey> extends AxAIOpenAIBase<\n AxAIDeepSeekModel,\n undefined,\n TModelKey\n> {\n /**\n * Creates a new DeepSeek AI client instance\n * @param args - Configuration arguments for the DeepSeek client\n * @param args.apiKey - DeepSeek API key for authentication\n * @param args.config - Optional configuration overrides\n * @param args.options - Optional client options\n * @param args.models - Optional model definitions\n * @param args.modelInfo - Optional additional model information\n * @throws {Error} When API key is not provided or empty\n */\n constructor({\n apiKey,\n config,\n options,\n models,\n modelInfo,\n }: Readonly<Omit<AxAIDeepSeekArgs<TModelKey>, 'name'>>) {\n if (!apiKey || apiKey === '') {\n throw new Error('DeepSeek API key not set');\n }\n const Config = {\n ...axAIDeepSeekDefaultConfig(),\n ...config,\n };\n\n modelInfo = [...axModelInfoDeepSeek, ...(modelInfo ?? [])];\n\n super({\n apiKey,\n config: Config,\n options,\n apiURL: 'https://api.deepseek.com',\n modelInfo,\n supportFor: {\n functions: true,\n streaming: true,\n hasThinkingBudget: false,\n hasShowThoughts: false,\n media: {\n images: {\n supported: false,\n formats: [],\n },\n audio: {\n supported: false,\n formats: [],\n },\n files: {\n supported: false,\n formats: [],\n uploadMethod: 'none' as const,\n },\n urls: {\n supported: false,\n webSearch: false,\n contextFetching: false,\n },\n },\n caching: {\n supported: false,\n types: [],\n },\n thinking: false,\n multiTurn: true,\n },\n models,\n });\n\n super.setName('DeepSeek');\n }\n}\n"}, "38ac67f9fa6afc8a12b800a68546c5ee941d3741": {"t": 1785755429.587118, "n": 2262, "h": "c3b31d64074c8a74", "c": "import {\n axBaseAIDefaultConfig,\n axBaseAIDefaultCreativeConfig,\n} from '../base.js';\nimport { type AxAIOpenAIArgs, AxAIOpenAIBase } from '../openai/api.js';\nimport type { AxAIOpenAIConfig } from '../openai/chat_types.js';\n\nimport { axModelInfoDeepSeek } from './info.js';\nimport { AxAIDeepSeekModel } from './types.js';\n\ntype DeepSeekConfig = AxAIOpenAIConfig<AxAIDeepSeekModel, undefined>;\n\nexport const axAIDeepSeekDefaultConfig = (): DeepSeekConfig =>\n structuredClone({\n model: AxAIDeepSeekModel.DeepSeekChat,\n ...axBaseAIDefaultConfig(),\n });\n\nexport const axAIDeepSeekCodeConfig = (): DeepSeekConfig =>\n structuredClone({\n model: AxAIDeepSeekModel.DeepSeekCoder,\n ...axBaseAIDefaultCreativeConfig(),\n });\n\nexport type AxAIDeepSeekArgs<TModelKey> = AxAIOpenAIArgs<\n 'deepseek',\n AxAIDeepSeekModel,\n undefined,\n TModelKey\n>;\n\nexport class AxAIDeepSeek<TModelKey> extends AxAIOpenAIBase<\n AxAIDeepSeekModel,\n undefined,\n TModelKey\n> {\n constructor({\n apiKey,\n config,\n options,\n models,\n modelInfo,\n }: Readonly<Omit<AxAIDeepSeekArgs<TModelKey>, 'name'>>) {\n if (!apiKey || apiKey === '') {\n throw new Error('DeepSeek API key not set');\n }\n const Config = {\n ...axAIDeepSeekDefaultConfig(),\n ...config,\n };\n\n modelInfo = [...axModelInfoDeepSeek, ...(modelInfo ?? [])];\n\n super({\n apiKey,\n config: Config,\n options,\n apiURL: 'https://api.deepseek.com',\n modelInfo,\n supportFor: {\n functions: true,\n streaming: true,\n hasThinkingBudget: false,\n hasShowThoughts: false,\n media: {\n images: {\n supported: false,\n formats: [],\n },\n audio: {\n supported: false,\n formats: [],\n },\n files: {\n supported: false,\n formats: [],\n uploadMethod: 'none' as const,\n },\n urls: {\n supported: false,\n webSearch: false,\n contextFetching: false,\n },\n },\n caching: {\n supported: false,\n types: [],\n },\n thinking: false,\n multiTurn: true,\n },\n models,\n });\n\n super.setName('DeepSeek');\n }\n}\n"}, "de6528914eee7b7d1490e1a8ccae939d86364574": {"t": 1785755431.219654, "n": 1673, "h": "d9635d3a1e00361f", "c": "import {\n axBaseAIDefaultConfig,\n axBaseAIDefaultCreativeConfig,\n} from '../base.js';\nimport { type AxAIOpenAIArgs, AxAIOpenAIBase } from '../openai/api.js';\nimport type { AxAIOpenAIConfig } from '../openai/chat_types.js';\n\nimport { axModelInfoDeepSeek } from './info.js';\nimport { AxAIDeepSeekModel } from './types.js';\n\ntype DeepSeekConfig = AxAIOpenAIConfig<AxAIDeepSeekModel, undefined>;\n\nexport const axAIDeepSeekDefaultConfig = (): DeepSeekConfig =>\n structuredClone({\n model: AxAIDeepSeekModel.DeepSeekChat,\n ...axBaseAIDefaultConfig(),\n });\n\nexport const axAIDeepSeekCodeConfig = (): DeepSeekConfig =>\n structuredClone({\n model: AxAIDeepSeekModel.DeepSeekCoder,\n ...axBaseAIDefaultCreativeConfig(),\n });\n\nexport type AxAIDeepSeekArgs<TModelKey> = AxAIOpenAIArgs<\n 'deepseek',\n AxAIDeepSeekModel,\n undefined,\n TModelKey\n>;\n\nexport class AxAIDeepSeek<TModelKey> extends AxAIOpenAIBase<\n AxAIDeepSeekModel,\n undefined,\n TModelKey\n> {\n constructor({\n apiKey,\n config,\n options,\n models,\n modelInfo,\n }: Readonly<Omit<AxAIDeepSeekArgs<TModelKey>, 'name'>>) {\n if (!apiKey || apiKey === '') {\n throw new Error('DeepSeek API key not set');\n }\n const Config = {\n ...axAIDeepSeekDefaultConfig(),\n ...config,\n };\n\n modelInfo = [...axModelInfoDeepSeek, ...(modelInfo ?? [])];\n\n super({\n apiKey,\n config: Config,\n options,\n apiURL: 'https://api.deepseek.com',\n modelInfo,\n supportFor: {\n functions: true,\n streaming: true,\n hasThinkingBudget: false,\n hasShowThoughts: false,\n },\n models,\n });\n\n super.setName('DeepSeek');\n }\n}\n"}, "bff3f4086548dd5886d8731ec69dfce510cb0799": {"t": 1785755433.411184, "n": 1963, "h": "11108a1db4d68cda", "c": "import {\n axBaseAIDefaultConfig,\n axBaseAIDefaultCreativeConfig,\n} from '../base.js';\nimport { type AxAIOpenAIArgs, AxAIOpenAIBase } from '../openai/api.js';\nimport type { AxAIOpenAIConfig } from '../openai/chat_types.js';\n\nimport { axModelInfoDeepSeek } from './info.js';\nimport { AxAIDeepSeekModel } from './types.js';\n\ntype DeepSeekConfig = AxAIOpenAIConfig<AxAIDeepSeekModel, undefined>;\n\nexport const axAIDeepSeekDefaultConfig = (): DeepSeekConfig =>\n structuredClone({\n model: AxAIDeepSeekModel.DeepSeekChat,\n ...axBaseAIDefaultConfig(),\n });\n\nexport const axAIDeepSeekCodeConfig = (): DeepSeekConfig =>\n structuredClone({\n model: AxAIDeepSeekModel.DeepSeekCoder,\n ...axBaseAIDefaultCreativeConfig(),\n });\n\nexport type AxAIDeepSeekArgs<TModelKey> = AxAIOpenAIArgs<\n 'deepseek',\n AxAIDeepSeekModel,\n undefined,\n TModelKey\n>;\n\n/**\n * Represents the DeepSeek AI service.\n *\n * @template TModelKey - The type of the model key.\n */\nexport class AxAIDeepSeek<TModelKey> extends AxAIOpenAIBase<\n AxAIDeepSeekModel,\n undefined,\n TModelKey\n> {\n /**\n * Creates an instance of the `AxAIDeepSeek` class.\n *\n * @param {Readonly<Omit<AxAIDeepSeekArgs<TModelKey>, 'name'>>} params - The parameters for creating the instance.\n */\n constructor({\n apiKey,\n config,\n options,\n models,\n modelInfo,\n }: Readonly<Omit<AxAIDeepSeekArgs<TModelKey>, 'name'>>) {\n if (!apiKey || apiKey === '') {\n throw new Error('DeepSeek API key not set');\n }\n const Config = {\n ...axAIDeepSeekDefaultConfig(),\n ...config,\n };\n\n modelInfo = [...axModelInfoDeepSeek, ...(modelInfo ?? [])];\n\n super({\n apiKey,\n config: Config,\n options,\n apiURL: 'https://api.deepseek.com',\n modelInfo,\n supportFor: {\n functions: true,\n streaming: true,\n hasThinkingBudget: false,\n hasShowThoughts: false,\n },\n models,\n });\n\n super.setName('DeepSeek');\n }\n}\n"}, "71cfb3ab79217a68a5e4f965755ad84bea2828c7": {"t": 1785755434.8624122, "n": 1673, "h": "d9635d3a1e00361f", "c": "import {\n axBaseAIDefaultConfig,\n axBaseAIDefaultCreativeConfig,\n} from '../base.js';\nimport { type AxAIOpenAIArgs, AxAIOpenAIBase } from '../openai/api.js';\nimport type { AxAIOpenAIConfig } from '../openai/chat_types.js';\n\nimport { axModelInfoDeepSeek } from './info.js';\nimport { AxAIDeepSeekModel } from './types.js';\n\ntype DeepSeekConfig = AxAIOpenAIConfig<AxAIDeepSeekModel, undefined>;\n\nexport const axAIDeepSeekDefaultConfig = (): DeepSeekConfig =>\n structuredClone({\n model: AxAIDeepSeekModel.DeepSeekChat,\n ...axBaseAIDefaultConfig(),\n });\n\nexport const axAIDeepSeekCodeConfig = (): DeepSeekConfig =>\n structuredClone({\n model: AxAIDeepSeekModel.DeepSeekCoder,\n ...axBaseAIDefaultCreativeConfig(),\n });\n\nexport type AxAIDeepSeekArgs<TModelKey> = AxAIOpenAIArgs<\n 'deepseek',\n AxAIDeepSeekModel,\n undefined,\n TModelKey\n>;\n\nexport class AxAIDeepSeek<TModelKey> extends AxAIOpenAIBase<\n AxAIDeepSeekModel,\n undefined,\n TModelKey\n> {\n constructor({\n apiKey,\n config,\n options,\n models,\n modelInfo,\n }: Readonly<Omit<AxAIDeepSeekArgs<TModelKey>, 'name'>>) {\n if (!apiKey || apiKey === '') {\n throw new Error('DeepSeek API key not set');\n }\n const Config = {\n ...axAIDeepSeekDefaultConfig(),\n ...config,\n };\n\n modelInfo = [...axModelInfoDeepSeek, ...(modelInfo ?? [])];\n\n super({\n apiKey,\n config: Config,\n options,\n apiURL: 'https://api.deepseek.com',\n modelInfo,\n supportFor: {\n functions: true,\n streaming: true,\n hasThinkingBudget: false,\n hasShowThoughts: false,\n },\n models,\n });\n\n super.setName('DeepSeek');\n }\n}\n"}, "2aa97ba8786c7c42f4c5e78ead4d5c273f5d96a0": {"t": 1785755436.328085, "n": 1691, "h": "a14373bf0230cec4", "c": "import {\n axBaseAIDefaultConfig,\n axBaseAIDefaultCreativeConfig,\n} from '../base.js';\nimport { type AxAIOpenAIArgs, AxAIOpenAIBase } from '../openai/api.js';\nimport type { AxAIOpenAIConfig } from '../openai/chat_types.js';\n\nimport { axModelInfoDeepSeek } from './info.js';\nimport { AxAIDeepSeekModel } from './types.js';\n\ntype DeepSeekConfig = AxAIOpenAIConfig<AxAIDeepSeekModel, undefined>;\n\nexport const axAIDeepSeekDefaultConfig = (): DeepSeekConfig =>\n structuredClone({\n model: AxAIDeepSeekModel.DeepSeekChat,\n ...axBaseAIDefaultConfig(),\n });\n\nexport const axAIDeepSeekCodeConfig = (): DeepSeekConfig =>\n structuredClone({\n model: AxAIDeepSeekModel.DeepSeekCoder,\n ...axBaseAIDefaultCreativeConfig(),\n });\n\nexport type AxAIDeepSeekArgs<TModelKey = string> = AxAIOpenAIArgs<\n 'deepseek',\n AxAIDeepSeekModel,\n undefined,\n TModelKey\n>;\n\nexport class AxAIDeepSeek<TModelKey = string> extends AxAIOpenAIBase<\n AxAIDeepSeekModel,\n undefined,\n TModelKey\n> {\n constructor({\n apiKey,\n config,\n options,\n models,\n modelInfo,\n }: Readonly<Omit<AxAIDeepSeekArgs<TModelKey>, 'name'>>) {\n if (!apiKey || apiKey === '') {\n throw new Error('DeepSeek API key not set');\n }\n const Config = {\n ...axAIDeepSeekDefaultConfig(),\n ...config,\n };\n\n modelInfo = [...axModelInfoDeepSeek, ...(modelInfo ?? [])];\n\n super({\n apiKey,\n config: Config,\n options,\n apiURL: 'https://api.deepseek.com',\n modelInfo,\n supportFor: {\n functions: true,\n streaming: true,\n hasThinkingBudget: false,\n hasShowThoughts: false,\n },\n models,\n });\n\n super.setName('DeepSeek');\n }\n}\n"}, "f9d18f9a763643edff7f6bdcefb0a01cd9c3195a": {"t": 1785755438.3635862, "n": 1608, "h": "70ffc2bfc569fda4", "c": "import {\n axBaseAIDefaultConfig,\n axBaseAIDefaultCreativeConfig,\n} from '../base.js';\nimport { type AxAIOpenAIArgs, AxAIOpenAIBase } from '../openai/api.js';\nimport type { AxAIOpenAIConfig } from '../openai/chat_types.js';\n\nimport { axModelInfoDeepSeek } from './info.js';\nimport { AxAIDeepSeekModel } from './types.js';\n\ntype DeepSeekConfig = AxAIOpenAIConfig<AxAIDeepSeekModel, undefined>;\n\nexport const axAIDeepSeekDefaultConfig = (): DeepSeekConfig =>\n structuredClone({\n model: AxAIDeepSeekModel.DeepSeekChat,\n ...axBaseAIDefaultConfig(),\n });\n\nexport const axAIDeepSeekCodeConfig = (): DeepSeekConfig =>\n structuredClone({\n model: AxAIDeepSeekModel.DeepSeekCoder,\n ...axBaseAIDefaultCreativeConfig(),\n });\n\nexport type AxAIDeepSeekArgs = AxAIOpenAIArgs<\n 'deepseek',\n AxAIDeepSeekModel,\n undefined\n>;\n\nexport class AxAIDeepSeek extends AxAIOpenAIBase<AxAIDeepSeekModel, undefined> {\n constructor({\n apiKey,\n config,\n options,\n models,\n modelInfo,\n }: Readonly<Omit<AxAIDeepSeekArgs, 'name'>>) {\n if (!apiKey || apiKey === '') {\n throw new Error('DeepSeek API key not set');\n }\n const Config = {\n ...axAIDeepSeekDefaultConfig(),\n ...config,\n };\n\n modelInfo = [...axModelInfoDeepSeek, ...(modelInfo ?? [])];\n\n super({\n apiKey,\n config: Config,\n options,\n apiURL: 'https://api.deepseek.com',\n modelInfo,\n supportFor: {\n functions: true,\n streaming: true,\n hasThinkingBudget: false,\n hasShowThoughts: false,\n },\n models,\n });\n\n super.setName('DeepSeek');\n }\n}\n"}, "5b3ea860fc4aa640307a441e1d5785f0176b7219": {"t": 1785755439.6543422, "n": 1596, "h": "b9ffbe71db652072", "c": "import {\n axBaseAIDefaultConfig,\n axBaseAIDefaultCreativeConfig,\n} from '../base.js'\nimport { type AxAIOpenAIArgs, AxAIOpenAIBase } from '../openai/api.js'\nimport type { AxAIOpenAIConfig } from '../openai/chat_types.js'\n\nimport { axModelInfoDeepSeek } from './info.js'\nimport { AxAIDeepSeekModel } from './types.js'\n\ntype DeepSeekConfig = AxAIOpenAIConfig<AxAIDeepSeekModel, undefined>\n\nexport const axAIDeepSeekDefaultConfig = (): DeepSeekConfig =>\n structuredClone({\n model: AxAIDeepSeekModel.DeepSeekChat,\n ...axBaseAIDefaultConfig(),\n })\n\nexport const axAIDeepSeekCodeConfig = (): DeepSeekConfig =>\n structuredClone({\n model: AxAIDeepSeekModel.DeepSeekCoder,\n ...axBaseAIDefaultCreativeConfig(),\n })\n\nexport type AxAIDeepSeekArgs = AxAIOpenAIArgs<\n 'deepseek',\n AxAIDeepSeekModel,\n undefined\n>\n\nexport class AxAIDeepSeek extends AxAIOpenAIBase<AxAIDeepSeekModel, undefined> {\n constructor({\n apiKey,\n config,\n options,\n models,\n modelInfo,\n }: Readonly<Omit<AxAIDeepSeekArgs, 'name'>>) {\n if (!apiKey || apiKey === '') {\n throw new Error('DeepSeek API key not set')\n }\n const _config = {\n ...axAIDeepSeekDefaultConfig(),\n ...config,\n }\n\n modelInfo = [...axModelInfoDeepSeek, ...(modelInfo ?? [])]\n\n super({\n apiKey,\n config: _config,\n options,\n apiURL: 'https://api.deepseek.com',\n modelInfo,\n supportFor: {\n functions: true,\n streaming: true,\n hasThinkingBudget: false,\n hasShowThoughts: false,\n },\n models,\n })\n\n super.setName('DeepSeek')\n }\n}\n"}, "3f1fffb6b28dedcdc56f8d473b9be5b7964eebb2": {"t": 1785755441.3679576, "n": 1591, "h": "ca0491ed660a1cfe", "c": "import {\n axBaseAIDefaultConfig,\n axBaseAIDefaultCreativeConfig,\n} from '../base.js'\nimport { type AxAIOpenAIArgs, AxAIOpenAIBase } from '../openai/api.js'\nimport type { AxAIOpenAIConfig } from '../openai/types.js'\n\nimport { axModelInfoDeepSeek } from './info.js'\nimport { AxAIDeepSeekModel } from './types.js'\n\ntype DeepSeekConfig = AxAIOpenAIConfig<AxAIDeepSeekModel, undefined>\n\nexport const axAIDeepSeekDefaultConfig = (): DeepSeekConfig =>\n structuredClone({\n model: AxAIDeepSeekModel.DeepSeekChat,\n ...axBaseAIDefaultConfig(),\n })\n\nexport const axAIDeepSeekCodeConfig = (): DeepSeekConfig =>\n structuredClone({\n model: AxAIDeepSeekModel.DeepSeekCoder,\n ...axBaseAIDefaultCreativeConfig(),\n })\n\nexport type AxAIDeepSeekArgs = AxAIOpenAIArgs<\n 'deepseek',\n AxAIDeepSeekModel,\n undefined\n>\n\nexport class AxAIDeepSeek extends AxAIOpenAIBase<AxAIDeepSeekModel, undefined> {\n constructor({\n apiKey,\n config,\n options,\n models,\n modelInfo,\n }: Readonly<Omit<AxAIDeepSeekArgs, 'name'>>) {\n if (!apiKey || apiKey === '') {\n throw new Error('DeepSeek API key not set')\n }\n const _config = {\n ...axAIDeepSeekDefaultConfig(),\n ...config,\n }\n\n modelInfo = [...axModelInfoDeepSeek, ...(modelInfo ?? [])]\n\n super({\n apiKey,\n config: _config,\n options,\n apiURL: 'https://api.deepseek.com',\n modelInfo,\n supportFor: {\n functions: true,\n streaming: true,\n hasThinkingBudget: false,\n hasShowThoughts: false,\n },\n models,\n })\n\n super.setName('DeepSeek')\n }\n}\n"}, "192d9d43d0524ced16bf9257b20610b9a3040112": {"t": 1785755443.6880853, "n": 1387, "h": "794fa206ef69b514", "c": "import {\n axBaseAIDefaultConfig,\n axBaseAIDefaultCreativeConfig,\n} from '../base.js'\nimport { type AxAIOpenAIArgs, AxAIOpenAIBase } from '../openai/api.js'\nimport type { AxAIOpenAIConfig } from '../openai/types.js'\n\nimport { axModelInfoDeepSeek } from './info.js'\nimport { AxAIDeepSeekModel } from './types.js'\n\ntype DeepSeekConfig = AxAIOpenAIConfig<AxAIDeepSeekModel, undefined>\n\nexport const axAIDeepSeekDefaultConfig = (): DeepSeekConfig =>\n structuredClone({\n model: AxAIDeepSeekModel.DeepSeekChat,\n ...axBaseAIDefaultConfig(),\n })\n\nexport const axAIDeepSeekCodeConfig = (): DeepSeekConfig =>\n structuredClone({\n model: AxAIDeepSeekModel.DeepSeekCoder,\n ...axBaseAIDefaultCreativeConfig(),\n })\n\nexport type AxAIDeepSeekArgs = AxAIOpenAIArgs<\n 'deepseek',\n AxAIDeepSeekModel,\n undefined\n>\n\nexport class AxAIDeepSeek extends AxAIOpenAIBase<AxAIDeepSeekModel, undefined> {\n constructor({\n apiKey,\n config,\n options,\n models,\n }: Readonly<Omit<AxAIDeepSeekArgs, 'name'>>) {\n if (!apiKey || apiKey === '') {\n throw new Error('DeepSeek API key not set')\n }\n const _config = {\n ...axAIDeepSeekDefaultConfig(),\n ...config,\n }\n super({\n apiKey,\n config: _config,\n options,\n apiURL: 'https://api.deepseek.com',\n modelInfo: axModelInfoDeepSeek,\n models,\n })\n\n super.setName('DeepSeek')\n }\n}\n"}, "1d313b450db62f6da9dd8bf4f4fd52a37b89120b": {"t": 1785755445.5199733, "n": 1411, "h": "44d6f567f5555ff5", "c": "import {\n axBaseAIDefaultConfig,\n axBaseAIDefaultCreativeConfig,\n} from '../base.js'\nimport { AxAIOpenAI, type AxAIOpenAIArgs } from '../openai/api.js'\nimport type { AxAIOpenAIConfig } from '../openai/types.js'\n\nimport { axModelInfoDeepSeek } from './info.js'\nimport { AxAIDeepSeekModel } from './types.js'\n\ntype DeepSeekConfig = AxAIOpenAIConfig<AxAIDeepSeekModel, undefined>\n\nexport const axAIDeepSeekDefaultConfig = (): DeepSeekConfig =>\n structuredClone({\n model: AxAIDeepSeekModel.DeepSeekChat,\n ...axBaseAIDefaultConfig(),\n })\n\nexport const axAIDeepSeekCodeConfig = (): DeepSeekConfig =>\n structuredClone({\n model: AxAIDeepSeekModel.DeepSeekCoder,\n ...axBaseAIDefaultCreativeConfig(),\n })\n\nexport type AxAIDeepSeekArgs = AxAIOpenAIArgs<\n 'deepseek',\n DeepSeekConfig,\n AxAIDeepSeekModel\n>\n\nexport class AxAIDeepSeek extends AxAIOpenAI<\n Omit<AxAIDeepSeekArgs, 'name'>,\n AxAIDeepSeekModel\n> {\n constructor({\n apiKey,\n config,\n options,\n models,\n }: Readonly<Omit<AxAIDeepSeekArgs, 'name'>>) {\n if (!apiKey || apiKey === '') {\n throw new Error('DeepSeek API key not set')\n }\n const _config = {\n ...axAIDeepSeekDefaultConfig(),\n ...config,\n }\n super({\n apiKey,\n config: _config,\n options,\n apiURL: 'https://api.deepseek.com',\n modelInfo: axModelInfoDeepSeek,\n models,\n })\n\n super.setName('DeepSeek')\n }\n}\n"}, "e83059f7bb695f9eb201bfcb5c4db39233265c61": {"t": 1785755447.1176918, "n": 1476, "h": "1f4942f14360cc9a", "c": "import {\n axBaseAIDefaultConfig,\n axBaseAIDefaultCreativeConfig,\n} from '../base.js'\nimport { AxAIOpenAI } from '../openai/api.js'\nimport type { AxAIOpenAIConfig } from '../openai/types.js'\nimport type { AxAIServiceOptions } from '../types.js'\n\nimport { axModelInfoDeepSeek } from './info.js'\nimport { AxAIDeepSeekModel } from './types.js'\n\ntype DeepSeekConfig = AxAIOpenAIConfig\n\nexport const axAIDeepSeekDefaultConfig = (): DeepSeekConfig =>\n structuredClone({\n model: AxAIDeepSeekModel.DeepSeekChat,\n ...axBaseAIDefaultConfig(),\n })\n\nexport const axAIDeepSeekCodeConfig = (): DeepSeekConfig =>\n structuredClone({\n model: AxAIDeepSeekModel.DeepSeekCoder,\n ...axBaseAIDefaultCreativeConfig(),\n })\n\nexport interface AxAIDeepSeekArgs {\n name: 'deepseek'\n apiKey: string\n config?: Readonly<Partial<DeepSeekConfig>>\n options?: Readonly<AxAIServiceOptions>\n modelMap?: Record<string, AxAIDeepSeekModel | string>\n}\n\nexport class AxAIDeepSeek extends AxAIOpenAI {\n constructor({\n apiKey,\n config,\n options,\n modelMap,\n }: Readonly<Omit<AxAIDeepSeekArgs, 'name'>>) {\n if (!apiKey || apiKey === '') {\n throw new Error('DeepSeek API key not set')\n }\n const _config = {\n ...axAIDeepSeekDefaultConfig(),\n ...config,\n }\n super({\n apiKey,\n config: _config,\n options,\n apiURL: 'https://api.deepseek.com',\n modelInfo: axModelInfoDeepSeek,\n modelMap,\n })\n\n super.setName('DeepSeek')\n }\n}\n"}, "704991418fdda832ef3d6aff33496432c3b152eb": {"t": 1785755449.591796, "n": 1488, "h": "9dbaef46dc3e54dc", "c": "import {\n axBaseAIDefaultConfig,\n axBaseAIDefaultCreativeConfig\n} from '../base.js';\nimport { AxAIOpenAI } from '../openai/api.js';\nimport type { AxAIOpenAIConfig } from '../openai/types.js';\nimport type { AxAIServiceOptions } from '../types.js';\n\nimport { axModelInfoDeepSeek } from './info.js';\nimport { AxAIDeepSeekModel } from './types.js';\n\ntype DeepSeekConfig = AxAIOpenAIConfig;\n\nexport const axAIDeepSeekDefaultConfig = (): DeepSeekConfig =>\n structuredClone({\n model: AxAIDeepSeekModel.DeepSeekChat,\n ...axBaseAIDefaultConfig()\n });\n\nexport const axAIDeepSeekCodeConfig = (): DeepSeekConfig =>\n structuredClone({\n model: AxAIDeepSeekModel.DeepSeekCoder,\n ...axBaseAIDefaultCreativeConfig()\n });\n\nexport interface AxAIDeepSeekArgs {\n name: 'deepseek';\n apiKey: string;\n config?: Readonly<Partial<DeepSeekConfig>>;\n options?: Readonly<AxAIServiceOptions>;\n modelMap?: Record<string, AxAIDeepSeekModel | string>;\n}\n\nexport class AxAIDeepSeek extends AxAIOpenAI {\n constructor({\n apiKey,\n config,\n options,\n modelMap\n }: Readonly<Omit<AxAIDeepSeekArgs, 'name'>>) {\n if (!apiKey || apiKey === '') {\n throw new Error('DeepSeek API key not set');\n }\n const _config = {\n ...axAIDeepSeekDefaultConfig(),\n ...config\n };\n super({\n apiKey,\n config: _config,\n options,\n apiURL: 'https://api.deepseek.com',\n modelInfo: axModelInfoDeepSeek,\n modelMap\n });\n\n super.setName('DeepSeek');\n }\n}\n"}, "ab29d6e6cf39255a6b1f488043cb378387bcb5ac": {"t": 1785755450.9045503, "n": 1428, "h": "a5d507195e25a9f8", "c": "import {\n axBaseAIDefaultConfig,\n axBaseAIDefaultCreativeConfig\n} from '../base.js';\nimport { AxAIOpenAI } from '../openai/api.js';\nimport type { AxAIOpenAIConfig } from '../openai/types.js';\nimport type { AxAIServiceOptions } from '../types.js';\n\nimport { axModelInfoDeepSeek } from './info.js';\nimport { AxAIDeepSeekModel } from './types.js';\n\ntype DeepSeekConfig = AxAIOpenAIConfig;\n\nexport const axAIDeepSeekDefaultConfig = (): DeepSeekConfig =>\n structuredClone({\n model: AxAIDeepSeekModel.DeepSeekChat,\n ...axBaseAIDefaultConfig()\n });\n\nexport const axAIDeepSeekCodeConfig = (): DeepSeekConfig =>\n structuredClone({\n model: AxAIDeepSeekModel.DeepSeekCoder,\n ...axBaseAIDefaultCreativeConfig()\n });\n\nexport interface AxAIDeepSeekArgs {\n name: 'deepseek';\n apiKey: string;\n config?: Readonly<Partial<DeepSeekConfig>>;\n options?: Readonly<AxAIServiceOptions>;\n}\n\nexport class AxAIDeepSeek extends AxAIOpenAI<AxAIDeepSeekModel, string> {\n constructor({\n apiKey,\n config,\n options\n }: Readonly<Omit<AxAIDeepSeekArgs, 'name'>>) {\n if (!apiKey || apiKey === '') {\n throw new Error('DeepSeek API key not set');\n }\n const _config = {\n ...axAIDeepSeekDefaultConfig(),\n ...config\n };\n super({\n apiKey,\n config: _config,\n options,\n apiURL: 'https://api.deepseek.com',\n modelInfo: axModelInfoDeepSeek\n });\n\n super.setName('DeepSeek');\n }\n}\n"}, "802b288764b416a01a5266b0527d7cd1f25e2464": {"t": 1785755452.7041695, "n": 1401, "h": "aa60df5be36cc5dd", "c": "import {\n axBaseAIDefaultConfig,\n axBaseAIDefaultCreativeConfig\n} from '../base.js';\nimport { AxAIOpenAI } from '../openai/api.js';\nimport type { AxAIOpenAIConfig } from '../openai/types.js';\nimport type { AxAIServiceOptions } from '../types.js';\n\nimport { axModelInfoDeepSeek } from './info.js';\nimport { AxAIDeepSeekModel } from './types.js';\n\ntype DeepSeekConfig = AxAIOpenAIConfig;\n\nexport const axAIDeepSeekDefaultConfig = (): DeepSeekConfig =>\n structuredClone({\n model: AxAIDeepSeekModel.DeepSeekChat,\n ...axBaseAIDefaultConfig()\n });\n\nexport const axAIDeepSeekCodeConfig = (): DeepSeekConfig =>\n structuredClone({\n model: AxAIDeepSeekModel.DeepSeekCoder,\n ...axBaseAIDefaultCreativeConfig()\n });\n\nexport interface AxAIDeepSeekArgs {\n name: 'deepseek';\n apiKey: string;\n config?: Readonly<Partial<DeepSeekConfig>>;\n options?: Readonly<AxAIServiceOptions>;\n}\n\nexport class AxAIDeepSeek extends AxAIOpenAI {\n constructor({\n apiKey,\n config,\n options\n }: Readonly<Omit<AxAIDeepSeekArgs, 'name'>>) {\n if (!apiKey || apiKey === '') {\n throw new Error('DeepSeek API key not set');\n }\n const _config = {\n ...axAIDeepSeekDefaultConfig(),\n ...config\n };\n super({\n apiKey,\n config: _config,\n options,\n apiURL: 'https://api.deepseek.com',\n modelInfo: axModelInfoDeepSeek\n });\n\n super.setName('DeepSeek');\n }\n}\n"}, "b758dee7291d11002bfed74a3268daa97f3beede": {"t": 1785755454.125207, "n": 1392, "h": "a280b7c076822f7a", "c": "import {\n axBaseAIDefaultConfig,\n axBaseAIDefaultCreativeConfig\n} from '../base.js';\nimport { AxAIOpenAI } from '../openai/api.js';\nimport type { AxAIOpenAIConfig } from '../openai/types.js';\nimport type { AxAIServiceOptions } from '../types.js';\n\nimport { axModelInfoDeepSeek } from './info.js';\nimport { AxAIDeepSeekModel } from './types.js';\n\ntype DeepSeekConfig = AxAIOpenAIConfig;\n\nexport const axAIDeepSeekDefaultConfig = (): DeepSeekConfig =>\n structuredClone({\n model: AxAIDeepSeekModel.DeepSeekChat,\n ...axBaseAIDefaultConfig()\n });\n\nexport const axAIDeepSeekCodeConfig = (): DeepSeekConfig =>\n structuredClone({\n model: AxAIDeepSeekModel.DeepSeekCoder,\n ...axBaseAIDefaultCreativeConfig()\n });\n\nexport interface AxAIDeepSeekArgs {\n name: 'deepseek';\n apiKey: string;\n config?: Readonly<DeepSeekConfig>;\n options?: Readonly<AxAIServiceOptions>;\n}\n\nexport class AxAIDeepSeek extends AxAIOpenAI {\n constructor({\n apiKey,\n config,\n options\n }: Readonly<Omit<AxAIDeepSeekArgs, 'name'>>) {\n if (!apiKey || apiKey === '') {\n throw new Error('DeepSeek API key not set');\n }\n const _config = {\n ...axAIDeepSeekDefaultConfig(),\n ...config\n };\n super({\n apiKey,\n config: _config,\n options,\n apiURL: 'https://api.deepseek.com',\n modelInfo: axModelInfoDeepSeek\n });\n\n super.setName('DeepSeek');\n }\n}\n"}, "fd1b96779886076af90c63aa98f3006b4b4cdf3d": {"t": 1786067551.408305, "n": 5805, "h": "d1af3ae924159986", "c": "import type { AxAIFeatures } from '../base.js';\nimport {\n axBaseAIDefaultConfig,\n axBaseAIDefaultCreativeConfig,\n} from '../base.js';\nimport { type AxAIOpenAIArgs, AxAIOpenAIBase } from '../openai/api.js';\nimport type {\n AxAIOpenAIChatRequest,\n AxAIOpenAIConfig,\n} from '../openai/chat_types.js';\nimport type { AxAIServiceOptions } from '../types.js';\n\nimport { axModelInfoDeepSeek } from './info.js';\nimport { AxAIDeepSeekModel } from './types.js';\n\n/**\n * Configuration type for DeepSeek AI models\n */\ntype DeepSeekConfig = AxAIOpenAIConfig<AxAIDeepSeekModel, undefined>;\n\ntype DeepSeekReasoningEffort =\n | NonNullable<AxAIOpenAIChatRequest<AxAIDeepSeekModel>['reasoning_effort']>\n | 'max';\n\ntype DeepSeekChatRequest<TModel> = AxAIOpenAIChatRequest<TModel> & {\n thinking?: { type: 'enabled' | 'disabled' };\n};\n\nconst axAIDeepSeekSupportsToolChoice = (model: unknown): boolean => {\n switch (String(model)) {\n case AxAIDeepSeekModel.DeepSeekV4Flash:\n case AxAIDeepSeekModel.DeepSeekV4Pro:\n case AxAIDeepSeekModel.DeepSeekReasoner:\n return false;\n default:\n return true;\n }\n};\n\nconst axAIDeepSeekSupportsThinking = (model: unknown): boolean => {\n switch (String(model)) {\n case AxAIDeepSeekModel.DeepSeekV4Flash:\n case AxAIDeepSeekModel.DeepSeekV4Pro:\n return true;\n default:\n return false;\n }\n};\n\nconst axAIDeepSeekChatReqUpdater = <TModel>(\n req: Readonly<DeepSeekChatRequest<TModel>>,\n config: Readonly<AxAIServiceOptions>\n): DeepSeekChatRequest<TModel> => {\n const nextReq = { ...req };\n\n if (axAIDeepSeekSupportsThinking(req.model)) {\n const thinkingEnabled =\n config.thinkingTokenBudget !== 'none' &&\n nextReq.reasoning_effort !== 'none' &&\n (config.thinkingTokenBudget !== undefined ||\n nextReq.reasoning_effort !== undefined);\n\n nextReq.thinking = {\n type: thinkingEnabled ? 'enabled' : 'disabled',\n };\n\n if (!thinkingEnabled) {\n delete nextReq.reasoning_effort;\n } else {\n switch (nextReq.reasoning_effort) {\n case 'xhigh':\n (\n nextReq as { reasoning_effort?: DeepSeekReasoningEffort }\n ).reasoning_effort = 'max';\n break;\n case 'minimal':\n case 'low':\n case 'medium':\n case undefined:\n nextReq.reasoning_effort = 'high';\n break;\n }\n\n delete nextReq.temperature;\n delete nextReq.top_p;\n delete nextReq.presence_penalty;\n delete nextReq.frequency_penalty;\n }\n }\n\n if (axAIDeepSeekSupportsToolChoice(req.model)) {\n return nextReq;\n }\n\n if (nextReq.tool_choice === 'none') {\n delete nextReq.tools;\n }\n delete nextReq.tool_choice;\n return nextReq;\n};\n\n/**\n * Creates the default configuration for DeepSeek AI with the V4 Flash model\n * @returns Default DeepSeek configuration with V4 Flash settings\n */\nexport const axAIDeepSeekDefaultConfig = (): DeepSeekConfig =>\n structuredClone({\n model: AxAIDeepSeekModel.DeepSeekV4Flash,\n ...axBaseAIDefaultConfig(),\n });\n\n/**\n * Creates a configuration optimized for code generation tasks using DeepSeek V4 Pro\n * @returns DeepSeek configuration with creative settings for coding tasks\n */\nexport const axAIDeepSeekCodeConfig = (): DeepSeekConfig =>\n structuredClone({\n model: AxAIDeepSeekModel.DeepSeekV4Pro,\n ...axBaseAIDefaultCreativeConfig(),\n });\n\nconst axAIDeepSeekSupportFor = (model: AxAIDeepSeekModel): AxAIFeatures => ({\n functions: true,\n streaming: true,\n hasThinkingBudget: axAIDeepSeekSupportsThinking(model),\n hasShowThoughts: axAIDeepSeekSupportsThinking(model),\n media: {\n images: {\n supported: false,\n formats: [],\n },\n audio: {\n supported: false,\n formats: [],\n },\n files: {\n supported: false,\n formats: [],\n uploadMethod: 'none' as const,\n },\n urls: {\n supported: false,\n webSearch: false,\n contextFetching: false,\n },\n },\n caching: {\n supported: false,\n types: [],\n },\n thinking: axAIDeepSeekSupportsThinking(model),\n multiTurn: true,\n});\n\n/**\n * Arguments type for initializing DeepSeek AI instances\n * @template TModelKey - The model key type for type safety\n */\nexport type AxAIDeepSeekArgs<TModelKey> = AxAIOpenAIArgs<\n 'deepseek',\n AxAIDeepSeekModel,\n undefined,\n TModelKey\n>;\n\n/**\n * DeepSeek AI client implementation extending OpenAI base functionality\n * Provides access to DeepSeek's language models through OpenAI-compatible API\n * @template TModelKey - The model key type for type safety\n */\nexport class AxAIDeepSeek<TModelKey> extends AxAIOpenAIBase<\n AxAIDeepSeekModel,\n undefined,\n TModelKey,\n DeepSeekChatRequest<AxAIDeepSeekModel>\n> {\n /**\n * Creates a new DeepSeek AI client instance\n * @param args - Configuration arguments for the DeepSeek client\n * @param args.apiKey - DeepSeek API key for authentication\n * @param args.config - Optional configuration overrides\n * @param args.options - Optional client options\n * @param args.models - Optional model definitions\n * @param args.modelInfo - Optional additional model information\n * @throws {Error} When API key is not provided or empty\n */\n constructor({\n apiKey,\n config,\n options,\n models,\n modelInfo,\n }: Readonly<Omit<AxAIDeepSeekArgs<TModelKey>, 'name'>>) {\n if (!apiKey || apiKey === '') {\n throw new Error('DeepSeek API key not set');\n }\n const Config = {\n ...axAIDeepSeekDefaultConfig(),\n ...config,\n };\n\n modelInfo = [...axModelInfoDeepSeek, ...(modelInfo ?? [])];\n\n super({\n apiKey,\n config: Config,\n options,\n apiURL: 'https://api.deepseek.com',\n modelInfo,\n chatReqUpdater: axAIDeepSeekChatReqUpdater,\n supportFor: axAIDeepSeekSupportFor,\n models,\n });\n\n super.setName('DeepSeek');\n }\n}\n"}, "d49db21dac8b137a84eafc932a245c45163492c9": {"t": 1786068363.450163, "n": 5805, "h": "d1af3ae924159986", "c": "import type { AxAIFeatures } from '../base.js';\nimport {\n axBaseAIDefaultConfig,\n axBaseAIDefaultCreativeConfig,\n} from '../base.js';\nimport { type AxAIOpenAIArgs, AxAIOpenAIBase } from '../openai/api.js';\nimport type {\n AxAIOpenAIChatRequest,\n AxAIOpenAIConfig,\n} from '../openai/chat_types.js';\nimport type { AxAIServiceOptions } from '../types.js';\n\nimport { axModelInfoDeepSeek } from './info.js';\nimport { AxAIDeepSeekModel } from './types.js';\n\n/**\n * Configuration type for DeepSeek AI models\n */\ntype DeepSeekConfig = AxAIOpenAIConfig<AxAIDeepSeekModel, undefined>;\n\ntype DeepSeekReasoningEffort =\n | NonNullable<AxAIOpenAIChatRequest<AxAIDeepSeekModel>['reasoning_effort']>\n | 'max';\n\ntype DeepSeekChatRequest<TModel> = AxAIOpenAIChatRequest<TModel> & {\n thinking?: { type: 'enabled' | 'disabled' };\n};\n\nconst axAIDeepSeekSupportsToolChoice = (model: unknown): boolean => {\n switch (String(model)) {\n case AxAIDeepSeekModel.DeepSeekV4Flash:\n case AxAIDeepSeekModel.DeepSeekV4Pro:\n case AxAIDeepSeekModel.DeepSeekReasoner:\n return false;\n default:\n return true;\n }\n};\n\nconst axAIDeepSeekSupportsThinking = (model: unknown): boolean => {\n switch (String(model)) {\n case AxAIDeepSeekModel.DeepSeekV4Flash:\n case AxAIDeepSeekModel.DeepSeekV4Pro:\n return true;\n default:\n return false;\n }\n};\n\nconst axAIDeepSeekChatReqUpdater = <TModel>(\n req: Readonly<DeepSeekChatRequest<TModel>>,\n config: Readonly<AxAIServiceOptions>\n): DeepSeekChatRequest<TModel> => {\n const nextReq = { ...req };\n\n if (axAIDeepSeekSupportsThinking(req.model)) {\n const thinkingEnabled =\n config.thinkingTokenBudget !== 'none' &&\n nextReq.reasoning_effort !== 'none' &&\n (config.thinkingTokenBudget !== undefined ||\n nextReq.reasoning_effort !== undefined);\n\n nextReq.thinking = {\n type: thinkingEnabled ? 'enabled' : 'disabled',\n };\n\n if (!thinkingEnabled) {\n delete nextReq.reasoning_effort;\n } else {\n switch (nextReq.reasoning_effort) {\n case 'xhigh':\n (\n nextReq as { reasoning_effort?: DeepSeekReasoningEffort }\n ).reasoning_effort = 'max';\n break;\n case 'minimal':\n case 'low':\n case 'medium':\n case undefined:\n nextReq.reasoning_effort = 'high';\n break;\n }\n\n delete nextReq.temperature;\n delete nextReq.top_p;\n delete nextReq.presence_penalty;\n delete nextReq.frequency_penalty;\n }\n }\n\n if (axAIDeepSeekSupportsToolChoice(req.model)) {\n return nextReq;\n }\n\n if (nextReq.tool_choice === 'none') {\n delete nextReq.tools;\n }\n delete nextReq.tool_choice;\n return nextReq;\n};\n\n/**\n * Creates the default configuration for DeepSeek AI with the V4 Flash model\n * @returns Default DeepSeek configuration with V4 Flash settings\n */\nexport const axAIDeepSeekDefaultConfig = (): DeepSeekConfig =>\n structuredClone({\n model: AxAIDeepSeekModel.DeepSeekV4Flash,\n ...axBaseAIDefaultConfig(),\n });\n\n/**\n * Creates a configuration optimized for code generation tasks using DeepSeek V4 Pro\n * @returns DeepSeek configuration with creative settings for coding tasks\n */\nexport const axAIDeepSeekCodeConfig = (): DeepSeekConfig =>\n structuredClone({\n model: AxAIDeepSeekModel.DeepSeekV4Pro,\n ...axBaseAIDefaultCreativeConfig(),\n });\n\nconst axAIDeepSeekSupportFor = (model: AxAIDeepSeekModel): AxAIFeatures => ({\n functions: true,\n streaming: true,\n hasThinkingBudget: axAIDeepSeekSupportsThinking(model),\n hasShowThoughts: axAIDeepSeekSupportsThinking(model),\n media: {\n images: {\n supported: false,\n formats: [],\n },\n audio: {\n supported: false,\n formats: [],\n },\n files: {\n supported: false,\n formats: [],\n uploadMethod: 'none' as const,\n },\n urls: {\n supported: false,\n webSearch: false,\n contextFetching: false,\n },\n },\n caching: {\n supported: false,\n types: [],\n },\n thinking: axAIDeepSeekSupportsThinking(model),\n multiTurn: true,\n});\n\n/**\n * Arguments type for initializing DeepSeek AI instances\n * @template TModelKey - The model key type for type safety\n */\nexport type AxAIDeepSeekArgs<TModelKey> = AxAIOpenAIArgs<\n 'deepseek',\n AxAIDeepSeekModel,\n undefined,\n TModelKey\n>;\n\n/**\n * DeepSeek AI client implementation extending OpenAI base functionality\n * Provides access to DeepSeek's language models through OpenAI-compatible API\n * @template TModelKey - The model key type for type safety\n */\nexport class AxAIDeepSeek<TModelKey> extends AxAIOpenAIBase<\n AxAIDeepSeekModel,\n undefined,\n TModelKey,\n DeepSeekChatRequest<AxAIDeepSeekModel>\n> {\n /**\n * Creates a new DeepSeek AI client instance\n * @param args - Configuration arguments for the DeepSeek client\n * @param args.apiKey - DeepSeek API key for authentication\n * @param args.config - Optional configuration overrides\n * @param args.options - Optional client options\n * @param args.models - Optional model definitions\n * @param args.modelInfo - Optional additional model information\n * @throws {Error} When API key is not provided or empty\n */\n constructor({\n apiKey,\n config,\n options,\n models,\n modelInfo,\n }: Readonly<Omit<AxAIDeepSeekArgs<TModelKey>, 'name'>>) {\n if (!apiKey || apiKey === '') {\n throw new Error('DeepSeek API key not set');\n }\n const Config = {\n ...axAIDeepSeekDefaultConfig(),\n ...config,\n };\n\n modelInfo = [...axModelInfoDeepSeek, ...(modelInfo ?? [])];\n\n super({\n apiKey,\n config: Config,\n options,\n apiURL: 'https://api.deepseek.com',\n modelInfo,\n chatReqUpdater: axAIDeepSeekChatReqUpdater,\n supportFor: axAIDeepSeekSupportFor,\n models,\n });\n\n super.setName('DeepSeek');\n }\n}\n"}}}} |