mimo-cli 0.1.6 → 0.1.7

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/dist/sdk.mjs CHANGED
@@ -86,12 +86,12 @@ var translations = {
86
86
  en: "and usage examples. For example:"
87
87
  },
88
88
  "main.notLoggedIn": {
89
- zh: " 尚未登录。",
90
- en: " Not logged in."
89
+ zh: " 尚未配置 API Key。",
90
+ en: " No API key configured."
91
91
  },
92
92
  "main.loginHint1": {
93
- zh: " mimo auth login 使用 API Key 登录",
94
- en: " mimo auth login Log in with an API key"
93
+ zh: " mimo auth login 交互式输入 API Key",
94
+ en: " mimo auth login Enter an API key interactively"
95
95
  },
96
96
  "main.loginHint2": {
97
97
  zh: " mimo auth login --api-key 直接保存 API Key",
@@ -174,7 +174,7 @@ Check your API Key permissions.` },
174
174
  "api.503": { zh: "服务暂不可用(HTTP 503)。", en: "Service unavailable (HTTP 503)." },
175
175
  "api.503Hint": { zh: "服务器暂时过载或维护中,请稍后重试。", en: "The server is temporarily overloaded or under maintenance. Please retry later." },
176
176
  "api.default": { zh: "API 错误:", en: "API error: " },
177
- "auth.noCreds": { zh: "未找到认证信息。", en: "No credentials found." },
177
+ "auth.noCreds": { zh: "未找到 API Key。", en: "No API key found." },
178
178
  "auth.noCredsHint": {
179
179
  zh: `登录: mimo auth login
180
180
  直接传入: --api-key <key>
@@ -893,5 +893,5 @@ export {
893
893
  ASRSDK
894
894
  };
895
895
 
896
- //# debugId=E09992E67D0D8E0B64756E2164756E21
896
+ //# debugId=03A41E638183B16964756E2164756E21
897
897
  //# sourceMappingURL=sdk.mjs.map
package/dist/sdk.mjs.map CHANGED
@@ -8,7 +8,7 @@
8
8
  "export const ExitCode = {\n SUCCESS: 0,\n GENERAL: 1,\n USAGE: 2,\n AUTH: 3,\n QUOTA: 4,\n TIMEOUT: 5,\n NETWORK: 6,\n CONTENT_FILTER: 10,\n INVALID_INPUT: 11,\n} as const;\n\nexport type ExitCode = (typeof ExitCode)[keyof typeof ExitCode];\n",
9
9
  "import { ExitCode } from './codes';\n\nexport class CLIError extends Error {\n readonly exitCode: ExitCode;\n readonly hint?: string;\n\n constructor(message: string, exitCode: ExitCode = ExitCode.GENERAL, hint?: string) {\n super(message);\n this.name = 'CLIError';\n this.exitCode = exitCode;\n this.hint = hint;\n }\n\n toJSON() {\n return {\n error: {\n code: this.exitCode,\n message: this.message,\n ...(this.hint ? { hint: this.hint } : {}),\n },\n };\n }\n}\n",
10
10
  "import { resolve, normalize } from 'node:path';\nimport { CLIError } from '../errors/base';\nimport { ExitCode } from '../errors/codes';\n\n/**\n * 规范化并验证用户输入的文件路径,防止路径遍历攻击。\n * 检查规范化后的路径是否在 baseDir 目录下,如果逃逸则抛出 CLIError。\n *\n * @param inputPath - 用户输入的文件路径\n * @param baseDir - 允许的基准目录,默认为 process.cwd()\n * @returns 规范化后的绝对路径\n * @throws CLIError 如果路径逃逸到 baseDir 之外\n */\nexport function sanitizePath(inputPath: string, baseDir?: string): string {\n const base = resolve(baseDir ?? process.cwd());\n const resolved = resolve(inputPath);\n\n // 规范化后检查路径是否以 baseDir 开头\n // 确保比较时 baseDir 以路径分隔符结尾,避免 /app 匹配 /application 的情况\n const baseWithSep = base.endsWith('/') || base.endsWith('\\\\') ? base : base + '/';\n if (resolved !== base && !resolved.startsWith(baseWithSep)) {\n throw new CLIError(\n `路径不允许逃逸到预期目录之外: ${inputPath}`,\n ExitCode.INVALID_INPUT,\n '请确保文件路径在当前工作目录内,不要使用绝对路径或 ../ 等相对路径逃逸。',\n );\n }\n\n return resolved;\n}\n\n/**\n * 对 API Key 做脱敏处理,只显示前4位和后4位,中间用 **** 替代。\n * 格式: sk-****xxxx\n *\n * @param key - 原始 API Key\n * @returns 脱敏后的 API Key\n */\nexport function maskApiKey(key: string): string {\n if (!key || typeof key !== 'string') return '****';\n\n // 对于很短的 key,全部脱敏\n if (key.length <= 8) {\n return key.slice(0, 2) + '****';\n }\n\n return key.slice(0, 4) + '****' + key.slice(-4);\n}\n\n/**\n * 在文本中扫描并替换可能泄露的 API Key。\n * 匹配 sk- 或 tp- 开头的长字符串(>=20字符),替换为脱敏格式。\n *\n * @param text - 可能包含 API Key 的文本\n * @returns 脱敏后的文本\n */\nexport function redactApiKeysInText(text: string): string {\n if (!text || typeof text !== 'string') return text;\n\n // 匹配 sk- 或 tp- 开头且长度 >= 20 的字符串(典型的 API Key 格式)\n return text.replace(/(?:sk|tp)-[A-Za-z0-9_-]{16,}/g, (match) => {\n return maskApiKey(match);\n });\n}\n",
11
- "// ============================================================\n// MiMo CLI 国际化 (i18n) 模块\n// ============================================================\n\nexport type Locale = 'zh' | 'en';\n\n// 当前语言,默认中文\nlet currentLocale: Locale = 'zh';\n\nexport function getLocale(): Locale {\n return currentLocale;\n}\n\nexport function setLocale(locale: Locale): void {\n if (locale !== 'zh' && locale !== 'en') {\n currentLocale = 'zh';\n } else {\n currentLocale = locale;\n }\n}\n\n// 从配置值初始化语言\nexport function initLocale(configLang?: string): void {\n if (!configLang) {\n // 尝试从环境变量检测\n const envLang = process.env.LANG || process.env.LC_ALL || process.env.LC_MESSAGES || '';\n if (envLang.startsWith('zh')) {\n currentLocale = 'zh';\n } else {\n currentLocale = 'zh'; // 默认中文\n }\n return;\n }\n if (configLang === 'en') {\n currentLocale = 'en';\n } else {\n currentLocale = 'zh';\n }\n}\n\n// ============================================================\n// 翻译字典\n// ============================================================\n\nconst translations: Record<string, Record<Locale, string>> = {\n // ---- 主界面 ----\n 'main.usage': {\n zh: '用法:mimo <资源> <命令> [参数]',\n en: 'Usage: mimo <resource> <command> [flags]',\n },\n 'main.resources': {\n zh: '可用命令:',\n en: 'Resources:',\n },\n 'main.globalFlags': {\n zh: '全局参数:',\n en: 'Global Flags:',\n },\n 'main.gettingHelp': {\n zh: '获取帮助:',\n en: 'Getting Help:',\n },\n 'main.helpHint1': {\n zh: '在任何命令后添加 --help 查看完整选项、默认值和示例。',\n en: 'Add --help after any command to see its full list of options, defaults,',\n },\n 'main.helpHint2': {\n zh: '例如:',\n en: 'and usage examples. For example:',\n },\n 'main.notLoggedIn': {\n zh: ' 尚未登录。',\n en: ' Not logged in.',\n },\n 'main.loginHint1': {\n zh: ' mimo auth login 使用 API Key 登录',\n en: ' mimo auth login Log in with an API key',\n },\n 'main.loginHint2': {\n zh: ' mimo auth login --api-key 直接保存 API Key',\n en: ' mimo auth login --api-key Save an API key directly',\n },\n 'main.interrupted': {\n zh: '\\n已中断,退出。',\n en: '\\nInterrupted. Exiting.',\n },\n 'main.fatalArgv': {\n zh: '致命错误:无法读取进程参数。\\n',\n en: 'Fatal: failed to read process arguments.\\n',\n },\n\n // ---- 命令帮助 ----\n 'help.usage': { zh: '用法:', en: 'Usage:' },\n 'help.options': { zh: '选项:', en: 'Options:' },\n 'help.examples': { zh: '示例:', en: 'Examples:' },\n 'help.apiRef': { zh: 'API 参考:', en: 'API Reference:' },\n 'help.commands': { zh: '子命令:', en: 'Commands:' },\n 'help.globalHint': {\n zh: '全局参数(--api-key、--output、--quiet 等)始终可用。',\n en: 'Global flags (--api-key, --output, --quiet, etc.) are always available.',\n },\n 'help.globalHintRun': {\n zh: '运行 mimo --help 查看完整列表。',\n en: 'Run mimo --help for the full list.',\n },\n\n // ---- 错误处理 ----\n 'error.prefix': { zh: '错误:', en: 'Error:' },\n 'error.exitCode': { zh: '(退出码 {code})', en: '(exit code {code})' },\n 'error.timeout': { zh: '请求超时。', en: 'Request timed out.' },\n 'error.timeoutHint': {\n zh: '尝试增大超时时间(如 --timeout 60)。\\n如果使用有效 API Key 仍然频繁超时,请检查网络和区域。\\n运行:mimo auth status — 检查认证状态。',\n en: 'Try increasing --timeout (e.g. --timeout 60).\\nIf this happens on every request with a valid API key, check your network and region.\\nRun: mimo auth status — to check your credentials.',\n },\n 'error.network': { zh: '网络请求失败。', en: 'Network request failed.' },\n 'error.networkHint': {\n zh: '请检查网络连接。\\n如需使用代理:设置 HTTPS_PROXY 环境变量,或运行:mimo config set proxy http://HOST:PORT',\n en: 'Check your network connection.\\nTo use a proxy: set HTTPS_PROXY env var, or run: mimo config set proxy http://HOST:PORT',\n },\n 'error.proxyHint': {\n zh: '代理连接失败 — 请检查代理 URL 和认证信息。\\n检查:HTTPS_PROXY / HTTP_PROXY 环境变量,或运行 mimo config show 查看已配置的代理。',\n en: 'Proxy connection failed — verify your proxy URL and authentication.\\nCheck: HTTPS_PROXY / HTTP_PROXY env vars, or mimo config show for configured proxy.',\n },\n 'error.fsEnoent': { zh: '文件或目录不存在。', en: 'File or directory not found.' },\n 'error.fsEacces': { zh: '权限不足 — 请检查文件或目录权限。', en: 'Permission denied — check file or directory permissions.' },\n 'error.fsEnospc': { zh: '磁盘空间不足 — 请释放空间后重试。', en: 'Disk full — free up space and try again.' },\n 'error.fsDefault': { zh: '请检查文件路径和权限。', en: 'Check the file path and permissions.' },\n 'error.fsPrefix': { zh: '文件系统错误:', en: 'File system error: ' },\n\n // ---- API 错误 ----\n 'api.400': { zh: '请求参数错误:', en: 'Bad request: ' },\n 'api.400Hint': { zh: '请检查请求格式和参数。', en: 'Check your request format and parameters.' },\n 'api.401': { zh: '认证失败(HTTP 401)。', en: 'Authentication failed (HTTP 401).' },\n 'api.401Hint': { zh: '请检查 API Key:mimo auth status\\n重新登录:mimo auth login', en: 'Check your API Key: mimo auth status\\nRe-authenticate: mimo auth login' },\n 'api.402': { zh: '余额不足:', en: 'Payment required: ' },\n 'api.402Hint': { zh: '账户余额不足,请充值。', en: 'Insufficient balance. Please top up your account.' },\n 'api.403': { zh: '访问被拒绝(HTTP 403)。', en: 'Access denied (HTTP 403).' },\n 'api.403Hint': { zh: '您的 API Key 可能无权访问此资源,或 Key 受限。\\n请检查 API Key 权限。', en: 'Your API Key may not have access to this resource, or the key is restricted.\\nCheck your API Key permissions.' },\n 'api.404': { zh: '未找到:', en: 'Not found: ' },\n 'api.404Hint': { zh: '请求的模型或功能可能不受支持,请检查模型名称和接口地址。', en: 'The requested model or feature may not be supported. Check the model name and endpoint.' },\n 'api.421': { zh: '内容被过滤:', en: 'Content filtered: ' },\n 'api.421Hint': { zh: '您的输入被内容安全过滤器标记,请修改后重试。', en: 'Your input was flagged by the content safety filter. Please modify your request and try again.' },\n 'api.429': { zh: '请求频率超限:', en: 'Rate limit exceeded: ' },\n 'api.429Hint': { zh: '请求过于频繁,请稍后重试或检查配额。', en: 'You are sending requests too quickly. Please wait and retry, or check your quota.' },\n 'api.500': { zh: '服务器内部错误(HTTP 500)。', en: 'Server error (HTTP 500).' },\n 'api.500Hint': { zh: '服务器遇到内部错误,请稍后重试。', en: 'The server encountered an internal error. Please retry later.' },\n 'api.503': { zh: '服务暂不可用(HTTP 503)。', en: 'Service unavailable (HTTP 503).' },\n 'api.503Hint': { zh: '服务器暂时过载或维护中,请稍后重试。', en: 'The server is temporarily overloaded or under maintenance. Please retry later.' },\n 'api.default': { zh: 'API 错误:', en: 'API error: ' },\n\n // ---- 认证 ----\n 'auth.noCreds': { zh: '未找到认证信息。', en: 'No credentials found.' },\n 'auth.noCredsHint': {\n zh: '登录: mimo auth login\\n直接传入: --api-key <key>\\n环境变量: MIMO_API_KEY=<key>',\n en: 'Log in: mimo auth login\\nPass directly: --api-key <key>\\nSet env var: MIMO_API_KEY=<key>',\n },\n 'auth.noKeyProvided': { zh: '未提供 API Key。', en: 'No API key provided.' },\n 'auth.noKeyHint': { zh: '使用:mimo auth login --api-key <key>', en: 'Use: mimo auth login --api-key <key>' },\n 'auth.keyEmpty': { zh: 'API Key 不能为空。', en: 'API key cannot be empty.' },\n 'auth.keyRequired': { zh: 'API Key 为必填项。', en: 'API key is required.' },\n 'auth.keySaved': { zh: 'API Key 已保存至', en: 'API key saved to' },\n 'auth.baseUrlAuto': { zh: '接口地址已自动配置:', en: 'Base URL auto-configured: ' },\n 'auth.promptTitle': { zh: '请输入您的 MiMo API Key:', en: 'Please enter your MiMo API key:' },\n 'auth.promptPayKey': { zh: '- 按量计费 Key:以 \"sk-\" 等非 \"tp-\" 前缀开头', en: '- Pay-as-you-go Key: starts with \"sk-\" or other non-\"tp-\" prefix' },\n 'auth.promptTpKey': { zh: '- TokenPlan Key:以 \"tp-\" 前缀开头', en: '- TokenPlan Key: starts with \"tp-\" prefix' },\n 'auth.promptLabel': { zh: '输入 MiMo API Key:', en: 'Enter your MiMo API key:' },\n 'auth.logoutNoKey': { zh: '配置文件中未找到 API Key,已处于登出状态。', en: 'No API key found in config file. Already logged out.' },\n 'auth.logoutDone': { zh: 'API Key 已移除,您已登出。', en: 'API key removed. You are now logged out.' },\n\n // ---- 命令描述 ----\n 'cmd.chat.desc': { zh: '发送对话请求', en: 'Send a chat completion request' },\n 'cmd.repl.desc': { zh: '交互式多轮对话', en: 'Interactive multi-turn REPL conversation' },\n 'cmd.vision.desc': { zh: '多模态理解(图片、音频、视频)', en: 'Multi-modal understanding (image, audio, video)' },\n 'cmd.asr.desc': { zh: '语音识别(ASR)', en: 'Speech recognition (ASR)' },\n 'cmd.ttsSynth.desc': { zh: '预设音色语音合成', en: 'Pre-set voice text-to-speech synthesis' },\n 'cmd.ttsClone.desc': { zh: '声音克隆语音合成', en: 'Voice clone text-to-speech synthesis' },\n 'cmd.ttsDesign.desc': { zh: '自定义音色语音合成', en: 'Voice design text-to-speech synthesis' },\n 'cmd.ttsVoices.desc': { zh: '列出可用的 TTS 音色', en: 'List available TTS voices' },\n 'cmd.authLogin.desc': { zh: '使用 MiMo API Key 登录(自动识别按量计费/TokenPlan)', en: 'Log in with a MiMo API key (auto-detects key type: Pay-as-you-go or TokenPlan)' },\n 'cmd.authStatus.desc': { zh: '查看当前认证状态', en: 'Show current authentication status' },\n 'cmd.authLogout.desc': { zh: '清除已保存的 API Key', en: 'Clear saved API key from config file' },\n 'cmd.configShow.desc': { zh: '显示当前配置', en: 'Display current configuration' },\n 'cmd.configSet.desc': { zh: '设置配置项', en: 'Set a configuration value' },\n 'cmd.update.desc': { zh: '更新 MiMo CLI', en: 'Self-update the MiMo CLI' },\n 'cmd.help.desc': { zh: '显示命令帮助', en: 'Show help for commands' },\n 'cmd.language.desc': { zh: '切换界面语言(zh/en)', en: 'Switch interface language (zh/en)' },\n\n // ---- 视频理解错误 ----\n 'vision.videoTooLarge': {\n zh: '视频文件过大:{size}MB(原始)。Base64 编码后将超过 {limit}MB 的 API 限制。',\n en: 'Video file too large: {size}MB (raw). After Base64 encoding it would exceed the {limit}MB API limit.',\n },\n 'vision.videoTooLargeHint': {\n zh: '请改用 URL 方式传入视频(URL 模式支持最大 300MB),或将视频压缩至 {max}MB 以下。',\n en: 'Please use a URL to pass the video instead (URL mode supports up to 300MB), or compress the video to under {max}MB.',\n },\n 'vision.videoBase64TooLarge': {\n zh: '视频 Base64 大小 {size}MB 超过 {limit}MB 的 API 限制。',\n en: 'Video Base64 size {size}MB exceeds the {limit}MB API limit.',\n },\n 'vision.videoBase64TooLargeHint': {\n zh: '请改用 URL 方式传入视频(URL 模式支持最大 300MB),或压缩视频。',\n en: 'Please use a URL to pass the video instead (URL mode supports up to 300MB), or compress the video.',\n },\n 'vision.noMedia': {\n zh: '至少需要提供 --image、--audio 或 --video 中的一项。',\n en: 'At least one of --image, --audio, or --video is required.',\n },\n 'vision.noPrompt': {\n zh: '缺少必填参数:--prompt',\n en: 'Missing required flag: --prompt',\n },\n 'vision.requestFailed': {\n zh: '多模态请求失败:',\n en: 'Vision request failed: ',\n },\n 'vision.requestFailedHint': {\n zh: '请检查网络连接和媒体文件格式。',\n en: 'Check your network connection and media file format.',\n },\n\n // ---- Chat 错误 ----\n 'chat.noMessage': { zh: '缺少必填参数:--message', en: 'Missing required flag: --message' },\n 'chat.emptyMessage': { zh: '消息不能为空或仅包含空白字符。', en: 'Message cannot be empty or whitespace only.' },\n 'chat.messageTooLong': { zh: '消息过长:{len} 字符(上限 {max})。', en: 'Message too long: {len} characters (max {max}).' },\n 'chat.messageTooLongHint': { zh: '请缩短消息或拆分为多次请求。', en: 'Shorten your message or split it into multiple requests.' },\n 'chat.streamFailed': { zh: '流式请求失败:', en: 'Stream request failed: ' },\n 'chat.streamFailedHint': { zh: '请检查网络连接和 API Key。', en: 'Check your network connection and API key.' },\n\n // ---- ASR 错误 ----\n 'asr.noFile': { zh: '需要提供音频文件路径。', en: 'Audio file path is required.' },\n 'asr.streamFailed': { zh: '语音识别流式请求失败:', en: 'ASR stream request failed: ' },\n 'asr.requestFailed': { zh: '语音识别请求失败:', en: 'ASR request failed: ' },\n 'asr.checkHint': { zh: '请检查网络连接和音频文件格式。', en: 'Check your network connection and audio file format.' },\n\n // ---- TTS 错误 ----\n 'tts.noText': { zh: '--text 为必填项。', en: '--text is required.' },\n 'tts.emptyText': { zh: '--text 不能为空或仅包含空白字符。', en: '--text cannot be empty or whitespace only.' },\n 'tts.textTooLong': { zh: '文本过长:{len} 字符(上限 {max})。', en: 'Text too long: {len} characters (max {max}).' },\n 'tts.textTooLongHint': { zh: '请缩短文本或拆分为多次合成请求。', en: 'Shorten your text or split into multiple synthesis requests.' },\n 'tts.noSample': { zh: '--sample 为必填项。', en: '--sample is required.' },\n 'tts.noPrompt': { zh: '--prompt 为必填项。', en: '--prompt is required.' },\n 'tts.noTextOrOptimize': { zh: '需要提供 --text 或启用 --optimize-text。', en: 'Either --text or --optimize-text is required.' },\n 'tts.noAudioData': { zh: 'API 响应中缺少音频数据。', en: 'API response missing audio data.' },\n 'tts.invalidVoice': { zh: '无效音色:', en: 'Invalid voice: ' },\n\n // ---- Config ----\n 'config.keyRequired': { zh: '--key 为必填项。', en: '--key is required.' },\n 'config.valueRequired': { zh: '--value 为必填项。', en: '--value is required.' },\n 'config.invalidKey': { zh: '无效的配置键:', en: 'Invalid config key: ' },\n 'config.invalidKeyChars': { zh: '配置键只能包含字母、数字和下划线。', en: 'Config key must only contain letters, numbers, and underscores.' },\n 'config.validKeys': { zh: '有效的键:', en: 'Valid keys: ' },\n 'config.setTimeout': { zh: 'timeout 必须为正数。', en: 'timeout must be a positive number.' },\n 'config.setOutput': { zh: 'output 必须为 \"text\" 或 \"json\"。', en: 'output must be \"text\" or \"json\".' },\n 'config.setDone': { zh: '已设置', en: 'Set' },\n 'config.invalidActiveKey': { zh: 'active_key 必须为 \"tp\" 或 \"sk\"。', en: 'active_key must be \"tp\" or \"sk\".' },\n 'config.switchKey': { zh: '已切换为{type} Key({url})', en: 'Switched to {type} key ({url})' },\n 'config.corrupted': { zh: '警告:配置文件已损坏(', en: 'Warning: config file is corrupted (' },\n 'config.corruptedHint': { zh: ')。运行 \"mimo config set\" 重置。\\n', en: '). Run \\'mimo config set\\' to reset.\\n' },\n\n // ---- Update ----\n 'update.checking': { zh: '正在检查更新...', en: 'Checking for updates...' },\n 'update.checkFailed': { zh: '无法检查更新,请检查网络连接。', en: 'Failed to check for updates. Please check your network connection.' },\n 'update.currentVersion': { zh: '当前版本:{version}', en: 'Current version: {version}' },\n 'update.latestVersion': { zh: '最新版本:{version}', en: 'Latest version: {version}' },\n 'update.alreadyLatest': { zh: '已是最新版本,无需更新。', en: 'Already up to date.' },\n 'update.updating': { zh: '正在更新至 v{version}...', en: 'Updating to v{version}...' },\n 'update.success': { zh: '更新成功!已升级至 v{version}。', en: 'Update successful! Upgraded to v{version}.' },\n 'update.updateFailed': { zh: 'npm update 失败,尝试 npm install...', en: 'npm update failed, trying npm install...' },\n 'update.installFailed': { zh: '自动更新失败。', en: 'Auto-update failed.' },\n 'update.manualHint': { zh: '请手动执行:npm install -g mimo-cli@latest', en: 'Please run manually: npm install -g mimo-cli@latest' },\n\n // ---- REPL ----\n 'repl.intro': { zh: 'MiMo 交互对话 — 输入 /exit 退出,/clear 清空对话', en: 'MiMo REPL — type /exit to quit, /clear to reset' },\n 'repl.you': { zh: '你', en: 'You' },\n 'repl.placeholder': { zh: '输入你的消息...', en: 'Type your message...' },\n 'repl.goodbye': { zh: '再见!', en: 'Goodbye!' },\n 'repl.cleared': { zh: '对话已清空。', en: 'Conversation cleared.' },\n\n // ---- Spinner ----\n 'spinner.synthesizing': { zh: '正在合成语音...', en: 'Synthesizing speech...' },\n 'spinner.readingSample': { zh: '正在读取音频样本...', en: 'Reading audio sample...' },\n 'spinner.cloning': { zh: '正在合成克隆语音...', en: 'Synthesizing cloned speech...' },\n 'spinner.designing': { zh: '正在设计音色...', en: 'Designing voice...' },\n\n // ---- Language 命令 ----\n 'language.current': { zh: '当前界面语言:', en: 'Current interface language: ' },\n 'language.changed': { zh: '界面语言已切换为中文。', en: 'Interface language changed to English.' },\n 'language.invalid': { zh: '无效的语言代码,请使用 zh(中文)或 en(英文)。', en: 'Invalid language code. Use zh (Chinese) or en (English).' },\n 'language.hint': { zh: '使用:mimo language zh 或 mimo language en', en: 'Usage: mimo language zh or mimo language en' },\n\n // ---- 全局参数 ----\n 'flag.apiKey': { zh: '覆盖配置中的 API Key', en: 'Override API Key from config' },\n 'flag.baseUrl': { zh: '覆盖接口地址', en: 'Override API base URL' },\n 'flag.output': { zh: '输出格式(text/json)', en: 'Output format (text/json)' },\n 'flag.timeout': { zh: '请求超时时间(秒)', en: 'Request timeout in seconds' },\n 'flag.quiet': { zh: '静默模式,仅输出必要信息', en: 'Suppress non-essential output' },\n 'flag.verbose': { zh: '显示详细日志', en: 'Show verbose logging' },\n 'flag.noColor': { zh: '禁用彩色输出', en: 'Disable colored output' },\n 'flag.dryRun': { zh: '仅打印请求体,不实际执行', en: 'Print request body without executing' },\n 'flag.nonInteractive': { zh: '非交互模式', en: 'Non-interactive mode' },\n 'flag.help': { zh: '显示帮助信息', en: 'Show help' },\n 'flag.version': { zh: '显示版本号', en: 'Show version' },\n\n // ---- Chat 选项 ----\n 'flag.chat.message': { zh: '消息内容', en: 'Message text' },\n 'flag.chat.model': { zh: '模型名称(默认:mimo-v2.5-pro)', en: 'Model name (default: mimo-v2.5-pro)' },\n 'flag.chat.system': { zh: '系统提示词', en: 'System prompt' },\n 'flag.chat.thinking': { zh: '启用深度思考模式', en: 'Enable thinking mode' },\n 'flag.chat.search': { zh: '启用联网搜索', en: 'Enable web search' },\n 'flag.chat.forceSearch': { zh: '强制联网搜索', en: 'Force web search' },\n 'flag.chat.maxKeyword': { zh: '单次搜索最大关键词数量', en: 'Max keywords per search' },\n 'flag.chat.searchLimit': { zh: '搜索结果数量限制', en: 'Search result limit' },\n 'flag.chat.userCountry': { zh: '用户位置:国家', en: 'User location: country' },\n 'flag.chat.userRegion': { zh: '用户位置:地区', en: 'User location: region' },\n 'flag.chat.userCity': { zh: '用户位置:城市', en: 'User location: city' },\n 'flag.chat.stream': { zh: '流式输出(默认开启,用 --no-stream 关闭)', en: 'Streaming output (default: on, use --no-stream to disable)' },\n 'flag.chat.noStream': { zh: '禁用流式输出', en: 'Disable streaming output' },\n 'flag.chat.json': { zh: '结构化 JSON 输出', en: 'Structured JSON output' },\n 'flag.chat.maxTokens': { zh: '最大生成令牌数', en: 'Max completion tokens' },\n 'flag.chat.temperature': { zh: '采样温度', en: 'Sampling temperature' },\n\n // ---- REPL 选项 ----\n 'flag.repl.model': { zh: '模型名称(默认:mimo-v2.5-pro)', en: 'Model name (default: mimo-v2.5-pro)' },\n 'flag.repl.thinking': { zh: '启用深度思考模式', en: 'Enable thinking mode' },\n 'flag.repl.search': { zh: '启用联网搜索', en: 'Enable web search' },\n 'flag.repl.system': { zh: '系统提示词', en: 'System prompt' },\n\n // ---- Vision 选项 ----\n 'flag.vision.image': { zh: '图片路径或 URL', en: 'Image file path or URL' },\n 'flag.vision.audio': { zh: '音频路径或 URL', en: 'Audio file path or URL' },\n 'flag.vision.video': { zh: '视频路径或 URL', en: 'Video file path or URL' },\n 'flag.vision.prompt': { zh: '对内容的提问', en: 'Question about the content' },\n 'flag.vision.model': { zh: '模型名称(默认:mimo-v2.5)', en: 'Model name (default: mimo-v2.5)' },\n 'flag.vision.stream': { zh: '流式输出(默认开启,用 --no-stream 关闭)', en: 'Streaming output (default: on, use --no-stream to disable)' },\n 'flag.vision.noStream': { zh: '禁用流式输出', en: 'Disable streaming output' },\n 'flag.vision.fps': { zh: '视频帧率(默认:2)', en: 'Video frame rate (default: 2)' },\n 'flag.vision.mediaResolution': { zh: '视频分辨率:default | max', en: 'Video resolution: default | max' },\n\n // ---- ASR 选项 ----\n 'flag.asr.language': { zh: '语言:auto | zh | en(默认:auto)', en: 'Language: auto | zh | en (default: auto)' },\n 'flag.asr.stream': { zh: '启用流式输出', en: 'Enable streaming output' },\n 'flag.asr.file': { zh: '音频文件路径(替代位置参数)', en: 'Audio file path (alternative to positional arg)' },\n\n // ---- TTS 选项 ----\n 'flag.tts.text': { zh: '待合成文本', en: 'Text to synthesize' },\n 'flag.tts.voice': { zh: '音色 ID(默认:mimo_default)', en: 'Voice ID (default: mimo_default)' },\n 'flag.tts.style': { zh: '自然语言风格指令', en: 'Natural language style instruction' },\n 'flag.tts.format': { zh: '音频格式:wav/mp3/pcm(默认:wav)', en: 'Audio format: wav/mp3/pcm (default: wav)' },\n 'flag.tts.out': { zh: '输出文件路径', en: 'Output file path' },\n 'flag.tts.sample': { zh: '音频样本文件路径(mp3/wav)', en: 'Audio sample file path (mp3/wav)' },\n 'flag.ttsDesign.prompt': { zh: '音色描述文本', en: 'Voice description text' },\n 'flag.ttsDesign.text': { zh: '待合成文本(启用 --optimize-text 时可省略)', en: 'Text to synthesize (optional if --optimize-text)' },\n 'flag.ttsDesign.optimizeText': { zh: '启用智能文本预览优化', en: 'Enable smart text preview optimization' },\n\n // ---- Config 选项 ----\n 'flag.config.key': { zh: '要设置的配置键', en: 'Config key to set' },\n 'flag.config.value': { zh: '要设置的配置值', en: 'Config value to set' },\n\n // ---- Help 选项 ----\n 'flag.help.command': { zh: '要查看帮助的命令路径(如 \"auth login\")', en: 'Command path to get help for (e.g. \"auth login\")' },\n\n // ---- Auth 选项 ----\n 'flag.auth.apiKey': { zh: '直接保存 API Key(跳过交互式输入)', en: 'API key to save (skips interactive prompt)' },\n\n // ---- Registry 错误 ----\n 'registry.unknownCommand': { zh: '未知命令:mimo {command}', en: 'Unknown command: mimo {command}' },\n 'registry.availableCommands': { zh: '可用命令:', en: 'Available commands:' },\n 'registry.runHelp': { zh: '运行 mimo {command} --help 查看更多信息。', en: 'Run mimo {command} --help for more information.' },\n 'registry.runHelpRoot': { zh: '运行 mimo --help 查看可用命令。', en: 'Run mimo --help for available commands.' },\n\n // ---- 通用 ----\n 'general.notSet': { zh: '(未设置)', en: '(not set)' },\n 'general.or': { zh: '或', en: 'or' },\n};\n\n// ============================================================\n// 翻译函数\n// ============================================================\n\n/**\n * 获取翻译文本,支持模板变量替换\n * @param key 翻译键\n * @param vars 模板变量,如 { size: '120', limit: '50' }\n */\nexport function t(key: string, vars?: Record<string, string | number>): string {\n const entry = translations[key];\n if (!entry) return key;\n let text = entry[currentLocale] || entry['zh'] || key;\n if (vars) {\n for (const [k, v] of Object.entries(vars)) {\n text = text.replace(new RegExp(`\\\\{${k}\\\\}`, 'g'), String(v));\n }\n }\n return text;\n}\n",
11
+ "// ============================================================\n// MiMo CLI 国际化 (i18n) 模块\n// ============================================================\n\nexport type Locale = 'zh' | 'en';\n\n// 当前语言,默认中文\nlet currentLocale: Locale = 'zh';\n\nexport function getLocale(): Locale {\n return currentLocale;\n}\n\nexport function setLocale(locale: Locale): void {\n if (locale !== 'zh' && locale !== 'en') {\n currentLocale = 'zh';\n } else {\n currentLocale = locale;\n }\n}\n\n// 从配置值初始化语言\nexport function initLocale(configLang?: string): void {\n if (!configLang) {\n // 尝试从环境变量检测\n const envLang = process.env.LANG || process.env.LC_ALL || process.env.LC_MESSAGES || '';\n if (envLang.startsWith('zh')) {\n currentLocale = 'zh';\n } else {\n currentLocale = 'zh'; // 默认中文\n }\n return;\n }\n if (configLang === 'en') {\n currentLocale = 'en';\n } else {\n currentLocale = 'zh';\n }\n}\n\n// ============================================================\n// 翻译字典\n// ============================================================\n\nconst translations: Record<string, Record<Locale, string>> = {\n // ---- 主界面 ----\n 'main.usage': {\n zh: '用法:mimo <资源> <命令> [参数]',\n en: 'Usage: mimo <resource> <command> [flags]',\n },\n 'main.resources': {\n zh: '可用命令:',\n en: 'Resources:',\n },\n 'main.globalFlags': {\n zh: '全局参数:',\n en: 'Global Flags:',\n },\n 'main.gettingHelp': {\n zh: '获取帮助:',\n en: 'Getting Help:',\n },\n 'main.helpHint1': {\n zh: '在任何命令后添加 --help 查看完整选项、默认值和示例。',\n en: 'Add --help after any command to see its full list of options, defaults,',\n },\n 'main.helpHint2': {\n zh: '例如:',\n en: 'and usage examples. For example:',\n },\n 'main.notLoggedIn': {\n zh: ' 尚未配置 API Key。',\n en: ' No API key configured.',\n },\n 'main.loginHint1': {\n zh: ' mimo auth login 交互式输入 API Key',\n en: ' mimo auth login Enter an API key interactively',\n },\n 'main.loginHint2': {\n zh: ' mimo auth login --api-key 直接保存 API Key',\n en: ' mimo auth login --api-key Save an API key directly',\n },\n 'main.interrupted': {\n zh: '\\n已中断,退出。',\n en: '\\nInterrupted. Exiting.',\n },\n 'main.fatalArgv': {\n zh: '致命错误:无法读取进程参数。\\n',\n en: 'Fatal: failed to read process arguments.\\n',\n },\n\n // ---- 命令帮助 ----\n 'help.usage': { zh: '用法:', en: 'Usage:' },\n 'help.options': { zh: '选项:', en: 'Options:' },\n 'help.examples': { zh: '示例:', en: 'Examples:' },\n 'help.apiRef': { zh: 'API 参考:', en: 'API Reference:' },\n 'help.commands': { zh: '子命令:', en: 'Commands:' },\n 'help.globalHint': {\n zh: '全局参数(--api-key、--output、--quiet 等)始终可用。',\n en: 'Global flags (--api-key, --output, --quiet, etc.) are always available.',\n },\n 'help.globalHintRun': {\n zh: '运行 mimo --help 查看完整列表。',\n en: 'Run mimo --help for the full list.',\n },\n\n // ---- 错误处理 ----\n 'error.prefix': { zh: '错误:', en: 'Error:' },\n 'error.exitCode': { zh: '(退出码 {code})', en: '(exit code {code})' },\n 'error.timeout': { zh: '请求超时。', en: 'Request timed out.' },\n 'error.timeoutHint': {\n zh: '尝试增大超时时间(如 --timeout 60)。\\n如果使用有效 API Key 仍然频繁超时,请检查网络和区域。\\n运行:mimo auth status — 检查认证状态。',\n en: 'Try increasing --timeout (e.g. --timeout 60).\\nIf this happens on every request with a valid API key, check your network and region.\\nRun: mimo auth status — to check your credentials.',\n },\n 'error.network': { zh: '网络请求失败。', en: 'Network request failed.' },\n 'error.networkHint': {\n zh: '请检查网络连接。\\n如需使用代理:设置 HTTPS_PROXY 环境变量,或运行:mimo config set proxy http://HOST:PORT',\n en: 'Check your network connection.\\nTo use a proxy: set HTTPS_PROXY env var, or run: mimo config set proxy http://HOST:PORT',\n },\n 'error.proxyHint': {\n zh: '代理连接失败 — 请检查代理 URL 和认证信息。\\n检查:HTTPS_PROXY / HTTP_PROXY 环境变量,或运行 mimo config show 查看已配置的代理。',\n en: 'Proxy connection failed — verify your proxy URL and authentication.\\nCheck: HTTPS_PROXY / HTTP_PROXY env vars, or mimo config show for configured proxy.',\n },\n 'error.fsEnoent': { zh: '文件或目录不存在。', en: 'File or directory not found.' },\n 'error.fsEacces': { zh: '权限不足 — 请检查文件或目录权限。', en: 'Permission denied — check file or directory permissions.' },\n 'error.fsEnospc': { zh: '磁盘空间不足 — 请释放空间后重试。', en: 'Disk full — free up space and try again.' },\n 'error.fsDefault': { zh: '请检查文件路径和权限。', en: 'Check the file path and permissions.' },\n 'error.fsPrefix': { zh: '文件系统错误:', en: 'File system error: ' },\n\n // ---- API 错误 ----\n 'api.400': { zh: '请求参数错误:', en: 'Bad request: ' },\n 'api.400Hint': { zh: '请检查请求格式和参数。', en: 'Check your request format and parameters.' },\n 'api.401': { zh: '认证失败(HTTP 401)。', en: 'Authentication failed (HTTP 401).' },\n 'api.401Hint': { zh: '请检查 API Key:mimo auth status\\n重新登录:mimo auth login', en: 'Check your API Key: mimo auth status\\nRe-authenticate: mimo auth login' },\n 'api.402': { zh: '余额不足:', en: 'Payment required: ' },\n 'api.402Hint': { zh: '账户余额不足,请充值。', en: 'Insufficient balance. Please top up your account.' },\n 'api.403': { zh: '访问被拒绝(HTTP 403)。', en: 'Access denied (HTTP 403).' },\n 'api.403Hint': { zh: '您的 API Key 可能无权访问此资源,或 Key 受限。\\n请检查 API Key 权限。', en: 'Your API Key may not have access to this resource, or the key is restricted.\\nCheck your API Key permissions.' },\n 'api.404': { zh: '未找到:', en: 'Not found: ' },\n 'api.404Hint': { zh: '请求的模型或功能可能不受支持,请检查模型名称和接口地址。', en: 'The requested model or feature may not be supported. Check the model name and endpoint.' },\n 'api.421': { zh: '内容被过滤:', en: 'Content filtered: ' },\n 'api.421Hint': { zh: '您的输入被内容安全过滤器标记,请修改后重试。', en: 'Your input was flagged by the content safety filter. Please modify your request and try again.' },\n 'api.429': { zh: '请求频率超限:', en: 'Rate limit exceeded: ' },\n 'api.429Hint': { zh: '请求过于频繁,请稍后重试或检查配额。', en: 'You are sending requests too quickly. Please wait and retry, or check your quota.' },\n 'api.500': { zh: '服务器内部错误(HTTP 500)。', en: 'Server error (HTTP 500).' },\n 'api.500Hint': { zh: '服务器遇到内部错误,请稍后重试。', en: 'The server encountered an internal error. Please retry later.' },\n 'api.503': { zh: '服务暂不可用(HTTP 503)。', en: 'Service unavailable (HTTP 503).' },\n 'api.503Hint': { zh: '服务器暂时过载或维护中,请稍后重试。', en: 'The server is temporarily overloaded or under maintenance. Please retry later.' },\n 'api.default': { zh: 'API 错误:', en: 'API error: ' },\n\n // ---- 认证 ----\n 'auth.noCreds': { zh: '未找到 API Key。', en: 'No API key found.' },\n 'auth.noCredsHint': {\n zh: '登录: mimo auth login\\n直接传入: --api-key <key>\\n环境变量: MIMO_API_KEY=<key>',\n en: 'Log in: mimo auth login\\nPass directly: --api-key <key>\\nSet env var: MIMO_API_KEY=<key>',\n },\n 'auth.noKeyProvided': { zh: '未提供 API Key。', en: 'No API key provided.' },\n 'auth.noKeyHint': { zh: '使用:mimo auth login --api-key <key>', en: 'Use: mimo auth login --api-key <key>' },\n 'auth.keyEmpty': { zh: 'API Key 不能为空。', en: 'API key cannot be empty.' },\n 'auth.keyRequired': { zh: 'API Key 为必填项。', en: 'API key is required.' },\n 'auth.keySaved': { zh: 'API Key 已保存至', en: 'API key saved to' },\n 'auth.baseUrlAuto': { zh: '接口地址已自动配置:', en: 'Base URL auto-configured: ' },\n 'auth.promptTitle': { zh: '请输入您的 MiMo API Key:', en: 'Please enter your MiMo API key:' },\n 'auth.promptPayKey': { zh: '- 按量计费 Key:以 \"sk-\" 等非 \"tp-\" 前缀开头', en: '- Pay-as-you-go Key: starts with \"sk-\" or other non-\"tp-\" prefix' },\n 'auth.promptTpKey': { zh: '- TokenPlan Key:以 \"tp-\" 前缀开头', en: '- TokenPlan Key: starts with \"tp-\" prefix' },\n 'auth.promptLabel': { zh: '输入 MiMo API Key:', en: 'Enter your MiMo API key:' },\n 'auth.logoutNoKey': { zh: '配置文件中未找到 API Key,已处于登出状态。', en: 'No API key found in config file. Already logged out.' },\n 'auth.logoutDone': { zh: 'API Key 已移除,您已登出。', en: 'API key removed. You are now logged out.' },\n\n // ---- 命令描述 ----\n 'cmd.chat.desc': { zh: '发送对话请求', en: 'Send a chat completion request' },\n 'cmd.repl.desc': { zh: '交互式多轮对话', en: 'Interactive multi-turn REPL conversation' },\n 'cmd.vision.desc': { zh: '多模态理解(图片、音频、视频)', en: 'Multi-modal understanding (image, audio, video)' },\n 'cmd.asr.desc': { zh: '语音识别(ASR)', en: 'Speech recognition (ASR)' },\n 'cmd.ttsSynth.desc': { zh: '预设音色语音合成', en: 'Pre-set voice text-to-speech synthesis' },\n 'cmd.ttsClone.desc': { zh: '声音克隆语音合成', en: 'Voice clone text-to-speech synthesis' },\n 'cmd.ttsDesign.desc': { zh: '自定义音色语音合成', en: 'Voice design text-to-speech synthesis' },\n 'cmd.ttsVoices.desc': { zh: '列出可用的 TTS 音色', en: 'List available TTS voices' },\n 'cmd.authLogin.desc': { zh: '使用 MiMo API Key 登录(自动识别按量计费/TokenPlan)', en: 'Log in with a MiMo API key (auto-detects key type: Pay-as-you-go or TokenPlan)' },\n 'cmd.authStatus.desc': { zh: '查看当前认证状态', en: 'Show current authentication status' },\n 'cmd.authLogout.desc': { zh: '清除已保存的 API Key', en: 'Clear saved API key from config file' },\n 'cmd.configShow.desc': { zh: '显示当前配置', en: 'Display current configuration' },\n 'cmd.configSet.desc': { zh: '设置配置项', en: 'Set a configuration value' },\n 'cmd.update.desc': { zh: '更新 MiMo CLI', en: 'Self-update the MiMo CLI' },\n 'cmd.help.desc': { zh: '显示命令帮助', en: 'Show help for commands' },\n 'cmd.language.desc': { zh: '切换界面语言(zh/en)', en: 'Switch interface language (zh/en)' },\n\n // ---- 视频理解错误 ----\n 'vision.videoTooLarge': {\n zh: '视频文件过大:{size}MB(原始)。Base64 编码后将超过 {limit}MB 的 API 限制。',\n en: 'Video file too large: {size}MB (raw). After Base64 encoding it would exceed the {limit}MB API limit.',\n },\n 'vision.videoTooLargeHint': {\n zh: '请改用 URL 方式传入视频(URL 模式支持最大 300MB),或将视频压缩至 {max}MB 以下。',\n en: 'Please use a URL to pass the video instead (URL mode supports up to 300MB), or compress the video to under {max}MB.',\n },\n 'vision.videoBase64TooLarge': {\n zh: '视频 Base64 大小 {size}MB 超过 {limit}MB 的 API 限制。',\n en: 'Video Base64 size {size}MB exceeds the {limit}MB API limit.',\n },\n 'vision.videoBase64TooLargeHint': {\n zh: '请改用 URL 方式传入视频(URL 模式支持最大 300MB),或压缩视频。',\n en: 'Please use a URL to pass the video instead (URL mode supports up to 300MB), or compress the video.',\n },\n 'vision.noMedia': {\n zh: '至少需要提供 --image、--audio 或 --video 中的一项。',\n en: 'At least one of --image, --audio, or --video is required.',\n },\n 'vision.noPrompt': {\n zh: '缺少必填参数:--prompt',\n en: 'Missing required flag: --prompt',\n },\n 'vision.requestFailed': {\n zh: '多模态请求失败:',\n en: 'Vision request failed: ',\n },\n 'vision.requestFailedHint': {\n zh: '请检查网络连接和媒体文件格式。',\n en: 'Check your network connection and media file format.',\n },\n\n // ---- Chat 错误 ----\n 'chat.noMessage': { zh: '缺少必填参数:--message', en: 'Missing required flag: --message' },\n 'chat.emptyMessage': { zh: '消息不能为空或仅包含空白字符。', en: 'Message cannot be empty or whitespace only.' },\n 'chat.messageTooLong': { zh: '消息过长:{len} 字符(上限 {max})。', en: 'Message too long: {len} characters (max {max}).' },\n 'chat.messageTooLongHint': { zh: '请缩短消息或拆分为多次请求。', en: 'Shorten your message or split it into multiple requests.' },\n 'chat.streamFailed': { zh: '流式请求失败:', en: 'Stream request failed: ' },\n 'chat.streamFailedHint': { zh: '请检查网络连接和 API Key。', en: 'Check your network connection and API key.' },\n\n // ---- ASR 错误 ----\n 'asr.noFile': { zh: '需要提供音频文件路径。', en: 'Audio file path is required.' },\n 'asr.streamFailed': { zh: '语音识别流式请求失败:', en: 'ASR stream request failed: ' },\n 'asr.requestFailed': { zh: '语音识别请求失败:', en: 'ASR request failed: ' },\n 'asr.checkHint': { zh: '请检查网络连接和音频文件格式。', en: 'Check your network connection and audio file format.' },\n\n // ---- TTS 错误 ----\n 'tts.noText': { zh: '--text 为必填项。', en: '--text is required.' },\n 'tts.emptyText': { zh: '--text 不能为空或仅包含空白字符。', en: '--text cannot be empty or whitespace only.' },\n 'tts.textTooLong': { zh: '文本过长:{len} 字符(上限 {max})。', en: 'Text too long: {len} characters (max {max}).' },\n 'tts.textTooLongHint': { zh: '请缩短文本或拆分为多次合成请求。', en: 'Shorten your text or split into multiple synthesis requests.' },\n 'tts.noSample': { zh: '--sample 为必填项。', en: '--sample is required.' },\n 'tts.noPrompt': { zh: '--prompt 为必填项。', en: '--prompt is required.' },\n 'tts.noTextOrOptimize': { zh: '需要提供 --text 或启用 --optimize-text。', en: 'Either --text or --optimize-text is required.' },\n 'tts.noAudioData': { zh: 'API 响应中缺少音频数据。', en: 'API response missing audio data.' },\n 'tts.invalidVoice': { zh: '无效音色:', en: 'Invalid voice: ' },\n\n // ---- Config ----\n 'config.keyRequired': { zh: '--key 为必填项。', en: '--key is required.' },\n 'config.valueRequired': { zh: '--value 为必填项。', en: '--value is required.' },\n 'config.invalidKey': { zh: '无效的配置键:', en: 'Invalid config key: ' },\n 'config.invalidKeyChars': { zh: '配置键只能包含字母、数字和下划线。', en: 'Config key must only contain letters, numbers, and underscores.' },\n 'config.validKeys': { zh: '有效的键:', en: 'Valid keys: ' },\n 'config.setTimeout': { zh: 'timeout 必须为正数。', en: 'timeout must be a positive number.' },\n 'config.setOutput': { zh: 'output 必须为 \"text\" 或 \"json\"。', en: 'output must be \"text\" or \"json\".' },\n 'config.setDone': { zh: '已设置', en: 'Set' },\n 'config.invalidActiveKey': { zh: 'active_key 必须为 \"tp\" 或 \"sk\"。', en: 'active_key must be \"tp\" or \"sk\".' },\n 'config.switchKey': { zh: '已切换为{type} Key({url})', en: 'Switched to {type} key ({url})' },\n 'config.corrupted': { zh: '警告:配置文件已损坏(', en: 'Warning: config file is corrupted (' },\n 'config.corruptedHint': { zh: ')。运行 \"mimo config set\" 重置。\\n', en: '). Run \\'mimo config set\\' to reset.\\n' },\n\n // ---- Update ----\n 'update.checking': { zh: '正在检查更新...', en: 'Checking for updates...' },\n 'update.checkFailed': { zh: '无法检查更新,请检查网络连接。', en: 'Failed to check for updates. Please check your network connection.' },\n 'update.currentVersion': { zh: '当前版本:{version}', en: 'Current version: {version}' },\n 'update.latestVersion': { zh: '最新版本:{version}', en: 'Latest version: {version}' },\n 'update.alreadyLatest': { zh: '已是最新版本,无需更新。', en: 'Already up to date.' },\n 'update.updating': { zh: '正在更新至 v{version}...', en: 'Updating to v{version}...' },\n 'update.success': { zh: '更新成功!已升级至 v{version}。', en: 'Update successful! Upgraded to v{version}.' },\n 'update.updateFailed': { zh: 'npm update 失败,尝试 npm install...', en: 'npm update failed, trying npm install...' },\n 'update.installFailed': { zh: '自动更新失败。', en: 'Auto-update failed.' },\n 'update.manualHint': { zh: '请手动执行:npm install -g mimo-cli@latest', en: 'Please run manually: npm install -g mimo-cli@latest' },\n\n // ---- REPL ----\n 'repl.intro': { zh: 'MiMo 交互对话 — 输入 /exit 退出,/clear 清空对话', en: 'MiMo REPL — type /exit to quit, /clear to reset' },\n 'repl.you': { zh: '你', en: 'You' },\n 'repl.placeholder': { zh: '输入你的消息...', en: 'Type your message...' },\n 'repl.goodbye': { zh: '再见!', en: 'Goodbye!' },\n 'repl.cleared': { zh: '对话已清空。', en: 'Conversation cleared.' },\n\n // ---- Spinner ----\n 'spinner.synthesizing': { zh: '正在合成语音...', en: 'Synthesizing speech...' },\n 'spinner.readingSample': { zh: '正在读取音频样本...', en: 'Reading audio sample...' },\n 'spinner.cloning': { zh: '正在合成克隆语音...', en: 'Synthesizing cloned speech...' },\n 'spinner.designing': { zh: '正在设计音色...', en: 'Designing voice...' },\n\n // ---- Language 命令 ----\n 'language.current': { zh: '当前界面语言:', en: 'Current interface language: ' },\n 'language.changed': { zh: '界面语言已切换为中文。', en: 'Interface language changed to English.' },\n 'language.invalid': { zh: '无效的语言代码,请使用 zh(中文)或 en(英文)。', en: 'Invalid language code. Use zh (Chinese) or en (English).' },\n 'language.hint': { zh: '使用:mimo language zh 或 mimo language en', en: 'Usage: mimo language zh or mimo language en' },\n\n // ---- 全局参数 ----\n 'flag.apiKey': { zh: '覆盖配置中的 API Key', en: 'Override API Key from config' },\n 'flag.baseUrl': { zh: '覆盖接口地址', en: 'Override API base URL' },\n 'flag.output': { zh: '输出格式(text/json)', en: 'Output format (text/json)' },\n 'flag.timeout': { zh: '请求超时时间(秒)', en: 'Request timeout in seconds' },\n 'flag.quiet': { zh: '静默模式,仅输出必要信息', en: 'Suppress non-essential output' },\n 'flag.verbose': { zh: '显示详细日志', en: 'Show verbose logging' },\n 'flag.noColor': { zh: '禁用彩色输出', en: 'Disable colored output' },\n 'flag.dryRun': { zh: '仅打印请求体,不实际执行', en: 'Print request body without executing' },\n 'flag.nonInteractive': { zh: '非交互模式', en: 'Non-interactive mode' },\n 'flag.help': { zh: '显示帮助信息', en: 'Show help' },\n 'flag.version': { zh: '显示版本号', en: 'Show version' },\n\n // ---- Chat 选项 ----\n 'flag.chat.message': { zh: '消息内容', en: 'Message text' },\n 'flag.chat.model': { zh: '模型名称(默认:mimo-v2.5-pro)', en: 'Model name (default: mimo-v2.5-pro)' },\n 'flag.chat.system': { zh: '系统提示词', en: 'System prompt' },\n 'flag.chat.thinking': { zh: '启用深度思考模式', en: 'Enable thinking mode' },\n 'flag.chat.search': { zh: '启用联网搜索', en: 'Enable web search' },\n 'flag.chat.forceSearch': { zh: '强制联网搜索', en: 'Force web search' },\n 'flag.chat.maxKeyword': { zh: '单次搜索最大关键词数量', en: 'Max keywords per search' },\n 'flag.chat.searchLimit': { zh: '搜索结果数量限制', en: 'Search result limit' },\n 'flag.chat.userCountry': { zh: '用户位置:国家', en: 'User location: country' },\n 'flag.chat.userRegion': { zh: '用户位置:地区', en: 'User location: region' },\n 'flag.chat.userCity': { zh: '用户位置:城市', en: 'User location: city' },\n 'flag.chat.stream': { zh: '流式输出(默认开启,用 --no-stream 关闭)', en: 'Streaming output (default: on, use --no-stream to disable)' },\n 'flag.chat.noStream': { zh: '禁用流式输出', en: 'Disable streaming output' },\n 'flag.chat.json': { zh: '结构化 JSON 输出', en: 'Structured JSON output' },\n 'flag.chat.maxTokens': { zh: '最大生成令牌数', en: 'Max completion tokens' },\n 'flag.chat.temperature': { zh: '采样温度', en: 'Sampling temperature' },\n\n // ---- REPL 选项 ----\n 'flag.repl.model': { zh: '模型名称(默认:mimo-v2.5-pro)', en: 'Model name (default: mimo-v2.5-pro)' },\n 'flag.repl.thinking': { zh: '启用深度思考模式', en: 'Enable thinking mode' },\n 'flag.repl.search': { zh: '启用联网搜索', en: 'Enable web search' },\n 'flag.repl.system': { zh: '系统提示词', en: 'System prompt' },\n\n // ---- Vision 选项 ----\n 'flag.vision.image': { zh: '图片路径或 URL', en: 'Image file path or URL' },\n 'flag.vision.audio': { zh: '音频路径或 URL', en: 'Audio file path or URL' },\n 'flag.vision.video': { zh: '视频路径或 URL', en: 'Video file path or URL' },\n 'flag.vision.prompt': { zh: '对内容的提问', en: 'Question about the content' },\n 'flag.vision.model': { zh: '模型名称(默认:mimo-v2.5)', en: 'Model name (default: mimo-v2.5)' },\n 'flag.vision.stream': { zh: '流式输出(默认开启,用 --no-stream 关闭)', en: 'Streaming output (default: on, use --no-stream to disable)' },\n 'flag.vision.noStream': { zh: '禁用流式输出', en: 'Disable streaming output' },\n 'flag.vision.fps': { zh: '视频帧率(默认:2)', en: 'Video frame rate (default: 2)' },\n 'flag.vision.mediaResolution': { zh: '视频分辨率:default | max', en: 'Video resolution: default | max' },\n\n // ---- ASR 选项 ----\n 'flag.asr.language': { zh: '语言:auto | zh | en(默认:auto)', en: 'Language: auto | zh | en (default: auto)' },\n 'flag.asr.stream': { zh: '启用流式输出', en: 'Enable streaming output' },\n 'flag.asr.file': { zh: '音频文件路径(替代位置参数)', en: 'Audio file path (alternative to positional arg)' },\n\n // ---- TTS 选项 ----\n 'flag.tts.text': { zh: '待合成文本', en: 'Text to synthesize' },\n 'flag.tts.voice': { zh: '音色 ID(默认:mimo_default)', en: 'Voice ID (default: mimo_default)' },\n 'flag.tts.style': { zh: '自然语言风格指令', en: 'Natural language style instruction' },\n 'flag.tts.format': { zh: '音频格式:wav/mp3/pcm(默认:wav)', en: 'Audio format: wav/mp3/pcm (default: wav)' },\n 'flag.tts.out': { zh: '输出文件路径', en: 'Output file path' },\n 'flag.tts.sample': { zh: '音频样本文件路径(mp3/wav)', en: 'Audio sample file path (mp3/wav)' },\n 'flag.ttsDesign.prompt': { zh: '音色描述文本', en: 'Voice description text' },\n 'flag.ttsDesign.text': { zh: '待合成文本(启用 --optimize-text 时可省略)', en: 'Text to synthesize (optional if --optimize-text)' },\n 'flag.ttsDesign.optimizeText': { zh: '启用智能文本预览优化', en: 'Enable smart text preview optimization' },\n\n // ---- Config 选项 ----\n 'flag.config.key': { zh: '要设置的配置键', en: 'Config key to set' },\n 'flag.config.value': { zh: '要设置的配置值', en: 'Config value to set' },\n\n // ---- Help 选项 ----\n 'flag.help.command': { zh: '要查看帮助的命令路径(如 \"auth login\")', en: 'Command path to get help for (e.g. \"auth login\")' },\n\n // ---- Auth 选项 ----\n 'flag.auth.apiKey': { zh: '直接保存 API Key(跳过交互式输入)', en: 'API key to save (skips interactive prompt)' },\n\n // ---- Registry 错误 ----\n 'registry.unknownCommand': { zh: '未知命令:mimo {command}', en: 'Unknown command: mimo {command}' },\n 'registry.availableCommands': { zh: '可用命令:', en: 'Available commands:' },\n 'registry.runHelp': { zh: '运行 mimo {command} --help 查看更多信息。', en: 'Run mimo {command} --help for more information.' },\n 'registry.runHelpRoot': { zh: '运行 mimo --help 查看可用命令。', en: 'Run mimo --help for available commands.' },\n\n // ---- 通用 ----\n 'general.notSet': { zh: '(未设置)', en: '(not set)' },\n 'general.or': { zh: '或', en: 'or' },\n};\n\n// ============================================================\n// 翻译函数\n// ============================================================\n\n/**\n * 获取翻译文本,支持模板变量替换\n * @param key 翻译键\n * @param vars 模板变量,如 { size: '120', limit: '50' }\n */\nexport function t(key: string, vars?: Record<string, string | number>): string {\n const entry = translations[key];\n if (!entry) return key;\n let text = entry[currentLocale] || entry['zh'] || key;\n if (vars) {\n for (const [k, v] of Object.entries(vars)) {\n text = text.replace(new RegExp(`\\\\{${k}\\\\}`, 'g'), String(v));\n }\n }\n return text;\n}\n",
12
12
  "import { CLIError } from './base';\nimport { ExitCode } from './codes';\nimport { redactApiKeysInText } from '../utils/sanitize';\nimport { t } from '../i18n';\n\nexport interface ApiErrorBody {\n error?: {\n message?: string;\n type?: string;\n code?: string | number;\n };\n message?: string;\n msg?: string;\n}\n\nexport function mapApiError(status: number, body: ApiErrorBody, url: string): CLIError {\n // 对 API 错误消息做脱敏处理,防止泄露认证信息\n const apiMsg =\n redactApiKeysInText(\n body.error?.message ||\n body.message ||\n body.msg ||\n `HTTP ${status}`\n );\n\n switch (status) {\n case 400:\n return new CLIError(\n t('api.400') + apiMsg,\n ExitCode.USAGE,\n t('api.400Hint'),\n );\n\n case 401:\n return new CLIError(\n t('api.401'),\n ExitCode.AUTH,\n t('api.401Hint'),\n );\n\n case 402:\n return new CLIError(\n t('api.402') + apiMsg,\n ExitCode.QUOTA,\n t('api.402Hint'),\n );\n\n case 403:\n return new CLIError(\n t('api.403'),\n ExitCode.AUTH,\n t('api.403Hint'),\n );\n\n case 404:\n return new CLIError(\n t('api.404') + apiMsg,\n ExitCode.USAGE,\n t('api.404Hint'),\n );\n\n case 421:\n return new CLIError(\n t('api.421') + apiMsg,\n ExitCode.CONTENT_FILTER,\n t('api.421Hint'),\n );\n\n case 429:\n return new CLIError(\n t('api.429') + apiMsg,\n ExitCode.QUOTA,\n t('api.429Hint'),\n );\n\n case 500:\n return new CLIError(\n t('api.500'),\n ExitCode.NETWORK,\n t('api.500Hint'),\n );\n\n case 503:\n return new CLIError(\n t('api.503'),\n ExitCode.NETWORK,\n t('api.503Hint'),\n );\n\n default:\n return new CLIError(\n t('api.default') + apiMsg + ' (HTTP ' + status + ')',\n ExitCode.GENERAL,\n );\n }\n}\n",
13
13
  "// ============================================================\n// MiMo 扩展类型定义\n// ============================================================\n\n// Chat\nexport interface ChatMessage {\n role: 'system' | 'user' | 'assistant' | 'tool';\n content: string | ContentPart[];\n reasoning_content?: string;\n tool_calls?: ToolCall[];\n tool_call_id?: string;\n}\n\nexport type ContentPart = TextPart | ImageUrlPart | InputAudioPart | VideoUrlPart;\n\nexport interface TextPart {\n type: 'text';\n text: string;\n}\n\nexport interface ImageUrlPart {\n type: 'image_url';\n image_url: { url: string };\n}\n\nexport interface InputAudioPart {\n type: 'input_audio';\n input_audio: { data: string };\n}\n\nexport interface VideoUrlPart {\n type: 'video_url';\n video_url: { url: string };\n fps?: number;\n media_resolution?: 'default' | 'max';\n}\n\nexport interface ToolCall {\n id: string;\n type: 'function';\n function: { name: string; arguments: string };\n}\n\nexport interface ChatRequest {\n model: string;\n messages: ChatMessage[];\n max_completion_tokens?: number;\n temperature?: number;\n top_p?: number;\n stream?: boolean;\n stop?: string | string[];\n frequency_penalty?: number;\n presence_penalty?: number;\n thinking?: { type: 'enabled' | 'disabled' };\n tools?: ToolDef[];\n tool_choice?: string;\n response_format?: { type: 'text' | 'json_object' };\n audio?: AudioOutputConfig;\n asr_options?: { language: 'auto' | 'zh' | 'en' };\n}\n\nexport interface ToolDef {\n type: 'function' | 'web_search';\n // 使用 Record<string, unknown> 替代 any,表示任意 JSON Schema 对象\n function?: { name: string; description?: string; parameters?: Record<string, unknown>; strict?: boolean };\n max_keyword?: number;\n force_search?: boolean;\n limit?: number;\n user_location?: { type: string; country?: string; region?: string; city?: string };\n}\n\nexport interface AudioOutputConfig {\n format?: 'wav' | 'mp3' | 'pcm' | 'pcm16';\n voice?: string;\n optimize_text_preview?: boolean;\n}\n\nexport interface ChatResponse {\n id: string;\n object: string;\n created: number;\n model: string;\n choices: ChatChoice[];\n usage?: Usage;\n}\n\nexport interface ChatChoice {\n index: number;\n message: ChatMessage & { audio?: AudioData; annotations?: Annotation[] };\n finish_reason: string;\n}\n\n// 流式响应 delta 类型,替代原来的 any\nexport interface ChatStreamDelta {\n role?: string;\n content?: string;\n reasoning_content?: string;\n annotations?: Annotation[];\n}\n\nexport interface ChatStreamChunk {\n id: string;\n object: 'chat.completion.chunk';\n created: number;\n model: string;\n choices: { index: number; delta: ChatStreamDelta; finish_reason: string | null }[];\n usage?: Usage;\n}\n\nexport interface AudioData {\n id: string;\n data: string;\n expires_at: number | null;\n transcript: string | null;\n}\n\nexport interface Annotation {\n type: string;\n url: string;\n title: string;\n summary: string;\n site_name: string;\n publish_time: string;\n logo_url: string;\n}\n\nexport interface Usage {\n prompt_tokens: number;\n completion_tokens: number;\n total_tokens: number;\n completion_tokens_details?: { reasoning_tokens: number };\n prompt_tokens_details?: {\n cached_tokens: number;\n audio_tokens: number;\n image_tokens: number;\n video_tokens: number;\n };\n web_search_usage?: { tool_usage: number; page_usage: number };\n seconds?: number;\n}\n\n// TTS voices\nexport interface TTSVoice {\n name: string;\n voiceId: string;\n language: string;\n gender: string;\n}\n\n// ============================================================\n// MiMo 扩展的 ChatCompletion 消息类型\n// ============================================================\n\nexport interface MiMoChatMessage {\n role: 'system' | 'user' | 'assistant';\n content: string | MiMoContentPart[];\n reasoning_content?: string; // MiMo 推理过程\n}\n\nexport interface MiMoContentPart {\n type: 'text' | 'image_url' | 'input_audio' | 'video_url';\n text?: string;\n image_url?: { url: string };\n input_audio?: { data: string; format?: string };\n video_url?: { url: string };\n}\n\n// MiMo 扩展的 ChatCompletion 参数\nexport interface MiMoChatCompletionParams {\n model: string;\n messages: MiMoChatMessage[];\n stream?: boolean;\n temperature?: number;\n max_tokens?: number;\n top_p?: number;\n // MiMo 特有参数\n search?: boolean;\n reasoning_effort?: 'low' | 'medium' | 'high';\n}\n\n// MiMo TTS 参数\nexport interface MiMoTTSParams {\n model: string;\n input: string;\n voice: string;\n response_format?: string;\n speed?: number;\n // 声音克隆参数\n reference_audio?: string;\n reference_text?: string;\n // 音色设计参数\n voice_design_prompt?: string;\n}\n\n// MiMo ASR 参数\nexport interface MiMoASRParams {\n model: string;\n file: string; // base64 encoded audio\n response_format?: 'json' | 'text' | 'srt' | 'verbose_json' | 'vtt';\n language?: string;\n}\n\n// MiMo ChatCompletion 响应扩展\nexport interface MiMoChatCompletion {\n id: string;\n object: string;\n created: number;\n model: string;\n choices: Array<{\n index: number;\n message: {\n role: string;\n content: string | null;\n reasoning_content?: string;\n audio?: AudioData;\n annotations?: Annotation[];\n };\n finish_reason: string;\n }>;\n usage?: Usage;\n}\n\n// MiMo 流式响应 chunk 扩展\nexport interface MiMoChatCompletionChunk {\n id: string;\n object: string;\n created: number;\n model: string;\n choices: Array<{\n index: number;\n delta: ChatStreamDelta;\n finish_reason: string | null;\n }>;\n}\n\n// ============================================================\n// 类型安全辅助函数 — 替代 as unknown as 模式\n// ============================================================\n\n/**\n * 从 OpenAI SDK 的 delta 对象中安全提取 MiMo 扩展字段。\n * OpenAI SDK 的 Delta 类型不包含 reasoning_content 和 annotations,\n * 但 MiMo API 会在运行时返回这些字段。\n */\nexport function extractDelta(delta: Record<string, unknown>): ChatStreamDelta {\n return {\n role: typeof delta.role === 'string' ? delta.role : undefined,\n content: typeof delta.content === 'string' ? delta.content : undefined,\n reasoning_content: typeof delta.reasoning_content === 'string' ? delta.reasoning_content : undefined,\n annotations: Array.isArray(delta.annotations) ? delta.annotations as Annotation[] : undefined,\n };\n}\n\n/**\n * 从 OpenAI SDK 的 chunk 对象中安全提取 usage 字段。\n * OpenAI SDK 的 ChatCompletionChunk.usage 类型与 MiMo 的 Usage 不完全一致。\n */\nexport function extractChunkUsage(chunk: Record<string, unknown>): Usage | undefined {\n const usage = chunk.usage;\n if (typeof usage === 'object' && usage !== null) {\n return usage as Usage;\n }\n return undefined;\n}\n\n/**\n * 安全中止 OpenAI SDK 的 Stream 对象。\n * Stream 内部有 controller 属性但不在公开类型定义中。\n */\nexport function abortStream(stream: object): void {\n if ('controller' in stream) {\n const ctrl = (stream as Record<string, unknown>).controller;\n if (ctrl && typeof ctrl === 'object' && ctrl !== null && 'abort' in ctrl) {\n (ctrl as { abort(): void }).abort();\n }\n }\n}\n\n/**\n * 从 OpenAI APIError 中安全提取 url 字段。\n * url 属性在运行时存在但不在 OpenAI SDK 类型定义中。\n */\nexport function extractErrorUrl(err: object): string {\n if ('url' in err) {\n const url = (err as Record<string, unknown>).url;\n return typeof url === 'string' ? url : '';\n }\n return '';\n}\n",
14
14
  "import type { Config } from '../config/schema';\nimport { CLIError } from '../errors/base';\nimport { ExitCode } from '../errors/codes';\nimport { maskApiKey } from '../utils/sanitize';\n\nexport interface ResolvedCredential {\n token: string;\n method: 'api-key';\n source: 'flag' | 'config.json' | 'env';\n}\n\n/**\n * 根据 API Key 前缀推断 base URL:\n * - tp- 开头:TokenPlan Key → https://token-plan-cn.xiaomimimo.com/v1\n * - 其他:按量计费 Key → https://api.xiaomimimo.com/v1\n */\nexport function inferBaseUrlFromKey(apiKey: string): string | undefined {\n if (apiKey.startsWith('tp-')) {\n return 'https://token-plan-cn.xiaomimimo.com/v1';\n }\n // 按量计费 Key 不需要返回,使用默认 base URL 即可\n return undefined;\n}\n\nexport function resolveCredential(config: Config): ResolvedCredential {\n // 1. --api-key flag\n if (config.apiKey) {\n return { token: config.apiKey, method: 'api-key', source: 'flag' };\n }\n\n // 2. MIMO_API_KEY env var\n const envKey = process.env.MIMO_API_KEY;\n if (envKey) {\n return { token: envKey, method: 'api-key', source: 'env' };\n }\n\n // 3. 根据 active_key 选择配置文件中的 Key\n if (config.activeKey === 'sk' && config.fileSkApiKey) {\n return { token: config.fileSkApiKey, method: 'api-key', source: 'config.json' };\n }\n\n // 4. 默认使用 tp Key(api_key),如果不存在则回退到 sk_api_key\n if (config.fileApiKey) {\n return { token: config.fileApiKey, method: 'api-key', source: 'config.json' };\n }\n\n // 5. 如果只有 sk_api_key,也使用它\n if (config.fileSkApiKey) {\n return { token: config.fileSkApiKey, method: 'api-key', source: 'config.json' };\n }\n\n // 错误提示中使用脱敏示例,不泄露真实 key\n throw new CLIError(\n 'No credentials found.',\n ExitCode.AUTH,\n 'Log in: mimo auth login\\nPass directly: --api-key <key>\\nSet env var: MIMO_API_KEY=<key>',\n );\n}\n",
@@ -19,7 +19,7 @@
19
19
  "import { MiMoSDKClient } from './client';\nimport { wrapApiError } from '../client/index';\nimport type { TTSVoice } from '../types/api';\n\nexport interface TTSSynthesizeOptions {\n model?: string;\n text: string;\n voice?: string;\n style?: string;\n format?: 'wav' | 'mp3' | 'pcm';\n}\n\nexport interface TTSCloneOptions {\n model?: string;\n sample: string; // base64 data URI of reference audio\n text: string;\n format?: 'wav' | 'mp3' | 'pcm';\n}\n\nexport interface TTSDesignOptions {\n model?: string;\n prompt: string;\n text: string;\n optimizeText?: boolean;\n format?: 'wav' | 'mp3' | 'pcm';\n}\n\nexport interface TTSResult {\n id: string;\n audio: Buffer;\n model: string;\n}\n\nexport interface TTSVoicesResult {\n voices: TTSVoice[];\n}\n\nexport class TTSSDK {\n private client: MiMoSDKClient;\n\n constructor(client: MiMoSDKClient) {\n this.client = client;\n }\n\n async synthesize(options: TTSSynthesizeOptions): Promise<TTSResult> {\n try {\n const response = await fetch(`${this.client.options.baseUrl}/tts/synthesize`, {\n method: 'POST',\n headers: {\n 'Authorization': `Bearer ${this.client.options.apiKey}`,\n 'Content-Type': 'application/json',\n },\n body: JSON.stringify({\n model: options.model ?? 'mimo-v2.5-tts',\n text: options.text,\n voice: options.voice,\n style: options.style,\n format: options.format ?? 'mp3',\n }),\n });\n\n if (!response.ok) {\n const body = await response.json().catch(() => ({}));\n throw wrapApiError({ status: response.status, error: body, url: response.url });\n }\n\n const buffer = Buffer.from(await response.arrayBuffer());\n return {\n id: response.headers.get('x-request-id') ?? '',\n audio: buffer,\n model: options.model ?? 'mimo-v2.5-tts',\n };\n } catch (error) {\n throw wrapApiError(error);\n }\n }\n\n async clone(options: TTSCloneOptions): Promise<TTSResult> {\n try {\n const response = await fetch(`${this.client.options.baseUrl}/tts/clone`, {\n method: 'POST',\n headers: {\n 'Authorization': `Bearer ${this.client.options.apiKey}`,\n 'Content-Type': 'application/json',\n },\n body: JSON.stringify({\n model: options.model ?? 'mimo-v2.5-tts',\n sample: options.sample,\n text: options.text,\n format: options.format ?? 'mp3',\n }),\n });\n\n if (!response.ok) {\n const body = await response.json().catch(() => ({}));\n throw wrapApiError({ status: response.status, error: body, url: response.url });\n }\n\n const buffer = Buffer.from(await response.arrayBuffer());\n return {\n id: response.headers.get('x-request-id') ?? '',\n audio: buffer,\n model: options.model ?? 'mimo-v2.5-tts',\n };\n } catch (error) {\n throw wrapApiError(error);\n }\n }\n\n async design(options: TTSDesignOptions): Promise<TTSResult> {\n try {\n const response = await fetch(`${this.client.options.baseUrl}/tts/design`, {\n method: 'POST',\n headers: {\n 'Authorization': `Bearer ${this.client.options.apiKey}`,\n 'Content-Type': 'application/json',\n },\n body: JSON.stringify({\n model: options.model ?? 'mimo-v2.5-tts-voicedesign',\n prompt: options.prompt,\n text: options.text,\n optimize_text_preview: options.optimizeText ?? false,\n format: options.format ?? 'mp3',\n }),\n });\n\n if (!response.ok) {\n const body = await response.json().catch(() => ({}));\n throw wrapApiError({ status: response.status, error: body, url: response.url });\n }\n\n const buffer = Buffer.from(await response.arrayBuffer());\n return {\n id: response.headers.get('x-request-id') ?? '',\n audio: buffer,\n model: options.model ?? 'mimo-v2.5-tts-voicedesign',\n };\n } catch (error) {\n throw wrapApiError(error);\n }\n }\n\n async voices(): Promise<TTSVoicesResult> {\n try {\n const response = await fetch(`${this.client.options.baseUrl}/tts/voices`, {\n method: 'GET',\n headers: {\n 'Authorization': `Bearer ${this.client.options.apiKey}`,\n },\n });\n\n if (!response.ok) {\n const body = await response.json().catch(() => ({}));\n throw wrapApiError({ status: response.status, error: body, url: response.url });\n }\n\n const data = await response.json() as Record<string, unknown>;\n return {\n voices: (data.voices ?? data.data ?? []) as TTSVoice[],\n };\n } catch (error) {\n throw wrapApiError(error);\n }\n }\n}\n",
20
20
  "import { MiMoSDKClient, type MiMoSDKClientOptions } from './client';\nimport { ChatSDK, type ChatOptions, type ChatResult } from './chat';\nimport { VisionSDK, type VisionOptions, type VisionResult } from './vision';\nimport { ASRSDK, type ASROptions, type ASRResult } from './asr';\nimport { TTSSDK, type TTSSynthesizeOptions, type TTSCloneOptions, type TTSDesignOptions, type TTSResult, type TTSVoicesResult } from './tts';\nimport type { Config } from '../config/schema';\n\nexport { MiMoSDKClient, type MiMoSDKClientOptions } from './client';\nexport { ChatSDK, type ChatOptions, type ChatResult } from './chat';\nexport { VisionSDK, type VisionOptions, type VisionResult } from './vision';\nexport { ASRSDK, type ASROptions, type ASRResult } from './asr';\nexport { TTSSDK, type TTSSynthesizeOptions, type TTSCloneOptions, type TTSDesignOptions, type TTSResult, type TTSVoicesResult } from './tts';\n\nexport interface MiMoSDKOptions {\n apiKey?: string;\n baseUrl?: string;\n timeout?: number;\n}\n\nexport class MiMoSDK {\n readonly chat: ChatSDK;\n readonly vision: VisionSDK;\n readonly asr: ASRSDK;\n readonly tts: TTSSDK;\n readonly client: MiMoSDKClient;\n\n constructor(options: MiMoSDKOptions) {\n this.client = new MiMoSDKClient(options);\n this.chat = new ChatSDK(this.client);\n this.vision = new VisionSDK(this.client);\n this.asr = new ASRSDK(this.client);\n this.tts = new TTSSDK(this.client);\n }\n\n /** Create a MiMoSDK from CLI Config, resolving credentials automatically. */\n static async fromConfig(config: Config): Promise<MiMoSDK> {\n const client = await MiMoSDKClient.fromConfig(config);\n return new MiMoSDK({\n apiKey: client.options.apiKey,\n baseUrl: client.options.baseUrl,\n timeout: client.options.timeout,\n });\n }\n}\n"
21
21
  ],
22
- "mappings": "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",
23
- "debugId": "E09992E67D0D8E0B64756E2164756E21",
22
+ "mappings": "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",
23
+ "debugId": "03A41E638183B16964756E2164756E21",
24
24
  "names": []
25
25
  }
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "mimo-cli",
3
- "version": "0.1.6",
3
+ "version": "0.1.7",
4
4
  "type": "module",
5
5
  "description": "MiMo AI Platform Command Line Interface — 对话、多模态理解、语音识别与合成",
6
6
  "bin": {