1 line
6.0 KiB
JSON
1 line
6.0 KiB
JSON
{"repo": "accidentalid/chromeexte", "files": {"shared/constants.js": {"839c9763be266096fab34cce4749be2457f942ff": {"t": 1785768203.9253933, "n": 5246, "h": "fd01f09e16b11885", "c": "/**\n * Vibe Translation Extension - 常量与默认配置\n */\n\n// 消息类型\nconst MESSAGE_TYPES = {\n // Content → Background\n TRANSLATE_SELECTION: 'translate_selection',\n TRANSLATE_PAGE: 'translate_page',\n CANCEL_TRANSLATION: 'cancel_translation',\n GET_SETTINGS: 'get_settings',\n SAVE_SETTINGS: 'save_settings',\n GET_STATUS: 'get_status',\n\n // Background → Content\n TRANSLATION_RESULT: 'translation_result',\n TRANSLATION_PROGRESS: 'translation_progress',\n TRANSLATION_COMPLETE: 'translation_complete',\n TRANSLATION_ERROR: 'translation_error',\n SETTINGS_CHANGED: 'settings_changed',\n\n // Popup → Background\n TRANSLATE_TEXT: 'translate_text',\n TEST_PROVIDER: 'test_provider',\n GET_CACHE_STATS: 'get_cache_stats',\n CLEAR_CACHE: 'clear_cache',\n SET_MODE: 'set_mode',\n TOGGLE_SELECTION: 'toggle_selection',\n\n // 快捷键\n COMMAND_TRANSLATE_SELECTION: 'translate-selection',\n COMMAND_TRANSLATE_PAGE: 'translate-page',\n};\n\n// 存储键\nconst STORAGE_KEYS = {\n SETTINGS: 'vibe_settings',\n BUBBLE_POSITION: 'vibe_bubble_position',\n};\n\n// 翻译显示模式\nconst DISPLAY_MODES = {\n BILINGUAL: 'bilingual',\n TARGET_ONLY: 'target-only',\n};\n\n// 默认 Prompt 模板\nconst DEFAULT_PROMPTS = {\n system: `你是一位专业的翻译引擎。请将用户提供的文本从{source_lang}精确翻译为{target_lang}。\n\n要求:\n1. 保持原文的格式、语气和风格\n2. 专业术语需准确翻译\n3. 如果文本包含 <sN>...</sN> 标签,请保留这些标签并翻译标签内的内容\n4. 只输出翻译结果,不要添加任何解释或注释\n5. 跳过代码块(\\`行内代码\\` 和 \\`\\`\\`代码块\\`\\`\\`)不翻译,保持原样输出`,\n\n\n user: `{text}`,\n};\n\n// 默认设置\nconst DEFAULT_SETTINGS = {\n activeProvider: 'openai',\n providers: {\n openai: { base_url: 'https://api.openai.com/v1', api_key: '', model: 'gpt-4o-mini', customModel: '' },\n gemini: { base_url: 'https://generativelanguage.googleapis.com/v1beta/openai', api_key: '', model: 'gemini-2.0-flash', customModel: '' },\n anthropic: { base_url: '', api_key: '', model: 'claude-sonnet-4-20250514', customModel: '' },\n dashscope: { base_url: 'https://dashscope.aliyuncs.com/compatible-mode/v1', api_key: '', model: 'qwen-plus', customModel: '' },\n moonshot: { base_url: 'https://api.moonshot.cn/v1', api_key: '', model: 'moonshot-v1-8k', customModel: '' },\n minimax: { base_url: 'https://api.minimaxi.com/v1', api_key: '', model: 'MiniMax-M2.5', customModel: '' },\n zhipu: { base_url: 'https://open.bigmodel.cn/api/paas/v4', api_key: '', model: 'glm-4-flash', customModel: '' },\n hunyuan: { base_url: 'https://api.hunyuan.cloud.tencent.com/v1', api_key: '', model: 'hunyuan-turbo', customModel: '' },\n custom: { base_url: '', api_key: '', model: '', customModel: '' },\n },\n language: {\n source: 'auto',\n target: 'zh-CN',\n },\n display: {\n mode: DISPLAY_MODES.BILINGUAL,\n style: {\n bold: false,\n underline: false,\n backgroundColor: '',\n fontSize: 'same',\n color: '#666666',\n separator: 'dashed',\n },\n },\n prompts: {\n system: DEFAULT_PROMPTS.system,\n user: DEFAULT_PROMPTS.user,\n },\n shortcuts: {\n translateSelection: 'Alt+T',\n translatePage: 'Alt+P',\n },\n advanced: {\n concurrency: 3,\n timeout: 30,\n cache: {\n enabled: true,\n ttlHours: 72,\n maxSizeMB: 50,\n },\n },\n tts: {\n enabled: true,\n rate: 1.0,\n pitch: 1.0,\n voiceURI: '',\n },\n floatingBubble: {\n enabled: true,\n position: { right: 24, bottom: 80 },\n },\n theme: {\n primaryColor: '#1565C0',\n },\n selectionTranslateEnabled: true,\n version: 1,\n};\n\n// CSS 类名前缀\nconst CSS_PREFIX = 'vt';\n\n// 翻译单元属性名\nconst ATTR_NAMES = {\n UNIT_ID: 'data-vt-id',\n TRANS_FOR: 'data-vt-for',\n EXT_ROOT: 'data-vt-ext',\n WRAPPER: 'data-vt-wrapper',\n};\n\n// 扩展版本\nconst EXTENSION_VERSION = '1.0.2';\n\n// 服务商 UI 注册表(popup / options 共用)\nconst PROVIDER_UI = {\n openai: { name: 'OpenAI', icon: '🟢', models: ['gpt-4o', 'gpt-4o-mini', 'gpt-4-turbo', 'gpt-3.5-turbo'] },\n gemini: { name: 'Google Gemini', icon: '🔵', models: ['gemini-2.0-flash', 'gemini-2.5-flash', 'gemini-1.5-pro'] },\n anthropic: { name: 'Anthropic Claude',icon: '🟠', models: ['claude-sonnet-4-20250514', 'claude-haiku', 'claude-3-5-sonnet-20241022'], hint: '需通过 OpenAI 兼容网关接入' },\n dashscope: { name: '阿里云百炼', icon: '🟡', models: ['qwen-plus', 'qwen-turbo', 'qwen-max', 'qwen-long'] },\n moonshot: { name: '月之暗面 Kimi', icon: '🌙', models: ['kimi-k2.5', 'moonshot-v1-8k', 'moonshot-v1-32k', 'moonshot-v1-128k'] },\n minimax: { name: 'MiniMax', icon: '🔷', models: ['MiniMax-M2.7', 'MiniMax-M2.5', 'MiniMax-M2.1'] },\n zhipu: { name: '智谱AI GLM', icon: '🟣', models: ['glm-5', 'glm-4.7', 'glm-4-flash', 'glm-4-plus'] },\n hunyuan: { name: '腾讯混元', icon: '🔴', models: ['hunyuan-pro', 'hunyuan-turbo', 'hunyuan-standard', 'hunyuan-lite'] },\n custom: { name: '自定义', icon: '⚙️', models: [], hint: '输入 OpenAI 兼容接口地址' },\n};\n\n// 如果在非模块环境中,通过 window 暴露\nif (typeof window !== 'undefined') {\n window.VT_CONSTANTS = {\n MESSAGE_TYPES,\n STORAGE_KEYS,\n DISPLAY_MODES,\n DEFAULT_PROMPTS,\n DEFAULT_SETTINGS,\n CSS_PREFIX,\n ATTR_NAMES,\n EXTENSION_VERSION,\n PROVIDER_UI,\n };\n}\n\n// 如果在 ES module 环境中\nif (typeof exports !== 'undefined') {\n Object.assign(exports, {\n MESSAGE_TYPES,\n STORAGE_KEYS,\n DISPLAY_MODES,\n DEFAULT_PROMPTS,\n DEFAULT_SETTINGS,\n CSS_PREFIX,\n ATTR_NAMES,\n EXTENSION_VERSION,\n PROVIDER_UI,\n });\n}\n"}}}} |