@within-7/minto 0.3.6 → 0.3.9

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.
Files changed (153) hide show
  1. package/{cli.js → cli.cjs} +25 -23
  2. package/dist/commands/language.js +137 -0
  3. package/dist/commands/language.js.map +7 -0
  4. package/dist/commands/new.js +56 -0
  5. package/dist/commands/new.js.map +7 -0
  6. package/dist/commands/resume.js +251 -16
  7. package/dist/commands/resume.js.map +2 -2
  8. package/dist/commands/sessions.js +224 -0
  9. package/dist/commands/sessions.js.map +7 -0
  10. package/dist/commands/setup.js +3 -2
  11. package/dist/commands/setup.js.map +2 -2
  12. package/dist/commands/stats.js +235 -0
  13. package/dist/commands/stats.js.map +7 -0
  14. package/dist/commands/status.js +11 -5
  15. package/dist/commands/status.js.map +2 -2
  16. package/dist/commands/undo.js +26 -16
  17. package/dist/commands/undo.js.map +2 -2
  18. package/dist/commands.js +6 -0
  19. package/dist/commands.js.map +2 -2
  20. package/dist/components/AskUserQuestionDialog/AskUserQuestionDialog.js +3 -2
  21. package/dist/components/AskUserQuestionDialog/AskUserQuestionDialog.js.map +2 -2
  22. package/dist/components/Config.js +9 -8
  23. package/dist/components/Config.js.map +2 -2
  24. package/dist/components/HeaderBar.js +2 -1
  25. package/dist/components/HeaderBar.js.map +2 -2
  26. package/dist/components/Help.js +2 -1
  27. package/dist/components/Help.js.map +2 -2
  28. package/dist/components/HotkeyHelpPanel.js +46 -44
  29. package/dist/components/HotkeyHelpPanel.js.map +2 -2
  30. package/dist/components/Logo.js +5 -2
  31. package/dist/components/Logo.js.map +2 -2
  32. package/dist/components/MCPServerApprovalDialog.js +6 -5
  33. package/dist/components/MCPServerApprovalDialog.js.map +2 -2
  34. package/dist/components/MCPServerMultiselectDialog.js +5 -4
  35. package/dist/components/MCPServerMultiselectDialog.js.map +2 -2
  36. package/dist/components/MessageSelector.js +4 -3
  37. package/dist/components/MessageSelector.js.map +2 -2
  38. package/dist/components/ModelConfig.js +13 -12
  39. package/dist/components/ModelConfig.js.map +2 -2
  40. package/dist/components/ModelListManager.js +4 -3
  41. package/dist/components/ModelListManager.js.map +2 -2
  42. package/dist/components/PromptInput.js +72 -39
  43. package/dist/components/PromptInput.js.map +2 -2
  44. package/dist/components/SensitiveFileWarning.js +12 -8
  45. package/dist/components/SensitiveFileWarning.js.map +2 -2
  46. package/dist/components/TabbedListView/ScrollableList.js +91 -0
  47. package/dist/components/TabbedListView/ScrollableList.js.map +7 -0
  48. package/dist/components/TabbedListView/SearchInput.js +23 -0
  49. package/dist/components/TabbedListView/SearchInput.js.map +7 -0
  50. package/dist/components/TabbedListView/TabBar.js +20 -0
  51. package/dist/components/TabbedListView/TabBar.js.map +7 -0
  52. package/dist/components/TabbedListView/TabbedListView.js +171 -0
  53. package/dist/components/TabbedListView/TabbedListView.js.map +7 -0
  54. package/dist/components/TabbedListView/index.js +11 -0
  55. package/dist/components/TabbedListView/index.js.map +7 -0
  56. package/dist/components/TabbedListView/types.js +1 -0
  57. package/dist/components/TabbedListView/types.js.map +7 -0
  58. package/dist/components/TodoChangeBlock.js +6 -5
  59. package/dist/components/TodoChangeBlock.js.map +3 -3
  60. package/dist/components/TodoPanel.js +6 -3
  61. package/dist/components/TodoPanel.js.map +3 -3
  62. package/dist/components/TrustDialog.js +6 -5
  63. package/dist/components/TrustDialog.js.map +2 -2
  64. package/dist/components/messages/UserToolResultMessage/UserToolCanceledMessage.js +2 -1
  65. package/dist/components/messages/UserToolResultMessage/UserToolCanceledMessage.js.map +2 -2
  66. package/dist/constants/macros.js +1 -1
  67. package/dist/constants/macros.js.map +1 -1
  68. package/dist/constants/product.js +2 -2
  69. package/dist/constants/product.js.map +1 -1
  70. package/dist/constants/prompts.js +17 -0
  71. package/dist/constants/prompts.js.map +2 -2
  72. package/dist/constants/toolInputExamples.js +5 -1
  73. package/dist/constants/toolInputExamples.js.map +2 -2
  74. package/dist/core/tokenStatsManager.js +5 -0
  75. package/dist/core/tokenStatsManager.js.map +2 -2
  76. package/dist/entrypoints/bootstrap.js +54 -0
  77. package/dist/entrypoints/bootstrap.js.map +7 -0
  78. package/dist/entrypoints/cli.js +132 -23
  79. package/dist/entrypoints/cli.js.map +3 -3
  80. package/dist/history.js +75 -15
  81. package/dist/history.js.map +2 -2
  82. package/dist/i18n/index.js +2 -2
  83. package/dist/i18n/index.js.map +2 -2
  84. package/dist/i18n/locales/en.js +283 -1
  85. package/dist/i18n/locales/en.js.map +2 -2
  86. package/dist/i18n/locales/zh-CN.js +283 -1
  87. package/dist/i18n/locales/zh-CN.js.map +2 -2
  88. package/dist/i18n/types.js.map +1 -1
  89. package/dist/index.js +1 -1
  90. package/dist/index.js.map +2 -2
  91. package/dist/messages.js +11 -0
  92. package/dist/messages.js.map +2 -2
  93. package/dist/permissions.js.map +2 -2
  94. package/dist/query.js +9 -0
  95. package/dist/query.js.map +2 -2
  96. package/dist/screens/REPL.js +45 -7
  97. package/dist/screens/REPL.js.map +2 -2
  98. package/dist/services/customCommands.js +14 -8
  99. package/dist/services/customCommands.js.map +2 -2
  100. package/dist/tools/TaskTool/TaskTool.js +176 -1
  101. package/dist/tools/TaskTool/TaskTool.js.map +2 -2
  102. package/dist/tools/TodoWriteTool/prompt.js +21 -0
  103. package/dist/tools/TodoWriteTool/prompt.js.map +2 -2
  104. package/dist/tools/URLFetcherTool/prompt.js +14 -9
  105. package/dist/tools/URLFetcherTool/prompt.js.map +2 -2
  106. package/dist/tools/WebSearchTool/prompt.js +12 -6
  107. package/dist/tools/WebSearchTool/prompt.js.map +2 -2
  108. package/dist/types/PermissionMode.js +30 -1
  109. package/dist/types/PermissionMode.js.map +2 -2
  110. package/dist/types/plugin.js.map +2 -2
  111. package/dist/utils/agentHookExecutor.js +106 -0
  112. package/dist/utils/agentHookExecutor.js.map +7 -0
  113. package/dist/utils/agentLoader.js +212 -26
  114. package/dist/utils/agentLoader.js.map +2 -2
  115. package/dist/utils/agentMemory.js +134 -0
  116. package/dist/utils/agentMemory.js.map +7 -0
  117. package/dist/utils/config.js +51 -1
  118. package/dist/utils/config.js.map +2 -2
  119. package/dist/utils/configPaths.js +199 -0
  120. package/dist/utils/configPaths.js.map +7 -0
  121. package/dist/utils/historyManager.js +234 -0
  122. package/dist/utils/historyManager.js.map +7 -0
  123. package/dist/utils/messages.js +13 -8
  124. package/dist/utils/messages.js.map +2 -2
  125. package/dist/utils/migration/index.js +37 -0
  126. package/dist/utils/migration/index.js.map +7 -0
  127. package/dist/utils/migration/migrateHistory.js +273 -0
  128. package/dist/utils/migration/migrateHistory.js.map +7 -0
  129. package/dist/utils/migration/migrateTodos.js +323 -0
  130. package/dist/utils/migration/migrateTodos.js.map +7 -0
  131. package/dist/utils/pasteCache.js +309 -0
  132. package/dist/utils/pasteCache.js.map +7 -0
  133. package/dist/utils/pluginLoader.js +6 -3
  134. package/dist/utils/pluginLoader.js.map +2 -2
  135. package/dist/utils/sessionIndex.js +192 -0
  136. package/dist/utils/sessionIndex.js.map +7 -0
  137. package/dist/utils/sessionTracker.js +170 -0
  138. package/dist/utils/sessionTracker.js.map +7 -0
  139. package/dist/utils/skillLoader.js +91 -5
  140. package/dist/utils/skillLoader.js.map +2 -2
  141. package/dist/utils/stats.js +417 -0
  142. package/dist/utils/stats.js.map +7 -0
  143. package/dist/utils/stringSubstitution.js +107 -0
  144. package/dist/utils/stringSubstitution.js.map +7 -0
  145. package/dist/utils/teamConfig.js +3 -1
  146. package/dist/utils/teamConfig.js.map +2 -2
  147. package/dist/utils/todoStorage.js +51 -19
  148. package/dist/utils/todoStorage.js.map +2 -2
  149. package/dist/utils/tooling/safeRender.js.map +2 -2
  150. package/dist/version.js +2 -2
  151. package/dist/version.js.map +1 -1
  152. package/package.json +71 -28
  153. package/scripts/{postinstall.js → postinstall.cjs} +1 -1
@@ -73,8 +73,8 @@ function tLang(lang, key, params) {
73
73
  }
74
74
  function interpolate(str, params) {
75
75
  if (!params) return str;
76
- return str.replace(/\{\{(\w+)\}\}/g, (_, key) => {
77
- return params[key] !== void 0 ? String(params[key]) : `{{${key}}}`;
76
+ return str.replace(/\{(\w+)\}/g, (match, key) => {
77
+ return params[key] !== void 0 ? String(params[key]) : match;
78
78
  });
79
79
  }
80
80
  function isLanguageSupported(lang) {
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "version": 3,
3
3
  "sources": ["../../src/i18n/index.ts"],
4
- "sourcesContent": ["/**\n * Minto i18n System\n *\n * Lightweight internationalization system for CLI applications.\n * Supports English (default) and Simplified Chinese.\n *\n * Usage:\n * import { t, setLanguage, getLanguage } from '@i18n'\n *\n * // Get translated string\n * const label = t('ui.displayMode.minimal') // \"Minimal\" or \"\u7CBE\u7B80\"\n *\n * // Change language\n * setLanguage('zh-CN')\n *\n * // Get current language\n * const lang = getLanguage() // 'en' or 'zh-CN'\n */\n\nimport type { Language, TranslationKey, Translations } from './types'\nimport { en } from './locales/en'\nimport { zhCN } from './locales/zh-CN'\n\n// All available translations\nconst translations: Record<Language, Translations> = {\n en,\n 'zh-CN': zhCN,\n}\n\n// Current language state\nlet currentLanguage: Language = 'en'\n\n// Language change listeners\ntype LanguageChangeListener = (lang: Language) => void\nconst listeners: Set<LanguageChangeListener> = new Set()\n\n/**\n * Detect system language\n * Only checks MINTO_LANG environment variable for explicit override\n * Defaults to English - user must explicitly set language for other locales\n */\nexport function detectSystemLanguage(): Language {\n // Only check MINTO_LANG for explicit language override\n // Do NOT auto-detect from system locale (LANG, LC_ALL, etc.)\n const envLang = process.env.MINTO_LANG\n\n if (envLang) {\n const normalized = envLang.toLowerCase()\n if (normalized.startsWith('zh')) {\n return 'zh-CN'\n }\n }\n\n // Default to English\n return 'en'\n}\n\n/**\n * Initialize i18n with optional language\n * Should be called once at application startup\n */\nexport function initI18n(lang?: Language): void {\n if (lang) {\n currentLanguage = lang\n } else {\n // Will be set from config or CLI args\n // For now, default to English\n currentLanguage = 'en'\n }\n}\n\n/**\n * Get current language\n */\nexport function getLanguage(): Language {\n return currentLanguage\n}\n\n/**\n * Set current language\n */\nexport function setLanguage(lang: Language): void {\n if (translations[lang]) {\n currentLanguage = lang\n // Notify listeners\n for (const listener of listeners) {\n listener(lang)\n }\n } else {\n console.warn(`Language '${lang}' not supported, using 'en'`)\n currentLanguage = 'en'\n }\n}\n\n/**\n * Subscribe to language changes\n */\nexport function onLanguageChange(listener: LanguageChangeListener): () => void {\n listeners.add(listener)\n return () => listeners.delete(listener)\n}\n\n/**\n * Check if a translation key exists\n *\n * @param key - Translation key to check\n * @returns true if key exists in current language or fallback (English)\n */\nexport function hasTranslation(key: string): boolean {\n return !!(\n translations[currentLanguage]?.[key as TranslationKey] ||\n translations.en[key as TranslationKey]\n )\n}\n\n/**\n * Get translated string by key (silent version - no warning if key not found)\n *\n * @param key - Translation key\n * @param params - Optional interpolation parameters\n * @returns Translated string or undefined if not found\n */\nexport function tSafe(\n key: string,\n params?: Record<string, string | number>,\n): string | undefined {\n const translation = translations[currentLanguage]?.[key as TranslationKey]\n\n if (!translation) {\n const fallback = translations.en[key as TranslationKey]\n if (!fallback) {\n return undefined\n }\n return interpolate(fallback, params)\n }\n\n return interpolate(translation, params)\n}\n\n/**\n * Get translated string by key\n *\n * @param key - Translation key (e.g., 'ui.displayMode.minimal')\n * @param params - Optional interpolation parameters\n * @returns Translated string\n */\nexport function t(\n key: TranslationKey,\n params?: Record<string, string | number>,\n): string {\n const translation = translations[currentLanguage]?.[key]\n\n if (!translation) {\n // Fallback to English\n const fallback = translations.en[key]\n if (!fallback) {\n // Key not found, return the key itself\n console.warn(`Translation key not found: ${key}`)\n return key\n }\n return interpolate(fallback, params)\n }\n\n return interpolate(translation, params)\n}\n\n/**\n * Get translation for a specific language (without changing current language)\n */\nexport function tLang(\n lang: Language,\n key: TranslationKey,\n params?: Record<string, string | number>,\n): string {\n const translation = translations[lang]?.[key] || translations.en[key] || key\n return interpolate(translation, params)\n}\n\n/**\n * Interpolate parameters into translation string\n * Supports {{param}} syntax\n */\nfunction interpolate(\n str: string,\n params?: Record<string, string | number>,\n): string {\n if (!params) return str\n\n return str.replace(/\\{\\{(\\w+)\\}\\}/g, (_, key) => {\n return params[key] !== undefined ? String(params[key]) : `{{${key}}}`\n })\n}\n\n/**\n * Check if a language is supported\n */\nexport function isLanguageSupported(lang: string): lang is Language {\n return lang in translations\n}\n\n/**\n * Get list of supported languages\n */\nexport function getSupportedLanguages(): Language[] {\n return Object.keys(translations) as Language[]\n}\n\n/**\n * Get language display name\n */\nexport function getLanguageDisplayName(lang: Language): string {\n const names: Record<Language, string> = {\n en: 'English',\n 'zh-CN': '\u7B80\u4F53\u4E2D\u6587',\n }\n return names[lang] || lang\n}\n\n// Re-export types\nexport type { Language, TranslationKey, Translations } from './types'\nexport { LANGUAGE_NAMES } from './types'\n"],
5
- "mappings": "AAoBA,SAAS,UAAU;AACnB,SAAS,YAAY;AAGrB,MAAM,eAA+C;AAAA,EACnD;AAAA,EACA,SAAS;AACX;AAGA,IAAI,kBAA4B;AAIhC,MAAM,YAAyC,oBAAI,IAAI;AAOhD,SAAS,uBAAiC;AAG/C,QAAM,UAAU,QAAQ,IAAI;AAE5B,MAAI,SAAS;AACX,UAAM,aAAa,QAAQ,YAAY;AACvC,QAAI,WAAW,WAAW,IAAI,GAAG;AAC/B,aAAO;AAAA,IACT;AAAA,EACF;AAGA,SAAO;AACT;AAMO,SAAS,SAAS,MAAuB;AAC9C,MAAI,MAAM;AACR,sBAAkB;AAAA,EACpB,OAAO;AAGL,sBAAkB;AAAA,EACpB;AACF;AAKO,SAAS,cAAwB;AACtC,SAAO;AACT;AAKO,SAAS,YAAY,MAAsB;AAChD,MAAI,aAAa,IAAI,GAAG;AACtB,sBAAkB;AAElB,eAAW,YAAY,WAAW;AAChC,eAAS,IAAI;AAAA,IACf;AAAA,EACF,OAAO;AACL,YAAQ,KAAK,aAAa,IAAI,6BAA6B;AAC3D,sBAAkB;AAAA,EACpB;AACF;AAKO,SAAS,iBAAiB,UAA8C;AAC7E,YAAU,IAAI,QAAQ;AACtB,SAAO,MAAM,UAAU,OAAO,QAAQ;AACxC;AAQO,SAAS,eAAe,KAAsB;AACnD,SAAO,CAAC,EACN,aAAa,eAAe,IAAI,GAAqB,KACrD,aAAa,GAAG,GAAqB;AAEzC;AASO,SAAS,MACd,KACA,QACoB;AACpB,QAAM,cAAc,aAAa,eAAe,IAAI,GAAqB;AAEzE,MAAI,CAAC,aAAa;AAChB,UAAM,WAAW,aAAa,GAAG,GAAqB;AACtD,QAAI,CAAC,UAAU;AACb,aAAO;AAAA,IACT;AACA,WAAO,YAAY,UAAU,MAAM;AAAA,EACrC;AAEA,SAAO,YAAY,aAAa,MAAM;AACxC;AASO,SAAS,EACd,KACA,QACQ;AACR,QAAM,cAAc,aAAa,eAAe,IAAI,GAAG;AAEvD,MAAI,CAAC,aAAa;AAEhB,UAAM,WAAW,aAAa,GAAG,GAAG;AACpC,QAAI,CAAC,UAAU;AAEb,cAAQ,KAAK,8BAA8B,GAAG,EAAE;AAChD,aAAO;AAAA,IACT;AACA,WAAO,YAAY,UAAU,MAAM;AAAA,EACrC;AAEA,SAAO,YAAY,aAAa,MAAM;AACxC;AAKO,SAAS,MACd,MACA,KACA,QACQ;AACR,QAAM,cAAc,aAAa,IAAI,IAAI,GAAG,KAAK,aAAa,GAAG,GAAG,KAAK;AACzE,SAAO,YAAY,aAAa,MAAM;AACxC;AAMA,SAAS,YACP,KACA,QACQ;AACR,MAAI,CAAC,OAAQ,QAAO;AAEpB,SAAO,IAAI,QAAQ,kBAAkB,CAAC,GAAG,QAAQ;AAC/C,WAAO,OAAO,GAAG,MAAM,SAAY,OAAO,OAAO,GAAG,CAAC,IAAI,KAAK,GAAG;AAAA,EACnE,CAAC;AACH;AAKO,SAAS,oBAAoB,MAAgC;AAClE,SAAO,QAAQ;AACjB;AAKO,SAAS,wBAAoC;AAClD,SAAO,OAAO,KAAK,YAAY;AACjC;AAKO,SAAS,uBAAuB,MAAwB;AAC7D,QAAM,QAAkC;AAAA,IACtC,IAAI;AAAA,IACJ,SAAS;AAAA,EACX;AACA,SAAO,MAAM,IAAI,KAAK;AACxB;AAIA,SAAS,sBAAsB;",
4
+ "sourcesContent": ["/**\n * Minto i18n System\n *\n * Lightweight internationalization system for CLI applications.\n * Supports English (default) and Simplified Chinese.\n *\n * Usage:\n * import { t, setLanguage, getLanguage } from '@i18n'\n *\n * // Get translated string\n * const label = t('ui.displayMode.minimal') // \"Minimal\" or \"\u7CBE\u7B80\"\n *\n * // Change language\n * setLanguage('zh-CN')\n *\n * // Get current language\n * const lang = getLanguage() // 'en' or 'zh-CN'\n */\n\nimport type { Language, TranslationKey, Translations } from './types'\nimport { en } from './locales/en'\nimport { zhCN } from './locales/zh-CN'\n\n// All available translations\nconst translations: Record<Language, Translations> = {\n en,\n 'zh-CN': zhCN,\n}\n\n// Current language state\nlet currentLanguage: Language = 'en'\n\n// Language change listeners\ntype LanguageChangeListener = (lang: Language) => void\nconst listeners: Set<LanguageChangeListener> = new Set()\n\n/**\n * Detect system language\n * Only checks MINTO_LANG environment variable for explicit override\n * Defaults to English - user must explicitly set language for other locales\n */\nexport function detectSystemLanguage(): Language {\n // Only check MINTO_LANG for explicit language override\n // Do NOT auto-detect from system locale (LANG, LC_ALL, etc.)\n const envLang = process.env.MINTO_LANG\n\n if (envLang) {\n const normalized = envLang.toLowerCase()\n if (normalized.startsWith('zh')) {\n return 'zh-CN'\n }\n }\n\n // Default to English\n return 'en'\n}\n\n/**\n * Initialize i18n with optional language\n * Should be called once at application startup\n */\nexport function initI18n(lang?: Language): void {\n if (lang) {\n currentLanguage = lang\n } else {\n // Will be set from config or CLI args\n // For now, default to English\n currentLanguage = 'en'\n }\n}\n\n/**\n * Get current language\n */\nexport function getLanguage(): Language {\n return currentLanguage\n}\n\n/**\n * Set current language\n */\nexport function setLanguage(lang: Language): void {\n if (translations[lang]) {\n currentLanguage = lang\n // Notify listeners\n for (const listener of listeners) {\n listener(lang)\n }\n } else {\n console.warn(`Language '${lang}' not supported, using 'en'`)\n currentLanguage = 'en'\n }\n}\n\n/**\n * Subscribe to language changes\n */\nexport function onLanguageChange(listener: LanguageChangeListener): () => void {\n listeners.add(listener)\n return () => listeners.delete(listener)\n}\n\n/**\n * Check if a translation key exists\n *\n * @param key - Translation key to check\n * @returns true if key exists in current language or fallback (English)\n */\nexport function hasTranslation(key: string): boolean {\n return !!(\n translations[currentLanguage]?.[key as TranslationKey] ||\n translations.en[key as TranslationKey]\n )\n}\n\n/**\n * Get translated string by key (silent version - no warning if key not found)\n *\n * @param key - Translation key\n * @param params - Optional interpolation parameters\n * @returns Translated string or undefined if not found\n */\nexport function tSafe(\n key: string,\n params?: Record<string, string | number>,\n): string | undefined {\n const translation = translations[currentLanguage]?.[key as TranslationKey]\n\n if (!translation) {\n const fallback = translations.en[key as TranslationKey]\n if (!fallback) {\n return undefined\n }\n return interpolate(fallback, params)\n }\n\n return interpolate(translation, params)\n}\n\n/**\n * Get translated string by key\n *\n * @param key - Translation key (e.g., 'ui.displayMode.minimal')\n * @param params - Optional interpolation parameters\n * @returns Translated string\n */\nexport function t(\n key: TranslationKey,\n params?: Record<string, string | number>,\n): string {\n const translation = translations[currentLanguage]?.[key]\n\n if (!translation) {\n // Fallback to English\n const fallback = translations.en[key]\n if (!fallback) {\n // Key not found, return the key itself\n console.warn(`Translation key not found: ${key}`)\n return key\n }\n return interpolate(fallback, params)\n }\n\n return interpolate(translation, params)\n}\n\n/**\n * Get translation for a specific language (without changing current language)\n */\nexport function tLang(\n lang: Language,\n key: TranslationKey,\n params?: Record<string, string | number>,\n): string {\n const translation = translations[lang]?.[key] || translations.en[key] || key\n return interpolate(translation, params)\n}\n\n/**\n * Interpolate parameters into translation string\n * Supports {param} syntax (single braces)\n */\nfunction interpolate(\n str: string,\n params?: Record<string, string | number>,\n): string {\n if (!params) return str\n\n return str.replace(/\\{(\\w+)\\}/g, (match, key) => {\n return params[key] !== undefined ? String(params[key]) : match\n })\n}\n\n/**\n * Check if a language is supported\n */\nexport function isLanguageSupported(lang: string): lang is Language {\n return lang in translations\n}\n\n/**\n * Get list of supported languages\n */\nexport function getSupportedLanguages(): Language[] {\n return Object.keys(translations) as Language[]\n}\n\n/**\n * Get language display name\n */\nexport function getLanguageDisplayName(lang: Language): string {\n const names: Record<Language, string> = {\n en: 'English',\n 'zh-CN': '\u7B80\u4F53\u4E2D\u6587',\n }\n return names[lang] || lang\n}\n\n// Re-export types\nexport type { Language, TranslationKey, Translations } from './types'\nexport { LANGUAGE_NAMES } from './types'\n"],
5
+ "mappings": "AAoBA,SAAS,UAAU;AACnB,SAAS,YAAY;AAGrB,MAAM,eAA+C;AAAA,EACnD;AAAA,EACA,SAAS;AACX;AAGA,IAAI,kBAA4B;AAIhC,MAAM,YAAyC,oBAAI,IAAI;AAOhD,SAAS,uBAAiC;AAG/C,QAAM,UAAU,QAAQ,IAAI;AAE5B,MAAI,SAAS;AACX,UAAM,aAAa,QAAQ,YAAY;AACvC,QAAI,WAAW,WAAW,IAAI,GAAG;AAC/B,aAAO;AAAA,IACT;AAAA,EACF;AAGA,SAAO;AACT;AAMO,SAAS,SAAS,MAAuB;AAC9C,MAAI,MAAM;AACR,sBAAkB;AAAA,EACpB,OAAO;AAGL,sBAAkB;AAAA,EACpB;AACF;AAKO,SAAS,cAAwB;AACtC,SAAO;AACT;AAKO,SAAS,YAAY,MAAsB;AAChD,MAAI,aAAa,IAAI,GAAG;AACtB,sBAAkB;AAElB,eAAW,YAAY,WAAW;AAChC,eAAS,IAAI;AAAA,IACf;AAAA,EACF,OAAO;AACL,YAAQ,KAAK,aAAa,IAAI,6BAA6B;AAC3D,sBAAkB;AAAA,EACpB;AACF;AAKO,SAAS,iBAAiB,UAA8C;AAC7E,YAAU,IAAI,QAAQ;AACtB,SAAO,MAAM,UAAU,OAAO,QAAQ;AACxC;AAQO,SAAS,eAAe,KAAsB;AACnD,SAAO,CAAC,EACN,aAAa,eAAe,IAAI,GAAqB,KACrD,aAAa,GAAG,GAAqB;AAEzC;AASO,SAAS,MACd,KACA,QACoB;AACpB,QAAM,cAAc,aAAa,eAAe,IAAI,GAAqB;AAEzE,MAAI,CAAC,aAAa;AAChB,UAAM,WAAW,aAAa,GAAG,GAAqB;AACtD,QAAI,CAAC,UAAU;AACb,aAAO;AAAA,IACT;AACA,WAAO,YAAY,UAAU,MAAM;AAAA,EACrC;AAEA,SAAO,YAAY,aAAa,MAAM;AACxC;AASO,SAAS,EACd,KACA,QACQ;AACR,QAAM,cAAc,aAAa,eAAe,IAAI,GAAG;AAEvD,MAAI,CAAC,aAAa;AAEhB,UAAM,WAAW,aAAa,GAAG,GAAG;AACpC,QAAI,CAAC,UAAU;AAEb,cAAQ,KAAK,8BAA8B,GAAG,EAAE;AAChD,aAAO;AAAA,IACT;AACA,WAAO,YAAY,UAAU,MAAM;AAAA,EACrC;AAEA,SAAO,YAAY,aAAa,MAAM;AACxC;AAKO,SAAS,MACd,MACA,KACA,QACQ;AACR,QAAM,cAAc,aAAa,IAAI,IAAI,GAAG,KAAK,aAAa,GAAG,GAAG,KAAK;AACzE,SAAO,YAAY,aAAa,MAAM;AACxC;AAMA,SAAS,YACP,KACA,QACQ;AACR,MAAI,CAAC,OAAQ,QAAO;AAEpB,SAAO,IAAI,QAAQ,cAAc,CAAC,OAAO,QAAQ;AAC/C,WAAO,OAAO,GAAG,MAAM,SAAY,OAAO,OAAO,GAAG,CAAC,IAAI;AAAA,EAC3D,CAAC;AACH;AAKO,SAAS,oBAAoB,MAAgC;AAClE,SAAO,QAAQ;AACjB;AAKO,SAAS,wBAAoC;AAClD,SAAO,OAAO,KAAK,YAAY;AACjC;AAKO,SAAS,uBAAuB,MAAwB;AAC7D,QAAM,QAAkC;AAAA,IACtC,IAAI;AAAA,IACJ,SAAS;AAAA,EACX;AACA,SAAO,MAAM,IAAI,KAAK;AACxB;AAIA,SAAS,sBAAsB;",
6
6
  "names": []
7
7
  }
@@ -93,6 +93,12 @@ const en = {
93
93
  "ui.welcome.tip4": "",
94
94
  "ui.welcome.cwd": "cwd",
95
95
  "ui.welcome.mcpServers": "MCP Servers",
96
+ "ui.welcome.taglinePart1": "Strategic AI",
97
+ "ui.welcome.taglinePart2": "Global Excellence",
98
+ // UI - Update banner
99
+ "ui.update.newVersionAvailable": "New version available: {version} (current: {current})",
100
+ "ui.update.runCommand": "Run the following command to update:",
101
+ "ui.update.sudoNote": 'Note: you may need to prefix with "sudo" on macOS/Linux.',
96
102
  // UI - Hotkeys
97
103
  "ui.hotkey.submit": "Submit",
98
104
  "ui.hotkey.newline": "New line",
@@ -118,6 +124,101 @@ const en = {
118
124
  "ui.hints.shortcuts": "Keyboard Shortcuts",
119
125
  "ui.hints.pressEsc": "press Esc to close",
120
126
  "ui.hints.tip": "Type /help for full command list",
127
+ // UI - PromptInput mode hints
128
+ "ui.hints.executeCommand": "Execute command",
129
+ "ui.hints.recordNote": "Record note",
130
+ "ui.hints.featureMenu": "Feature menu",
131
+ "ui.hints.forNewline": "for newline",
132
+ "ui.hints.forBashMode": "for bash mode",
133
+ "ui.hints.forMintoMd": "for MINTO.md",
134
+ "ui.hints.forCommands": "for commands",
135
+ "ui.hints.typeToQueue": "Type to queue next prompt",
136
+ "ui.hints.backgroundTasks": "{count} background task{count, plural, one {} other {s}}",
137
+ "ui.hints.queued": "Queued",
138
+ "ui.hints.willRunAfter": "will run after current task",
139
+ "ui.hints.toEdit": "to edit",
140
+ // UI - Completion hints
141
+ "ui.hints.completion.navigate": "\u2191\u2193 navigate \u2022 \u2192 accept \u2022 Tab cycle \u2022 Esc close",
142
+ "ui.hints.completion.enterDirectory": "\u2192 enter directory \u2022 \u2191\u2193 navigate \u2022 Tab cycle \u2022 Esc close",
143
+ "ui.hints.completion.selectAgent": "\u2192 select agent \u2022 \u2191\u2193 navigate \u2022 Tab cycle \u2022 Esc close",
144
+ "ui.hints.completion.insertReference": "\u2192 insert reference \u2022 \u2191\u2193 navigate \u2022 Tab cycle \u2022 Esc close",
145
+ "ui.hints.completion.moreAbove": "{count} more above...",
146
+ "ui.hints.completion.moreBelow": "{count} more below...",
147
+ // UI - Model display
148
+ "ui.model.fallbackName": "AI Assistant",
149
+ // UI - Model management
150
+ "ui.model.manageList": "Manage Model List",
151
+ "ui.model.manageListDeleteMode": "Manage Model List - DELETE MODE",
152
+ "ui.model.cannotDeleteLast": "Cannot delete the last model",
153
+ "ui.model.deleteConfirmPrompt": "Press Enter/Space to DELETE selected model, Esc to cancel",
154
+ "ui.model.addNewModelPrompt": "Press Enter to add new model",
155
+ "ui.model.configureNewModel": "Configure a new model and add it to your library",
156
+ "ui.model.navigateHint": "Navigate: \u2191\u2193 | Select: Enter | Delete: d | Exit: Esc",
157
+ "ui.model.deleteHint": "Use \u2191/\u2193 to navigate, d to delete model, Enter to add new, Esc to exit",
158
+ "ui.model.activeLabel": "Active",
159
+ "ui.model.availableLabel": "Available",
160
+ "ui.model.spaceToCycle": "Space to cycle",
161
+ "ui.model.enterToConfigure": "Enter to configure",
162
+ "ui.model.notConfigured": "(not configured)",
163
+ // UI - Model config
164
+ "ui.modelConfig.title": "Model Configuration",
165
+ "ui.modelConfig.clearMode": "CLEAR MODE",
166
+ "ui.modelConfig.clearAssignmentPrompt": "Press Enter/Space to clear selected pointer assignment, Esc to cancel",
167
+ "ui.modelConfig.noModelsConfigured": 'No models configured. Use "Configure New Model" to add your first model.',
168
+ "ui.modelConfig.configureHint": "Configure which models to use for different tasks. Space to cycle, Enter to configure.",
169
+ "ui.modelConfig.navigateHint": "Use \u2191/\u2193 to navigate, Space to cycle models, Enter to configure, d to clear, Esc to exit",
170
+ "ui.modelConfig.clearModePrompt": "CLEAR MODE: Press Enter/Space to clear assignment, Esc to cancel",
171
+ // UI - Model pointer descriptions
172
+ "ui.modelConfig.mainDescription": "Primary model for general tasks and conversations",
173
+ "ui.modelConfig.taskDescription": "Model for TaskTool sub-agents and automation",
174
+ "ui.modelConfig.reasoningDescription": "Model optimized for complex reasoning tasks",
175
+ "ui.modelConfig.quickDescription": "Fast model for simple operations and utilities",
176
+ "ui.modelConfig.compactDescription": "Model for context compression and summarization",
177
+ "ui.modelConfig.manageModelsDescription": "View, add, and delete model configurations",
178
+ // UI - Sensitive file warning
179
+ "ui.sensitiveFile.title": "Sensitive File Warning",
180
+ "ui.sensitiveFile.operating": "Operating on sensitive file",
181
+ "ui.sensitiveFile.defaultReason": "This file may contain API keys, credentials, or other sensitive information.",
182
+ "ui.sensitiveFile.operation.read": "Reading",
183
+ "ui.sensitiveFile.operation.write": "Modifying",
184
+ "ui.sensitiveFile.operation.delete": "Deleting",
185
+ // UI - Todo panel
186
+ "ui.todo.tasksRemaining": "{count} tasks remaining",
187
+ "ui.todo.allDone": "All done",
188
+ "ui.todo.updatedTaskList": "Updated task list",
189
+ "ui.todo.pending": "pending",
190
+ "ui.todo.inProgress": "in progress",
191
+ "ui.todo.done": "done",
192
+ // Commands - Undo
193
+ "commands.undo.description": "Undo file changes (requires --smart mode)",
194
+ "commands.undo.title": "Undo File Changes",
195
+ "commands.undo.selectFile": "Select file to restore",
196
+ "commands.undo.noBackups": "No file changes to undo.",
197
+ "commands.undo.smartModeHint": "Tip: Start Minto with --smart mode to enable automatic backups:",
198
+ "commands.undo.smartModeCommand": " minto --smart",
199
+ "commands.undo.versions": "{count} versions",
200
+ "commands.undo.selectVersion": "Select version to restore",
201
+ "commands.undo.file": "File",
202
+ "commands.undo.restoredTo": "Restored to",
203
+ "commands.undo.fileRestored": "File restored",
204
+ "commands.undo.restoreFailed": "Restore failed, please try again.",
205
+ "commands.undo.loading": "Loading backup info...",
206
+ "commands.undo.error": "Error",
207
+ "commands.undo.pressAnyKey": "Press any key to exit",
208
+ "commands.undo.pressQOrEsc": "Press q or Esc to exit",
209
+ "commands.undo.navHintsFile": "\u2191/\u2193: Select | Enter: View versions | q/Esc: Exit",
210
+ "commands.undo.navHintsVersion": "\u2191/\u2193: Select | Enter: Restore version | Esc: Back",
211
+ // Time format
212
+ "commands.undo.justNow": "just now",
213
+ "commands.undo.minutesAgo": "{count} minutes ago",
214
+ "commands.undo.today": "Today",
215
+ "commands.undo.weekday.sun": "Sun",
216
+ "commands.undo.weekday.mon": "Mon",
217
+ "commands.undo.weekday.tue": "Tue",
218
+ "commands.undo.weekday.wed": "Wed",
219
+ "commands.undo.weekday.thu": "Thu",
220
+ "commands.undo.weekday.fri": "Fri",
221
+ "commands.undo.weekday.sat": "Sat",
121
222
  // Commands
122
223
  "commands.help.description": "Show help information",
123
224
  "commands.clear.description": "Clear the screen",
@@ -144,6 +245,36 @@ const en = {
144
245
  "commands.thinking.description": "Toggle thinking mode",
145
246
  "commands.thinking.enabled": "Thinking mode enabled",
146
247
  "commands.thinking.disabled": "Thinking mode disabled",
248
+ "commands.language.description": "Switch interface language (English / \u7B80\u4F53\u4E2D\u6587)",
249
+ "commands.language.title": "Language Settings",
250
+ "commands.language.current": "Current",
251
+ "commands.language.select": "Select language",
252
+ "commands.language.changed": "Language changed to",
253
+ "commands.language.restart": "Interface will refresh automatically",
254
+ "commands.language.alreadyUsing": "Already using",
255
+ "commands.language.navigate": "\u2191\u2193: Navigate \xB7 Enter: Select \xB7 Esc/q: Cancel",
256
+ // Commands - Sessions
257
+ "commands.sessions.description": "View and search session history",
258
+ "commands.sessions.title": "Recent Sessions",
259
+ "commands.sessions.count": "{shown} of {total}",
260
+ "commands.sessions.noSessions": "No sessions found.",
261
+ "commands.sessions.headerDate": "Date",
262
+ "commands.sessions.headerProject": "Project",
263
+ "commands.sessions.headerPrompt": "First Prompt",
264
+ "commands.sessions.headerMsgs": "Msgs",
265
+ "commands.sessions.headerTools": "Tools",
266
+ "commands.sessions.helpHint": "Use /sessions --help for more options",
267
+ "commands.sessions.today": "Today",
268
+ "commands.sessions.yesterday": "Yesterday",
269
+ "commands.sessions.moreBelow": "... and {count} more (scroll with \u2191\u2193)",
270
+ "commands.sessions.navigationHint": "\u2191\u2193: Navigate \xB7 Enter: Select \xB7 Esc: Close",
271
+ // Commands - Resume
272
+ "commands.resume.description": "Resume a previous conversation from this project",
273
+ "commands.resume.title": "Resume Conversation",
274
+ "commands.resume.noSessions": "No conversations found in this project.",
275
+ "commands.resume.navigationHint": "\u2191\u2193/jk: Navigate \xB7 Enter/1-9: Select \xB7 Esc: Cancel",
276
+ // Commands - New
277
+ "commands.new.description": "Start a new conversation",
147
278
  // Tools
148
279
  "tools.bash.description": "Execute shell commands",
149
280
  "tools.bash.executing": "Executing",
@@ -193,6 +324,44 @@ const en = {
193
324
  "help.moreInfo": "For more information",
194
325
  "help.reportBug": "Report a bug",
195
326
  "help.documentation": "Documentation",
327
+ // Help - Usage modes
328
+ "help.usageModes": "Usage Modes:",
329
+ "help.nonInteractive": "Non-interactive:",
330
+ "help.runForOptions": "Run {command} -h for all command line options",
331
+ // Help - Common tasks
332
+ "help.commonTasks": "Common Tasks:",
333
+ "help.taskAskQuestions": "Ask questions about your codebase",
334
+ "help.taskEditFiles": "Edit files",
335
+ "help.taskFixErrors": "Fix errors",
336
+ "help.taskRunCommands": "Run commands",
337
+ "help.taskRunBash": "Run bash commands",
338
+ // Help - Command categories
339
+ "help.builtInCommands": "Built-in Commands:",
340
+ "help.customCommands": "Custom Commands:",
341
+ "help.pluginCommands": "Plugin Commands:",
342
+ "help.mcpCommands": "MCP Commands:",
343
+ // Help - Command loading
344
+ "help.commandPriority": "Commands are loaded in priority order:",
345
+ "help.priorityBuiltIn": "1. Built-in commands (highest priority, alphabetically sorted)",
346
+ "help.priorityCustom": "2. Custom commands (user/project, alphabetically sorted)",
347
+ "help.priorityPlugin": "3. Plugin commands (alphabetically sorted)",
348
+ "help.priorityMcp": "4. MCP commands (alphabetically sorted)",
349
+ "help.refreshCommandsHint": "Use /refresh-commands to reload after changes",
350
+ // Help - Product description
351
+ "help.productDescription": "{product} is a beta research preview. Always review {product}'s responses, especially when running code. {product} has read access to files in the current directory and can run commands and edit files with your permission.",
352
+ // Help - Mode Systems
353
+ "help.modeSystems": "Mode Systems:",
354
+ "help.safetyModes": "Safety Modes (startup flags, based on tool risk level):",
355
+ "help.safetyModeYolo": "--yolo All tools auto-allowed (default, for non-technical users)",
356
+ "help.safetyModeSmart": "--smart Dangerous tools require confirmation",
357
+ "help.safetyModeStrict": "--strict Non-read-only tools require confirmation",
358
+ "help.safetyModeFree": "--free Tools outside project directory require confirmation",
359
+ "help.permissionModes": "Permission Modes (Shift+Tab to cycle, based on tool whitelist):",
360
+ "help.permissionModeDefault": "default Standard confirmation flow",
361
+ "help.permissionModeAcceptEdits": "acceptEdits Auto-approve edit operations",
362
+ "help.permissionModePlan": "plan Read-only tools only (research mode)",
363
+ "help.permissionModeBypass": "bypassPermissions Skip all permission checks",
364
+ "help.modeInteraction": "Both systems apply together, using the stricter result.",
196
365
  // Status messages
197
366
  "status.modelLoaded": "Model loaded",
198
367
  "status.contextCompressed": "Context compressed",
@@ -210,6 +379,30 @@ const en = {
210
379
  "prompts.enterApiKey": "Enter API key",
211
380
  "prompts.selectModel": "Select a model",
212
381
  "prompts.selectLanguage": "Select language",
382
+ "prompts.interruptedByUser": "Interrupted by user",
383
+ "prompts.interruptedCtrlC": "Interrupted by user (Ctrl-C)",
384
+ "prompts.interruptedEscEsc": "Interrupted by user (Esc Esc)",
385
+ "prompts.inputCleared": "Input cleared",
386
+ "prompts.inputClearedCtrlD": "Input cleared (Ctrl-D)",
387
+ "prompts.inputClearedEscEsc": "Input cleared (Esc Esc)",
388
+ "prompts.screenCleared": "Screen cleared (Ctrl-L)",
389
+ "prompts.todoPanelToggled": "TodoPanel toggled (Ctrl-T)",
390
+ "prompts.typeCommandFirst": "Type a command first, then press Ctrl-B",
391
+ "prompts.executingBash": "Executing bash command... (Ctrl-B)",
392
+ "prompts.exitingGracefully": "Exiting gracefully...",
393
+ "prompts.pressCtrlDToExit": "Press Ctrl-D to exit",
394
+ "prompts.pressCtrlDAgain": "Press Ctrl-D again to exit",
395
+ "prompts.pressEscAgainClear": "Press Esc again to clear input",
396
+ "prompts.pressEscAgainInterrupt": "Press Esc again to interrupt",
397
+ "prompts.thinkingModeEnabled": "Thinking mode enabled (Tab)",
398
+ "prompts.thinkingModeDisabled": "Thinking mode disabled (Tab)",
399
+ "prompts.limitedInputMode": "\u26A0\uFE0F Limited input mode",
400
+ "prompts.limitedInputModeDetail": "(Advanced keyboard shortcuts unavailable - raw mode not supported)",
401
+ "prompts.queuedMessage": 'Queued: "{input}" ({count} in queue)',
402
+ "prompts.noModelsConfigured": "\u274C No models configured. Use /model to add models.",
403
+ "prompts.noActiveModels": "\u274C No active models ({total} total, all inactive). Use /model to activate models.",
404
+ "prompts.onlyOneActiveModel": "\u26A0\uFE0F Only 1 active model out of {total} total models: {list}. ALL configured models will be activated for switching.",
405
+ "prompts.modelSwitchingFailed": "\u274C Model switching failed ({active} active, {total} total models available)",
213
406
  // Agent/Subagent
214
407
  "agent.spawning": "Spawning agent",
215
408
  "agent.running": "Agent running",
@@ -237,6 +430,66 @@ const en = {
237
430
  "permission.sensitiveFile": "Sensitive file access",
238
431
  "permission.externalPath": "External path access",
239
432
  "permission.dangerousCommand": "Dangerous command",
433
+ // Dialog - Generic
434
+ "dialog.enterToConfirm": "Enter to confirm",
435
+ "dialog.escToCancel": "Esc to cancel",
436
+ "dialog.confirmCancelPrompt": "[Enter to confirm] [Esc to cancel]",
437
+ "dialog.enterCustomResponse": "Enter your custom response:",
438
+ // Dialog - Message selector
439
+ "dialog.jumpToPreviousMessage": "Jump to a previous message",
440
+ "dialog.forkConversation": "This will fork the conversation",
441
+ "dialog.current": "(current)",
442
+ "dialog.emptyMessage": "(empty message)",
443
+ "dialog.selectConfirmCancelPrompt": "\u2191/\u2193 to select \xB7 Enter to confirm \xB7 Tab/Esc to cancel",
444
+ // Dialog - MCP server
445
+ "dialog.mcpServerDetected": "New MCP Server Detected",
446
+ "dialog.mcpServersDetected": "New MCP Servers Detected",
447
+ "dialog.mcpApprovalRequired": "This project contains a .mcprc file with an MCP server that requires your approval:",
448
+ "dialog.mcpSelectServers": "Please select the servers you want to enable:",
449
+ "dialog.approveServer": "Yes, approve this server",
450
+ "dialog.rejectServer": "No, reject this server",
451
+ "dialog.confirmRejectPrompt": "Enter to confirm \xB7 Esc to reject",
452
+ "dialog.selectConfirmRejectAllPrompt": "Space to select \xB7 Enter to confirm \xB7 Esc to reject all",
453
+ // Dialog - Trust
454
+ "dialog.trustTitle": "Do you trust the files in this folder?",
455
+ "dialog.trustWarning1": "{product} may read files in this folder. Reading untrusted files may lead to {product} to behave in an unexpected ways.",
456
+ "dialog.trustWarning2": "With your permission {product} may execute files in this folder. Executing untrusted code is unsafe.",
457
+ "dialog.yesProceed": "Yes, proceed",
458
+ "dialog.noExit": "No, exit",
459
+ "dialog.confirmExitPrompt": "Enter to confirm \xB7 Esc to exit",
460
+ // Config
461
+ "config.title": "Configuration",
462
+ "config.modelConfiguration": "Model Configuration:",
463
+ "config.noModelsConfigured": "No models configured. Use /model to add models.",
464
+ "config.useModelCommand": "Use /model to manage model configurations",
465
+ "config.enterToSaveEscToCancel": "Enter to save \xB7 Esc to cancel",
466
+ "config.navigateChangeClose": "\u2191/\u2193 to navigate \xB7 Enter to change \xB7 Esc to close",
467
+ "config.enterNewValue": "Enter new value:",
468
+ "config.theme": "Theme",
469
+ "config.verboseMode": "Verbose mode",
470
+ "config.streamResponses": "Stream responses",
471
+ "config.compressionMode": "Compression mode (/compact)",
472
+ // HotkeyHelpPanel
473
+ "hotkey.navigation": "Navigation",
474
+ "hotkey.control": "Control",
475
+ "hotkey.features": "Features",
476
+ "hotkey.inputModes": "Input Modes",
477
+ "hotkey.browseHistory": "Browse command history",
478
+ "hotkey.searchHistory": "Search command history",
479
+ "hotkey.autocomplete": "Autocomplete commands/paths",
480
+ "hotkey.rollbackResponse": "Rollback last response",
481
+ "hotkey.cancelOperation": "Cancel current operation",
482
+ "hotkey.exitPressTwice": "Exit (press twice)",
483
+ "hotkey.clearScreen": "Clear screen",
484
+ "hotkey.submitPrompt": "Submit prompt",
485
+ "hotkey.toggleTodoPanel": "Toggle todo panel",
486
+ "hotkey.cycleDisplayMode": "Cycle display mode",
487
+ "hotkey.executeAsBash": "Execute as bash command",
488
+ "hotkey.showHideHelp": "Show/hide this help",
489
+ "hotkey.startSlashCommand": "Start a slash command",
490
+ "hotkey.executeBashCommand": "Execute bash command",
491
+ "hotkey.addNoteToKoding": "Add note to KODING.md",
492
+ "hotkey.ctrlQuestionForShortcuts": "Ctrl+? for shortcuts",
240
493
  // User-Friendly Error Messages
241
494
  // Network & Connectivity
242
495
  "friendlyError.networkConnection.title": "Network Connection Issue",
@@ -340,7 +593,36 @@ const en = {
340
593
  // Error display format
341
594
  "friendlyError.suggestionLabel": "Suggestions",
342
595
  "friendlyError.errorIdLabel": "Error ID",
343
- "friendlyError.technicalDetailsLabel": "Technical Details"
596
+ "friendlyError.technicalDetailsLabel": "Technical Details",
597
+ // UI - TabbedListView
598
+ "ui.tabbedList.search": "Search...",
599
+ "ui.tabbedList.loading": "Loading...",
600
+ "ui.tabbedList.noItems": "No items found",
601
+ "ui.tabbedList.moreAbove": "{count} more above",
602
+ "ui.tabbedList.moreBelow": "{count} more below",
603
+ "ui.tabbedList.tabCycleHint": "Tab/\u2190\u2192",
604
+ "ui.tabbedList.navigationHint": "\u2191\u2193 Navigate \xB7 Enter Select \xB7 Tab/\u2190\u2192 Switch \xB7 Esc Close",
605
+ // Commands - Stats
606
+ "commands.stats.description": "View usage statistics",
607
+ "commands.stats.title": "Usage Statistics",
608
+ "commands.stats.today": "Today",
609
+ "commands.stats.thisWeek": "This Week",
610
+ "commands.stats.thisMonth": "This Month",
611
+ "commands.stats.lifetime": "Lifetime",
612
+ "commands.stats.messages": "Messages",
613
+ "commands.stats.sessions": "Sessions",
614
+ "commands.stats.toolCalls": "Tool Calls",
615
+ "commands.stats.tokens": "Tokens",
616
+ "commands.stats.totalMessages": "Total Messages",
617
+ "commands.stats.totalSessions": "Total Sessions",
618
+ "commands.stats.totalTools": "Total Tools",
619
+ "commands.stats.estCost": "Est. Cost",
620
+ "commands.stats.modelUsage": "Model Usage",
621
+ "commands.stats.topTools": "Top Tools (by usage)",
622
+ "commands.stats.calls": "calls",
623
+ "commands.stats.noData": "No usage data yet. Start using Minto to see your statistics!",
624
+ "commands.stats.vsYesterday": "vs yesterday",
625
+ "commands.stats.firstUsed": "First used"
344
626
  };
345
627
  export {
346
628
  en
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "version": 3,
3
3
  "sources": ["../../../src/i18n/locales/en.ts"],
4
- "sourcesContent": ["/**\n * English Locale\n *\n * Default language for Minto CLI.\n */\n\nimport type { Translations } from '../types'\n\nexport const en: Translations = {\n // Common\n 'common.yes': 'Yes',\n 'common.no': 'No',\n 'common.ok': 'OK',\n 'common.cancel': 'Cancel',\n 'common.confirm': 'Confirm',\n 'common.save': 'Save',\n 'common.delete': 'Delete',\n 'common.edit': 'Edit',\n 'common.create': 'Create',\n 'common.loading': 'Loading...',\n 'common.error': 'Error',\n 'common.success': 'Success',\n 'common.warning': 'Warning',\n 'common.info': 'Info',\n 'common.unknown': 'Unknown',\n 'common.none': 'None',\n 'common.all': 'All',\n 'common.selected': 'Selected',\n 'common.default': 'Default',\n 'common.custom': 'Custom',\n 'common.enabled': 'Enabled',\n 'common.disabled': 'Disabled',\n 'common.connected': 'connected',\n 'common.disconnected': 'disconnected',\n 'common.pending': 'Pending',\n 'common.completed': 'Completed',\n 'common.failed': 'Failed',\n 'common.inProgress': 'In Progress',\n 'common.version': 'Version',\n 'common.help': 'Help',\n 'common.quit': 'Quit',\n 'common.back': 'Back',\n 'common.next': 'Next',\n 'common.previous': 'Previous',\n 'common.search': 'Search',\n 'common.filter': 'Filter',\n 'common.sort': 'Sort',\n 'common.refresh': 'Refresh',\n 'common.retry': 'Retry',\n 'common.skip': 'Skip',\n 'common.continue': 'Continue',\n 'common.abort': 'Abort',\n 'common.reset': 'Reset',\n 'common.clear': 'Clear',\n 'common.copy': 'Copy',\n 'common.paste': 'Paste',\n 'common.select': 'Select',\n 'common.deselect': 'Deselect',\n 'common.selectAll': 'Select All',\n 'common.deselectAll': 'Deselect All',\n\n // UI - Verbose mode\n 'ui.verbose.on': 'Verbose: On',\n 'ui.verbose.off': 'Verbose: Off',\n 'ui.verbose.label': 'Verbose',\n 'ui.verbose.hint': 'Press Ctrl+O to toggle verbose mode',\n // Deprecated - kept for backward compatibility\n 'ui.displayMode.minimal': 'Verbose: Off',\n 'ui.displayMode.compact': 'Verbose: Off',\n 'ui.displayMode.detailed': 'Verbose: On',\n 'ui.displayMode.label': 'Verbose',\n 'ui.displayMode.hint': 'Press Ctrl+O to toggle verbose mode',\n\n // UI - Input\n 'ui.input.placeholder': 'Ask anything or type / for commands...',\n 'ui.input.thinking': 'Thinking',\n 'ui.input.processing': 'Processing',\n 'ui.input.waiting': 'Waiting for response...',\n 'ui.input.multilineHint': 'Shift+Enter for new line',\n 'ui.input.submitHint': 'Enter to submit',\n\n // UI - Panels\n 'ui.panel.todo': 'Todo',\n 'ui.panel.tasks': 'Tasks',\n 'ui.panel.agents': 'Agents',\n 'ui.panel.models': 'Models',\n 'ui.panel.help': 'Help',\n 'ui.panel.history': 'History',\n 'ui.panel.settings': 'Settings',\n\n // UI - Status\n 'ui.status.ready': 'Ready',\n 'ui.status.busy': 'Busy',\n 'ui.status.error': 'Error',\n 'ui.status.offline': 'Offline',\n 'ui.status.connecting': 'Connecting...',\n 'ui.status.streaming': 'Streaming',\n\n // UI - Welcome\n 'ui.welcome.title': 'Welcome to Minto!',\n 'ui.welcome.subtitle': '',\n 'ui.welcome.quickStart': 'Quick Start',\n 'ui.welcome.tip1': 'Describe your research or analysis needs in plain words',\n 'ui.welcome.tip2': 'The more specific, the better the results',\n 'ui.welcome.tip3': 'Type /help to see all available commands',\n 'ui.welcome.tip4': '',\n 'ui.welcome.cwd': 'cwd',\n 'ui.welcome.mcpServers': 'MCP Servers',\n\n // UI - Hotkeys\n 'ui.hotkey.submit': 'Submit',\n 'ui.hotkey.newline': 'New line',\n 'ui.hotkey.cancel': 'Cancel',\n 'ui.hotkey.toggleMode': 'Toggle display mode',\n 'ui.hotkey.help': 'Help',\n 'ui.hotkey.quit': 'Quit',\n 'ui.hotkey.history': 'History',\n 'ui.hotkey.clear': 'Clear',\n 'ui.hotkey.interrupt': 'Interrupt',\n\n // UI - Hotkey hints (context-aware)\n 'ui.hints.command': 'Command',\n 'ui.hints.bash': 'Bash',\n 'ui.hints.send': 'Send',\n 'ui.hints.complete': 'Complete',\n 'ui.hints.rollback': 'Rollback',\n 'ui.hints.select': 'Select',\n 'ui.hints.confirm': 'Confirm',\n 'ui.hints.close': 'Close',\n 'ui.hints.browse': 'Browse',\n 'ui.hints.execute': 'Execute',\n 'ui.hints.completeCommand': 'Complete cmd',\n 'ui.hints.shortcuts': 'Keyboard Shortcuts',\n 'ui.hints.pressEsc': 'press Esc to close',\n 'ui.hints.tip': 'Type /help for full command list',\n\n // Commands\n 'commands.help.description': 'Show help information',\n 'commands.clear.description': 'Clear the screen',\n 'commands.compact.description': 'Compress conversation context',\n 'commands.compact.success': 'Context compressed successfully',\n 'commands.compact.noMessages': 'No messages to compress',\n 'commands.model.description': 'Select or switch AI model',\n 'commands.model.current': 'Current model',\n 'commands.model.switched': 'Switched to model',\n 'commands.model.notFound': 'Model not found',\n 'commands.agents.description': 'Manage and view agents',\n 'commands.agents.title': 'Available Agents',\n 'commands.agents.empty': 'No agents available',\n 'commands.agents.loaded': 'agents loaded',\n 'commands.tasks.description': 'View running tasks',\n 'commands.config.description': 'Manage configuration',\n 'commands.bug.description': 'Report a bug',\n 'commands.doctor.description': 'Check system health',\n 'commands.status.description': 'Show system status',\n 'commands.permissions.description': 'Manage permissions',\n 'commands.mcp.description': 'Manage MCP servers',\n 'commands.plugin.description': 'Manage plugins',\n 'commands.sandbox.description': 'Configure sandbox mode',\n 'commands.thinking.description': 'Toggle thinking mode',\n 'commands.thinking.enabled': 'Thinking mode enabled',\n 'commands.thinking.disabled': 'Thinking mode disabled',\n\n // Tools\n 'tools.bash.description': 'Execute shell commands',\n 'tools.bash.executing': 'Executing',\n 'tools.bash.completed': 'Command completed',\n 'tools.bash.failed': 'Command failed',\n 'tools.read.description': 'Read file contents',\n 'tools.read.reading': 'Reading',\n 'tools.write.description': 'Write file contents',\n 'tools.write.writing': 'Writing',\n 'tools.write.created': 'Created',\n 'tools.write.updated': 'Updated',\n 'tools.edit.description': 'Edit file contents',\n 'tools.edit.editing': 'Editing',\n 'tools.glob.description': 'Find files by pattern',\n 'tools.grep.description': 'Search file contents',\n 'tools.task.description': 'Spawn a subagent task',\n 'tools.task.spawning': 'Spawning task',\n 'tools.task.running': 'Task running',\n 'tools.task.completed': 'Done',\n 'tools.todo.description': 'Manage todo items',\n\n // Errors\n 'errors.generic': 'An error occurred',\n 'errors.network': 'Network error',\n 'errors.timeout': 'Request timed out',\n 'errors.auth': 'Authentication failed',\n 'errors.rateLimit': 'Rate limit exceeded',\n 'errors.modelNotFound': 'Model not found',\n 'errors.apiKeyMissing': 'API key is missing',\n 'errors.apiKeyInvalid': 'API key is invalid',\n 'errors.permissionDenied': 'Permission denied',\n 'errors.fileNotFound': 'File not found',\n 'errors.fileReadError': 'Error reading file',\n 'errors.fileWriteError': 'Error writing file',\n 'errors.configError': 'Configuration error',\n 'errors.parseError': 'Parse error',\n 'errors.validationError': 'Validation error',\n 'errors.aborted': 'Operation aborted',\n 'errors.contextTooLong': 'Context too long',\n 'errors.serverError': 'Server error',\n 'errors.connectionFailed': 'Connection failed',\n\n // Help\n 'help.title': 'Minto Help',\n 'help.usage': 'Usage',\n 'help.commands': 'Commands',\n 'help.options': 'Options',\n 'help.examples': 'Examples',\n 'help.moreInfo': 'For more information',\n 'help.reportBug': 'Report a bug',\n 'help.documentation': 'Documentation',\n\n // Status messages\n 'status.modelLoaded': 'Model loaded',\n 'status.contextCompressed': 'Context compressed',\n 'status.tokensUsed': 'Tokens used',\n 'status.costEstimate': 'Cost estimate',\n 'status.apiLatency': 'API latency',\n 'status.streaming': 'Streaming response',\n 'status.thinking': 'Thinking',\n 'status.toolUse': 'Using tool',\n 'status.subagent': 'Running subagent',\n\n // Prompts\n 'prompts.confirmDelete': 'Are you sure you want to delete?',\n 'prompts.confirmOverwrite': 'File exists. Overwrite?',\n 'prompts.confirmExecute': 'Execute this command?',\n 'prompts.enterApiKey': 'Enter API key',\n 'prompts.selectModel': 'Select a model',\n 'prompts.selectLanguage': 'Select language',\n\n // Agent/Subagent\n 'agent.spawning': 'Spawning agent',\n 'agent.running': 'Agent running',\n 'agent.completed': 'Agent completed',\n 'agent.failed': 'Agent failed',\n 'agent.cancelled': 'Agent cancelled',\n 'agent.waiting': 'Waiting',\n 'agent.thinking': 'Thinking',\n\n // Model\n 'model.selecting': 'Selecting model',\n 'model.selected': 'Model selected',\n 'model.unavailable': 'Model unavailable',\n 'model.switching': 'Switching model',\n 'model.switched': 'Model switched',\n 'model.default': 'Default model',\n 'model.custom': 'Custom model',\n\n // Permissions\n 'permission.required': 'Permission required',\n 'permission.granted': 'Permission granted',\n 'permission.denied': 'Permission denied',\n 'permission.allowOnce': 'Allow once',\n 'permission.allowAlways': 'Allow always',\n 'permission.denyOnce': 'Deny once',\n 'permission.denyAlways': 'Deny always',\n 'permission.sensitiveFile': 'Sensitive file access',\n 'permission.externalPath': 'External path access',\n 'permission.dangerousCommand': 'Dangerous command',\n\n // User-Friendly Error Messages\n // Network & Connectivity\n 'friendlyError.networkConnection.title': 'Network Connection Issue',\n 'friendlyError.networkConnection.description':\n 'Unable to connect to the server. The network may be unstable or the server is temporarily unavailable.',\n 'friendlyError.networkConnection.suggestion1':\n 'Check your network connection',\n 'friendlyError.networkConnection.suggestion2': 'Wait a moment and try again',\n 'friendlyError.networkConnection.suggestion3':\n 'If using a VPN, try switching network nodes',\n\n 'friendlyError.networkTimeout.title': 'Request Timeout',\n 'friendlyError.networkTimeout.description':\n 'The server took too long to respond. The request has timed out.',\n 'friendlyError.networkTimeout.suggestion1':\n 'The network may be slow, please try again later',\n 'friendlyError.networkTimeout.suggestion2':\n 'If processing large amounts of data, try processing in smaller batches',\n 'friendlyError.networkTimeout.suggestion3': 'Check your network stability',\n\n 'friendlyError.networkDns.title': 'Cannot Find Server',\n 'friendlyError.networkDns.description':\n 'Unable to resolve the server address. Please check your network settings.',\n 'friendlyError.networkDns.suggestion1': 'Check your network connection',\n 'friendlyError.networkDns.suggestion2':\n 'Verify the API address is configured correctly',\n 'friendlyError.networkDns.suggestion3': 'Try using a different DNS service',\n\n // API & Service\n 'friendlyError.apiRateLimit.title': 'Too Many Requests',\n 'friendlyError.apiRateLimit.description':\n 'Too many requests were sent in a short time. The server requires a brief wait.',\n 'friendlyError.apiRateLimit.suggestion1':\n 'Wait a few minutes before continuing',\n 'friendlyError.apiRateLimit.suggestion2':\n 'Reduce the number of concurrent tasks',\n 'friendlyError.apiRateLimit.suggestion3':\n 'Consider upgrading your API plan for higher quotas',\n\n 'friendlyError.apiAuth.title': 'API Authentication Failed',\n 'friendlyError.apiAuth.description': 'The API key is invalid or has expired.',\n 'friendlyError.apiAuth.suggestion1':\n 'Check that your API key is configured correctly',\n 'friendlyError.apiAuth.suggestion2':\n 'Verify that your API key has not expired',\n 'friendlyError.apiAuth.suggestion3': 'Update your API key in settings',\n\n 'friendlyError.apiQuota.title': 'Usage Quota Exceeded',\n 'friendlyError.apiQuota.description':\n 'Your API usage quota has reached its limit.',\n 'friendlyError.apiQuota.suggestion1': 'Check your account balance',\n 'friendlyError.apiQuota.suggestion2':\n 'Wait for quota reset (usually at the beginning of each month)',\n 'friendlyError.apiQuota.suggestion3': 'Consider upgrading your plan',\n\n 'friendlyError.apiServerError.title': 'Server Error',\n 'friendlyError.apiServerError.description':\n 'The AI server encountered an issue. This is usually temporary.',\n 'friendlyError.apiServerError.suggestion1':\n 'Wait a few minutes and try again',\n 'friendlyError.apiServerError.suggestion2':\n 'If the problem persists, try switching to another model',\n\n 'friendlyError.apiInvalidResponse.title': 'Invalid Server Response',\n 'friendlyError.apiInvalidResponse.description':\n 'Received an unexpected response from the server.',\n 'friendlyError.apiInvalidResponse.suggestion1': 'Retry the current operation',\n 'friendlyError.apiInvalidResponse.suggestion2':\n 'If the problem persists, contact support',\n\n // File & Storage\n 'friendlyError.fileNotFound.title': 'File Not Found',\n 'friendlyError.fileNotFound.description':\n 'The specified file does not exist or has been moved.',\n 'friendlyError.fileNotFound.suggestion1':\n 'Check that the file path is correct',\n 'friendlyError.fileNotFound.suggestion2':\n 'Verify that the file has not been deleted or moved',\n\n 'friendlyError.filePermission.title': 'File Access Denied',\n 'friendlyError.filePermission.description':\n 'You do not have permission to read or write this file.',\n 'friendlyError.filePermission.suggestion1':\n 'Check the file permission settings',\n 'friendlyError.filePermission.suggestion2':\n 'Verify that you have access to this folder',\n\n 'friendlyError.fileTooLarge.title': 'File Too Large',\n 'friendlyError.fileTooLarge.description':\n 'The file size exceeds the processing limit.',\n 'friendlyError.fileTooLarge.suggestion1': 'Try processing a smaller file',\n 'friendlyError.fileTooLarge.suggestion2':\n 'Split large files into smaller parts',\n\n 'friendlyError.fileEncoding.title': 'File Format Issue',\n 'friendlyError.fileEncoding.description':\n 'Unable to read the file content correctly. The encoding format may not be supported.',\n 'friendlyError.fileEncoding.suggestion1':\n 'Verify that the file is in text format',\n 'friendlyError.fileEncoding.suggestion2':\n 'Try converting the file to UTF-8 encoding',\n\n // Configuration\n 'friendlyError.configMissing.title': 'Missing Configuration',\n 'friendlyError.configMissing.description':\n 'Some required settings have not been configured.',\n 'friendlyError.configMissing.suggestion1':\n 'Run the /setup command to complete initial configuration',\n 'friendlyError.configMissing.suggestion2':\n 'Check that the configuration file is complete',\n\n 'friendlyError.configInvalid.title': 'Invalid Configuration',\n 'friendlyError.configInvalid.description':\n 'Some setting values are incorrect.',\n 'friendlyError.configInvalid.suggestion1':\n 'Check the configuration file format',\n 'friendlyError.configInvalid.suggestion2':\n 'Refer to the documentation for correct configuration',\n\n 'friendlyError.configApiKey.title': 'API Key Issue',\n 'friendlyError.configApiKey.description':\n 'The API key is not set or has an incorrect format.',\n 'friendlyError.configApiKey.suggestion1':\n 'Use the /setup command to configure your API key',\n 'friendlyError.configApiKey.suggestion2':\n 'Ensure the key is copied correctly (no extra spaces)',\n\n // Model & AI\n 'friendlyError.modelUnavailable.title': 'Model Temporarily Unavailable',\n 'friendlyError.modelUnavailable.description':\n 'The requested AI model is currently unavailable.',\n 'friendlyError.modelUnavailable.suggestion1': 'Try using a different model',\n 'friendlyError.modelUnavailable.suggestion2': 'Try again later',\n 'friendlyError.modelUnavailable.suggestion3':\n 'Verify the model name is correct',\n\n 'friendlyError.modelContextLength.title': 'Content Too Long',\n 'friendlyError.modelContextLength.description':\n 'The input content exceeds the model processing capacity.',\n 'friendlyError.modelContextLength.suggestion1':\n 'Reduce the length of input content',\n 'friendlyError.modelContextLength.suggestion2':\n 'Split long text into multiple parts for processing',\n\n 'friendlyError.modelContentFilter.title': 'Content Filtered',\n 'friendlyError.modelContentFilter.description':\n 'Some content triggered the safety filter.',\n 'friendlyError.modelContentFilter.suggestion1':\n 'Modify the input content and try again',\n 'friendlyError.modelContentFilter.suggestion2':\n 'Avoid sensitive or inappropriate content',\n\n // System\n 'friendlyError.systemMemory.title': 'Insufficient Memory',\n 'friendlyError.systemMemory.description':\n 'Not enough system memory to complete the operation.',\n 'friendlyError.systemMemory.suggestion1': 'Close some other applications',\n 'friendlyError.systemMemory.suggestion2':\n 'Reduce the number of concurrent tasks',\n 'friendlyError.systemMemory.suggestion3':\n 'Restart the application and try again',\n\n 'friendlyError.systemProcess.title': 'System Process Error',\n 'friendlyError.systemProcess.description':\n 'An error occurred while running an external command.',\n 'friendlyError.systemProcess.suggestion1':\n 'Check that the command is correct',\n 'friendlyError.systemProcess.suggestion2':\n 'Verify that the required tools are installed',\n\n // Unknown\n 'friendlyError.unknown.title': 'Unexpected Error',\n 'friendlyError.unknown.description': 'An unexpected problem occurred.',\n 'friendlyError.unknown.suggestion1': 'Retry the current operation',\n 'friendlyError.unknown.suggestion2':\n 'If the problem persists, check the error logs or contact support',\n\n // Error display format\n 'friendlyError.suggestionLabel': 'Suggestions',\n 'friendlyError.errorIdLabel': 'Error ID',\n 'friendlyError.technicalDetailsLabel': 'Technical Details',\n}\n"],
5
- "mappings": "AAQO,MAAM,KAAmB;AAAA;AAAA,EAE9B,cAAc;AAAA,EACd,aAAa;AAAA,EACb,aAAa;AAAA,EACb,iBAAiB;AAAA,EACjB,kBAAkB;AAAA,EAClB,eAAe;AAAA,EACf,iBAAiB;AAAA,EACjB,eAAe;AAAA,EACf,iBAAiB;AAAA,EACjB,kBAAkB;AAAA,EAClB,gBAAgB;AAAA,EAChB,kBAAkB;AAAA,EAClB,kBAAkB;AAAA,EAClB,eAAe;AAAA,EACf,kBAAkB;AAAA,EAClB,eAAe;AAAA,EACf,cAAc;AAAA,EACd,mBAAmB;AAAA,EACnB,kBAAkB;AAAA,EAClB,iBAAiB;AAAA,EACjB,kBAAkB;AAAA,EAClB,mBAAmB;AAAA,EACnB,oBAAoB;AAAA,EACpB,uBAAuB;AAAA,EACvB,kBAAkB;AAAA,EAClB,oBAAoB;AAAA,EACpB,iBAAiB;AAAA,EACjB,qBAAqB;AAAA,EACrB,kBAAkB;AAAA,EAClB,eAAe;AAAA,EACf,eAAe;AAAA,EACf,eAAe;AAAA,EACf,eAAe;AAAA,EACf,mBAAmB;AAAA,EACnB,iBAAiB;AAAA,EACjB,iBAAiB;AAAA,EACjB,eAAe;AAAA,EACf,kBAAkB;AAAA,EAClB,gBAAgB;AAAA,EAChB,eAAe;AAAA,EACf,mBAAmB;AAAA,EACnB,gBAAgB;AAAA,EAChB,gBAAgB;AAAA,EAChB,gBAAgB;AAAA,EAChB,eAAe;AAAA,EACf,gBAAgB;AAAA,EAChB,iBAAiB;AAAA,EACjB,mBAAmB;AAAA,EACnB,oBAAoB;AAAA,EACpB,sBAAsB;AAAA;AAAA,EAGtB,iBAAiB;AAAA,EACjB,kBAAkB;AAAA,EAClB,oBAAoB;AAAA,EACpB,mBAAmB;AAAA;AAAA,EAEnB,0BAA0B;AAAA,EAC1B,0BAA0B;AAAA,EAC1B,2BAA2B;AAAA,EAC3B,wBAAwB;AAAA,EACxB,uBAAuB;AAAA;AAAA,EAGvB,wBAAwB;AAAA,EACxB,qBAAqB;AAAA,EACrB,uBAAuB;AAAA,EACvB,oBAAoB;AAAA,EACpB,0BAA0B;AAAA,EAC1B,uBAAuB;AAAA;AAAA,EAGvB,iBAAiB;AAAA,EACjB,kBAAkB;AAAA,EAClB,mBAAmB;AAAA,EACnB,mBAAmB;AAAA,EACnB,iBAAiB;AAAA,EACjB,oBAAoB;AAAA,EACpB,qBAAqB;AAAA;AAAA,EAGrB,mBAAmB;AAAA,EACnB,kBAAkB;AAAA,EAClB,mBAAmB;AAAA,EACnB,qBAAqB;AAAA,EACrB,wBAAwB;AAAA,EACxB,uBAAuB;AAAA;AAAA,EAGvB,oBAAoB;AAAA,EACpB,uBAAuB;AAAA,EACvB,yBAAyB;AAAA,EACzB,mBAAmB;AAAA,EACnB,mBAAmB;AAAA,EACnB,mBAAmB;AAAA,EACnB,mBAAmB;AAAA,EACnB,kBAAkB;AAAA,EAClB,yBAAyB;AAAA;AAAA,EAGzB,oBAAoB;AAAA,EACpB,qBAAqB;AAAA,EACrB,oBAAoB;AAAA,EACpB,wBAAwB;AAAA,EACxB,kBAAkB;AAAA,EAClB,kBAAkB;AAAA,EAClB,qBAAqB;AAAA,EACrB,mBAAmB;AAAA,EACnB,uBAAuB;AAAA;AAAA,EAGvB,oBAAoB;AAAA,EACpB,iBAAiB;AAAA,EACjB,iBAAiB;AAAA,EACjB,qBAAqB;AAAA,EACrB,qBAAqB;AAAA,EACrB,mBAAmB;AAAA,EACnB,oBAAoB;AAAA,EACpB,kBAAkB;AAAA,EAClB,mBAAmB;AAAA,EACnB,oBAAoB;AAAA,EACpB,4BAA4B;AAAA,EAC5B,sBAAsB;AAAA,EACtB,qBAAqB;AAAA,EACrB,gBAAgB;AAAA;AAAA,EAGhB,6BAA6B;AAAA,EAC7B,8BAA8B;AAAA,EAC9B,gCAAgC;AAAA,EAChC,4BAA4B;AAAA,EAC5B,+BAA+B;AAAA,EAC/B,8BAA8B;AAAA,EAC9B,0BAA0B;AAAA,EAC1B,2BAA2B;AAAA,EAC3B,2BAA2B;AAAA,EAC3B,+BAA+B;AAAA,EAC/B,yBAAyB;AAAA,EACzB,yBAAyB;AAAA,EACzB,0BAA0B;AAAA,EAC1B,8BAA8B;AAAA,EAC9B,+BAA+B;AAAA,EAC/B,4BAA4B;AAAA,EAC5B,+BAA+B;AAAA,EAC/B,+BAA+B;AAAA,EAC/B,oCAAoC;AAAA,EACpC,4BAA4B;AAAA,EAC5B,+BAA+B;AAAA,EAC/B,gCAAgC;AAAA,EAChC,iCAAiC;AAAA,EACjC,6BAA6B;AAAA,EAC7B,8BAA8B;AAAA;AAAA,EAG9B,0BAA0B;AAAA,EAC1B,wBAAwB;AAAA,EACxB,wBAAwB;AAAA,EACxB,qBAAqB;AAAA,EACrB,0BAA0B;AAAA,EAC1B,sBAAsB;AAAA,EACtB,2BAA2B;AAAA,EAC3B,uBAAuB;AAAA,EACvB,uBAAuB;AAAA,EACvB,uBAAuB;AAAA,EACvB,0BAA0B;AAAA,EAC1B,sBAAsB;AAAA,EACtB,0BAA0B;AAAA,EAC1B,0BAA0B;AAAA,EAC1B,0BAA0B;AAAA,EAC1B,uBAAuB;AAAA,EACvB,sBAAsB;AAAA,EACtB,wBAAwB;AAAA,EACxB,0BAA0B;AAAA;AAAA,EAG1B,kBAAkB;AAAA,EAClB,kBAAkB;AAAA,EAClB,kBAAkB;AAAA,EAClB,eAAe;AAAA,EACf,oBAAoB;AAAA,EACpB,wBAAwB;AAAA,EACxB,wBAAwB;AAAA,EACxB,wBAAwB;AAAA,EACxB,2BAA2B;AAAA,EAC3B,uBAAuB;AAAA,EACvB,wBAAwB;AAAA,EACxB,yBAAyB;AAAA,EACzB,sBAAsB;AAAA,EACtB,qBAAqB;AAAA,EACrB,0BAA0B;AAAA,EAC1B,kBAAkB;AAAA,EAClB,yBAAyB;AAAA,EACzB,sBAAsB;AAAA,EACtB,2BAA2B;AAAA;AAAA,EAG3B,cAAc;AAAA,EACd,cAAc;AAAA,EACd,iBAAiB;AAAA,EACjB,gBAAgB;AAAA,EAChB,iBAAiB;AAAA,EACjB,iBAAiB;AAAA,EACjB,kBAAkB;AAAA,EAClB,sBAAsB;AAAA;AAAA,EAGtB,sBAAsB;AAAA,EACtB,4BAA4B;AAAA,EAC5B,qBAAqB;AAAA,EACrB,uBAAuB;AAAA,EACvB,qBAAqB;AAAA,EACrB,oBAAoB;AAAA,EACpB,mBAAmB;AAAA,EACnB,kBAAkB;AAAA,EAClB,mBAAmB;AAAA;AAAA,EAGnB,yBAAyB;AAAA,EACzB,4BAA4B;AAAA,EAC5B,0BAA0B;AAAA,EAC1B,uBAAuB;AAAA,EACvB,uBAAuB;AAAA,EACvB,0BAA0B;AAAA;AAAA,EAG1B,kBAAkB;AAAA,EAClB,iBAAiB;AAAA,EACjB,mBAAmB;AAAA,EACnB,gBAAgB;AAAA,EAChB,mBAAmB;AAAA,EACnB,iBAAiB;AAAA,EACjB,kBAAkB;AAAA;AAAA,EAGlB,mBAAmB;AAAA,EACnB,kBAAkB;AAAA,EAClB,qBAAqB;AAAA,EACrB,mBAAmB;AAAA,EACnB,kBAAkB;AAAA,EAClB,iBAAiB;AAAA,EACjB,gBAAgB;AAAA;AAAA,EAGhB,uBAAuB;AAAA,EACvB,sBAAsB;AAAA,EACtB,qBAAqB;AAAA,EACrB,wBAAwB;AAAA,EACxB,0BAA0B;AAAA,EAC1B,uBAAuB;AAAA,EACvB,yBAAyB;AAAA,EACzB,4BAA4B;AAAA,EAC5B,2BAA2B;AAAA,EAC3B,+BAA+B;AAAA;AAAA;AAAA,EAI/B,yCAAyC;AAAA,EACzC,+CACE;AAAA,EACF,+CACE;AAAA,EACF,+CAA+C;AAAA,EAC/C,+CACE;AAAA,EAEF,sCAAsC;AAAA,EACtC,4CACE;AAAA,EACF,4CACE;AAAA,EACF,4CACE;AAAA,EACF,4CAA4C;AAAA,EAE5C,kCAAkC;AAAA,EAClC,wCACE;AAAA,EACF,wCAAwC;AAAA,EACxC,wCACE;AAAA,EACF,wCAAwC;AAAA;AAAA,EAGxC,oCAAoC;AAAA,EACpC,0CACE;AAAA,EACF,0CACE;AAAA,EACF,0CACE;AAAA,EACF,0CACE;AAAA,EAEF,+BAA+B;AAAA,EAC/B,qCAAqC;AAAA,EACrC,qCACE;AAAA,EACF,qCACE;AAAA,EACF,qCAAqC;AAAA,EAErC,gCAAgC;AAAA,EAChC,sCACE;AAAA,EACF,sCAAsC;AAAA,EACtC,sCACE;AAAA,EACF,sCAAsC;AAAA,EAEtC,sCAAsC;AAAA,EACtC,4CACE;AAAA,EACF,4CACE;AAAA,EACF,4CACE;AAAA,EAEF,0CAA0C;AAAA,EAC1C,gDACE;AAAA,EACF,gDAAgD;AAAA,EAChD,gDACE;AAAA;AAAA,EAGF,oCAAoC;AAAA,EACpC,0CACE;AAAA,EACF,0CACE;AAAA,EACF,0CACE;AAAA,EAEF,sCAAsC;AAAA,EACtC,4CACE;AAAA,EACF,4CACE;AAAA,EACF,4CACE;AAAA,EAEF,oCAAoC;AAAA,EACpC,0CACE;AAAA,EACF,0CAA0C;AAAA,EAC1C,0CACE;AAAA,EAEF,oCAAoC;AAAA,EACpC,0CACE;AAAA,EACF,0CACE;AAAA,EACF,0CACE;AAAA;AAAA,EAGF,qCAAqC;AAAA,EACrC,2CACE;AAAA,EACF,2CACE;AAAA,EACF,2CACE;AAAA,EAEF,qCAAqC;AAAA,EACrC,2CACE;AAAA,EACF,2CACE;AAAA,EACF,2CACE;AAAA,EAEF,oCAAoC;AAAA,EACpC,0CACE;AAAA,EACF,0CACE;AAAA,EACF,0CACE;AAAA;AAAA,EAGF,wCAAwC;AAAA,EACxC,8CACE;AAAA,EACF,8CAA8C;AAAA,EAC9C,8CAA8C;AAAA,EAC9C,8CACE;AAAA,EAEF,0CAA0C;AAAA,EAC1C,gDACE;AAAA,EACF,gDACE;AAAA,EACF,gDACE;AAAA,EAEF,0CAA0C;AAAA,EAC1C,gDACE;AAAA,EACF,gDACE;AAAA,EACF,gDACE;AAAA;AAAA,EAGF,oCAAoC;AAAA,EACpC,0CACE;AAAA,EACF,0CAA0C;AAAA,EAC1C,0CACE;AAAA,EACF,0CACE;AAAA,EAEF,qCAAqC;AAAA,EACrC,2CACE;AAAA,EACF,2CACE;AAAA,EACF,2CACE;AAAA;AAAA,EAGF,+BAA+B;AAAA,EAC/B,qCAAqC;AAAA,EACrC,qCAAqC;AAAA,EACrC,qCACE;AAAA;AAAA,EAGF,iCAAiC;AAAA,EACjC,8BAA8B;AAAA,EAC9B,uCAAuC;AACzC;",
4
+ "sourcesContent": ["/**\n * English Locale\n *\n * Default language for Minto CLI.\n */\n\nimport type { Translations } from '../types'\n\nexport const en: Translations = {\n // Common\n 'common.yes': 'Yes',\n 'common.no': 'No',\n 'common.ok': 'OK',\n 'common.cancel': 'Cancel',\n 'common.confirm': 'Confirm',\n 'common.save': 'Save',\n 'common.delete': 'Delete',\n 'common.edit': 'Edit',\n 'common.create': 'Create',\n 'common.loading': 'Loading...',\n 'common.error': 'Error',\n 'common.success': 'Success',\n 'common.warning': 'Warning',\n 'common.info': 'Info',\n 'common.unknown': 'Unknown',\n 'common.none': 'None',\n 'common.all': 'All',\n 'common.selected': 'Selected',\n 'common.default': 'Default',\n 'common.custom': 'Custom',\n 'common.enabled': 'Enabled',\n 'common.disabled': 'Disabled',\n 'common.connected': 'connected',\n 'common.disconnected': 'disconnected',\n 'common.pending': 'Pending',\n 'common.completed': 'Completed',\n 'common.failed': 'Failed',\n 'common.inProgress': 'In Progress',\n 'common.version': 'Version',\n 'common.help': 'Help',\n 'common.quit': 'Quit',\n 'common.back': 'Back',\n 'common.next': 'Next',\n 'common.previous': 'Previous',\n 'common.search': 'Search',\n 'common.filter': 'Filter',\n 'common.sort': 'Sort',\n 'common.refresh': 'Refresh',\n 'common.retry': 'Retry',\n 'common.skip': 'Skip',\n 'common.continue': 'Continue',\n 'common.abort': 'Abort',\n 'common.reset': 'Reset',\n 'common.clear': 'Clear',\n 'common.copy': 'Copy',\n 'common.paste': 'Paste',\n 'common.select': 'Select',\n 'common.deselect': 'Deselect',\n 'common.selectAll': 'Select All',\n 'common.deselectAll': 'Deselect All',\n\n // UI - Verbose mode\n 'ui.verbose.on': 'Verbose: On',\n 'ui.verbose.off': 'Verbose: Off',\n 'ui.verbose.label': 'Verbose',\n 'ui.verbose.hint': 'Press Ctrl+O to toggle verbose mode',\n // Deprecated - kept for backward compatibility\n 'ui.displayMode.minimal': 'Verbose: Off',\n 'ui.displayMode.compact': 'Verbose: Off',\n 'ui.displayMode.detailed': 'Verbose: On',\n 'ui.displayMode.label': 'Verbose',\n 'ui.displayMode.hint': 'Press Ctrl+O to toggle verbose mode',\n\n // UI - Input\n 'ui.input.placeholder': 'Ask anything or type / for commands...',\n 'ui.input.thinking': 'Thinking',\n 'ui.input.processing': 'Processing',\n 'ui.input.waiting': 'Waiting for response...',\n 'ui.input.multilineHint': 'Shift+Enter for new line',\n 'ui.input.submitHint': 'Enter to submit',\n\n // UI - Panels\n 'ui.panel.todo': 'Todo',\n 'ui.panel.tasks': 'Tasks',\n 'ui.panel.agents': 'Agents',\n 'ui.panel.models': 'Models',\n 'ui.panel.help': 'Help',\n 'ui.panel.history': 'History',\n 'ui.panel.settings': 'Settings',\n\n // UI - Status\n 'ui.status.ready': 'Ready',\n 'ui.status.busy': 'Busy',\n 'ui.status.error': 'Error',\n 'ui.status.offline': 'Offline',\n 'ui.status.connecting': 'Connecting...',\n 'ui.status.streaming': 'Streaming',\n\n // UI - Welcome\n 'ui.welcome.title': 'Welcome to Minto!',\n 'ui.welcome.subtitle': '',\n 'ui.welcome.quickStart': 'Quick Start',\n 'ui.welcome.tip1': 'Describe your research or analysis needs in plain words',\n 'ui.welcome.tip2': 'The more specific, the better the results',\n 'ui.welcome.tip3': 'Type /help to see all available commands',\n 'ui.welcome.tip4': '',\n 'ui.welcome.cwd': 'cwd',\n 'ui.welcome.mcpServers': 'MCP Servers',\n 'ui.welcome.taglinePart1': 'Strategic AI',\n 'ui.welcome.taglinePart2': 'Global Excellence',\n\n // UI - Update banner\n 'ui.update.newVersionAvailable':\n 'New version available: {version} (current: {current})',\n 'ui.update.runCommand': 'Run the following command to update:',\n 'ui.update.sudoNote':\n 'Note: you may need to prefix with \"sudo\" on macOS/Linux.',\n\n // UI - Hotkeys\n 'ui.hotkey.submit': 'Submit',\n 'ui.hotkey.newline': 'New line',\n 'ui.hotkey.cancel': 'Cancel',\n 'ui.hotkey.toggleMode': 'Toggle display mode',\n 'ui.hotkey.help': 'Help',\n 'ui.hotkey.quit': 'Quit',\n 'ui.hotkey.history': 'History',\n 'ui.hotkey.clear': 'Clear',\n 'ui.hotkey.interrupt': 'Interrupt',\n\n // UI - Hotkey hints (context-aware)\n 'ui.hints.command': 'Command',\n 'ui.hints.bash': 'Bash',\n 'ui.hints.send': 'Send',\n 'ui.hints.complete': 'Complete',\n 'ui.hints.rollback': 'Rollback',\n 'ui.hints.select': 'Select',\n 'ui.hints.confirm': 'Confirm',\n 'ui.hints.close': 'Close',\n 'ui.hints.browse': 'Browse',\n 'ui.hints.execute': 'Execute',\n 'ui.hints.completeCommand': 'Complete cmd',\n 'ui.hints.shortcuts': 'Keyboard Shortcuts',\n 'ui.hints.pressEsc': 'press Esc to close',\n 'ui.hints.tip': 'Type /help for full command list',\n // UI - PromptInput mode hints\n 'ui.hints.executeCommand': 'Execute command',\n 'ui.hints.recordNote': 'Record note',\n 'ui.hints.featureMenu': 'Feature menu',\n 'ui.hints.forNewline': 'for newline',\n 'ui.hints.forBashMode': 'for bash mode',\n 'ui.hints.forMintoMd': 'for MINTO.md',\n 'ui.hints.forCommands': 'for commands',\n 'ui.hints.typeToQueue': 'Type to queue next prompt',\n 'ui.hints.backgroundTasks':\n '{count} background task{count, plural, one {} other {s}}',\n 'ui.hints.queued': 'Queued',\n 'ui.hints.willRunAfter': 'will run after current task',\n 'ui.hints.toEdit': 'to edit',\n // UI - Completion hints\n 'ui.hints.completion.navigate':\n '\u2191\u2193 navigate \u2022 \u2192 accept \u2022 Tab cycle \u2022 Esc close',\n 'ui.hints.completion.enterDirectory':\n '\u2192 enter directory \u2022 \u2191\u2193 navigate \u2022 Tab cycle \u2022 Esc close',\n 'ui.hints.completion.selectAgent':\n '\u2192 select agent \u2022 \u2191\u2193 navigate \u2022 Tab cycle \u2022 Esc close',\n 'ui.hints.completion.insertReference':\n '\u2192 insert reference \u2022 \u2191\u2193 navigate \u2022 Tab cycle \u2022 Esc close',\n 'ui.hints.completion.moreAbove': '{count} more above...',\n 'ui.hints.completion.moreBelow': '{count} more below...',\n\n // UI - Model display\n 'ui.model.fallbackName': 'AI Assistant',\n // UI - Model management\n 'ui.model.manageList': 'Manage Model List',\n 'ui.model.manageListDeleteMode': 'Manage Model List - DELETE MODE',\n 'ui.model.cannotDeleteLast': 'Cannot delete the last model',\n 'ui.model.deleteConfirmPrompt':\n 'Press Enter/Space to DELETE selected model, Esc to cancel',\n 'ui.model.addNewModelPrompt': 'Press Enter to add new model',\n 'ui.model.configureNewModel':\n 'Configure a new model and add it to your library',\n 'ui.model.navigateHint':\n 'Navigate: \u2191\u2193 | Select: Enter | Delete: d | Exit: Esc',\n 'ui.model.deleteHint':\n 'Use \u2191/\u2193 to navigate, d to delete model, Enter to add new, Esc to exit',\n 'ui.model.activeLabel': 'Active',\n 'ui.model.availableLabel': 'Available',\n 'ui.model.spaceToCycle': 'Space to cycle',\n 'ui.model.enterToConfigure': 'Enter to configure',\n 'ui.model.notConfigured': '(not configured)',\n // UI - Model config\n 'ui.modelConfig.title': 'Model Configuration',\n 'ui.modelConfig.clearMode': 'CLEAR MODE',\n 'ui.modelConfig.clearAssignmentPrompt':\n 'Press Enter/Space to clear selected pointer assignment, Esc to cancel',\n 'ui.modelConfig.noModelsConfigured':\n 'No models configured. Use \"Configure New Model\" to add your first model.',\n 'ui.modelConfig.configureHint':\n 'Configure which models to use for different tasks. Space to cycle, Enter to configure.',\n 'ui.modelConfig.navigateHint':\n 'Use \u2191/\u2193 to navigate, Space to cycle models, Enter to configure, d to clear, Esc to exit',\n 'ui.modelConfig.clearModePrompt':\n 'CLEAR MODE: Press Enter/Space to clear assignment, Esc to cancel',\n // UI - Model pointer descriptions\n 'ui.modelConfig.mainDescription':\n 'Primary model for general tasks and conversations',\n 'ui.modelConfig.taskDescription':\n 'Model for TaskTool sub-agents and automation',\n 'ui.modelConfig.reasoningDescription':\n 'Model optimized for complex reasoning tasks',\n 'ui.modelConfig.quickDescription':\n 'Fast model for simple operations and utilities',\n 'ui.modelConfig.compactDescription':\n 'Model for context compression and summarization',\n 'ui.modelConfig.manageModelsDescription':\n 'View, add, and delete model configurations',\n\n // UI - Sensitive file warning\n 'ui.sensitiveFile.title': 'Sensitive File Warning',\n 'ui.sensitiveFile.operating': 'Operating on sensitive file',\n 'ui.sensitiveFile.defaultReason':\n 'This file may contain API keys, credentials, or other sensitive information.',\n 'ui.sensitiveFile.operation.read': 'Reading',\n 'ui.sensitiveFile.operation.write': 'Modifying',\n 'ui.sensitiveFile.operation.delete': 'Deleting',\n\n // UI - Todo panel\n 'ui.todo.tasksRemaining': '{count} tasks remaining',\n 'ui.todo.allDone': 'All done',\n 'ui.todo.updatedTaskList': 'Updated task list',\n 'ui.todo.pending': 'pending',\n 'ui.todo.inProgress': 'in progress',\n 'ui.todo.done': 'done',\n\n // Commands - Undo\n 'commands.undo.description': 'Undo file changes (requires --smart mode)',\n 'commands.undo.title': 'Undo File Changes',\n 'commands.undo.selectFile': 'Select file to restore',\n 'commands.undo.noBackups': 'No file changes to undo.',\n 'commands.undo.smartModeHint':\n 'Tip: Start Minto with --smart mode to enable automatic backups:',\n 'commands.undo.smartModeCommand': ' minto --smart',\n 'commands.undo.versions': '{count} versions',\n 'commands.undo.selectVersion': 'Select version to restore',\n 'commands.undo.file': 'File',\n 'commands.undo.restoredTo': 'Restored to',\n 'commands.undo.fileRestored': 'File restored',\n 'commands.undo.restoreFailed': 'Restore failed, please try again.',\n 'commands.undo.loading': 'Loading backup info...',\n 'commands.undo.error': 'Error',\n 'commands.undo.pressAnyKey': 'Press any key to exit',\n 'commands.undo.pressQOrEsc': 'Press q or Esc to exit',\n 'commands.undo.navHintsFile':\n '\u2191/\u2193: Select | Enter: View versions | q/Esc: Exit',\n 'commands.undo.navHintsVersion':\n '\u2191/\u2193: Select | Enter: Restore version | Esc: Back',\n // Time format\n 'commands.undo.justNow': 'just now',\n 'commands.undo.minutesAgo': '{count} minutes ago',\n 'commands.undo.today': 'Today',\n 'commands.undo.weekday.sun': 'Sun',\n 'commands.undo.weekday.mon': 'Mon',\n 'commands.undo.weekday.tue': 'Tue',\n 'commands.undo.weekday.wed': 'Wed',\n 'commands.undo.weekday.thu': 'Thu',\n 'commands.undo.weekday.fri': 'Fri',\n 'commands.undo.weekday.sat': 'Sat',\n\n // Commands\n 'commands.help.description': 'Show help information',\n 'commands.clear.description': 'Clear the screen',\n 'commands.compact.description': 'Compress conversation context',\n 'commands.compact.success': 'Context compressed successfully',\n 'commands.compact.noMessages': 'No messages to compress',\n 'commands.model.description': 'Select or switch AI model',\n 'commands.model.current': 'Current model',\n 'commands.model.switched': 'Switched to model',\n 'commands.model.notFound': 'Model not found',\n 'commands.agents.description': 'Manage and view agents',\n 'commands.agents.title': 'Available Agents',\n 'commands.agents.empty': 'No agents available',\n 'commands.agents.loaded': 'agents loaded',\n 'commands.tasks.description': 'View running tasks',\n 'commands.config.description': 'Manage configuration',\n 'commands.bug.description': 'Report a bug',\n 'commands.doctor.description': 'Check system health',\n 'commands.status.description': 'Show system status',\n 'commands.permissions.description': 'Manage permissions',\n 'commands.mcp.description': 'Manage MCP servers',\n 'commands.plugin.description': 'Manage plugins',\n 'commands.sandbox.description': 'Configure sandbox mode',\n 'commands.thinking.description': 'Toggle thinking mode',\n 'commands.thinking.enabled': 'Thinking mode enabled',\n 'commands.thinking.disabled': 'Thinking mode disabled',\n 'commands.language.description':\n 'Switch interface language (English / \u7B80\u4F53\u4E2D\u6587)',\n 'commands.language.title': 'Language Settings',\n 'commands.language.current': 'Current',\n 'commands.language.select': 'Select language',\n 'commands.language.changed': 'Language changed to',\n 'commands.language.restart': 'Interface will refresh automatically',\n 'commands.language.alreadyUsing': 'Already using',\n 'commands.language.navigate': '\u2191\u2193: Navigate \u00B7 Enter: Select \u00B7 Esc/q: Cancel',\n\n // Commands - Sessions\n 'commands.sessions.description': 'View and search session history',\n 'commands.sessions.title': 'Recent Sessions',\n 'commands.sessions.count': '{shown} of {total}',\n 'commands.sessions.noSessions': 'No sessions found.',\n 'commands.sessions.headerDate': 'Date',\n 'commands.sessions.headerProject': 'Project',\n 'commands.sessions.headerPrompt': 'First Prompt',\n 'commands.sessions.headerMsgs': 'Msgs',\n 'commands.sessions.headerTools': 'Tools',\n 'commands.sessions.helpHint': 'Use /sessions --help for more options',\n 'commands.sessions.today': 'Today',\n 'commands.sessions.yesterday': 'Yesterday',\n 'commands.sessions.moreBelow': '... and {count} more (scroll with \u2191\u2193)',\n 'commands.sessions.navigationHint':\n '\u2191\u2193: Navigate \u00B7 Enter: Select \u00B7 Esc: Close',\n\n // Commands - Resume\n 'commands.resume.description':\n 'Resume a previous conversation from this project',\n 'commands.resume.title': 'Resume Conversation',\n 'commands.resume.noSessions': 'No conversations found in this project.',\n 'commands.resume.navigationHint':\n '\u2191\u2193/jk: Navigate \u00B7 Enter/1-9: Select \u00B7 Esc: Cancel',\n\n // Commands - New\n 'commands.new.description': 'Start a new conversation',\n\n // Tools\n 'tools.bash.description': 'Execute shell commands',\n 'tools.bash.executing': 'Executing',\n 'tools.bash.completed': 'Command completed',\n 'tools.bash.failed': 'Command failed',\n 'tools.read.description': 'Read file contents',\n 'tools.read.reading': 'Reading',\n 'tools.write.description': 'Write file contents',\n 'tools.write.writing': 'Writing',\n 'tools.write.created': 'Created',\n 'tools.write.updated': 'Updated',\n 'tools.edit.description': 'Edit file contents',\n 'tools.edit.editing': 'Editing',\n 'tools.glob.description': 'Find files by pattern',\n 'tools.grep.description': 'Search file contents',\n 'tools.task.description': 'Spawn a subagent task',\n 'tools.task.spawning': 'Spawning task',\n 'tools.task.running': 'Task running',\n 'tools.task.completed': 'Done',\n 'tools.todo.description': 'Manage todo items',\n\n // Errors\n 'errors.generic': 'An error occurred',\n 'errors.network': 'Network error',\n 'errors.timeout': 'Request timed out',\n 'errors.auth': 'Authentication failed',\n 'errors.rateLimit': 'Rate limit exceeded',\n 'errors.modelNotFound': 'Model not found',\n 'errors.apiKeyMissing': 'API key is missing',\n 'errors.apiKeyInvalid': 'API key is invalid',\n 'errors.permissionDenied': 'Permission denied',\n 'errors.fileNotFound': 'File not found',\n 'errors.fileReadError': 'Error reading file',\n 'errors.fileWriteError': 'Error writing file',\n 'errors.configError': 'Configuration error',\n 'errors.parseError': 'Parse error',\n 'errors.validationError': 'Validation error',\n 'errors.aborted': 'Operation aborted',\n 'errors.contextTooLong': 'Context too long',\n 'errors.serverError': 'Server error',\n 'errors.connectionFailed': 'Connection failed',\n\n // Help\n 'help.title': 'Minto Help',\n 'help.usage': 'Usage',\n 'help.commands': 'Commands',\n 'help.options': 'Options',\n 'help.examples': 'Examples',\n 'help.moreInfo': 'For more information',\n 'help.reportBug': 'Report a bug',\n 'help.documentation': 'Documentation',\n // Help - Usage modes\n 'help.usageModes': 'Usage Modes:',\n 'help.nonInteractive': 'Non-interactive:',\n 'help.runForOptions': 'Run {command} -h for all command line options',\n // Help - Common tasks\n 'help.commonTasks': 'Common Tasks:',\n 'help.taskAskQuestions': 'Ask questions about your codebase',\n 'help.taskEditFiles': 'Edit files',\n 'help.taskFixErrors': 'Fix errors',\n 'help.taskRunCommands': 'Run commands',\n 'help.taskRunBash': 'Run bash commands',\n // Help - Command categories\n 'help.builtInCommands': 'Built-in Commands:',\n 'help.customCommands': 'Custom Commands:',\n 'help.pluginCommands': 'Plugin Commands:',\n 'help.mcpCommands': 'MCP Commands:',\n // Help - Command loading\n 'help.commandPriority': 'Commands are loaded in priority order:',\n 'help.priorityBuiltIn':\n '1. Built-in commands (highest priority, alphabetically sorted)',\n 'help.priorityCustom':\n '2. Custom commands (user/project, alphabetically sorted)',\n 'help.priorityPlugin': '3. Plugin commands (alphabetically sorted)',\n 'help.priorityMcp': '4. MCP commands (alphabetically sorted)',\n 'help.refreshCommandsHint': 'Use /refresh-commands to reload after changes',\n // Help - Product description\n 'help.productDescription':\n \"{product} is a beta research preview. Always review {product}'s responses, especially when running code. {product} has read access to files in the current directory and can run commands and edit files with your permission.\",\n // Help - Mode Systems\n 'help.modeSystems': 'Mode Systems:',\n 'help.safetyModes': 'Safety Modes (startup flags, based on tool risk level):',\n 'help.safetyModeYolo':\n '--yolo All tools auto-allowed (default, for non-technical users)',\n 'help.safetyModeSmart': '--smart Dangerous tools require confirmation',\n 'help.safetyModeStrict':\n '--strict Non-read-only tools require confirmation',\n 'help.safetyModeFree':\n '--free Tools outside project directory require confirmation',\n 'help.permissionModes':\n 'Permission Modes (Shift+Tab to cycle, based on tool whitelist):',\n 'help.permissionModeDefault': 'default Standard confirmation flow',\n 'help.permissionModeAcceptEdits':\n 'acceptEdits Auto-approve edit operations',\n 'help.permissionModePlan':\n 'plan Read-only tools only (research mode)',\n 'help.permissionModeBypass': 'bypassPermissions Skip all permission checks',\n 'help.modeInteraction':\n 'Both systems apply together, using the stricter result.',\n\n // Status messages\n 'status.modelLoaded': 'Model loaded',\n 'status.contextCompressed': 'Context compressed',\n 'status.tokensUsed': 'Tokens used',\n 'status.costEstimate': 'Cost estimate',\n 'status.apiLatency': 'API latency',\n 'status.streaming': 'Streaming response',\n 'status.thinking': 'Thinking',\n 'status.toolUse': 'Using tool',\n 'status.subagent': 'Running subagent',\n\n // Prompts\n 'prompts.confirmDelete': 'Are you sure you want to delete?',\n 'prompts.confirmOverwrite': 'File exists. Overwrite?',\n 'prompts.confirmExecute': 'Execute this command?',\n 'prompts.enterApiKey': 'Enter API key',\n 'prompts.selectModel': 'Select a model',\n 'prompts.selectLanguage': 'Select language',\n 'prompts.interruptedByUser': 'Interrupted by user',\n 'prompts.interruptedCtrlC': 'Interrupted by user (Ctrl-C)',\n 'prompts.interruptedEscEsc': 'Interrupted by user (Esc Esc)',\n 'prompts.inputCleared': 'Input cleared',\n 'prompts.inputClearedCtrlD': 'Input cleared (Ctrl-D)',\n 'prompts.inputClearedEscEsc': 'Input cleared (Esc Esc)',\n 'prompts.screenCleared': 'Screen cleared (Ctrl-L)',\n 'prompts.todoPanelToggled': 'TodoPanel toggled (Ctrl-T)',\n 'prompts.typeCommandFirst': 'Type a command first, then press Ctrl-B',\n 'prompts.executingBash': 'Executing bash command... (Ctrl-B)',\n 'prompts.exitingGracefully': 'Exiting gracefully...',\n 'prompts.pressCtrlDToExit': 'Press Ctrl-D to exit',\n 'prompts.pressCtrlDAgain': 'Press Ctrl-D again to exit',\n 'prompts.pressEscAgainClear': 'Press Esc again to clear input',\n 'prompts.pressEscAgainInterrupt': 'Press Esc again to interrupt',\n 'prompts.thinkingModeEnabled': 'Thinking mode enabled (Tab)',\n 'prompts.thinkingModeDisabled': 'Thinking mode disabled (Tab)',\n 'prompts.limitedInputMode': '\u26A0\uFE0F Limited input mode',\n 'prompts.limitedInputModeDetail':\n '(Advanced keyboard shortcuts unavailable - raw mode not supported)',\n 'prompts.queuedMessage': 'Queued: \"{input}\" ({count} in queue)',\n 'prompts.noModelsConfigured':\n '\u274C No models configured. Use /model to add models.',\n 'prompts.noActiveModels':\n '\u274C No active models ({total} total, all inactive). Use /model to activate models.',\n 'prompts.onlyOneActiveModel':\n '\u26A0\uFE0F Only 1 active model out of {total} total models: {list}. ALL configured models will be activated for switching.',\n 'prompts.modelSwitchingFailed':\n '\u274C Model switching failed ({active} active, {total} total models available)',\n\n // Agent/Subagent\n 'agent.spawning': 'Spawning agent',\n 'agent.running': 'Agent running',\n 'agent.completed': 'Agent completed',\n 'agent.failed': 'Agent failed',\n 'agent.cancelled': 'Agent cancelled',\n 'agent.waiting': 'Waiting',\n 'agent.thinking': 'Thinking',\n\n // Model\n 'model.selecting': 'Selecting model',\n 'model.selected': 'Model selected',\n 'model.unavailable': 'Model unavailable',\n 'model.switching': 'Switching model',\n 'model.switched': 'Model switched',\n 'model.default': 'Default model',\n 'model.custom': 'Custom model',\n\n // Permissions\n 'permission.required': 'Permission required',\n 'permission.granted': 'Permission granted',\n 'permission.denied': 'Permission denied',\n 'permission.allowOnce': 'Allow once',\n 'permission.allowAlways': 'Allow always',\n 'permission.denyOnce': 'Deny once',\n 'permission.denyAlways': 'Deny always',\n 'permission.sensitiveFile': 'Sensitive file access',\n 'permission.externalPath': 'External path access',\n 'permission.dangerousCommand': 'Dangerous command',\n\n // Dialog - Generic\n 'dialog.enterToConfirm': 'Enter to confirm',\n 'dialog.escToCancel': 'Esc to cancel',\n 'dialog.confirmCancelPrompt': '[Enter to confirm] [Esc to cancel]',\n 'dialog.enterCustomResponse': 'Enter your custom response:',\n // Dialog - Message selector\n 'dialog.jumpToPreviousMessage': 'Jump to a previous message',\n 'dialog.forkConversation': 'This will fork the conversation',\n 'dialog.current': '(current)',\n 'dialog.emptyMessage': '(empty message)',\n 'dialog.selectConfirmCancelPrompt':\n '\u2191/\u2193 to select \u00B7 Enter to confirm \u00B7 Tab/Esc to cancel',\n // Dialog - MCP server\n 'dialog.mcpServerDetected': 'New MCP Server Detected',\n 'dialog.mcpServersDetected': 'New MCP Servers Detected',\n 'dialog.mcpApprovalRequired':\n 'This project contains a .mcprc file with an MCP server that requires your approval:',\n 'dialog.mcpSelectServers': 'Please select the servers you want to enable:',\n 'dialog.approveServer': 'Yes, approve this server',\n 'dialog.rejectServer': 'No, reject this server',\n 'dialog.confirmRejectPrompt': 'Enter to confirm \u00B7 Esc to reject',\n 'dialog.selectConfirmRejectAllPrompt':\n 'Space to select \u00B7 Enter to confirm \u00B7 Esc to reject all',\n // Dialog - Trust\n 'dialog.trustTitle': 'Do you trust the files in this folder?',\n 'dialog.trustWarning1':\n '{product} may read files in this folder. Reading untrusted files may lead to {product} to behave in an unexpected ways.',\n 'dialog.trustWarning2':\n 'With your permission {product} may execute files in this folder. Executing untrusted code is unsafe.',\n 'dialog.yesProceed': 'Yes, proceed',\n 'dialog.noExit': 'No, exit',\n 'dialog.confirmExitPrompt': 'Enter to confirm \u00B7 Esc to exit',\n\n // Config\n 'config.title': 'Configuration',\n 'config.modelConfiguration': 'Model Configuration:',\n 'config.noModelsConfigured':\n 'No models configured. Use /model to add models.',\n 'config.useModelCommand': 'Use /model to manage model configurations',\n 'config.enterToSaveEscToCancel': 'Enter to save \u00B7 Esc to cancel',\n 'config.navigateChangeClose':\n '\u2191/\u2193 to navigate \u00B7 Enter to change \u00B7 Esc to close',\n 'config.enterNewValue': 'Enter new value:',\n 'config.theme': 'Theme',\n 'config.verboseMode': 'Verbose mode',\n 'config.streamResponses': 'Stream responses',\n 'config.compressionMode': 'Compression mode (/compact)',\n\n // HotkeyHelpPanel\n 'hotkey.navigation': 'Navigation',\n 'hotkey.control': 'Control',\n 'hotkey.features': 'Features',\n 'hotkey.inputModes': 'Input Modes',\n 'hotkey.browseHistory': 'Browse command history',\n 'hotkey.searchHistory': 'Search command history',\n 'hotkey.autocomplete': 'Autocomplete commands/paths',\n 'hotkey.rollbackResponse': 'Rollback last response',\n 'hotkey.cancelOperation': 'Cancel current operation',\n 'hotkey.exitPressTwice': 'Exit (press twice)',\n 'hotkey.clearScreen': 'Clear screen',\n 'hotkey.submitPrompt': 'Submit prompt',\n 'hotkey.toggleTodoPanel': 'Toggle todo panel',\n 'hotkey.cycleDisplayMode': 'Cycle display mode',\n 'hotkey.executeAsBash': 'Execute as bash command',\n 'hotkey.showHideHelp': 'Show/hide this help',\n 'hotkey.startSlashCommand': 'Start a slash command',\n 'hotkey.executeBashCommand': 'Execute bash command',\n 'hotkey.addNoteToKoding': 'Add note to KODING.md',\n 'hotkey.ctrlQuestionForShortcuts': 'Ctrl+? for shortcuts',\n\n // User-Friendly Error Messages\n // Network & Connectivity\n 'friendlyError.networkConnection.title': 'Network Connection Issue',\n 'friendlyError.networkConnection.description':\n 'Unable to connect to the server. The network may be unstable or the server is temporarily unavailable.',\n 'friendlyError.networkConnection.suggestion1':\n 'Check your network connection',\n 'friendlyError.networkConnection.suggestion2': 'Wait a moment and try again',\n 'friendlyError.networkConnection.suggestion3':\n 'If using a VPN, try switching network nodes',\n\n 'friendlyError.networkTimeout.title': 'Request Timeout',\n 'friendlyError.networkTimeout.description':\n 'The server took too long to respond. The request has timed out.',\n 'friendlyError.networkTimeout.suggestion1':\n 'The network may be slow, please try again later',\n 'friendlyError.networkTimeout.suggestion2':\n 'If processing large amounts of data, try processing in smaller batches',\n 'friendlyError.networkTimeout.suggestion3': 'Check your network stability',\n\n 'friendlyError.networkDns.title': 'Cannot Find Server',\n 'friendlyError.networkDns.description':\n 'Unable to resolve the server address. Please check your network settings.',\n 'friendlyError.networkDns.suggestion1': 'Check your network connection',\n 'friendlyError.networkDns.suggestion2':\n 'Verify the API address is configured correctly',\n 'friendlyError.networkDns.suggestion3': 'Try using a different DNS service',\n\n // API & Service\n 'friendlyError.apiRateLimit.title': 'Too Many Requests',\n 'friendlyError.apiRateLimit.description':\n 'Too many requests were sent in a short time. The server requires a brief wait.',\n 'friendlyError.apiRateLimit.suggestion1':\n 'Wait a few minutes before continuing',\n 'friendlyError.apiRateLimit.suggestion2':\n 'Reduce the number of concurrent tasks',\n 'friendlyError.apiRateLimit.suggestion3':\n 'Consider upgrading your API plan for higher quotas',\n\n 'friendlyError.apiAuth.title': 'API Authentication Failed',\n 'friendlyError.apiAuth.description': 'The API key is invalid or has expired.',\n 'friendlyError.apiAuth.suggestion1':\n 'Check that your API key is configured correctly',\n 'friendlyError.apiAuth.suggestion2':\n 'Verify that your API key has not expired',\n 'friendlyError.apiAuth.suggestion3': 'Update your API key in settings',\n\n 'friendlyError.apiQuota.title': 'Usage Quota Exceeded',\n 'friendlyError.apiQuota.description':\n 'Your API usage quota has reached its limit.',\n 'friendlyError.apiQuota.suggestion1': 'Check your account balance',\n 'friendlyError.apiQuota.suggestion2':\n 'Wait for quota reset (usually at the beginning of each month)',\n 'friendlyError.apiQuota.suggestion3': 'Consider upgrading your plan',\n\n 'friendlyError.apiServerError.title': 'Server Error',\n 'friendlyError.apiServerError.description':\n 'The AI server encountered an issue. This is usually temporary.',\n 'friendlyError.apiServerError.suggestion1':\n 'Wait a few minutes and try again',\n 'friendlyError.apiServerError.suggestion2':\n 'If the problem persists, try switching to another model',\n\n 'friendlyError.apiInvalidResponse.title': 'Invalid Server Response',\n 'friendlyError.apiInvalidResponse.description':\n 'Received an unexpected response from the server.',\n 'friendlyError.apiInvalidResponse.suggestion1': 'Retry the current operation',\n 'friendlyError.apiInvalidResponse.suggestion2':\n 'If the problem persists, contact support',\n\n // File & Storage\n 'friendlyError.fileNotFound.title': 'File Not Found',\n 'friendlyError.fileNotFound.description':\n 'The specified file does not exist or has been moved.',\n 'friendlyError.fileNotFound.suggestion1':\n 'Check that the file path is correct',\n 'friendlyError.fileNotFound.suggestion2':\n 'Verify that the file has not been deleted or moved',\n\n 'friendlyError.filePermission.title': 'File Access Denied',\n 'friendlyError.filePermission.description':\n 'You do not have permission to read or write this file.',\n 'friendlyError.filePermission.suggestion1':\n 'Check the file permission settings',\n 'friendlyError.filePermission.suggestion2':\n 'Verify that you have access to this folder',\n\n 'friendlyError.fileTooLarge.title': 'File Too Large',\n 'friendlyError.fileTooLarge.description':\n 'The file size exceeds the processing limit.',\n 'friendlyError.fileTooLarge.suggestion1': 'Try processing a smaller file',\n 'friendlyError.fileTooLarge.suggestion2':\n 'Split large files into smaller parts',\n\n 'friendlyError.fileEncoding.title': 'File Format Issue',\n 'friendlyError.fileEncoding.description':\n 'Unable to read the file content correctly. The encoding format may not be supported.',\n 'friendlyError.fileEncoding.suggestion1':\n 'Verify that the file is in text format',\n 'friendlyError.fileEncoding.suggestion2':\n 'Try converting the file to UTF-8 encoding',\n\n // Configuration\n 'friendlyError.configMissing.title': 'Missing Configuration',\n 'friendlyError.configMissing.description':\n 'Some required settings have not been configured.',\n 'friendlyError.configMissing.suggestion1':\n 'Run the /setup command to complete initial configuration',\n 'friendlyError.configMissing.suggestion2':\n 'Check that the configuration file is complete',\n\n 'friendlyError.configInvalid.title': 'Invalid Configuration',\n 'friendlyError.configInvalid.description':\n 'Some setting values are incorrect.',\n 'friendlyError.configInvalid.suggestion1':\n 'Check the configuration file format',\n 'friendlyError.configInvalid.suggestion2':\n 'Refer to the documentation for correct configuration',\n\n 'friendlyError.configApiKey.title': 'API Key Issue',\n 'friendlyError.configApiKey.description':\n 'The API key is not set or has an incorrect format.',\n 'friendlyError.configApiKey.suggestion1':\n 'Use the /setup command to configure your API key',\n 'friendlyError.configApiKey.suggestion2':\n 'Ensure the key is copied correctly (no extra spaces)',\n\n // Model & AI\n 'friendlyError.modelUnavailable.title': 'Model Temporarily Unavailable',\n 'friendlyError.modelUnavailable.description':\n 'The requested AI model is currently unavailable.',\n 'friendlyError.modelUnavailable.suggestion1': 'Try using a different model',\n 'friendlyError.modelUnavailable.suggestion2': 'Try again later',\n 'friendlyError.modelUnavailable.suggestion3':\n 'Verify the model name is correct',\n\n 'friendlyError.modelContextLength.title': 'Content Too Long',\n 'friendlyError.modelContextLength.description':\n 'The input content exceeds the model processing capacity.',\n 'friendlyError.modelContextLength.suggestion1':\n 'Reduce the length of input content',\n 'friendlyError.modelContextLength.suggestion2':\n 'Split long text into multiple parts for processing',\n\n 'friendlyError.modelContentFilter.title': 'Content Filtered',\n 'friendlyError.modelContentFilter.description':\n 'Some content triggered the safety filter.',\n 'friendlyError.modelContentFilter.suggestion1':\n 'Modify the input content and try again',\n 'friendlyError.modelContentFilter.suggestion2':\n 'Avoid sensitive or inappropriate content',\n\n // System\n 'friendlyError.systemMemory.title': 'Insufficient Memory',\n 'friendlyError.systemMemory.description':\n 'Not enough system memory to complete the operation.',\n 'friendlyError.systemMemory.suggestion1': 'Close some other applications',\n 'friendlyError.systemMemory.suggestion2':\n 'Reduce the number of concurrent tasks',\n 'friendlyError.systemMemory.suggestion3':\n 'Restart the application and try again',\n\n 'friendlyError.systemProcess.title': 'System Process Error',\n 'friendlyError.systemProcess.description':\n 'An error occurred while running an external command.',\n 'friendlyError.systemProcess.suggestion1':\n 'Check that the command is correct',\n 'friendlyError.systemProcess.suggestion2':\n 'Verify that the required tools are installed',\n\n // Unknown\n 'friendlyError.unknown.title': 'Unexpected Error',\n 'friendlyError.unknown.description': 'An unexpected problem occurred.',\n 'friendlyError.unknown.suggestion1': 'Retry the current operation',\n 'friendlyError.unknown.suggestion2':\n 'If the problem persists, check the error logs or contact support',\n\n // Error display format\n 'friendlyError.suggestionLabel': 'Suggestions',\n 'friendlyError.errorIdLabel': 'Error ID',\n 'friendlyError.technicalDetailsLabel': 'Technical Details',\n\n // UI - TabbedListView\n 'ui.tabbedList.search': 'Search...',\n 'ui.tabbedList.loading': 'Loading...',\n 'ui.tabbedList.noItems': 'No items found',\n 'ui.tabbedList.moreAbove': '{count} more above',\n 'ui.tabbedList.moreBelow': '{count} more below',\n 'ui.tabbedList.tabCycleHint': 'Tab/\u2190\u2192',\n 'ui.tabbedList.navigationHint':\n '\u2191\u2193 Navigate \u00B7 Enter Select \u00B7 Tab/\u2190\u2192 Switch \u00B7 Esc Close',\n\n // Commands - Stats\n 'commands.stats.description': 'View usage statistics',\n 'commands.stats.title': 'Usage Statistics',\n 'commands.stats.today': 'Today',\n 'commands.stats.thisWeek': 'This Week',\n 'commands.stats.thisMonth': 'This Month',\n 'commands.stats.lifetime': 'Lifetime',\n 'commands.stats.messages': 'Messages',\n 'commands.stats.sessions': 'Sessions',\n 'commands.stats.toolCalls': 'Tool Calls',\n 'commands.stats.tokens': 'Tokens',\n 'commands.stats.totalMessages': 'Total Messages',\n 'commands.stats.totalSessions': 'Total Sessions',\n 'commands.stats.totalTools': 'Total Tools',\n 'commands.stats.estCost': 'Est. Cost',\n 'commands.stats.modelUsage': 'Model Usage',\n 'commands.stats.topTools': 'Top Tools (by usage)',\n 'commands.stats.calls': 'calls',\n 'commands.stats.noData':\n 'No usage data yet. Start using Minto to see your statistics!',\n 'commands.stats.vsYesterday': 'vs yesterday',\n 'commands.stats.firstUsed': 'First used',\n}\n"],
5
+ "mappings": "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",
6
6
  "names": []
7
7
  }