reasonix 0.51.0 → 0.52.0

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 (143) hide show
  1. package/dashboard/dist/app.css +1 -1
  2. package/dashboard/dist/app.js +3 -3
  3. package/dashboard/dist/app.js.map +1 -1
  4. package/dist/cli/{acp-XEUHGG7X.js → acp-NEUYWGUU.js} +26 -26
  5. package/dist/cli/chat-QA6IVFJD.js +49 -0
  6. package/dist/cli/{chunk-HGK57NBN.js → chunk-2W4F3RIZ.js} +2 -2
  7. package/dist/cli/{chunk-UO6E7FN3.js → chunk-3OXD5CBM.js} +32756 -31192
  8. package/dist/cli/chunk-3OXD5CBM.js.map +1 -0
  9. package/dist/cli/{chunk-UMZ6KHTS.js → chunk-5YLEKX2V.js} +2 -2
  10. package/dist/cli/{chunk-BA5R6BAE.js → chunk-6QBUXA73.js} +2 -2
  11. package/dist/cli/chunk-77JIQ7SL.js +40 -0
  12. package/dist/cli/chunk-77JIQ7SL.js.map +1 -0
  13. package/dist/cli/{chunk-6XWXIVQ3.js → chunk-AMSK3ZLB.js} +2 -2
  14. package/dist/cli/chunk-AMSK3ZLB.js.map +1 -0
  15. package/dist/cli/{chunk-A5PBEIJ7.js → chunk-AOYUW3HR.js} +37 -4
  16. package/dist/cli/chunk-AOYUW3HR.js.map +1 -0
  17. package/dist/cli/{chunk-3YRTIWFX.js → chunk-ARBGTNHM.js} +2 -2
  18. package/dist/cli/{chunk-3BTK5BHI.js → chunk-B4MOGWHW.js} +2 -2
  19. package/dist/cli/{chunk-5AIDYVH2.js → chunk-CFJY64UA.js} +2 -2
  20. package/dist/cli/{chunk-SBHF5NWD.js → chunk-CGVW5W7N.js} +14 -14
  21. package/dist/cli/{chunk-SBHF5NWD.js.map → chunk-CGVW5W7N.js.map} +1 -1
  22. package/dist/cli/{chunk-DVD67FXQ.js → chunk-CLHMV6OL.js} +568 -66
  23. package/dist/cli/chunk-CLHMV6OL.js.map +1 -0
  24. package/dist/cli/{chunk-2WUEAI2I.js → chunk-CPCUMMSR.js} +3 -3
  25. package/dist/cli/{chunk-JHWQDJZA.js → chunk-CTRM32BP.js} +2 -2
  26. package/dist/cli/{chunk-544J4PXD.js → chunk-D6WRFR6V.js} +5 -5
  27. package/dist/cli/{chunk-N4SEBLU4.js → chunk-DLTE4GBY.js} +3 -3
  28. package/dist/cli/{chunk-NRROJXXT.js → chunk-FY5UERSG.js} +9 -9
  29. package/dist/cli/{chunk-C2MRSJTV.js → chunk-GFJJEW3Z.js} +18 -10
  30. package/dist/cli/chunk-GFJJEW3Z.js.map +1 -0
  31. package/dist/cli/{chunk-R6KIHEF3.js → chunk-GNRKXRRE.js} +743 -660
  32. package/dist/cli/chunk-GNRKXRRE.js.map +1 -0
  33. package/dist/cli/{chunk-SXSAWOB7.js → chunk-HI6THNAZ.js} +19 -17
  34. package/dist/cli/chunk-HI6THNAZ.js.map +1 -0
  35. package/dist/cli/{chunk-K4YQFULP.js → chunk-HNZ4727T.js} +15 -15
  36. package/dist/cli/chunk-I3NE5S63.js +54 -0
  37. package/dist/cli/{chunk-EAMXOWUW.js.map → chunk-I3NE5S63.js.map} +1 -1
  38. package/dist/cli/{chunk-FEZK652I.js → chunk-MVLPXZAA.js} +834 -10
  39. package/dist/cli/chunk-MVLPXZAA.js.map +1 -0
  40. package/dist/cli/{chunk-36BM7INR.js → chunk-MW64SQUE.js} +2 -2
  41. package/dist/cli/{chunk-Z3MKG7MQ.js → chunk-OMNRXZNA.js} +2 -2
  42. package/dist/cli/{chunk-7YPMTE3U.js → chunk-RCC73DWQ.js} +5 -9
  43. package/dist/cli/chunk-RCC73DWQ.js.map +1 -0
  44. package/dist/cli/{chunk-2HVTBFCI.js → chunk-RHQOGG43.js} +5 -3
  45. package/dist/cli/chunk-RHQOGG43.js.map +1 -0
  46. package/dist/cli/{chunk-EWVFGYT6.js → chunk-VVPV5HU6.js} +2 -2
  47. package/dist/cli/{chunk-7YB26OQO.js → chunk-WPY7AFS6.js} +2 -2
  48. package/dist/cli/{chunk-BM6BBFAV.js → chunk-XBYHNZ5Z.js} +2 -2
  49. package/dist/cli/{chunk-WPOKBW5E.js → chunk-XNMXVL6C.js} +2 -2
  50. package/dist/cli/{chunk-SVD4UPRQ.js → chunk-XUZHBQSM.js} +2 -2
  51. package/dist/cli/{chunk-Q46B3Z7H.js → chunk-YMYX6QTC.js} +8 -5
  52. package/dist/cli/{chunk-Q46B3Z7H.js.map → chunk-YMYX6QTC.js.map} +1 -1
  53. package/dist/cli/{chunk-K3QJ3GKI.js → chunk-Z663GVUB.js} +3 -3
  54. package/dist/cli/{code-BMXLBC7D.js → code-WN6D4VZO.js} +35 -36
  55. package/dist/cli/{code-BMXLBC7D.js.map → code-WN6D4VZO.js.map} +1 -1
  56. package/dist/cli/{commands-E4RZXMF6.js → commands-DHETOY7O.js} +4 -4
  57. package/dist/cli/{commit-KSRQ64IL.js → commit-BBUYAKZV.js} +3 -3
  58. package/dist/cli/{config-QNDONOTU.js → config-KV7VV5LG.js} +4 -2
  59. package/dist/cli/{desktop-H3ZHIMDA.js → desktop-LJVXWXNF.js} +557 -70
  60. package/dist/cli/desktop-LJVXWXNF.js.map +1 -0
  61. package/dist/cli/diff-2JHMQAHI.js +165 -0
  62. package/dist/cli/{diff-I4PYI43W.js.map → diff-2JHMQAHI.js.map} +1 -1
  63. package/dist/cli/{doctor-Y2E4MY2F.js → doctor-GI5LOEZL.js} +11 -11
  64. package/dist/cli/{events-47HOT7ZA.js → events-LBKMLFM4.js} +5 -5
  65. package/dist/cli/index.js +40 -39
  66. package/dist/cli/index.js.map +1 -1
  67. package/dist/cli/{mcp-76DK63ZB.js → mcp-DKEJK5ND.js} +3 -3
  68. package/dist/cli/{mcp-browse-SDNUGO74.js → mcp-browse-V7KWDY32.js} +15 -15
  69. package/dist/cli/{mcp-browse-SDNUGO74.js.map → mcp-browse-V7KWDY32.js.map} +1 -1
  70. package/dist/cli/{mcp-inspect-BL5DEO5M.js → mcp-inspect-MTABNHVM.js} +5 -5
  71. package/dist/cli/{prompt-JLATI3P7.js → prompt-ATI7DKHF.js} +5 -5
  72. package/dist/cli/{prune-sessions-WHZDFUKD.js → prune-sessions-YQQSZTZS.js} +4 -4
  73. package/dist/cli/{replay-MHXS7C7Z.js → replay-ZJQ4I4CJ.js} +30 -30
  74. package/dist/cli/{replay-MHXS7C7Z.js.map → replay-ZJQ4I4CJ.js.map} +1 -1
  75. package/dist/cli/{run-SXNCPRJE.js → run-HFPRNWJY.js} +22 -22
  76. package/dist/cli/{server-GEHOE6CO.js → server-UHKO2VVM.js} +23 -23
  77. package/dist/cli/{sessions-EPBFYISL.js → sessions-IQEWWUH3.js} +16 -16
  78. package/dist/cli/setup-5BYKCL62.js +502 -0
  79. package/dist/cli/setup-5BYKCL62.js.map +1 -0
  80. package/dist/cli/{stats-4WB4XHBP.js → stats-OFCGOQMZ.js} +6 -6
  81. package/dist/cli/{version-4SP3DLLH.js → version-EODUFAAI.js} +16 -16
  82. package/dist/index.d.ts +12 -1
  83. package/dist/index.js +613 -78
  84. package/dist/index.js.map +1 -1
  85. package/package.json +21 -3
  86. package/dist/cli/chat-NJ2Q5KHG.js +0 -50
  87. package/dist/cli/chunk-2HVTBFCI.js.map +0 -1
  88. package/dist/cli/chunk-5BBC6YMV.js +0 -832
  89. package/dist/cli/chunk-5BBC6YMV.js.map +0 -1
  90. package/dist/cli/chunk-6XWXIVQ3.js.map +0 -1
  91. package/dist/cli/chunk-7YPMTE3U.js.map +0 -1
  92. package/dist/cli/chunk-A5PBEIJ7.js.map +0 -1
  93. package/dist/cli/chunk-C2MRSJTV.js.map +0 -1
  94. package/dist/cli/chunk-DVD67FXQ.js.map +0 -1
  95. package/dist/cli/chunk-EAMXOWUW.js +0 -54
  96. package/dist/cli/chunk-FEZK652I.js.map +0 -1
  97. package/dist/cli/chunk-R6KIHEF3.js.map +0 -1
  98. package/dist/cli/chunk-SXSAWOB7.js.map +0 -1
  99. package/dist/cli/chunk-UO6E7FN3.js.map +0 -1
  100. package/dist/cli/chunk-UPW544V3.js +0 -96
  101. package/dist/cli/chunk-UPW544V3.js.map +0 -1
  102. package/dist/cli/desktop-H3ZHIMDA.js.map +0 -1
  103. package/dist/cli/devtools-HW3WDT3Q.js +0 -91
  104. package/dist/cli/devtools-HW3WDT3Q.js.map +0 -1
  105. package/dist/cli/diff-I4PYI43W.js +0 -165
  106. package/dist/cli/setup-IW2XR5XI.js +0 -593
  107. package/dist/cli/setup-IW2XR5XI.js.map +0 -1
  108. /package/dist/cli/{acp-XEUHGG7X.js.map → acp-NEUYWGUU.js.map} +0 -0
  109. /package/dist/cli/{chat-NJ2Q5KHG.js.map → chat-QA6IVFJD.js.map} +0 -0
  110. /package/dist/cli/{chunk-HGK57NBN.js.map → chunk-2W4F3RIZ.js.map} +0 -0
  111. /package/dist/cli/{chunk-UMZ6KHTS.js.map → chunk-5YLEKX2V.js.map} +0 -0
  112. /package/dist/cli/{chunk-BA5R6BAE.js.map → chunk-6QBUXA73.js.map} +0 -0
  113. /package/dist/cli/{chunk-3YRTIWFX.js.map → chunk-ARBGTNHM.js.map} +0 -0
  114. /package/dist/cli/{chunk-3BTK5BHI.js.map → chunk-B4MOGWHW.js.map} +0 -0
  115. /package/dist/cli/{chunk-5AIDYVH2.js.map → chunk-CFJY64UA.js.map} +0 -0
  116. /package/dist/cli/{chunk-2WUEAI2I.js.map → chunk-CPCUMMSR.js.map} +0 -0
  117. /package/dist/cli/{chunk-JHWQDJZA.js.map → chunk-CTRM32BP.js.map} +0 -0
  118. /package/dist/cli/{chunk-544J4PXD.js.map → chunk-D6WRFR6V.js.map} +0 -0
  119. /package/dist/cli/{chunk-N4SEBLU4.js.map → chunk-DLTE4GBY.js.map} +0 -0
  120. /package/dist/cli/{chunk-NRROJXXT.js.map → chunk-FY5UERSG.js.map} +0 -0
  121. /package/dist/cli/{chunk-K4YQFULP.js.map → chunk-HNZ4727T.js.map} +0 -0
  122. /package/dist/cli/{chunk-36BM7INR.js.map → chunk-MW64SQUE.js.map} +0 -0
  123. /package/dist/cli/{chunk-Z3MKG7MQ.js.map → chunk-OMNRXZNA.js.map} +0 -0
  124. /package/dist/cli/{chunk-EWVFGYT6.js.map → chunk-VVPV5HU6.js.map} +0 -0
  125. /package/dist/cli/{chunk-7YB26OQO.js.map → chunk-WPY7AFS6.js.map} +0 -0
  126. /package/dist/cli/{chunk-BM6BBFAV.js.map → chunk-XBYHNZ5Z.js.map} +0 -0
  127. /package/dist/cli/{chunk-WPOKBW5E.js.map → chunk-XNMXVL6C.js.map} +0 -0
  128. /package/dist/cli/{chunk-SVD4UPRQ.js.map → chunk-XUZHBQSM.js.map} +0 -0
  129. /package/dist/cli/{chunk-K3QJ3GKI.js.map → chunk-Z663GVUB.js.map} +0 -0
  130. /package/dist/cli/{commands-E4RZXMF6.js.map → commands-DHETOY7O.js.map} +0 -0
  131. /package/dist/cli/{commit-KSRQ64IL.js.map → commit-BBUYAKZV.js.map} +0 -0
  132. /package/dist/cli/{config-QNDONOTU.js.map → config-KV7VV5LG.js.map} +0 -0
  133. /package/dist/cli/{doctor-Y2E4MY2F.js.map → doctor-GI5LOEZL.js.map} +0 -0
  134. /package/dist/cli/{events-47HOT7ZA.js.map → events-LBKMLFM4.js.map} +0 -0
  135. /package/dist/cli/{mcp-76DK63ZB.js.map → mcp-DKEJK5ND.js.map} +0 -0
  136. /package/dist/cli/{mcp-inspect-BL5DEO5M.js.map → mcp-inspect-MTABNHVM.js.map} +0 -0
  137. /package/dist/cli/{prompt-JLATI3P7.js.map → prompt-ATI7DKHF.js.map} +0 -0
  138. /package/dist/cli/{prune-sessions-WHZDFUKD.js.map → prune-sessions-YQQSZTZS.js.map} +0 -0
  139. /package/dist/cli/{run-SXNCPRJE.js.map → run-HFPRNWJY.js.map} +0 -0
  140. /package/dist/cli/{server-GEHOE6CO.js.map → server-UHKO2VVM.js.map} +0 -0
  141. /package/dist/cli/{sessions-EPBFYISL.js.map → sessions-IQEWWUH3.js.map} +0 -0
  142. /package/dist/cli/{stats-4WB4XHBP.js.map → stats-OFCGOQMZ.js.map} +0 -0
  143. /package/dist/cli/{version-4SP3DLLH.js.map → version-EODUFAAI.js.map} +0 -0
package/dist/index.js CHANGED
@@ -64,6 +64,11 @@ var dark = defineTheme({
64
64
  bgInput: "#0f172a",
65
65
  bgCode: "#080c16",
66
66
  bgElev: "#151d2f"
67
+ },
68
+ messageBg: {
69
+ user: "#373737",
70
+ bash: "#413c41",
71
+ selected: "#2c323e"
67
72
  }
68
73
  });
69
74
  var light = defineTheme({
@@ -97,6 +102,11 @@ var light = defineTheme({
97
102
  bgInput: "#f1f5f9",
98
103
  bgCode: "#f3f4f6",
99
104
  bgElev: "#eef2f7"
105
+ },
106
+ messageBg: {
107
+ user: "#e5e7eb",
108
+ bash: "#f5e0e9",
109
+ selected: "#dde6f5"
100
110
  }
101
111
  });
102
112
  var midnight = defineTheme({
@@ -130,6 +140,11 @@ var midnight = defineTheme({
130
140
  bgInput: "#1f2335",
131
141
  bgCode: "#16161e",
132
142
  bgElev: "#24283b"
143
+ },
144
+ messageBg: {
145
+ user: "#2a2d44",
146
+ bash: "#39304a",
147
+ selected: "#1f2740"
133
148
  }
134
149
  });
135
150
  var deepBlue = defineTheme({
@@ -163,6 +178,11 @@ var deepBlue = defineTheme({
163
178
  bgInput: "#1e1e1e",
164
179
  bgCode: "#141414",
165
180
  bgElev: "#252525"
181
+ },
182
+ messageBg: {
183
+ user: "#1c1c2a",
184
+ bash: "#2a1f2a",
185
+ selected: "#162033"
166
186
  }
167
187
  });
168
188
  var highContrast = defineTheme({
@@ -196,6 +216,11 @@ var highContrast = defineTheme({
196
216
  bgInput: "#0a0a0a",
197
217
  bgCode: "#050505",
198
218
  bgElev: "#141414"
219
+ },
220
+ messageBg: {
221
+ user: "#1a1a1a",
222
+ bash: "#241f24",
223
+ selected: "#102030"
199
224
  }
200
225
  });
201
226
  var THEMES = {
@@ -229,6 +254,7 @@ var FG = proxyTokens((theme) => theme.fg);
229
254
  var TONE = proxyTokens((theme) => theme.tone);
230
255
  var TONE_ACTIVE = proxyTokens((theme) => theme.toneActive);
231
256
  var SURFACE = proxyTokens((theme) => theme.surface);
257
+ var MESSAGE_BG = proxyTokens((theme) => theme.messageBg);
232
258
  var CARD = proxyTokens((theme) => theme.card);
233
259
 
234
260
  // src/core/atomic-write.ts
@@ -667,9 +693,13 @@ function writeConfig(cfg, path2 = defaultConfigPath()) {
667
693
  function loadLanguage(path2 = defaultConfigPath()) {
668
694
  return readConfig(path2).lang;
669
695
  }
696
+ function resolveBaseUrlEnv() {
697
+ return process.env.DEEPSEEK_BASE_URL || process.env.DEEPSEEK_API_BASE_URL || void 0;
698
+ }
670
699
  function loadEndpoint(path2 = defaultConfigPath()) {
671
- if (process.env.DEEPSEEK_BASE_URL) {
672
- return { baseUrl: process.env.DEEPSEEK_BASE_URL, apiKey: process.env.DEEPSEEK_API_KEY };
700
+ const envBaseUrl = resolveBaseUrlEnv();
701
+ if (envBaseUrl) {
702
+ return { baseUrl: envBaseUrl, apiKey: process.env.DEEPSEEK_API_KEY };
673
703
  }
674
704
  const cfg = readConfig(path2);
675
705
  if (cfg.baseUrl) {
@@ -920,15 +950,21 @@ var Usage = class _Usage {
920
950
  const denom = this.promptCacheHitTokens + this.promptCacheMissTokens;
921
951
  return denom > 0 ? this.promptCacheHitTokens / denom : 0;
922
952
  }
953
+ static hasApiUsage(raw) {
954
+ if (!raw || typeof raw !== "object") return false;
955
+ const u = raw;
956
+ return typeof u.prompt_tokens === "number" || typeof u.completion_tokens === "number" || typeof u.total_tokens === "number" || typeof u.prompt_cache_hit_tokens === "number" || typeof u.prompt_cache_miss_tokens === "number" || typeof u.prompt_eval_count === "number" || typeof u.eval_count === "number";
957
+ }
923
958
  static fromApi(raw) {
924
959
  const u = raw ?? {};
925
- const promptTokens = u.prompt_tokens ?? 0;
960
+ const promptTokens = u.prompt_tokens ?? u.prompt_eval_count ?? 0;
961
+ const completionTokens = u.completion_tokens ?? u.eval_count ?? 0;
926
962
  const cacheHitTokens = u.prompt_cache_hit_tokens ?? 0;
927
963
  const cacheMissTokens = u.prompt_cache_miss_tokens ?? Math.max(0, promptTokens - cacheHitTokens);
928
964
  return new _Usage(
929
965
  promptTokens,
930
- u.completion_tokens ?? 0,
931
- u.total_tokens ?? 0,
966
+ completionTokens,
967
+ u.total_tokens ?? promptTokens + completionTokens,
932
968
  cacheHitTokens,
933
969
  cacheMissTokens
934
970
  );
@@ -950,7 +986,7 @@ var DeepSeekClient = class {
950
986
  );
951
987
  }
952
988
  this.apiKey = apiKey;
953
- let url = opts.baseUrl ?? process.env.DEEPSEEK_BASE_URL ?? "https://api.deepseek.com";
989
+ let url = opts.baseUrl ?? resolveBaseUrlEnv() ?? "https://api.deepseek.com";
954
990
  while (url.endsWith("/")) url = url.slice(0, -1);
955
991
  this.baseUrl = url;
956
992
  this.timeoutMs = opts.timeoutMs ?? 66e4;
@@ -1070,7 +1106,7 @@ var DeepSeekClient = class {
1070
1106
  content: choice.content ?? "",
1071
1107
  reasoningContent: choice.reasoning_content ?? null,
1072
1108
  toolCalls: choice.tool_calls ?? [],
1073
- usage: Usage.fromApi(data.usage),
1109
+ usage: Usage.fromApi(data.usage ?? data),
1074
1110
  raw: data
1075
1111
  };
1076
1112
  } finally {
@@ -1138,8 +1174,9 @@ var DeepSeekClient = class {
1138
1174
  argumentsDelta: tc.function?.arguments
1139
1175
  };
1140
1176
  }
1141
- if (json.usage) {
1142
- chunk.usage = Usage.fromApi(json.usage);
1177
+ const rawUsage = json.usage ?? (Usage.hasApiUsage(json) ? json : void 0);
1178
+ if (rawUsage) {
1179
+ chunk.usage = Usage.fromApi(rawUsage);
1143
1180
  }
1144
1181
  queue.push(chunk);
1145
1182
  } catch {
@@ -3000,11 +3037,11 @@ var de = {
3000
3037
  },
3001
3038
  sessions: {
3002
3039
  ...EN.sessions,
3003
- emptyHint: "noch keine gespeicherten Sitzungen \u2013 starte `reasonix chat` (Sitzungen werden automatisch gespeichert, au\xDFer mit --no-session).",
3040
+ emptyHint: "Noch keine gespeicherten Sitzungen \u2013 starte `reasonix chat` (Sitzungen werden automatisch gespeichert, au\xDFer mit --no-session).",
3004
3041
  listHeader: "Gespeicherte Sitzungen (~/.reasonix/sessions/):",
3005
3042
  inspectHint: "Ansehen: reasonix sessions <name>",
3006
3043
  resumeHint: "Fortsetzen: reasonix chat --session <name>",
3007
- noSession: 'keine Sitzung namens "{name}" (oder sie ist leer).',
3044
+ noSession: 'Keine Sitzung namens "{name}" (oder sie ist leer).',
3008
3045
  lookedAt: "Angesehen: {path}",
3009
3046
  noIdleSessions: "Keine Sitzungen seit >= {days} Tagen inaktiv. Nichts bereinigt.",
3010
3047
  wouldPrune: "W\xFCrde {count} Sitzung(en) bereinigen, die >= {days} Tage inaktiv sind:",
@@ -3019,19 +3056,19 @@ var de = {
3019
3056
  noSession: "Sitzungsspeicherung f\xFCr diesen Durchlauf deaktivieren",
3020
3057
  noMouseHint: "SGR-Mausverfolgung deaktivieren; stellt die native Auswahl per Ziehen und Rechtsklick wieder her",
3021
3058
  noProxyHint: "HTTPS_PROXY / HTTP_PROXY f\xFCr diesen Durchlauf ignorieren; direkt verbinden",
3022
- resumeHint: "die angegebene Sitzung zwangsweise fortsetzen (auch wenn sie inaktiv ist)",
3059
+ resumeHint: "die angegebene Sitzung fortsetzen (auch wenn inaktiv)",
3023
3060
  newHint: "Eine neue Sitzung erzwingen (--session / --continue ignorieren)",
3024
3061
  transcriptHint: "Pfad zum Speichern der JSONL-Ausgabe",
3025
3062
  budgetHint: "Sitzungs-USD-Obergrenze \u2013 warnt bei 80 %, verweigert den n\xE4chsten Zug bei 100 %",
3026
3063
  modelIdHint: "DeepSeek-Modell-ID (z. B. deepseek-v4-flash)",
3027
- systemPromptHint: "die Standard-Systemeingabeaufforderung \xFCberschreiben",
3028
- effortHint: "Denkaufwand \u2013 niedrig|mittel|hoch|maximal",
3064
+ systemPromptHint: "den Standard-System-Prompt \xFCberschreiben",
3065
+ effortHint: "Reasoning-Effort \u2013 niedrig|mittel|hoch|maximal",
3029
3066
  sessionNameHint: "Sitzungsname (Standard: \u201Edefault\u201C)",
3030
3067
  ephemeralHint: "Sitzungsspeicherung f\xFCr diesen Durchlauf deaktivieren",
3031
3068
  mcpSpecHint: "MCP-Server-Spezifikation (wiederholbar)",
3032
- mcpPrefixHint: "Stelle diesen String vor die Namen der MCP-Tools",
3069
+ mcpPrefixHint: "Pr\xE4fix f\xFCr MCP-Toolnamen",
3033
3070
  noConfigHint: "Ignoriere bei diesem Durchlauf die Datei ~/.reasonix/config.json",
3034
- effortHintShort: "Denkaufwand \u2013 niedrig|mittel|hoch|maximal",
3071
+ effortHintShort: "Reasoning-Effort \u2013 niedrig|mittel|hoch|maximal",
3035
3072
  budgetHintShort: "Sitzungs-USD-Obergrenze",
3036
3073
  transcriptHintShort: "Pfad zum JSONL-Transkript",
3037
3074
  mcpSpecHintShort: "MCP-Server-Spezifikation (wiederholbar)",
@@ -3045,7 +3082,7 @@ var de = {
3045
3082
  verboseHint: "Alle Metadaten der Sitzung anzeigen",
3046
3083
  pruneDaysHint: "Sitzungen l\xF6schen, die seit mindestens dieser Anzahl von Tagen inaktiv sind (Standard: 90)",
3047
3084
  pruneDryRunHint: "Liste auf, was gel\xF6scht w\xFCrde, ohne etwas zu entfernen",
3048
- eventTypeHint: "Nach Veranstaltungstyp filtern",
3085
+ eventTypeHint: "Nach Ereignistyp filtern",
3049
3086
  eventSinceHint: "Beginne mit dieser Ereignis-ID",
3050
3087
  eventTailHint: "Nur die letzten N Ereignisse anzeigen",
3051
3088
  jsonHint: "Ausgabe als JSON",
@@ -3073,6 +3110,7 @@ var de = {
3073
3110
  jsonHintReport: "Gib den Inspektionsbericht als JSON aus",
3074
3111
  modelOverrideFlash: "das Modell \xFCberschreiben (Standard: deepseek-v4-flash)",
3075
3112
  skipConfirmHint: "Die Best\xE4tigungsabfrage \xFCberspringen",
3113
+ yoloHint: "Plan-Checkpoints f\xFCr diesen Aufruf automatisch genehmigen (entspricht editMode=yolo, ohne die Konfiguration zu \xE4ndern)",
3076
3114
  welcome: "Starte jederzeit `reasonix`, um zu chatten \u2013 deine Einstellungen bleiben gespeichert.",
3077
3115
  taglineChat: "DeepSeek-nativer Agent",
3078
3116
  taglineCode: "DeepSeek-nativer Coding-Agent",
@@ -3082,7 +3120,7 @@ var de = {
3082
3120
  busy: "Denke nach...",
3083
3121
  thinking: "\u25B8 denke nach...",
3084
3122
  undo: "R\xFCckg\xE4ngig",
3085
- undoHint: "Dr\xFCcke innerhalb von 5s zum R\xFCckg\xE4ngig machen",
3123
+ undoHint: "Dr\xFCcke innerhalb von 5s zum R\xFCckg\xE4ngig-Machen",
3086
3124
  applied: "angewendet",
3087
3125
  rejected: "abgelehnt",
3088
3126
  noDashboard: "Automatisch gestartetes eingebettetes Web-Dashboard unterdr\xFCcken.",
@@ -3176,7 +3214,7 @@ var de = {
3176
3214
  cost: {
3177
3215
  ...EN.slash.cost,
3178
3216
  argsHint: "[Text]",
3179
- description: "ohne Text \u2192 Ausgaben letzter Turn (Kostenkarte); mit Text \u2192 Kostensch\xE4tzung f\xFCr als n\xE4chster Senden (worst-case + likely-cache)"
3217
+ description: "Ohne Text \u2192 Ausgaben letzter Turn (Kostenkarte); Mit Text \u2192 Kostensch\xE4tzung f\xFCr als n\xE4chster Senden (worst-case + likely-cache)"
3180
3218
  },
3181
3219
  doctor: {
3182
3220
  ...EN.slash.doctor,
@@ -3470,7 +3508,7 @@ var de = {
3470
3508
  reviseFooter: "\u2191\u2193 fokussieren \xB7 Leertaste \xFCberspringen umschalten \xB7 k/j verschieben \xB7 \u23CE akzeptieren \xB7 Esc abbrechen",
3471
3509
  riskMed: " mittel",
3472
3510
  riskHigh: " hoch",
3473
- completeMsg: "\u25B8 Plan abgeschlossen \u2014 alle {total} Schritt{e} erledigt \xB7 archiviert"
3511
+ completeMsg: "\u25B8 Plan abgeschlossen \u2014 alle {total} Schritt(e) erledigt \xB7 archiviert"
3474
3512
  },
3475
3513
  app: {
3476
3514
  ...EN.app,
@@ -3519,8 +3557,8 @@ var de = {
3519
3557
  alwaysAllowed: '\u25B8 "{prefix}" f\xFCr {dir} dauerhaft erlaubt',
3520
3558
  runningCommand: "\u25B8 f\xFChre aus: {cmd}",
3521
3559
  startingBackground: "\u25B8 starte (Hintergrund): {cmd}",
3522
- checkpointSaved: "\u26C1 Checkpoint gespeichert \xB7 {id} \xB7 {count} Datei{en} \xB7 /restore {id} zum Zur\xFCcksetzen",
3523
- continuingAfter: "\u25B8 fortgesetzen nach {label}{counter}",
3560
+ checkpointSaved: "\u26C1 Checkpoint gespeichert \xB7 {id} \xB7 {count} Datei(en) \xB7 /restore {id} zum Zur\xFCcksetzen",
3561
+ continuingAfter: "\u25B8 fortgesetzt nach {label}{counter}",
3524
3562
  planStoppedAt: "\u25B8 Plan angehalten bei {label}{counter}",
3525
3563
  revisingAfter: "\u25B8 \xFCberarbeite nach {label} \u2014 {feedback}",
3526
3564
  historyScrollHint: " \u2191 lese Verlauf \xB7 Ende / Bild\u2193 zur\xFCck zum Ende \xB7 \u2193 eine Zeile vor",
@@ -3651,7 +3689,7 @@ var de = {
3651
3689
  loopTuiOnly: "/loop ist nur in der interaktiven TUI verf\xFCgbar (nicht in run/replay).",
3652
3690
  loopStopped: "\u25B8 Loop gestoppt.",
3653
3691
  loopNoActive: "Kein aktiver Loop zum Stoppen.",
3654
- loopNoActiveHint: "kein aktiver Loop. Starte einen mit `/loop <intervall> <prompt>` (z.B. /loop 30s npm test).\nWird abgebrochen bei: /loop stop \xB7 Esc \xB7 /clear /new \xB7 jeder benutzereingegebene Prompt.",
3692
+ loopNoActiveHint: "Kein aktiver Loop. Starte einen mit `/loop <intervall> <prompt>` (z.B. /loop 30s npm test).\nWird abgebrochen bei: /loop stop \xB7 Esc \xB7 /clear /new \xB7 jeder benutzereingegebene Prompt.",
3655
3693
  loopStarted: '\u25B8 Loop gestartet \u2014 \xBB{prompt}" wird alle {duration} erneut gesendet. Tippe etwas (oder /loop stop) zum Abbrechen.',
3656
3694
  keysNeedsTui: "/keys ben\xF6tigt einen TUI-Kontext (postKeys angeschlossen).",
3657
3695
  aboutHeader: "Reasonix v{version} \u2014 ein Cache-First-DeepSeek-Coding-Agent",
@@ -3732,7 +3770,7 @@ var de = {
3732
3770
  updateRetryHint2: "oder f\xFChre `reasonix update` in einem anderen Terminal aus, um es synchron zu erzwingen.",
3733
3771
  updateLatest: "Neueste: reasonix {version}",
3734
3772
  updateUpToDate: "Du bist auf dem neuesten Stand. Nichts zu tun.",
3735
- updateNpxHint: "du verwendest npx \u2014 der n\xE4chste `npx reasonix ...`-Start l\xE4dt automatisch die neueste Version.",
3773
+ updateNpxHint: "Du verwendest npx \u2014 der n\xE4chste `npx reasonix ...`-Start l\xE4dt automatisch die neueste Version.",
3736
3774
  updateNpxForce: "Um fr\xFCher zu aktualisieren: `npm cache clean --force`.",
3737
3775
  updateUpgradeHint: "Zum Aktualisieren beende diese Sitzung und f\xFChre aus:",
3738
3776
  updateUpgradeCmd1: " reasonix update (interaktiv, --dry-run wird unterst\xFCtzt)",
@@ -3740,7 +3778,7 @@ var de = {
3740
3778
  updateInSessionDisabled: "Die Installation innerhalb einer Sitzung ist bewusst deaktiviert \u2014 der Installationsprozess w\xFCrde",
3741
3779
  updateInSessionDisabled2: "die Darstellung dieser TUI beeintr\xE4chtigen und Windows kann die laufende Bin\xE4rdatei sperren.",
3742
3780
  statsNoData: "Noch keine Nutzungsdaten.",
3743
- statsEveryTurn: "jeder hier ausgef\xFChrte Turn h\xE4ngt einen Datensatz an \u2014 die Turns dieser Sitzung",
3781
+ statsEveryTurn: "Jeder hier ausgef\xFChrte Turn h\xE4ngt einen Datensatz an \u2014 die Turns dieser Sitzung",
3744
3782
  statsWillAppear: "Werden im Dashboard angezeigt, sobald du eine Nachricht sendest."
3745
3783
  },
3746
3784
  edits: {
@@ -3762,7 +3800,7 @@ var de = {
3762
3800
  commitUsage: 'Verwendung: /commit "deine Commit-Nachricht" \u2014 f\xFChrt `git add -A && git commit -m "\u2026"` in {root} aus',
3763
3801
  walkCodeOnly: "/walk ist nur innerhalb von `reasonix code` verf\xFCgbar.",
3764
3802
  checkpointCodeOnly: "/checkpoint ist nur innerhalb von `reasonix code` verf\xFCgbar \u2014 der Chat-Modus wendet keine Edits an.",
3765
- checkpointNone: "noch keine Checkpoints \u2014 `/checkpoint <name>` sichert jede Datei, die die Sitzung ber\xFChrt hat. Sp\xE4ter mit `/restore <name>` wiederherstellbar.",
3803
+ checkpointNone: "Noch keine Checkpoints \u2014 `/checkpoint <name>` sichert jede Datei, die die Sitzung ber\xFChrt hat. Sp\xE4ter mit `/restore <name>` wiederherstellbar.",
3766
3804
  checkpointHeader: "\u25C8 Checkpoints \xB7 {count} gespeichert",
3767
3805
  checkpointRestoreHint: " /restore <name|id> \xB7 /checkpoint forget <id> \xB7 /checkpoint <name> zum Hinzuf\xFCgen",
3768
3806
  checkpointForgetUsage: "Verwendung: /checkpoint forget <id|name>",
@@ -3771,21 +3809,21 @@ var de = {
3771
3809
  checkpointDeleteFailed: "\u25B8 Konnte {id} nicht l\xF6schen (bereits entfernt?)",
3772
3810
  checkpointSaveUsage: "Verwendung: /checkpoint <name> (oder /checkpoint list zum Anzeigen vorhandener)",
3773
3811
  checkpointSavedEmpty: '\u25B8 Checkpoint "{name}" gespeichert ({id}) \u2014 aber es wurden noch keine Dateien ber\xFChrt, daher ist es eine leere Basislinie. Nach diesem Punkt vorgenommene Edits k\xF6nnen r\xFCckg\xE4ngig gemacht werden.',
3774
- checkpointSaved: '\u25B8 Checkpoint "{name}" gespeichert ({id}) \u2014 {files} Datei{en}, {size} KB. Wiederherstellen: /restore {name}',
3812
+ checkpointSaved: '\u25B8 Checkpoint "{name}" gespeichert ({id}) \u2014 {files} Datei(en), {size} KB. Wiederherstellen: /restore {name}',
3775
3813
  restoreCodeOnly: "/restore ist nur innerhalb von `reasonix code` verf\xFCgbar.",
3776
3814
  restoreUsage: "Verwendung: /restore <name|id> (siehe /checkpoint list f\xFCr IDs)",
3777
3815
  restoreNoMatch: '\u25B8 kein Checkpoint gefunden f\xFCr "{target}" \u2014 versuche /checkpoint list',
3778
3816
  restoreInfo: '\u25B8 "{name}" ({id}) wiederhergestellt von {when}',
3779
- restoreWrote: " \xB7 {count} Datei{en} zur\xFCckgeschrieben",
3780
- restoreRemoved: " \xB7 {count} Datei{en} entfernt (existierten zum Checkpoint-Zeitpunkt nicht)",
3781
- restoreSkipped: " \u2717 {count} Datei{en} \xFCbersprungen:",
3817
+ restoreWrote: " \xB7 {count} Datei(en) zur\xFCckgeschrieben",
3818
+ restoreRemoved: " \xB7 {count} Datei(en) entfernt (existierten zum Checkpoint-Zeitpunkt nicht)",
3819
+ restoreSkipped: " \u2717 {count} Datei(en) \xFCbersprungen:",
3782
3820
  cwdCodeOnly: "/cwd ist nur innerhalb von `reasonix code` verf\xFCgbar.",
3783
3821
  cwdUsage: "Verwendung: /cwd <pfad> (aktuelles Root: {current}). Richtet Dateisystem-/Shell-/Memory-Tools auf <pfad> neu aus.",
3784
3822
  cwdUsageNoCurrent: "Verwendung: /cwd <pfad> richtet den Workspace-Root auf <pfad> neu aus."
3785
3823
  },
3786
3824
  model: {
3787
3825
  ...EN.handlers.model,
3788
- modelHint: "versuche deepseek-v4-flash oder deepseek-v4-pro \u2014 f\xFChre /models aus, um die Live-Liste abzurufen",
3826
+ modelHint: "Versuche deepseek-v4-flash oder deepseek-v4-pro \u2014 f\xFChre /models aus, um die Live-Liste abzurufen",
3789
3827
  modelUsage: "Verwendung: /model <id> ({hint})",
3790
3828
  modelNotInCatalog: "Modell \u2192 {id} (\u26A0 nicht im abgerufenen Katalog: {list}. Falls das falsch ist, wird der n\xE4chste Aufruf 400 geben \u2014 f\xFChre /models zum Aktualisieren aus.)",
3791
3829
  modelSet: "Modell \u2192 {id}",
@@ -3815,9 +3853,9 @@ var de = {
3815
3853
  removeInfo: "\u25B8 entfernt: {prefix}",
3816
3854
  removeNotFound: "\u25B8 kein solcher Projekt-Eintrag: {prefix} (versuche /permissions list, um zu sehen, was gespeichert ist)",
3817
3855
  clearAlready: "\u25B8 Projekt-Allowlist ist bereits leer.",
3818
- clearConfirm: "Es werden {count} Projekt-Allowlist-Eintr\xE4g{e} f\xFCr {root} gel\xF6scht. F\xFChre den Befehl mit dem Wort 'confirm' erneut aus: /permissions clear confirm",
3856
+ clearConfirm: "Es werden {count} Projekt-Allowlist-Eintr\xE4g(e) f\xFCr {root} gel\xF6scht. F\xFChre den Befehl mit dem Wort 'confirm' erneut aus: /permissions clear confirm",
3819
3857
  clearedNone: "\u25B8 Projekt-Allowlist war bereits leer \u2014 nichts ge\xE4ndert.",
3820
- cleared: "\u25B8 {count} Projekt-Allowlist-Eintr\xE4g{e} gel\xF6scht.",
3858
+ cleared: "\u25B8 {count} Projekt-Allowlist-Eintr\xE4g(e) gel\xF6scht.",
3821
3859
  usage: 'Verwendung: /permissions [list] aktuellen Status anzeigen\n /permissions add <pr\xE4fix> speichern (z.B. "npm run build")\n /permissions remove <pr\xE4fix-oder-N> Eintrag entfernen\n /permissions clear confirm alle Projekteintr\xE4ge l\xF6schen',
3822
3860
  modeYolo: "\u25B8 Edit-Modus: YOLO \u2014 jeder Shell-Befehl l\xE4uft automatisch, Allowlist wird umgangen. /mode review zum Reaktivieren der Nachfragen.",
3823
3861
  modeAuto: "\u25B8 Edit-Modus: auto \u2014 Edits auto-anwenden, Shell weiterhin durch Allowlist gesch\xFCtzt (oder ShellConfirm-Nachfrage bei nicht-allowlisteten).",
@@ -3852,7 +3890,7 @@ var de = {
3852
3890
  compactNoop: "\u25B8 nichts zu falten \u2014 Log bereits klein oder aktuelle Turns allein \xFCberschreiten das Budget.",
3853
3891
  compactDone: "\u25B8 {before} Nachrichten \u2192 {after} gefaltet (Zusammenfassung {chars} Zeichen). Fahre fort.",
3854
3892
  compactFailed: "\u25B8 Falten fehlgeschlagen: {reason}",
3855
- costNoTurn: "noch kein Turn \u2014 `/cost` zeigt die Token- und Kostenaufschl\xFCsselung des letzten Turns.",
3893
+ costNoTurn: "Noch kein Turn \u2014 `/cost` zeigt die Token- und Kostenaufschl\xFCsselung des letzten Turns.",
3856
3894
  costNeedsTui: "/cost ben\xF6tigt einen TUI-Kontext (postUsage angeschlossen).",
3857
3895
  costNoPricing: '\u25B8 /cost: keine Preistabelle f\xFCr Modell "{model}". F\xFCge eine in telemetry/stats.ts hinzu.',
3858
3896
  costEstimate: "\u25B8 /cost Sch\xE4tzung \xB7 {model} \xB7 {prompt} Prompt-Tokens (sys {sys} + tools {tools} + log {log} + msg {msg})",
@@ -3885,18 +3923,18 @@ var de = {
3885
3923
  },
3886
3924
  plans: {
3887
3925
  ...EN.handlers.plans,
3888
- noSession: "keine Sitzung angeh\xE4ngt \u2014 `/plans` ist pro Sitzung. F\xFChre `reasonix code` in einem Projekt aus, um eine Sitzung zu erhalten.",
3889
- activePlan: "\u25B8 aktiver Plan{label} \u2014 {done}/{total} Schritt{e} erledigt \xB7 zuletzt bearbeitet {when}",
3926
+ noSession: "Keine Sitzung angeh\xE4ngt \u2014 `/plans` ist pro Sitzung. F\xFChre `reasonix code` in einem Projekt aus, um eine Sitzung zu erhalten.",
3927
+ activePlan: "\u25B8 aktiver Plan{label} \u2014 {done}/{total} Schritt(e) erledigt \xB7 zuletzt bearbeitet {when}",
3890
3928
  activeNone: "\u25B8 aktiver Plan: (keiner)",
3891
- noArchives: "noch keine archivierten Pl\xE4ne f\xFCr diese Sitzung \u2014 sie werden automatisch archiviert, wenn alle Schritte erledigt sind",
3929
+ noArchives: "Noch keine archivierten Pl\xE4ne f\xFCr diese Sitzung \u2014 sie werden automatisch archiviert, wenn alle Schritte erledigt sind",
3892
3930
  archivedHeader: "Archiviert ({count}):",
3893
3931
  evidencePending: " ! Nachweis ausstehend \u2014 aktueller Schritt ben\xF6tigt Verifikation/Diff/Checkpoint/manuellen Nachweis",
3894
3932
  evidenceLine: " Nachweis {stepId}: {summary}",
3895
3933
  archivedEvidenceLine: " Nachweis: {summary}",
3896
- replayNoSession: "keine Sitzung angeh\xE4ngt \u2014 `/replay` ist pro Sitzung. F\xFChre `reasonix code` in einem Projekt aus, um eine Sitzung zu erhalten.",
3897
- replayNoArchives: "noch keine archivierten Pl\xE4ne f\xFCr diese Sitzung \u2014 `/replay` wird aktiv, sobald ein Plan abgeschlossen ist (auto-archiviert wenn alle Schritte erledigt).",
3898
- replayInvalidIndex: "ung\xFCltiger Index \u2014 `/replay` akzeptiert 1..{max} (neuester = 1). Verwende `/plans`, um die Liste zu sehen.",
3899
- archivedRow: " \u2713 {when} {total} Schritt{e} \xB7 {completion} {label}",
3934
+ replayNoSession: "Keine Sitzung angeh\xE4ngt \u2014 `/replay` ist pro Sitzung. F\xFChre `reasonix code` in einem Projekt aus, um eine Sitzung zu erhalten.",
3935
+ replayNoArchives: "Noch keine archivierten Pl\xE4ne f\xFCr diese Sitzung \u2014 `/replay` wird aktiv, sobald ein Plan abgeschlossen ist (auto-archiviert wenn alle Schritte erledigt).",
3936
+ replayInvalidIndex: "Ung\xFCltiger Index \u2014 `/replay` akzeptiert 1..{max} (neuester = 1). Verwende `/plans`, um die Liste zu sehen.",
3937
+ archivedRow: " \u2713 {when} {total} Schritt(e) \xB7 {completion} {label}",
3900
3938
  completionComplete: "abgeschlossen",
3901
3939
  stopAborted: "\u25B8 Plan gestoppt \u2014 Modell abgebrochen; tippe eine Folgenachricht, um fortzufahren oder eine neue Aufgabe zu starten.",
3902
3940
  doneUsage: "Verwendung: /plans done <stepId> \xB7 /plans done all \u2014 manuelle \xDCberschreibung, wenn das Modell vergessen hat, mark_step_complete aufzurufen",
@@ -3919,7 +3957,7 @@ var de = {
3919
3957
  killUsage: "Verwendung: /kill <id> (siehe /jobs f\xFCr IDs)",
3920
3958
  killNotFound: "Job {id}: nicht gefunden",
3921
3959
  killAlreadyExited: "Job {id} bereits beendet ({code})",
3922
- killStopping: "\u25B8 stoppe Job {id} (Tree-Kill: SIGTERM \u2192 SIGKILL nach 2s Gnadenfrist; Windows: taskkill /T /F)",
3960
+ killStopping: "\u25B8 stoppe Job {id} (Prozessbaum: SIGTERM \u2192 SIGKILL nach 2s Gnadenfrist; Windows: taskkill /T /F)",
3923
3961
  killStatus: "\u25B8 Job {id} {status}",
3924
3962
  killStillAlive: "Nach SIGKILL noch am Leben (!) \u2014 melde dies als Fehler",
3925
3963
  logsUsage: "Verwendung: /logs <id> [zeilen] (Standard letzte 80 Zeilen)",
@@ -3933,8 +3971,8 @@ var de = {
3933
3971
  memory: {
3934
3972
  ...EN.handlers.memory,
3935
3973
  disabled: "Memory ist deaktiviert (REASONIX_MEMORY=off in der Umgebung). Entferne die Variable zur Reaktivierung \u2014 es werden weder REASONIX.md noch ~/.reasonix/memory-Inhalte eingef\xFCgt.",
3936
- noRoot: "kein Arbeitsverzeichnis in dieser Sitzung \u2014 `/memory` ben\xF6tigt ein Root, um REASONIX.md aufzul\xF6sen. (L\xE4uft in einer Test-Umgebung?)",
3937
- listEmpty: "noch keine Benutzer-Memories. Das Modell kann `remember` aufrufen, um einen zu speichern, oder du kannst Dateien manuell in ~/.reasonix/memory/global/ oder dem projektspezifischen Unterverzeichnis erstellen.",
3974
+ noRoot: "Kein Arbeitsverzeichnis in dieser Sitzung \u2014 `/memory` ben\xF6tigt ein Root, um REASONIX.md aufzul\xF6sen. (L\xE4uft in einer Test-Umgebung?)",
3975
+ listEmpty: "Noch keine Benutzer-Memories. Das Modell kann `remember` aufrufen, um einen zu speichern, oder du kannst Dateien manuell in ~/.reasonix/memory/global/ oder dem projektspezifischen Unterverzeichnis erstellen.",
3938
3976
  listHeader: "Benutzer-Memories ({count}):",
3939
3977
  listFooter: "Body anzeigen: /memory show <name> L\xF6schen: /memory forget <name>",
3940
3978
  showUsage: "Verwendung: /memory show <name> oder /memory show <scope>/<name>",
@@ -3960,7 +3998,7 @@ var de = {
3960
3998
  },
3961
3999
  mcp: {
3962
4000
  ...EN.handlers.mcp,
3963
- noServers: 'keine MCP-Server angeh\xE4ngt. F\xFChre `reasonix setup` aus, um welche auszuw\xE4hlen, oder starte mit --mcp "<spec>". `reasonix mcp list` zeigt den Katalog. Hinweis: vom Modell aufgerufene Shell-Befehle werden pro Aufruf abgefragt (einmal erlauben / immer erlauben / ablehnen) \u2014 kein globales Allow-All-Flag.',
4001
+ noServers: 'Keine MCP-Server angeh\xE4ngt. F\xFChre `reasonix setup` aus, um welche auszuw\xE4hlen, oder starte mit --mcp "<spec>". `reasonix mcp list` zeigt den Katalog. Hinweis: vom Modell aufgerufene Shell-Befehle werden pro Aufruf abgefragt (einmal erlauben / immer erlauben / ablehnen) \u2014 kein globales Allow-All-Flag.',
3964
4002
  toolsLabel: " Tools {count}",
3965
4003
  resourcesHint: "`/resource` zum Durchsuchen+Lesen",
3966
4004
  promptsHint: "`/prompt` zum Durchsuchen+Abrufen",
@@ -3971,7 +4009,7 @@ var de = {
3971
4009
  fallbackChange: "Um diesen Satz zu \xE4ndern, beende und f\xFChre `reasonix setup` aus.",
3972
4010
  usageDisableEnable: "Verwendung: /mcp {action} <name> \xB7 w\xE4hle einen in /mcp angezeigten Namen (anonyme Server k\xF6nnen nicht nach Namen umgeschaltet werden).",
3973
4011
  usageReconnect: "Verwendung: /mcp reconnect <name> \xB7 w\xE4hle einen in /mcp angezeigten Namen.",
3974
- unknownServer: 'unbekannter MCP-Server "{name}". Bekannt: {list}.',
4012
+ unknownServer: 'Unbekannter MCP-Server "{name}". Bekannt: {list}.',
3975
4013
  noneList: "(keine)",
3976
4014
  reconnectNoTui: "/mcp reconnect ben\xF6tigt die interaktive TUI (postInfo nicht angeschlossen).",
3977
4015
  liveTab: "Live",
@@ -4078,7 +4116,7 @@ var de = {
4078
4116
  },
4079
4117
  composer: {
4080
4118
  ...EN.composer,
4081
- placeholder: "Frag etwas \xB7 slash f\xFCr Befehle \xB7 at-Zeichen f\xFCr Dateien",
4119
+ placeholder: "Frag etwas \xB7 / f\xFCr Befehle \xB7 @ f\xFCr Dateien",
4082
4120
  waitingForResponse: "\u2026warte auf Antwort\u2026",
4083
4121
  hintSend: "senden",
4084
4122
  hintNewline: "Neue Zeile",
@@ -4088,12 +4126,12 @@ var de = {
4088
4126
  hintAbort: "abbrechen",
4089
4127
  hintQuit: "beenden",
4090
4128
  abortedHint: "Turn vom Benutzer abgebrochen \xB7 erneut Esc zum Leeren \xB7 \u23CE f\xFCr eine Folgefrage",
4091
- editorNoRawMode: "externer Editor nicht verf\xFCgbar \u2014 stdin unterst\xFCtzt Raw-Mode-Umschaltung auf diesem Terminal nicht",
4129
+ editorNoRawMode: "Externer Editor nicht verf\xFCgbar \u2014 stdin unterst\xFCtzt Raw-Mode-Umschaltung auf diesem Terminal nicht",
4092
4130
  editorFailed: "Externer Editor:",
4093
- editorMissing: "kein $EDITOR / $VISUAL / $GIT_EDITOR gesetzt \u2014 exportiere einen (z.B. `export EDITOR=nano`) und versuche es erneut",
4131
+ editorMissing: "Kein $EDITOR / $VISUAL / $GIT_EDITOR gesetzt \u2014 exportiere einen (z.B. `export EDITOR=nano`) und versuche es erneut",
4094
4132
  editorExited: "Editor mit Code {code} beendet",
4095
4133
  typeaheadStaged: "\u25B8 {count} Zeile(n) bereitgestellt \xB7 Esc zur\xFCckrufen",
4096
- steerPlaceholder: "tippe, um die aktuelle Aufgabe zu steuern \u2014 Befehle sind deaktiviert, solange besch\xE4ftigt",
4134
+ steerPlaceholder: "Tippe, um die aktuelle Aufgabe zu steuern \u2014 Befehle sind deaktiviert, solange besch\xE4ftigt",
4097
4135
  steerHint: "Senden \u2014 mid-Turn eingef\xFCgt",
4098
4136
  stashNothing: "Nichts zu speichern",
4099
4137
  stashSaved: "Gespeichert",
@@ -4142,7 +4180,7 @@ var de = {
4142
4180
  allowAlwaysDesc: "`{prefix}` f\xFCr dieses Projekt merken",
4143
4181
  deny: "ablehnen",
4144
4182
  denyDesc: "Tab dr\xFCcken, um dem Modell den Grund mitzuteilen",
4145
- cwdLabel: "awd",
4183
+ cwdLabel: "CWD",
4146
4184
  timeoutLabel: "Timeout",
4147
4185
  waitLabel: "warten",
4148
4186
  previewMore: "\u2026 {n} weitere Zeile ausgeblendet \u2014 Esc dr\xFCcken, Modell bitten, sie aufzuteilen",
@@ -4185,13 +4223,13 @@ var de = {
4185
4223
  messagesPlural: "{count} Nachrichten",
4186
4224
  turns: "{count} Turns",
4187
4225
  pickerHint: "\u2191\u2193 ausw\xE4hlen \xB7 / suchen \xB7 \u23CE \xF6ffnen \xB7 [n] neu \xB7 [d] l\xF6schen \xB7 [r] umbenennen \xB7 Esc beenden",
4188
- empty: " noch keine gespeicherten Sitzungen in diesem Arbeitsbereich \u2014 dr\xFCcke ",
4226
+ empty: " Noch keine gespeicherten Sitzungen in diesem Arbeitsbereich \u2014 dr\xFCcke ",
4189
4227
  emptyNew: " um eine neue zu starten",
4190
4228
  renamePrompt: ' "{from}" umbenennen \u2192 ',
4191
4229
  renameHint: " \u23CE Umbenennung best\xE4tigen \xB7 Esc abbrechen",
4192
4230
  searchPrompt: " Sitzungen durchsuchen: /",
4193
- searchHint: " tippen zum Filtern \xB7 \u23CE Treffer \xF6ffnen \xB7 Esc zur\xFCcksetzen",
4194
- searchEmpty: " keine Sitzungen entsprechen dieser Suche",
4231
+ searchHint: " Tippen zum Filtern \xB7 \u23CE Treffer \xF6ffnen \xB7 Esc zur\xFCcksetzen",
4232
+ searchEmpty: " Keine Sitzungen entsprechen dieser Suche",
4195
4233
  emptyHint: " \u23CE neue Sitzung \xB7 Esc beenden",
4196
4234
  justNow: "Gerade eben",
4197
4235
  minAgo: "Vor {count} Min",
@@ -4207,10 +4245,10 @@ var de = {
4207
4245
  sessionsPlural: "{count} Sitzungen",
4208
4246
  current: "aktuell",
4209
4247
  pickerHint: "\u2191\u2193 ausw\xE4hlen \xB7 / suchen \xB7 \u23CE wechseln + Sitzung ausw\xE4hlen \xB7 Esc beenden \xB7 /cwd <pfad> f\xFCgt einen hinzu",
4210
- empty: " noch keine bekannten Arbeitsbereiche \u2014 f\xFChre /cwd <pfad> einmal aus, um einen hinzuzuf\xFCgen",
4248
+ empty: " Noch keine bekannten Arbeitsbereiche \u2014 f\xFChre /cwd <pfad> einmal aus, um einen hinzuzuf\xFCgen",
4211
4249
  searchPrompt: " Arbeitsbereiche durchsuchen: /",
4212
- searchHint: " tippen zum Filtern \xB7 \u23CE wechseln + Sitzung ausw\xE4hlen \xB7 Esc zur\xFCcksetzen",
4213
- searchEmpty: " keine Arbeitsbereiche entsprechen dieser Suche"
4250
+ searchHint: " Tippen zum Filtern \xB7 \u23CE wechseln + Sitzung ausw\xE4hlen \xB7 Esc zur\xFCcksetzen",
4251
+ searchEmpty: " Keine Arbeitsbereiche entsprechen dieser Suche"
4214
4252
  },
4215
4253
  modelPicker: {
4216
4254
  ...EN.modelPicker,
@@ -4267,7 +4305,7 @@ var de = {
4267
4305
  match: "Treffer",
4268
4306
  matches: "Treffer",
4269
4307
  forFilter: 'f\xFCr "{filter}"',
4270
- noMatch: 'keine Dateien entsprechen "{filter}"',
4308
+ noMatch: 'Keine Dateien entsprechen "{filter}"',
4271
4309
  emptyDir: "Leeres Verzeichnis",
4272
4310
  scanning: "Durchsuche Verzeichnisbaum\u2026",
4273
4311
  footerBrowse: "\u2191\u2193 navigieren \xB7 Tab in Ordner eintauchen \xB7 \u23CE einf\xFCgen \xB7 Esc abbrechen",
@@ -4313,10 +4351,10 @@ var de = {
4313
4351
  webErrors: {
4314
4352
  ...EN.webErrors,
4315
4353
  status: "web_search {status} \u2014 versuche: Das Such-Backend hat einen Fehler zur\xFCckgegeben; formuliere die Abfrage um oder wechsle die Engine mit /search-engine bing|searxng|metaso|tavily|perplexity|exa",
4316
- rateLimit429: "web_search 429 \u2014 versuche: 10s warten vor erneuter Abfrage oder Abfrage umformulieren; das Such-Backend ratelimited diesen Client",
4354
+ rateLimit429: "web_search 429 \u2014 versuche: 10s warten vor erneuter Abfrage oder Abfrage umformulieren; das Such-Backend hat das Rate-Limit f\xFCr diesen Client erreicht",
4317
4355
  forbidden403: "web_search 403 \u2014 versuche: Das Such-Backend blockiert diesen Client; wechsle die Engine mit /search-engine bing|searxng|metaso|tavily|perplexity|exa oder warte und versuche es sp\xE4ter erneut",
4318
4356
  serverError5xx: "web_search {status} \u2014 versuche: \xD6ffne die Such-URL in einem Browser; falls sie l\xE4dt, ist dies vor\xFCbergehend und ein erneuter Versuch in 30s kann helfen",
4319
- bingBlocked: "web_search: Bing-Anti-Bot-Seite \u2014 ratelimited oder blockiert \u2014 versuche: 30s warten und erneut versuchen, oder wechsle die Engine mit /search-engine bing|searxng|metaso|tavily|perplexity|exa",
4357
+ bingBlocked: "web_search: Bing-Anti-Bot-Seite \u2014 Rate-Limit erreicht oder blockiert \u2014 versuche: 30s warten und erneut versuchen, oder wechsle die Engine mit /search-engine bing|searxng|metaso|tavily|perplexity|exa",
4320
4358
  bingNoResults: "web_search: 0 Ergebnisse, aber die Antwort sieht nicht wie eine echte leere Seite aus ({chars} Zeichen, erste 120: {preview}) \u2014 versuche: formuliere die Abfrage mit einfacheren Begriffen um oder wechsle die Engine mit /search-engine bing|searxng|metaso|tavily|perplexity|exa",
4321
4359
  invalidEndpoint: 'web_search: ung\xFCltiger SearXNG-Endpunkt "{endpoint}" \u2014 versuche: setze eine g\xFCltige URL mit /search-endpoint http://host:port',
4322
4360
  endpointMustBeHttp: "web_search: SearXNG-Endpunkt muss http(s) sein, {protocol} erhalten \u2014 versuche: setze eine g\xFCltige URL mit /search-endpoint http://host:port",
@@ -4325,23 +4363,23 @@ var de = {
4325
4363
  metasoMissingKey: "web_search: Metaso ben\xF6tigt einen API-Schl\xFCssel \u2014 setze METASO_API_KEY oder konfiguriere einen mit /search-engine metaso <schl\xFCssel>. Erhalte einen unter https://metaso.cn/search-api/playground",
4326
4364
  metasoDailyLimit: "web_search: Metaso-Tageslimit erreicht \u2014 setze METASO_API_KEY oder erhalte einen Schl\xFCssel unter https://metaso.cn/search-api/playground",
4327
4365
  metasoUnauthorized: "web_search: Metaso-API-Schl\xFCssel abgelehnt \u2014 \xFCberpr\xFCfe METASO_API_KEY oder erhalte einen unter https://metaso.cn/search-api/playground",
4328
- metasoRateLimit: "web_search: Metaso ratelimited \u2014 warte und versuche es erneut, oder erhalte einen eigenen API-Schl\xFCssel unter https://metaso.cn/search-api/playground",
4366
+ metasoRateLimit: "web_search: Metaso-Rate-Limit erreicht \u2014 warte und versuche es erneut, oder erhalte einen eigenen API-Schl\xFCssel unter https://metaso.cn/search-api/playground",
4329
4367
  metasoServerError: "web_search: Metaso-Serverfehler ({status}) \u2014 versuche es sp\xE4ter erneut oder wechsle die Engine mit /search-engine bing|searxng|metaso|tavily|perplexity|exa",
4330
4368
  metasoParseError: "web_search: Metaso hat unparsbare Antwort zur\xFCckgegeben (HTTP {status}) \u2014 versuche es sp\xE4ter erneut",
4331
4369
  metasoApiError: "web_search: Metaso-API-Fehler (Code {code}: {message}) \u2014 versuche es sp\xE4ter erneut",
4332
4370
  tavilyMissingKey: "web_search: Tavily-Backend ben\xF6tigt einen API-Schl\xFCssel \u2014 setze TAVILY_API_KEY-Umgebungsvariable oder `tavilyApiKey` in ~/.reasonix/config.json; kostenlose 1000/Monat-Registrierung unter https://tavily.com",
4333
4371
  tavilyUnauthorized: "web_search: Tavily-API-Schl\xFCssel abgelehnt \u2014 \xFCberpr\xFCfe TAVILY_API_KEY oder erhalte einen unter https://tavily.com",
4334
- tavilyRateLimit: "web_search: Tavily ratelimited oder monatliches Kontingent \xFCberschritten \u2014 warte, wechsle die Engine mit /search-engine bing|searxng|metaso|tavily|perplexity|exa oder upgrade deinen Tavily-Plan",
4372
+ tavilyRateLimit: "web_search: Tavily-Rate-Limit erreicht oder monatliches Kontingent \xFCberschritten \u2014 warte, wechsle die Engine mit /search-engine bing|searxng|metaso|tavily|perplexity|exa oder upgrade deinen Tavily-Plan",
4335
4373
  tavilyServerError: "web_search: Tavily-Serverfehler ({status}) \u2014 versuche es sp\xE4ter erneut oder wechsle die Engine mit /search-engine bing|searxng|metaso|tavily|perplexity|exa",
4336
4374
  tavilyParseError: "web_search: Tavily hat unparsbare Antwort zur\xFCckgegeben (HTTP {status}) \u2014 versuche es sp\xE4ter erneut",
4337
4375
  perplexityMissingKey: "web_search: Perplexity-Backend ben\xF6tigt einen API-Schl\xFCssel \u2014 setze PERPLEXITY_API_KEY-Umgebungsvariable oder `perplexityApiKey` in ~/.reasonix/config.json; erhalte einen unter https://perplexity.ai/settings/api",
4338
4376
  perplexityUnauthorized: "web_search: Perplexity-API-Schl\xFCssel abgelehnt \u2014 \xFCberpr\xFCfe PERPLEXITY_API_KEY oder erhalte einen unter https://perplexity.ai/settings/api",
4339
- perplexityRateLimit: "web_search: Perplexity ratelimited \u2014 warte und versuche es erneut, oder wechsle die Engine mit /search-engine bing|searxng|metaso|tavily|perplexity|exa",
4377
+ perplexityRateLimit: "web_search: Perplexity-Rate-Limit erreicht \u2014 warte und versuche es erneut, oder wechsle die Engine mit /search-engine bing|searxng|metaso|tavily|perplexity|exa",
4340
4378
  perplexityServerError: "web_search: Perplexity-Serverfehler ({status}) \u2014 versuche es sp\xE4ter erneut oder wechsle die Engine mit /search-engine bing|searxng|metaso|tavily|perplexity|exa",
4341
4379
  perplexityParseError: "web_search: Perplexity hat unparsbare Antwort zur\xFCckgegeben (HTTP {status}) \u2014 versuche es sp\xE4ter erneut",
4342
4380
  exaMissingKey: "web_search: Exa-Backend ben\xF6tigt einen API-Schl\xFCssel \u2014 setze EXA_API_KEY-Umgebungsvariable oder `exaApiKey` in ~/.reasonix/config.json; kostenlose 1000/Monat-Registrierung unter https://exa.ai",
4343
4381
  exaUnauthorized: "web_search: Exa-API-Schl\xFCssel abgelehnt \u2014 \xFCberpr\xFCfe EXA_API_KEY oder erhalte einen unter https://exa.ai",
4344
- exaRateLimit: "web_search: Exa-API ratelimited oder monatliches Kontingent \xFCberschritten \u2014 warte oder upgrade unter https://exa.ai/pricing",
4382
+ exaRateLimit: "web_search: Exa-API-Rate-Limit erreicht oder monatliches Kontingent \xFCberschritten \u2014 warte oder upgrade unter https://exa.ai/pricing",
4345
4383
  exaServerError: "web_search: Exa-Serverfehler ({status}) \u2014 versuche es sp\xE4ter erneut oder wechsle die Engine mit /search-engine bing|searxng|metaso|tavily|perplexity|exa",
4346
4384
  exaParseError: "web_search: Exa hat unparsbare Antwort zur\xFCckgegeben (HTTP {status}) \u2014 versuche es sp\xE4ter erneut",
4347
4385
  fetchStatus: "web_fetch {status} f\xFCr {url} \u2014 versuche: Best\xE4tige, dass die URL im Browser aufgel\xF6st wird; der Status deutet darauf hin, dass der Host eine Fehlerseite zur\xFCckgegeben hat",
@@ -4372,7 +4410,7 @@ var de = {
4372
4410
  reasoningEllipsis: "Reasoning\u2026",
4373
4411
  error: "Fehler",
4374
4412
  doctor: "Doctor",
4375
- you: "du",
4413
+ you: "Du",
4376
4414
  task: "Aufgabe"
4377
4415
  },
4378
4416
  cardLabels: {
@@ -4462,7 +4500,7 @@ var de = {
4462
4500
  },
4463
4501
  slashArgPicker: {
4464
4502
  ...EN.slashArgPicker,
4465
- noMatch: 'keine \xDCbereinstimmung f\xFCr "{partial}"',
4503
+ noMatch: 'Keine \xDCbereinstimmung f\xFCr "{partial}"',
4466
4504
  keepTyping: " \u2014 tippe weiter, oder R\xFCcktaste zum Bearbeiten",
4467
4505
  above: " \u2191 {hidden} dar\xFCber",
4468
4506
  below: " \u2193 {hidden} darunter",
@@ -4483,7 +4521,7 @@ var de = {
4483
4521
  loadingMore: "Lade mehr\u2026",
4484
4522
  allLoaded: "Alle Seiten geladen",
4485
4523
  fetchingDetail: "Hole Smithery-Details\u2026",
4486
- noInstallInfo: "keine Installationsinfo f\xFCr {name} - versuche `npx -y @smithery/cli install {name}`",
4524
+ noInstallInfo: "Keine Installationsinfo f\xFCr {name} - versuche `npx -y @smithery/cli install {name}`",
4487
4525
  alreadyInstalled: "Bereits installiert: {spec}",
4488
4526
  installed: "Installiert \u2192 {spec}",
4489
4527
  uninstalled: "{name} deinstalliert",
@@ -4515,10 +4553,10 @@ var de = {
4515
4553
  readOne: "Lese einen: `/resource <uri>` \u2014 oder verwende Tab in der Auswahl.",
4516
4554
  noPrompts: "Keine Prompts auf einem verbundenen MCP-Server (oder keine Server verbunden). `/mcp` zeigt den aktuellen Satz.",
4517
4555
  fetchOne: "Rufe einen ab: `/prompt <name>` \u2014 Argumente werden noch nicht unterst\xFCtzt; Prompts mit erforderlichen Argumenten geben einen Fehler vom Server zur\xFCck.",
4518
- noServerForResource: 'kein Server bietet Ressource "{name}"',
4556
+ noServerForResource: 'Kein Server bietet Ressource "{name}"',
4519
4557
  resourceHint: "`/resource` ohne Argument listet verf\xFCgbare Ressourcen.",
4520
4558
  readFailed: "readResource fehlgeschlagen",
4521
- noServerForPrompt: 'kein Server bietet Prompt "{name}"',
4559
+ noServerForPrompt: 'Kein Server bietet Prompt "{name}"',
4522
4560
  promptHint: "`/prompt` ohne Argument listet verf\xFCgbare Prompts.",
4523
4561
  fetchFailed: "getPrompt fehlgeschlagen"
4524
4562
  },
@@ -4542,7 +4580,7 @@ var de = {
4542
4580
  ...EN.checkpointPicker,
4543
4581
  title: "Checkpoint wiederherstellen \u2014 {workspace}",
4544
4582
  header: " \u25C8 REASONIX \xB7 Checkpoint ausw\xE4hlen ",
4545
- empty: " noch keine Checkpoints in diesem Arbeitsbereich - siehe /checkpoint zum Erstellen",
4583
+ empty: " Noch keine Checkpoints in diesem Arbeitsbereich - siehe /checkpoint zum Erstellen",
4546
4584
  more: " \u2026 {hidden} weitere",
4547
4585
  footer: " \u2191\u2193 ausw\xE4hlen \xB7 \u23CE wiederherstellen \xB7 [d] vergessen \xB7 Esc beenden",
4548
4586
  footerEmpty: " Esc beenden"
@@ -4652,6 +4690,506 @@ var de = {
4652
4690
  }
4653
4691
  };
4654
4692
 
4693
+ // src/i18n/ru.ts
4694
+ var ru = {
4695
+ ...EN,
4696
+ common: {
4697
+ ...EN.common,
4698
+ error: "\u041E\u0448\u0438\u0431\u043A\u0430",
4699
+ warning: "\u041F\u0440\u0435\u0434\u0443\u043F\u0440\u0435\u0436\u0434\u0435\u043D\u0438\u0435",
4700
+ loading: "\u0417\u0430\u0433\u0440\u0443\u0437\u043A\u0430...",
4701
+ done: "\u0413\u043E\u0442\u043E\u0432\u043E",
4702
+ cancel: "\u041E\u0442\u043C\u0435\u043D\u0430",
4703
+ confirm: "\u041F\u043E\u0434\u0442\u0432\u0435\u0440\u0434\u0438\u0442\u044C",
4704
+ back: "\u041D\u0430\u0437\u0430\u0434",
4705
+ next: "\u0414\u0430\u043B\u0435\u0435",
4706
+ tool: "\u0438\u043D\u0441\u0442\u0440\u0443\u043C\u0435\u043D\u0442",
4707
+ running: "\u0432\u044B\u043F\u043E\u043B\u043D\u044F\u0435\u0442\u0441\u044F",
4708
+ noTurns: "(\u043F\u043E\u043A\u0430 \u043D\u0435\u0442 \u0448\u0430\u0433\u043E\u0432)"
4709
+ },
4710
+ cli: {
4711
+ ...EN.cli,
4712
+ description: "\u0424\u0440\u0435\u0439\u043C\u0432\u043E\u0440\u043A \u0430\u0433\u0435\u043D\u0442\u0430 \u043D\u0430 DeepSeek \u2014 \u0441\u043E\u0437\u0434\u0430\u043D \u0434\u043B\u044F \u043A\u044D\u0448-\u043F\u043E\u043F\u0430\u0434\u0430\u043D\u0438\u0439 \u0438 \u0434\u0435\u0448\u0451\u0432\u044B\u0445 \u0442\u043E\u043A\u0435\u043D\u043E\u0432.",
4713
+ continue: "\u0412\u043E\u0437\u043E\u0431\u043D\u043E\u0432\u0438\u0442\u044C \u043F\u043E\u0441\u043B\u0435\u0434\u043D\u044E\u044E \u0438\u0441\u043F\u043E\u043B\u044C\u0437\u043E\u0432\u0430\u043D\u043D\u0443\u044E \u0441\u0435\u0441\u0441\u0438\u044E \u0431\u0435\u0437 \u043F\u043E\u043A\u0430\u0437\u0430 \u0432\u044B\u0431\u043E\u0440\u0430.",
4714
+ setup: "\u0418\u043D\u0442\u0435\u0440\u0430\u043A\u0442\u0438\u0432\u043D\u044B\u0439 \u043C\u0430\u0441\u0442\u0435\u0440 \u2014 API-\u043A\u043B\u044E\u0447, MCP-\u0441\u0435\u0440\u0432\u0435\u0440\u044B. \u041C\u043E\u0436\u043D\u043E \u043F\u0435\u0440\u0435\u0437\u0430\u043F\u0443\u0441\u0442\u0438\u0442\u044C \u0432 \u043B\u044E\u0431\u043E\u0435 \u0432\u0440\u0435\u043C\u044F.",
4715
+ code: "\u0420\u0435\u0434\u0430\u043A\u0442\u0438\u0440\u043E\u0432\u0430\u043D\u0438\u0435 \u043A\u043E\u0434\u0430 \u2014 \u0444\u0430\u0439\u043B\u043E\u0432\u044B\u0435 \u0438\u043D\u0441\u0442\u0440\u0443\u043C\u0435\u043D\u0442\u044B \u0441 \u043A\u043E\u0440\u043D\u0435\u043C \u0432 <dir> (\u043F\u043E \u0443\u043C\u043E\u043B\u0447.: \u0442\u0435\u043A. \u043F\u0430\u043F\u043A\u0430), \u0441\u0438\u0441\u0442\u0435\u043C\u043D\u044B\u0439 \u043F\u0440\u043E\u043C\u043F\u0442 \u0434\u043B\u044F \u043A\u043E\u0434\u0430, v4-flash.",
4716
+ chat: "\u0418\u043D\u0442\u0435\u0440\u0430\u043A\u0442\u0438\u0432\u043D\u0430\u044F Ink TUI \u0441 \u043F\u0430\u043D\u0435\u043B\u044C\u044E \u043A\u044D\u0448\u0430 \u0438 \u0441\u0442\u043E\u0438\u043C\u043E\u0441\u0442\u0438.",
4717
+ run: "\u0420\u0430\u0437\u043E\u0432\u043E\u0435 \u0432\u044B\u043F\u043E\u043B\u043D\u0435\u043D\u0438\u0435 \u0437\u0430\u0434\u0430\u0447\u0438 \u0432 \u043D\u0435\u0438\u043D\u0442\u0435\u0440\u0430\u043A\u0442\u0438\u0432\u043D\u043E\u043C \u0440\u0435\u0436\u0438\u043C\u0435, \u043F\u043E\u0442\u043E\u043A\u043E\u0432\u044B\u0439 \u0432\u044B\u0432\u043E\u0434.",
4718
+ stats: "\u041F\u043E\u043A\u0430\u0437\u0430\u0442\u044C \u043F\u0430\u043D\u0435\u043B\u044C \u0438\u0441\u043F\u043E\u043B\u044C\u0437\u043E\u0432\u0430\u043D\u0438\u044F.",
4719
+ doctor: "\u041F\u0440\u043E\u0432\u0435\u0440\u043A\u0430 \u0437\u0434\u043E\u0440\u043E\u0432\u044C\u044F \u043E\u0434\u043D\u043E\u0439 \u043A\u043E\u043C\u0430\u043D\u0434\u043E\u0439.",
4720
+ commit: "\u0421\u043E\u0441\u0442\u0430\u0432\u0438\u0442\u044C \u0441\u043E\u043E\u0431\u0449\u0435\u043D\u0438\u0435 \u043A\u043E\u043C\u043C\u0438\u0442\u0430 \u0438\u0437 staged-diff.",
4721
+ sessions: "\u0421\u043F\u0438\u0441\u043E\u043A \u0441\u043E\u0445\u0440\u0430\u043D\u0451\u043D\u043D\u044B\u0445 \u0441\u0435\u0441\u0441\u0438\u0439 \u0438\u043B\u0438 \u043F\u0440\u043E\u0441\u043C\u043E\u0442\u0440 \u043E\u0434\u043D\u043E\u0439 \u043F\u043E \u0438\u043C\u0435\u043D\u0438.",
4722
+ pruneSessions: "\u0423\u0434\u0430\u043B\u0438\u0442\u044C \u0441\u0435\u0441\u0441\u0438\u0438, \u043D\u0435\u0430\u043A\u0442\u0438\u0432\u043D\u044B\u0435 \u2265N \u0434\u043D\u0435\u0439 (\u043F\u043E \u0443\u043C\u043E\u043B\u0447. 90). --dry-run \u0434\u043B\u044F \u043F\u0440\u0435\u0434\u043F\u0440\u043E\u0441\u043C\u043E\u0442\u0440\u0430.",
4723
+ events: "\u041A\u0440\u0430\u0441\u0438\u0432\u044B\u0439 \u0432\u044B\u0432\u043E\u0434 \u0436\u0443\u0440\u043D\u0430\u043B\u0430 \u0441\u043E\u0431\u044B\u0442\u0438\u0439 \u044F\u0434\u0440\u0430.",
4724
+ replay: "\u0418\u043D\u0442\u0435\u0440\u0430\u043A\u0442\u0438\u0432\u043D\u0430\u044F Ink TUI \u0434\u043B\u044F \u043F\u0440\u043E\u0441\u043C\u043E\u0442\u0440\u0430 \u0442\u0440\u0430\u043D\u0441\u043A\u0440\u0438\u043F\u0442\u0430.",
4725
+ diff: "\u0421\u0440\u0430\u0432\u043D\u0435\u043D\u0438\u0435 \u0434\u0432\u0443\u0445 \u0442\u0440\u0430\u043D\u0441\u043A\u0440\u0438\u043F\u0442\u043E\u0432 \u0432 \u0440\u0430\u0437\u0434\u0435\u043B\u0451\u043D\u043D\u043E\u0439 Ink TUI.",
4726
+ mcp: "\u041F\u043E\u043C\u043E\u0449\u043D\u0438\u043A\u0438 Model Context Protocol \u2014 \u043F\u043E\u0438\u0441\u043A \u0441\u0435\u0440\u0432\u0435\u0440\u043E\u0432, \u043F\u0440\u043E\u0432\u0435\u0440\u043A\u0430 \u043D\u0430\u0441\u0442\u0440\u043E\u0439\u043A\u0438.",
4727
+ version: "\u0412\u044B\u0432\u0435\u0441\u0442\u0438 \u0432\u0435\u0440\u0441\u0438\u044E Reasonix.",
4728
+ update: "\u041F\u0440\u043E\u0432\u0435\u0440\u0438\u0442\u044C \u043D\u043E\u0432\u0443\u044E \u0432\u0435\u0440\u0441\u0438\u044E Reasonix \u0438 \u0443\u0441\u0442\u0430\u043D\u043E\u0432\u0438\u0442\u044C.",
4729
+ index: "\u041F\u043E\u0441\u0442\u0440\u043E\u0438\u0442\u044C (\u0438\u043B\u0438 \u0438\u043D\u043A\u0440\u0435\u043C\u0435\u043D\u0442\u0430\u043B\u044C\u043D\u043E \u043E\u0431\u043D\u043E\u0432\u0438\u0442\u044C) \u043B\u043E\u043A\u0430\u043B\u044C\u043D\u044B\u0439 \u0441\u0435\u043C\u0430\u043D\u0442\u0438\u0447\u0435\u0441\u043A\u0438\u0439 \u043F\u043E\u0438\u0441\u043A\u043E\u0432\u044B\u0439 \u0438\u043D\u0434\u0435\u043A\u0441."
4730
+ },
4731
+ stats: {
4732
+ ...EN.stats,
4733
+ usageHint: "\u0437\u0430\u043F\u0443\u0441\u0442\u0438 `reasonix chat`, `reasonix code` \u0438\u043B\u0438 `reasonix run <task>` \u2014 \u043A\u0430\u0436\u0434\u044B\u0439 \u0448\u0430\u0433",
4734
+ usageDetail: "\u0434\u043E\u0431\u0430\u0432\u043B\u044F\u0435\u0442 \u043E\u0434\u043D\u0443 \u0441\u0442\u0440\u043E\u043A\u0443 \u0432 \u043B\u043E\u0433, \u0430 `reasonix stats` \u0441\u0432\u043E\u0434\u0438\u0442 \u0432\u0441\u0451 \u0432\u043C\u0435\u0441\u0442\u0435."
4735
+ },
4736
+ run: {
4737
+ ...EN.run,
4738
+ missingApiKey: "DEEPSEEK_API_KEY \u043D\u0435 \u0437\u0430\u0434\u0430\u043D \u0438 stdin \u043D\u0435 TTY (\u043D\u0435\u043B\u044C\u0437\u044F \u0437\u0430\u043F\u0440\u043E\u0441\u0438\u0442\u044C).\n\u0423\u0441\u0442\u0430\u043D\u043E\u0432\u0438 \u043F\u0435\u0440\u0435\u043C\u0435\u043D\u043D\u0443\u044E \u043E\u043A\u0440\u0443\u0436\u0435\u043D\u0438\u044F \u0438\u043B\u0438 \u0437\u0430\u043F\u0443\u0441\u0442\u0438 `reasonix chat` \u043E\u0434\u0438\u043D \u0440\u0430\u0437 \u0434\u043B\u044F \u0441\u043E\u0445\u0440\u0430\u043D\u0435\u043D\u0438\u044F \u043A\u043B\u044E\u0447\u0430.\n"
4739
+ },
4740
+ sessions: {
4741
+ ...EN.sessions,
4742
+ emptyHint: "\u0435\u0449\u0451 \u043D\u0435\u0442 \u0441\u043E\u0445\u0440\u0430\u043D\u0451\u043D\u043D\u044B\u0445 \u0441\u0435\u0441\u0441\u0438\u0439 \u2014 \u0437\u0430\u043F\u0443\u0441\u0442\u0438 `reasonix chat` (\u0441\u0435\u0441\u0441\u0438\u0438 \u0430\u0432\u0442\u043E-\u0441\u043E\u0445\u0440\u0430\u043D\u044F\u044E\u0442\u0441\u044F, \u0435\u0441\u043B\u0438 \u043D\u0435 \u0443\u043A\u0430\u0437\u0430\u043D --no-session).",
4743
+ listHeader: "\u0421\u043E\u0445\u0440\u0430\u043D\u0451\u043D\u043D\u044B\u0435 \u0441\u0435\u0441\u0441\u0438\u0438 (~/.reasonix/sessions/):",
4744
+ inspectHint: "\u041F\u0440\u043E\u0441\u043C\u043E\u0442\u0440: reasonix sessions <\u0438\u043C\u044F>",
4745
+ resumeHint: "\u0412\u043E\u0437\u043E\u0431\u043D\u043E\u0432\u0438\u0442\u044C: reasonix chat --session <\u0438\u043C\u044F>",
4746
+ noSession: '\u043D\u0435\u0442 \u0441\u0435\u0441\u0441\u0438\u0438 "{name}" (\u0438\u043B\u0438 \u043E\u043D\u0430 \u043F\u0443\u0441\u0442\u0430).',
4747
+ lookedAt: "\u043F\u0440\u043E\u0441\u043C\u043E\u0442\u0440\u0435\u043D\u043E: {path}",
4748
+ noIdleSessions: "\u043D\u0435\u0442 \u043D\u0435\u0430\u043A\u0442\u0438\u0432\u043D\u044B\u0445 \u0441\u0435\u0441\u0441\u0438\u0439 \u2265{days} \u0434\u043D. \u041D\u0438\u0447\u0435\u0433\u043E \u043D\u0435 \u0443\u0434\u0430\u043B\u0435\u043D\u043E.",
4749
+ wouldPrune: "\u0431\u0443\u0434\u0435\u0442 \u0443\u0434\u0430\u043B\u0435\u043D\u043E {count} \u0441\u0435\u0441\u0441\u0438\u0439(\u0438\u044F), \u043D\u0435\u0430\u043A\u0442\u0438\u0432\u043D\u044B\u0445 \u2265{days} \u0434\u043D.:",
4750
+ dryRunHint: "\u0437\u0430\u043F\u0443\u0441\u0442\u0438 \u0441\u043D\u043E\u0432\u0430 \u0431\u0435\u0437 --dry-run \u0434\u043B\u044F \u0440\u0435\u0430\u043B\u044C\u043D\u043E\u0433\u043E \u0443\u0434\u0430\u043B\u0435\u043D\u0438\u044F.",
4751
+ prunedCount: "\u0443\u0434\u0430\u043B\u0435\u043D\u043E {count} \u0441\u0435\u0441\u0441\u0438\u0439(\u0438\u044F), \u043D\u0435\u0430\u043A\u0442\u0438\u0432\u043D\u044B\u0445 \u2265{days} \u0434\u043D.:",
4752
+ daysInvalid: "--days \u0434\u043E\u043B\u0436\u043D\u043E \u0431\u044B\u0442\u044C \u043F\u043E\u043B\u043E\u0436\u0438\u0442\u0435\u043B\u044C\u043D\u044B\u043C \u0446\u0435\u043B\u044B\u043C \u0447\u0438\u0441\u043B\u043E\u043C (\u043F\u043E\u043B\u0443\u0447\u0435\u043D\u043E {days})."
4753
+ },
4754
+ ui: {
4755
+ ...EN.ui,
4756
+ tipShownOnce: "\u043F\u043E\u043A\u0430\u0437\u0430\u043D\u043E \u043E\u0434\u0438\u043D \u0440\u0430\u0437",
4757
+ modelOverride: "\u043F\u0435\u0440\u0435\u043E\u043F\u0440\u0435\u0434\u0435\u043B\u0438\u0442\u044C \u0441\u0442\u0430\u043D\u0434\u0430\u0440\u0442\u043D\u0443\u044E \u043C\u043E\u0434\u0435\u043B\u044C",
4758
+ noSession: "\u043E\u0442\u043A\u043B\u044E\u0447\u0438\u0442\u044C \u0441\u043E\u0445\u0440\u0430\u043D\u0435\u043D\u0438\u0435 \u0441\u0435\u0441\u0441\u0438\u0438 \u0434\u043B\u044F \u044D\u0442\u043E\u0433\u043E \u0437\u0430\u043F\u0443\u0441\u043A\u0430",
4759
+ noMouseHint: "\u043E\u0442\u043A\u043B\u044E\u0447\u0438\u0442\u044C SGR-\u0441\u043B\u0435\u0436\u0435\u043D\u0438\u0435 \u043C\u044B\u0448\u0438; \u0432\u0435\u0440\u043D\u0443\u0442\u044C \u043D\u0430\u0442\u0438\u0432\u043D\u043E\u0435 \u0432\u044B\u0434\u0435\u043B\u0435\u043D\u0438\u0435 \u0438 \u043F\u0440\u0430\u0432\u044B\u0439 \u043A\u043B\u0438\u043A",
4760
+ noProxyHint: "\u0438\u0433\u043D\u043E\u0440\u0438\u0440\u043E\u0432\u0430\u0442\u044C HTTPS_PROXY / HTTP_PROXY \u0434\u043B\u044F \u044D\u0442\u043E\u0433\u043E \u0437\u0430\u043F\u0443\u0441\u043A\u0430; \u043D\u0430\u043F\u0440\u044F\u043C\u0443\u044E",
4761
+ resumeHint: "\u043F\u0440\u0438\u043D\u0443\u0434\u0438\u0442\u0435\u043B\u044C\u043D\u043E \u0432\u043E\u0437\u043E\u0431\u043D\u043E\u0432\u0438\u0442\u044C \u0443\u043A\u0430\u0437\u0430\u043D\u043D\u0443\u044E \u0441\u0435\u0441\u0441\u0438\u044E (\u0434\u0430\u0436\u0435 \u0435\u0441\u043B\u0438 \u043D\u0435\u0430\u043A\u0442\u0438\u0432\u043D\u0430)",
4762
+ newHint: "\u043F\u0440\u0438\u043D\u0443\u0434\u0438\u0442\u0435\u043B\u044C\u043D\u043E \u043D\u0430\u0447\u0430\u0442\u044C \u043D\u043E\u0432\u0443\u044E \u0441\u0435\u0441\u0441\u0438\u044E (\u0438\u0433\u043D\u043E\u0440\u0438\u0440\u043E\u0432\u0430\u0442\u044C --session / --continue)",
4763
+ transcriptHint: "\u043F\u0443\u0442\u044C \u0434\u043B\u044F \u0437\u0430\u043F\u0438\u0441\u0438 JSONL-\u0442\u0440\u0430\u043D\u0441\u043A\u0440\u0438\u043F\u0442\u0430",
4764
+ budgetHint: "\u043B\u0438\u043C\u0438\u0442 \u0441\u0435\u0441\u0441\u0438\u0438 \u0432 USD \u2014 \u043F\u0440\u0435\u0434\u0443\u043F\u0440\u0435\u0436\u0434\u0435\u043D\u0438\u0435 \u043D\u0430 80%, \u043E\u0442\u043A\u0430\u0437 \u043D\u0430 100%",
4765
+ modelIdHint: "ID \u043C\u043E\u0434\u0435\u043B\u0438 DeepSeek (\u043D\u0430\u043F\u0440. deepseek-v4-flash)",
4766
+ systemPromptHint: "\u043F\u0435\u0440\u0435\u043E\u043F\u0440\u0435\u0434\u0435\u043B\u0438\u0442\u044C \u0441\u0442\u0430\u043D\u0434\u0430\u0440\u0442\u043D\u044B\u0439 \u0441\u0438\u0441\u0442\u0435\u043C\u043D\u044B\u0439 \u043F\u0440\u043E\u043C\u043F\u0442",
4767
+ effortHint: "\u0443\u0440\u043E\u0432\u0435\u043D\u044C \u0440\u0430\u0441\u0441\u0443\u0436\u0434\u0435\u043D\u0438\u0439 \u2014 \u043D\u0438\u0437\u043A\u0438\u0439|\u0441\u0440\u0435\u0434\u043D\u0438\u0439|\u0432\u044B\u0441\u043E\u043A\u0438\u0439|\u043C\u0430\u043A\u0441",
4768
+ sessionNameHint: "\u0438\u043C\u044F \u0441\u0435\u0441\u0441\u0438\u0438 (\u043F\u043E \u0443\u043C\u043E\u043B\u0447.: 'default')",
4769
+ ephemeralHint: "\u043E\u0442\u043A\u043B\u044E\u0447\u0438\u0442\u044C \u0441\u043E\u0445\u0440\u0430\u043D\u0435\u043D\u0438\u0435 \u0441\u0435\u0441\u0441\u0438\u0438 \u0434\u043B\u044F \u044D\u0442\u043E\u0433\u043E \u0437\u0430\u043F\u0443\u0441\u043A\u0430",
4770
+ mcpSpecHint: "\u0441\u043F\u0435\u0446\u0438\u0444\u0438\u043A\u0430\u0446\u0438\u044F MCP-\u0441\u0435\u0440\u0432\u0435\u0440\u0430 (\u043C\u043E\u0436\u043D\u043E \u043F\u043E\u0432\u0442\u043E\u0440\u044F\u0442\u044C)",
4771
+ mcpPrefixHint: "\u0434\u043E\u0431\u0430\u0432\u0438\u0442\u044C \u044D\u0442\u043E\u0442 \u043F\u0440\u0435\u0444\u0438\u043A\u0441 \u043A \u0438\u043C\u0435\u043D\u0430\u043C MCP-\u0438\u043D\u0441\u0442\u0440\u0443\u043C\u0435\u043D\u0442\u043E\u0432",
4772
+ noConfigHint: "\u0438\u0433\u043D\u043E\u0440\u0438\u0440\u043E\u0432\u0430\u0442\u044C ~/.reasonix/config.json \u0434\u043B\u044F \u044D\u0442\u043E\u0433\u043E \u0437\u0430\u043F\u0443\u0441\u043A\u0430",
4773
+ effortHintShort: "\u0443\u0440\u043E\u0432\u0435\u043D\u044C \u0440\u0430\u0441\u0441\u0443\u0436\u0434\u0435\u043D\u0438\u0439 \u2014 \u043D\u0438\u0437|\u0441\u0440\u0435\u0434|\u0432\u044B\u0441|\u043C\u0430\u043A\u0441",
4774
+ budgetHintShort: "\u043B\u0438\u043C\u0438\u0442 \u0441\u0435\u0441\u0441\u0438\u0438 \u0432 USD",
4775
+ transcriptHintShort: "\u043F\u0443\u0442\u044C \u043A JSONL-\u0442\u0440\u0430\u043D\u0441\u043A\u0440\u0438\u043F\u0442\u0443",
4776
+ mcpSpecHintShort: "\u0441\u043F\u0435\u0446\u0438\u0444\u0438\u043A\u0430\u0446\u0438\u044F MCP-\u0441\u0435\u0440\u0432\u0435\u0440\u0430 (\u043F\u043E\u0432\u0442\u043E\u0440\u044F\u0435\u043C\u043E)",
4777
+ mcpPrefixHintShort: "\u043F\u0440\u0435\u0444\u0438\u043A\u0441 \u0438\u043C\u0451\u043D MCP-\u0438\u043D\u0441\u0442\u0440\u0443\u043C\u0435\u043D\u0442\u043E\u0432",
4778
+ dryRunHint: "\u043F\u043E\u043A\u0430\u0437\u0430\u0442\u044C, \u0447\u0442\u043E \u0431\u0443\u0434\u0435\u0442 \u0443\u0441\u0442\u0430\u043D\u043E\u0432\u043B\u0435\u043D\u043E, \u0431\u0435\u0437 \u0440\u0435\u0430\u043B\u044C\u043D\u043E\u0439 \u0443\u0441\u0442\u0430\u043D\u043E\u0432\u043A\u0438",
4779
+ rebuildHint: "\u043F\u0435\u0440\u0435\u0441\u0442\u0440\u043E\u0438\u0442\u044C \u0438\u043D\u0434\u0435\u043A\u0441 \u0441 \u043D\u0443\u043B\u044F",
4780
+ embedModelHint: "\u0438\u043C\u044F \u043C\u043E\u0434\u0435\u043B\u0438 \u044D\u043C\u0431\u0435\u0434\u0434\u0438\u043D\u0433\u043E\u0432",
4781
+ projectDirHint: "\u043A\u043E\u0440\u043D\u0435\u0432\u0430\u044F \u0434\u0438\u0440\u0435\u043A\u0442\u043E\u0440\u0438\u044F \u043F\u0440\u043E\u0435\u043A\u0442\u0430",
4782
+ ollamaUrlHint: "URL Ollama-\u0441\u0435\u0440\u0432\u0435\u0440\u0430",
4783
+ skipPromptsHint: "\u043F\u0440\u043E\u043F\u0443\u0441\u0442\u0438\u0442\u044C \u043F\u043E\u0434\u0442\u0432\u0435\u0440\u0436\u0434\u0435\u043D\u0438\u044F",
4784
+ verboseHint: "\u043F\u043E\u043A\u0430\u0437\u0430\u0442\u044C \u043F\u043E\u043B\u043D\u044B\u0435 \u043C\u0435\u0442\u0430\u0434\u0430\u043D\u043D\u044B\u0435 \u0441\u0435\u0441\u0441\u0438\u0438",
4785
+ pruneDaysHint: "\u0443\u0434\u0430\u043B\u044F\u0442\u044C \u0441\u0435\u0441\u0441\u0438\u0438, \u043D\u0435\u0430\u043A\u0442\u0438\u0432\u043D\u044B\u0435 \u2265 N \u0434\u043D\u0435\u0439 (\u043F\u043E \u0443\u043C\u043E\u043B\u0447. 90)",
4786
+ pruneDryRunHint: "\u043F\u043E\u043A\u0430\u0437\u0430\u0442\u044C \u0441\u043F\u0438\u0441\u043E\u043A \u0443\u0434\u0430\u043B\u044F\u0435\u043C\u043E\u0433\u043E \u0431\u0435\u0437 \u0443\u0434\u0430\u043B\u0435\u043D\u0438\u044F",
4787
+ eventTypeHint: "\u0444\u0438\u043B\u044C\u0442\u0440 \u043F\u043E \u0442\u0438\u043F\u0443 \u0441\u043E\u0431\u044B\u0442\u0438\u044F",
4788
+ eventSinceHint: "\u043D\u0430\u0447\u0430\u0442\u044C \u0441 \u044D\u0442\u043E\u0433\u043E ID \u0441\u043E\u0431\u044B\u0442\u0438\u044F",
4789
+ eventTailHint: "\u043F\u043E\u043A\u0430\u0437\u0430\u0442\u044C \u0442\u043E\u043B\u044C\u043A\u043E \u043F\u043E\u0441\u043B\u0435\u0434\u043D\u0438\u0435 N \u0441\u043E\u0431\u044B\u0442\u0438\u0439",
4790
+ jsonHint: "\u0432\u044B\u0432\u043E\u0434 \u0432 JSON",
4791
+ projectionHint: "\u043F\u043E\u043A\u0430\u0437\u0430\u0442\u044C \u043F\u0440\u0435\u0434\u043F\u043E\u043B\u0430\u0433\u0430\u0435\u043C\u043E\u0435 \u0441\u043E\u0441\u0442\u043E\u044F\u043D\u0438\u0435 \u043D\u0430 \u043A\u0430\u0436\u0434\u043E\u043C \u0441\u043E\u0431\u044B\u0442\u0438\u0438",
4792
+ printHint: "\u0432\u044B\u0432\u043E\u0434 \u0432 stdout \u0432\u043C\u0435\u0441\u0442\u043E TUI",
4793
+ headHint: "\u043F\u043E\u043A\u0430\u0437\u0430\u0442\u044C \u0442\u043E\u043B\u044C\u043A\u043E \u043F\u0435\u0440\u0432\u044B\u0435 N \u0441\u043E\u0431\u044B\u0442\u0438\u0439",
4794
+ tailHint: "\u043F\u043E\u043A\u0430\u0437\u0430\u0442\u044C \u0442\u043E\u043B\u044C\u043A\u043E \u043F\u043E\u0441\u043B\u0435\u0434\u043D\u0438\u0435 N \u0441\u043E\u0431\u044B\u0442\u0438\u0439",
4795
+ mdReportHint: "\u0437\u0430\u043F\u0438\u0441\u0430\u0442\u044C Markdown-\u043E\u0442\u0447\u0451\u0442 diff \u043F\u043E \u044D\u0442\u043E\u043C\u0443 \u043F\u0443\u0442\u0438",
4796
+ printHintTable: "\u0432\u044B\u0432\u0435\u0441\u0442\u0438 \u0442\u0430\u0431\u043B\u0438\u0446\u0443 \u0432 stdout",
4797
+ tuiHint: "\u043E\u0442\u043A\u0440\u044B\u0442\u044C \u0438\u043D\u0442\u0435\u0440\u0430\u043A\u0442\u0438\u0432\u043D\u0443\u044E TUI",
4798
+ labelAHint: "\u043C\u0435\u0442\u043A\u0430 \u0434\u043B\u044F \u043B\u0435\u0432\u043E\u0439 \u043F\u0430\u043D\u0435\u043B\u0438",
4799
+ labelBHint: "\u043C\u0435\u0442\u043A\u0430 \u0434\u043B\u044F \u043F\u0440\u0430\u0432\u043E\u0439 \u043F\u0430\u043D\u0435\u043B\u0438",
4800
+ mcpListDescription: "\u043E\u0431\u0437\u043E\u0440 MCP-\u0440\u0435\u0435\u0441\u0442\u0440\u0430 (\u043E\u0444\u0438\u0446\u0438\u0430\u043B\u044C\u043D\u044B\u0435 \u2192 smithery \u2192 \u043B\u043E\u043A\u0430\u043B\u044C\u043D\u044B\u0439 \u0437\u0430\u043F\u0430\u0441\u043D\u043E\u0439)",
4801
+ mcpInspectDescription: "\u043F\u0440\u043E\u0432\u0435\u0440\u0438\u0442\u044C \u0441\u043F\u0435\u0446\u0438\u0444\u0438\u043A\u0430\u0446\u0438\u044E MCP-\u0441\u0435\u0440\u0432\u0435\u0440\u0430 (\u0438\u043D\u0441\u0442\u0440\u0443\u043C\u0435\u043D\u0442\u044B, \u0440\u0435\u0441\u0443\u0440\u0441\u044B, \u043F\u0440\u043E\u043C\u043F\u0442\u044B)",
4802
+ mcpSearchDescription: "\u043F\u043E\u0438\u0441\u043A MCP-\u0441\u0435\u0440\u0432\u0435\u0440\u043E\u0432 \u043F\u043E \u0437\u0430\u043F\u0440\u043E\u0441\u0443 \u0432 \u0440\u0435\u0435\u0441\u0442\u0440\u0435",
4803
+ mcpInstallDescription: "\u0443\u0441\u0442\u0430\u043D\u043E\u0432\u0438\u0442\u044C MCP-\u0441\u0435\u0440\u0432\u0435\u0440 \u043F\u043E \u0438\u043C\u0435\u043D\u0438 (\u0437\u0430\u043F\u0438\u0441\u044B\u0432\u0430\u0435\u0442 \u0441\u043F\u0435\u0446\u0438\u0444\u0438\u043A\u0430\u0446\u0438\u044E \u0432 \u043A\u043E\u043D\u0444\u0438\u0433)",
4804
+ mcpBrowseDescription: "\u0438\u043D\u0442\u0435\u0440\u0430\u043A\u0442\u0438\u0432\u043D\u044B\u0439 \u043E\u0431\u0437\u043E\u0440 \u043C\u0430\u0440\u043A\u0435\u0442\u043F\u043B\u0435\u0439\u0441\u0430 \u2014 \u0432\u0432\u043E\u0434 \u0434\u043B\u044F \u0444\u0438\u043B\u044C\u0442\u0440\u0430, Enter \u0434\u043B\u044F \u0443\u0441\u0442\u0430\u043D\u043E\u0432\u043A\u0438",
4805
+ mcpLocalHint: "\u043F\u043E\u043A\u0430\u0437\u0430\u0442\u044C \u0442\u043E\u043B\u044C\u043A\u043E \u0432\u0441\u0442\u0440\u043E\u0435\u043D\u043D\u044B\u0439 \u043E\u0444\u043B\u0430\u0439\u043D-\u043A\u0430\u0442\u0430\u043B\u043E\u0433",
4806
+ mcpRefreshHint: "\u043F\u0440\u043E\u043F\u0443\u0441\u0442\u0438\u0442\u044C 24\u0447 \u043A\u044D\u0448 \u0438 \u0437\u0430\u0433\u0440\u0443\u0437\u0438\u0442\u044C \u0437\u0430\u043D\u043E\u0432\u043E",
4807
+ mcpLimitHint: "\u043C\u0430\u043A\u0441. \u0437\u0430\u043F\u0438\u0441\u0435\u0439 \u0434\u043B\u044F \u043F\u043E\u043A\u0430\u0437\u0430",
4808
+ mcpPagesHint: "\u0437\u0430\u0433\u0440\u0443\u0436\u0430\u0442\u044C \u0442\u0430\u043A \u043C\u043D\u043E\u0433\u043E \u0441\u0442\u0440\u0430\u043D\u0438\u0446 (\u043F\u043E \u0443\u043C\u043E\u043B\u0447. 1)",
4809
+ mcpAllHint: "\u0437\u0430\u0433\u0440\u0443\u0437\u0438\u0442\u044C \u0432\u0441\u0435 \u0441\u0442\u0440\u0430\u043D\u0438\u0446\u044B (\u043C\u0435\u0434\u043B\u0435\u043D\u043D\u043E \u043F\u0440\u0438 \u043F\u0435\u0440\u0432\u043E\u043C \u0437\u0430\u043F\u0443\u0441\u043A\u0435)",
4810
+ mcpMaxPagesHint: "\u043C\u0430\u043A\u0441\u0438\u043C\u0443\u043C \u0441\u0442\u0440\u0430\u043D\u0438\u0446 \u043F\u0440\u0438 \u043F\u043E\u0438\u0441\u043A\u0435 (\u043F\u043E \u0443\u043C\u043E\u043B\u0447. 20)",
4811
+ jsonHintCatalog: "\u0432\u044B\u0432\u043E\u0434 \u0432 JSON",
4812
+ jsonHintReport: "\u0432\u044B\u0432\u0435\u0441\u0442\u0438 \u043E\u0442\u0447\u0451\u0442 \u043F\u0440\u043E\u0432\u0435\u0440\u043A\u0438 \u0432 JSON",
4813
+ modelOverrideFlash: "\u043F\u0435\u0440\u0435\u043E\u043F\u0440\u0435\u0434\u0435\u043B\u0438\u0442\u044C \u043C\u043E\u0434\u0435\u043B\u044C (\u043F\u043E \u0443\u043C\u043E\u043B\u0447.: deepseek-v4-flash)",
4814
+ skipConfirmHint: "\u043F\u0440\u043E\u043F\u0443\u0441\u0442\u0438\u0442\u044C \u0437\u0430\u043F\u0440\u043E\u0441 \u043F\u043E\u0434\u0442\u0432\u0435\u0440\u0436\u0434\u0435\u043D\u0438\u044F",
4815
+ welcome: "\u0417\u0430\u043F\u0443\u0441\u043A\u0430\u0439 `reasonix` \u0432 \u043B\u044E\u0431\u043E\u0435 \u0432\u0440\u0435\u043C\u044F \u2014 \u043D\u0430\u0441\u0442\u0440\u043E\u0439\u043A\u0438 \u0441\u043E\u0445\u0440\u0430\u043D\u044F\u044E\u0442\u0441\u044F.",
4816
+ taglineChat: "\u041D\u0430\u0442\u0438\u0432\u043D\u044B\u0439 \u0430\u0433\u0435\u043D\u0442 DeepSeek",
4817
+ taglineCode: "\u041D\u0430\u0442\u0438\u0432\u043D\u044B\u0439 \u043A\u043E\u0434\u0438\u043D\u0433-\u0430\u0433\u0435\u043D\u0442 DeepSeek",
4818
+ taglineSub: "\u043A\u044D\u0448-\u043F\u0435\u0440\u0432\u044B\u0439 \xB7 flash-\u043F\u0435\u0440\u0432\u044B\u0439",
4819
+ startSessionHint: "\u043D\u0430\u043F\u0438\u0448\u0438 \u0441\u043E\u043E\u0431\u0449\u0435\u043D\u0438\u0435 \u0434\u043B\u044F \u043D\u0430\u0447\u0430\u043B\u0430 \u0441\u0435\u0441\u0441\u0438\u0438",
4820
+ inputPlaceholder: "\u0421\u043F\u0440\u043E\u0441\u0438 \u0447\u0442\u043E \u0443\u0433\u043E\u0434\u043D\u043E... (/ \u0434\u043B\u044F \u043A\u043E\u043C\u0430\u043D\u0434, @ \u0434\u043B\u044F \u0444\u0430\u0439\u043B\u043E\u0432)",
4821
+ busy: "\u0414\u0443\u043C\u0430\u044E...",
4822
+ thinking: "\u25B8 \u0440\u0430\u0437\u043C\u044B\u0448\u043B\u044F\u044E...",
4823
+ undo: "\u041E\u0442\u043C\u0435\u043D\u0438\u0442\u044C",
4824
+ undoHint: "\u043D\u0430\u0436\u043C\u0438 u \u0432 \u0442\u0435\u0447\u0435\u043D\u0438\u0435 5 \u0441\u0435\u043A \u0434\u043B\u044F \u043E\u0442\u043C\u0435\u043D\u044B",
4825
+ applied: "\u043F\u0440\u0438\u043C\u0435\u043D\u0435\u043D\u043E",
4826
+ rejected: "\u043E\u0442\u043A\u043B\u043E\u043D\u0435\u043D\u043E",
4827
+ noDashboard: "\u041F\u043E\u0434\u0430\u0432\u0438\u0442\u044C \u0430\u0432\u0442\u043E\u0437\u0430\u043F\u0443\u0441\u043A \u0432\u0441\u0442\u0440\u043E\u0435\u043D\u043D\u043E\u0439 \u0432\u0435\u0431-\u043F\u0430\u043D\u0435\u043B\u0438.",
4828
+ openDashboardHint: "\u041E\u0442\u043A\u0440\u044B\u0442\u044C URL \u043F\u0430\u043D\u0435\u043B\u0438 \u0432 \u0431\u0440\u0430\u0443\u0437\u0435\u0440\u0435 \u0441\u0440\u0430\u0437\u0443 \u043F\u043E\u0441\u043B\u0435 \u0433\u043E\u0442\u043E\u0432\u043D\u043E\u0441\u0442\u0438 \u0441\u0435\u0440\u0432\u0435\u0440\u0430. \u041D\u0435 \u0440\u0430\u0431\u043E\u0442\u0430\u0435\u0442 \u043F\u0440\u0438 --no-dashboard.",
4829
+ dashboardPortHint: "\u0424\u0438\u043A\u0441\u0438\u0440\u043E\u0432\u0430\u043D\u043D\u044B\u0439 \u043F\u043E\u0440\u0442 \u0434\u043B\u044F \u043F\u0430\u043D\u0435\u043B\u0438 (1\u201365535). \u0421\u0442\u0430\u0431\u0438\u043B\u0435\u043D \u043C\u0435\u0436\u0434\u0443 \u043F\u0435\u0440\u0435\u0437\u0430\u043F\u0443\u0441\u043A\u0430\u043C\u0438 \u2014 \u0442\u0440\u0435\u0431\u0443\u0435\u0442\u0441\u044F \u0434\u043B\u044F SSH-\u0442\u0443\u043D\u043D\u0435\u043B\u0435\u0439. \u041F\u043E \u0443\u043C\u043E\u043B\u0447.: \u044D\u0444\u0435\u043C\u0435\u0440\u043D\u044B\u0439.",
4830
+ dashboardPortInvalid: "\u25B2 --dashboard-port={value} \u0438\u0433\u043D\u043E\u0440\u0438\u0440\u0443\u0435\u0442\u0441\u044F (\u0434\u043E\u043B\u0436\u0435\u043D \u0431\u044B\u0442\u044C \u0446\u0435\u043B\u044B\u043C \u0447\u0438\u0441\u043B\u043E\u043C 1\u201365535) \u2014 \u0438\u0441\u043F\u043E\u043B\u044C\u0437\u0443\u0435\u0442\u0441\u044F \u044D\u0444\u0435\u043C\u0435\u0440\u043D\u044B\u0439 \u043F\u043E\u0440\u0442",
4831
+ dashboardAutoStartFailed: "\u25B2 \u0430\u0432\u0442\u043E\u0437\u0430\u043F\u0443\u0441\u043A \u043F\u0430\u043D\u0435\u043B\u0438 \u043D\u0435 \u0443\u0434\u0430\u043B\u0441\u044F ({reason}) \u2014 \u043F\u043E\u043F\u0440\u043E\u0431\u0443\u0439 /dashboard \u0438\u043B\u0438 \u043F\u0435\u0440\u0435\u0434\u0430\u0439 --no-dashboard",
4832
+ systemAppendHint: "\u0414\u043E\u0431\u0430\u0432\u0438\u0442\u044C \u0438\u043D\u0441\u0442\u0440\u0443\u043A\u0446\u0438\u0438 \u043A \u0441\u0438\u0441\u0442\u0435\u043C\u043D\u043E\u043C\u0443 \u043F\u0440\u043E\u043C\u043F\u0442\u0443 \u043A\u043E\u0434\u0430. \u041D\u0415 \u0437\u0430\u043C\u0435\u043D\u044F\u0435\u0442 \u0441\u0442\u0430\u043D\u0434\u0430\u0440\u0442\u043D\u044B\u0439 \u043F\u0440\u043E\u043C\u043F\u0442 \u2014 \u0434\u043E\u0431\u0430\u0432\u043B\u044F\u0435\u0442\u0441\u044F \u043F\u043E\u0441\u043B\u0435 \u043D\u0435\u0433\u043E.",
4833
+ systemAppendFileHint: "\u0414\u043E\u0431\u0430\u0432\u0438\u0442\u044C \u0441\u043E\u0434\u0435\u0440\u0436\u0438\u043C\u043E\u0435 \u0444\u0430\u0439\u043B\u0430 \u0432 \u0441\u0438\u0441\u0442\u0435\u043C\u043D\u044B\u0439 \u043F\u0440\u043E\u043C\u043F\u0442 \u043A\u043E\u0434\u0430. \u041D\u0415 \u0437\u0430\u043C\u0435\u043D\u044F\u0435\u0442 \u0441\u0442\u0430\u043D\u0434\u0430\u0440\u0442\u043D\u044B\u0439 \u043F\u0440\u043E\u043C\u043F\u0442. UTF-8, \u043E\u0442\u043D\u043E\u0441\u0438\u0442\u0435\u043B\u044C\u043D\u043E cwd \u0438\u043B\u0438 \u0430\u0431\u0441\u043E\u043B\u044E\u0442\u043D\u044B\u0439 \u043F\u0443\u0442\u044C.",
4834
+ resumedSession: '\u25B8 \u0441\u0435\u0441\u0441\u0438\u044F "{name}" \u0432\u043E\u0437\u043E\u0431\u043D\u043E\u0432\u043B\u0435\u043D\u0430 \u0441 {count} \u043F\u0440\u0435\u0434\u044B\u0434\u0443\u0449\u0438\u043C\u0438 \u0441\u043E\u043E\u0431\u0449\u0435\u043D\u0438\u044F\u043C\u0438 \xB7 /new \u0434\u043B\u044F \u043D\u043E\u0432\u043E\u0439 \xB7 /sessions \u0434\u043B\u044F \u0443\u043F\u0440\u0430\u0432\u043B\u0435\u043D\u0438\u044F',
4835
+ newSession: '\u25B8 \u0441\u0435\u0441\u0441\u0438\u044F "{name}" (\u043D\u043E\u0432\u0430\u044F) \u2014 \u0430\u0432\u0442\u043E-\u0441\u043E\u0445\u0440\u0430\u043D\u044F\u0435\u0442\u0441\u044F \u043F\u043E \u043C\u0435\u0440\u0435 \u043E\u0431\u0449\u0435\u043D\u0438\u044F \xB7 /sessions \u0434\u043B\u044F \u043F\u0435\u0440\u0435\u0438\u043C\u0435\u043D\u043E\u0432\u0430\u043D\u0438\u044F \u0438\u043B\u0438 \u0443\u0434\u0430\u043B\u0435\u043D\u0438\u044F',
4836
+ ephemeralSession: "\u25B8 \u044D\u0444\u0435\u043C\u0435\u0440\u043D\u044B\u0439 \u0447\u0430\u0442 (\u0431\u0435\u0437 \u0441\u043E\u0445\u0440\u0430\u043D\u0435\u043D\u0438\u044F) \u2014 \u0443\u0431\u0435\u0440\u0438 --no-session \u0434\u043B\u044F \u0432\u043A\u043B\u044E\u0447\u0435\u043D\u0438\u044F \u0441\u043E\u0445\u0440\u0430\u043D\u0435\u043D\u0438\u044F",
4837
+ restoredEdits: "\u25B8 \u0432\u043E\u0441\u0441\u0442\u0430\u043D\u043E\u0432\u043B\u0435\u043D\u043E {count} \u043E\u0436\u0438\u0434\u0430\u044E\u0449\u0438\u0445 \u043F\u0440\u0430\u0432\u043E\u043A \u0438\u0437 \u043F\u0440\u0435\u0440\u0432\u0430\u043D\u043D\u043E\u0433\u043E \u0437\u0430\u043F\u0443\u0441\u043A\u0430 \u2014 /apply \u0434\u043B\u044F \u043F\u0440\u0438\u043C\u0435\u043D\u0435\u043D\u0438\u044F \u0438\u043B\u0438 /discard \u0434\u043B\u044F \u043E\u0442\u043C\u0435\u043D\u044B.",
4838
+ resumedPlan: "\u041F\u043B\u0430\u043D \u0432\u043E\u0437\u043E\u0431\u043D\u043E\u0432\u043B\u0451\u043D \xB7 {when}{summary}"
4839
+ },
4840
+ code: {
4841
+ ...EN.code,
4842
+ workspaceConflict: "\u26A0 \u0440\u0430\u0431\u043E\u0447\u0430\u044F \u043E\u0431\u043B\u0430\u0441\u0442\u044C \u0441\u043E\u0434\u0435\u0440\u0436\u0438\u0442 \u0444\u0430\u0439\u043B\u044B \u0434\u0440\u0443\u0433\u043E\u0439 \u043F\u043B\u0430\u0442\u0444\u043E\u0440\u043C\u044B \u0430\u0433\u0435\u043D\u0442\u0430 ({platforms}). Reasonix Code \u043C\u043E\u0436\u0435\u0442 \u043F\u0440\u043E\u0447\u0438\u0442\u0430\u0442\u044C \u0438\u0445 \u043A\u0430\u043A \u0441\u043E\u0434\u0435\u0440\u0436\u0438\u043C\u043E\u0435 \u043F\u0440\u043E\u0435\u043A\u0442\u0430; \u043F\u0435\u0440\u0435\u0437\u0430\u043F\u0443\u0441\u0442\u0438 \u0441 --dir <\u0442\u0432\u043E\u0439-\u043F\u0440\u043E\u0435\u043A\u0442> \u0435\u0441\u043B\u0438 \u044D\u0442\u043E \u043D\u0435\u0436\u0435\u043B\u0430\u0442\u0435\u043B\u044C\u043D\u043E.\n",
4843
+ systemAppendEmpty: "--system-append \u043F\u0443\u0441\u0442 \u2014 \u0442\u0435\u043A\u0441\u0442 \u043F\u0440\u043E\u043C\u043F\u0442\u0430 \u043D\u0435 \u0431\u0443\u0434\u0435\u0442 \u0434\u043E\u0431\u0430\u0432\u043B\u0435\u043D\n",
4844
+ systemAppendFileReadError: '\u041E\u0448\u0438\u0431\u043A\u0430: \u043D\u0435 \u0443\u0434\u0430\u043B\u043E\u0441\u044C \u043F\u0440\u043E\u0447\u0438\u0442\u0430\u0442\u044C --system-append-file "{filePath}": {errorDetails}\n'
4845
+ },
4846
+ slash: {
4847
+ ...EN.slash,
4848
+ help: { ...EN.slash.help, description: "\u043F\u043E\u043A\u0430\u0437\u0430\u0442\u044C \u043F\u043E\u043B\u043D\u0443\u044E \u0441\u043F\u0440\u0430\u0432\u043A\u0443 \u043F\u043E \u043A\u043E\u043C\u0430\u043D\u0434\u0430\u043C" },
4849
+ status: { ...EN.slash.status, description: "\u0442\u0435\u043A\u0443\u0449\u0430\u044F \u043C\u043E\u0434\u0435\u043B\u044C, \u0444\u043B\u0430\u0433\u0438, \u043A\u043E\u043D\u0442\u0435\u043A\u0441\u0442, \u0441\u0435\u0441\u0441\u0438\u044F" },
4850
+ effort: {
4851
+ ...EN.slash.effort,
4852
+ description: "\u043B\u0438\u043C\u0438\u0442 \u0443\u0440\u043E\u0432\u043D\u044F \u0440\u0430\u0441\u0441\u0443\u0436\u0434\u0435\u043D\u0438\u0439 (low|medium|high|max); high \u2014 \u0431\u0435\u0437\u043E\u043F\u0430\u0441\u043D\u043E\u0435 \u0437\u043D\u0430\u0447\u0435\u043D\u0438\u0435 \u043F\u043E \u0443\u043C\u043E\u043B\u0447. \u0434\u043B\u044F vLLM/Azure"
4853
+ },
4854
+ model: { ...EN.slash.model, description: "\u0441\u043C\u0435\u043D\u0438\u0442\u044C ID \u043C\u043E\u0434\u0435\u043B\u0438 DeepSeek" },
4855
+ models: { ...EN.slash.models, description: "\u0441\u043F\u0438\u0441\u043E\u043A \u0434\u043E\u0441\u0442\u0443\u043F\u043D\u044B\u0445 \u043C\u043E\u0434\u0435\u043B\u0435\u0439 \u043E\u0442 DeepSeek /models" },
4856
+ theme: {
4857
+ ...EN.slash.theme,
4858
+ argsHint: "[auto|dark|light|midnight|deep-blue|high-contrast]",
4859
+ description: "\u043F\u043E\u043A\u0430\u0437\u0430\u0442\u044C \u0438\u043B\u0438 \u0441\u043E\u0445\u0440\u0430\u043D\u0438\u0442\u044C \u0442\u0435\u043C\u0443 \u0442\u0435\u0440\u043C\u0438\u043D\u0430\u043B\u0430. \u0411\u0435\u0437 \u0430\u0440\u0433\u0443\u043C\u0435\u043D\u0442\u043E\u0432 \u043E\u0442\u043A\u0440\u044B\u0432\u0430\u0435\u0442 \u0432\u044B\u0431\u043E\u0440."
4860
+ },
4861
+ language: {
4862
+ ...EN.slash.language,
4863
+ description: "\u0441\u043C\u0435\u043D\u0438\u0442\u044C \u044F\u0437\u044B\u043A \u0438\u043D\u0442\u0435\u0440\u0444\u0435\u0439\u0441\u0430",
4864
+ argsHint: "<EN|zh-CN|de|ru>",
4865
+ success: "\u042F\u0437\u044B\u043A \u043F\u0435\u0440\u0435\u043A\u043B\u044E\u0447\u0451\u043D \u043D\u0430 \u0440\u0443\u0441\u0441\u043A\u0438\u0439.",
4866
+ unsupported: "\u041D\u0435\u043F\u043E\u0434\u0434\u0435\u0440\u0436\u0438\u0432\u0430\u0435\u043C\u044B\u0439 \u043A\u043E\u0434 \u044F\u0437\u044B\u043A\u0430: {code}. \u0414\u043E\u0441\u0442\u0443\u043F\u043D\u044B: {supported}."
4867
+ },
4868
+ budget: {
4869
+ ...EN.slash.budget,
4870
+ description: "\u043B\u0438\u043C\u0438\u0442 \u0441\u0435\u0441\u0441\u0438\u0438 \u0432 USD \u2014 \u043F\u0440\u0435\u0434\u0443\u043F\u0440\u0435\u0436\u0434\u0435\u043D\u0438\u0435 \u043D\u0430 80%, \u043E\u0442\u043A\u0430\u0437 \u043D\u0430 100%. \u041F\u043E \u0443\u043C\u043E\u043B\u0447. \u0432\u044B\u043A\u043B\u044E\u0447\u0435\u043D. /budget \u0431\u0435\u0437 \u0430\u0440\u0433\u0443\u043C\u0435\u043D\u0442\u043E\u0432 \u043F\u043E\u043A\u0430\u0437\u044B\u0432\u0430\u0435\u0442 \u0441\u0442\u0430\u0442\u0443\u0441."
4871
+ },
4872
+ mcp: { ...EN.slash.mcp, description: "\u0441\u043F\u0438\u0441\u043E\u043A MCP-\u0441\u0435\u0440\u0432\u0435\u0440\u043E\u0432 + \u0438\u043D\u0441\u0442\u0440\u0443\u043C\u0435\u043D\u0442\u043E\u0432 \u044D\u0442\u043E\u0439 \u0441\u0435\u0441\u0441\u0438\u0438" },
4873
+ resource: {
4874
+ ...EN.slash.resource,
4875
+ description: "\u043F\u0440\u043E\u0441\u043C\u043E\u0442\u0440 \u0438 \u0447\u0442\u0435\u043D\u0438\u0435 MCP-\u0440\u0435\u0441\u0443\u0440\u0441\u043E\u0432 (\u0431\u0435\u0437 \u0430\u0440\u0433\u0443\u043C\u0435\u043D\u0442\u0430 \u2192 \u0441\u043F\u0438\u0441\u043E\u043A URI; <uri> \u2192 \u0441\u043E\u0434\u0435\u0440\u0436\u0438\u043C\u043E\u0435)"
4876
+ },
4877
+ prompt: {
4878
+ ...EN.slash.prompt,
4879
+ description: "\u043F\u0440\u043E\u0441\u043C\u043E\u0442\u0440 \u0438 \u043F\u043E\u043B\u0443\u0447\u0435\u043D\u0438\u0435 MCP-\u043F\u0440\u043E\u043C\u043F\u0442\u043E\u0432 (\u0431\u0435\u0437 \u0430\u0440\u0433\u0443\u043C\u0435\u043D\u0442\u0430 \u2192 \u0441\u043F\u0438\u0441\u043E\u043A \u0438\u043C\u0451\u043D; <\u0438\u043C\u044F> \u2192 \u0440\u0435\u043D\u0434\u0435\u0440 \u043F\u0440\u043E\u043C\u043F\u0442\u0430)"
4880
+ },
4881
+ memory: {
4882
+ ...EN.slash.memory,
4883
+ description: "\u043F\u043E\u043A\u0430\u0437\u0430\u0442\u044C / \u0443\u043F\u0440\u0430\u0432\u043B\u044F\u0442\u044C \u0437\u0430\u043A\u0440\u0435\u043F\u043B\u0451\u043D\u043D\u043E\u0439 \u043F\u0430\u043C\u044F\u0442\u044C\u044E (REASONIX.md + ~/.reasonix/memory)",
4884
+ argsHint: "[list|show <\u0438\u043C\u044F>|forget <\u0438\u043C\u044F>|clear <\u043E\u0431\u043B\u0430\u0441\u0442\u044C> confirm]"
4885
+ },
4886
+ skill: {
4887
+ ...EN.slash.skill,
4888
+ description: "\u0441\u043F\u0438\u0441\u043E\u043A / \u0437\u0430\u043F\u0443\u0441\u043A \u0441\u043A\u0438\u043B\u043B\u043E\u0432 \u043F\u043E\u043B\u044C\u0437\u043E\u0432\u0430\u0442\u0435\u043B\u044F (\u043F\u0440\u043E\u0435\u043A\u0442\u043D\u044B\u0435 + \u043A\u0430\u0441\u0442\u043E\u043C\u043D\u044B\u0435 + \u0433\u043B\u043E\u0431\u0430\u043B\u044C\u043D\u044B\u0435 + \u0432\u0441\u0442\u0440\u043E\u0435\u043D\u043D\u044B\u0435)"
4889
+ },
4890
+ hooks: {
4891
+ ...EN.slash.hooks,
4892
+ description: "\u0441\u043F\u0438\u0441\u043E\u043A \u0430\u043A\u0442\u0438\u0432\u043D\u044B\u0445 \u0445\u0443\u043A\u043E\u0432 (settings.json \u0432 .reasonix/) \xB7 reload \u043F\u0435\u0440\u0435\u0447\u0438\u0442\u044B\u0432\u0430\u0435\u0442 \u0441 \u0434\u0438\u0441\u043A\u0430"
4893
+ },
4894
+ permissions: {
4895
+ ...EN.slash.permissions,
4896
+ description: "\u043F\u043E\u043A\u0430\u0437\u0430\u0442\u044C / \u0440\u0435\u0434\u0430\u043A\u0442\u0438\u0440\u043E\u0432\u0430\u0442\u044C \u0431\u0435\u043B\u044B\u0439 \u0441\u043F\u0438\u0441\u043E\u043A \u043A\u043E\u043C\u0430\u043D\u0434 (\u0432\u0441\u0442\u0440\u043E\u0435\u043D\u043D\u044B\u0435 \u0442\u043E\u043B\u044C\u043A\u043E \u0434\u043B\u044F \u0447\u0442\u0435\u043D\u0438\u044F \xB7 \u043D\u0430 \u043F\u0440\u043E\u0435\u043A\u0442: ~/.reasonix/config.json)"
4897
+ },
4898
+ dashboard: {
4899
+ ...EN.slash.dashboard,
4900
+ description: "\u0437\u0430\u043F\u0443\u0441\u0442\u0438\u0442\u044C \u0432\u0441\u0442\u0440\u043E\u0435\u043D\u043D\u0443\u044E \u0432\u0435\u0431-\u043F\u0430\u043D\u0435\u043B\u044C (127.0.0.1, \u0434\u043E\u0441\u0442\u0443\u043F \u043F\u043E \u0442\u043E\u043A\u0435\u043D\u0443)"
4901
+ },
4902
+ update: {
4903
+ ...EN.slash.update,
4904
+ description: "\u043F\u043E\u043A\u0430\u0437\u0430\u0442\u044C \u0442\u0435\u043A\u0443\u0449\u0443\u044E vs \u043F\u043E\u0441\u043B\u0435\u0434\u043D\u044E\u044E \u0432\u0435\u0440\u0441\u0438\u044E + \u043A\u043E\u043C\u0430\u043D\u0434\u0443 \u043E\u0431\u043D\u043E\u0432\u043B\u0435\u043D\u0438\u044F"
4905
+ },
4906
+ stats: {
4907
+ ...EN.slash.stats,
4908
+ description: "\u043C\u0435\u0436\u0441\u0435\u0441\u0441\u0438\u043E\u043D\u043D\u0430\u044F \u043F\u0430\u043D\u0435\u043B\u044C \u0441\u0442\u043E\u0438\u043C\u043E\u0441\u0442\u0438 (\u0441\u0435\u0433\u043E\u0434\u043D\u044F / \u043D\u0435\u0434\u0435\u043B\u044F / \u043C\u0435\u0441\u044F\u0446 / \u0432\u0441\u0451 \u0432\u0440\u0435\u043C\u044F \xB7 \u043A\u044D\u0448-\u043F\u043E\u043F\u0430\u0434\u0430\u043D\u0438\u044F \xB7 vs Claude)"
4909
+ },
4910
+ cost: {
4911
+ ...EN.slash.cost,
4912
+ description: "\u0431\u0435\u0437 \u0430\u0440\u0433\u0443\u043C\u0435\u043D\u0442\u043E\u0432 \u2192 \u0442\u0440\u0430\u0442\u044B \u043F\u043E\u0441\u043B\u0435\u0434\u043D\u0435\u0433\u043E \u0448\u0430\u0433\u0430; \u0441 \u0442\u0435\u043A\u0441\u0442\u043E\u043C \u2192 \u043E\u0446\u0435\u043D\u043A\u0430 \u0441\u0442\u043E\u0438\u043C\u043E\u0441\u0442\u0438 \u043E\u0442\u043F\u0440\u0430\u0432\u043A\u0438 (\u0445\u0443\u0434\u0448\u0438\u0439 \u0441\u043B\u0443\u0447\u0430\u0439 + \u0432\u0435\u0440\u043E\u044F\u0442\u043D\u044B\u0439 \u043A\u044D\u0448)"
4913
+ },
4914
+ doctor: {
4915
+ ...EN.slash.doctor,
4916
+ description: "\u043F\u0440\u043E\u0432\u0435\u0440\u043A\u0430 \u0437\u0434\u043E\u0440\u043E\u0432\u044C\u044F (api / config / api-reach / index / hooks / project)"
4917
+ },
4918
+ context: {
4919
+ ...EN.slash.context,
4920
+ description: "\u0440\u0430\u0437\u0431\u0438\u0432\u043A\u0430 \u043E\u043A\u043D\u0430 \u043A\u043E\u043D\u0442\u0435\u043A\u0441\u0442\u0430 (system / tools / log / input)"
4921
+ },
4922
+ retry: {
4923
+ ...EN.slash.retry,
4924
+ description: "\u043E\u0442\u0440\u0435\u0437\u0430\u0442\u044C \u0438 \u043F\u0435\u0440\u0435\u043E\u0442\u043F\u0440\u0430\u0432\u0438\u0442\u044C \u043F\u043E\u0441\u043B\u0435\u0434\u043D\u0435\u0435 \u0441\u043E\u043E\u0431\u0449\u0435\u043D\u0438\u0435 (\u043D\u043E\u0432\u044B\u0439 sample)"
4925
+ },
4926
+ compact: {
4927
+ ...EN.slash.compact,
4928
+ description: "\u0441\u0436\u0430\u0442\u044C oversized \u0440\u0435\u0437\u0443\u043B\u044C\u0442\u0430\u0442\u044B \u0438\u043D\u0441\u0442\u0440\u0443\u043C\u0435\u043D\u0442\u043E\u0432 + \u0430\u0440\u0433\u0443\u043C\u0435\u043D\u0442\u044B \u0432\u044B\u0437\u043E\u0432\u043E\u0432 \u0432 \u043B\u043E\u0433\u0435; \u043B\u0438\u043C\u0438\u0442 \u0432 \u0442\u043E\u043A\u0435\u043D\u0430\u0445, \u043F\u043E \u0443\u043C\u043E\u043B\u0447. 4000"
4929
+ },
4930
+ cwd: {
4931
+ ...EN.slash.cwd,
4932
+ description: "\u0441\u043C\u0435\u043D\u0438\u0442\u044C \u043A\u043E\u0440\u0435\u043D\u044C \u0440\u0430\u0431\u043E\u0447\u0435\u0439 \u043E\u0431\u043B\u0430\u0441\u0442\u0438 mid-session \u2014 \u043F\u0435\u0440\u0435\u043D\u0430\u043F\u0440\u0430\u0432\u043B\u044F\u0435\u0442 fs/shell/memory \u0438\u043D\u0441\u0442\u0440\u0443\u043C\u0435\u043D\u0442\u044B, \u043F\u0435\u0440\u0435\u0437\u0430\u0433\u0440\u0443\u0436\u0430\u0435\u0442 \u0445\u0443\u043A\u0438 \u043F\u0440\u043E\u0435\u043A\u0442\u0430, \u043E\u0431\u043D\u043E\u0432\u043B\u044F\u0435\u0442 @-\u0443\u043F\u043E\u043C\u0438\u043D\u0430\u043D\u0438\u044F"
4933
+ },
4934
+ stop: {
4935
+ ...EN.slash.stop,
4936
+ description: "\u043F\u0440\u0435\u0440\u0432\u0430\u0442\u044C \u0442\u0435\u043A\u0443\u0449\u0438\u0439 \u0448\u0430\u0433 \u043C\u043E\u0434\u0435\u043B\u0438 (\u043F\u0435\u0447\u0430\u0442\u043D\u0430\u044F \u0430\u043B\u044C\u0442\u0435\u0440\u043D\u0430\u0442\u0438\u0432\u0430 Esc)"
4937
+ },
4938
+ feedback: {
4939
+ ...EN.slash.feedback,
4940
+ description: "\u043E\u0442\u043A\u0440\u044B\u0442\u044C GitHub issue \u0441 \u0434\u0438\u0430\u0433\u043D\u043E\u0441\u0442\u0438\u0447\u0435\u0441\u043A\u043E\u0439 \u0438\u043D\u0444\u043E\u0440\u043C\u0430\u0446\u0438\u0435\u0439 (\u0441\u043A\u043E\u043F\u0438\u0440\u043E\u0432\u0430\u043D\u0430 \u0432 \u0431\u0443\u0444\u0435\u0440)"
4941
+ },
4942
+ about: {
4943
+ ...EN.slash.about,
4944
+ description: "\u0438\u043D\u0444\u043E\u0440\u043C\u0430\u0446\u0438\u044F \u043E \u043F\u0440\u043E\u0435\u043A\u0442\u0435 \u2014 \u0432\u0435\u0440\u0441\u0438\u044F, \u0441\u0430\u0439\u0442, \u0440\u0435\u043F\u043E\u0437\u0438\u0442\u043E\u0440\u0438\u0439, \u043B\u0438\u0446\u0435\u043D\u0437\u0438\u044F"
4945
+ },
4946
+ keys: { ...EN.slash.keys, description: "\u0441\u043F\u0440\u0430\u0432\u043E\u0447\u043D\u0438\u043A \u043A\u043B\u0430\u0432\u0438\u0448 + \u043C\u044B\u0448\u0438 + \u043A\u043E\u043F\u0438\u0440\u043E\u0432\u0430\u043D\u0438\u044F/\u0432\u0441\u0442\u0430\u0432\u043A\u0438" },
4947
+ plans: {
4948
+ ...EN.slash.plans,
4949
+ description: "\u0441\u043F\u0438\u0441\u043E\u043A \u0430\u043A\u0442\u0438\u0432\u043D\u044B\u0445 \u0438 \u0430\u0440\u0445\u0438\u0432\u043D\u044B\u0445 \u043F\u043B\u0430\u043D\u043E\u0432 \u044D\u0442\u043E\u0439 \u0441\u0435\u0441\u0441\u0438\u0438, \u043D\u043E\u0432\u0435\u0439\u0448\u0438\u0435 \u043F\u0435\u0440\u0432\u044B\u043C\u0438"
4950
+ },
4951
+ replay: {
4952
+ ...EN.slash.replay,
4953
+ description: "\u0437\u0430\u0433\u0440\u0443\u0437\u0438\u0442\u044C \u0430\u0440\u0445\u0438\u0432\u043D\u044B\u0439 \u043F\u043B\u0430\u043D \u043A\u0430\u043A read-only \u0441\u043D\u0438\u043C\u043E\u043A Time Travel (\u043F\u043E \u0443\u043C\u043E\u043B\u0447.: \u043D\u043E\u0432\u0435\u0439\u0448\u0438\u0439)"
4954
+ },
4955
+ sessions: {
4956
+ ...EN.slash.sessions,
4957
+ description: "\u0441\u043F\u0438\u0441\u043E\u043A \u0441\u043E\u0445\u0440\u0430\u043D\u0451\u043D\u043D\u044B\u0445 \u0441\u0435\u0441\u0441\u0438\u0439 (\u0442\u0435\u043A\u0443\u0449\u0430\u044F \u043E\u0442\u043C\u0435\u0447\u0435\u043D\u0430 \u25B8)"
4958
+ },
4959
+ title: { ...EN.slash.title, description: "\u043F\u043E\u043F\u0440\u043E\u0441\u0438\u0442\u044C \u043C\u043E\u0434\u0435\u043B\u044C \u043F\u0435\u0440\u0435\u0438\u043C\u0435\u043D\u043E\u0432\u0430\u0442\u044C \u0441\u0435\u0441\u0441\u0438\u044E \u0438\u0437 \u0440\u0430\u0437\u0433\u043E\u0432\u043E\u0440\u0430" },
4960
+ qq: {
4961
+ ...EN.slash.qq,
4962
+ description: "\u043F\u043E\u0434\u043A\u043B\u044E\u0447\u0438\u0442\u044C, \u043F\u0440\u043E\u0432\u0435\u0440\u0438\u0442\u044C \u0438\u043B\u0438 \u043E\u0442\u043A\u043B\u044E\u0447\u0438\u0442\u044C QQ-\u043A\u0430\u043D\u0430\u043B \u0434\u043B\u044F \u044D\u0442\u043E\u0439 \u0441\u0435\u0441\u0441\u0438\u0438 (\u043F\u0435\u0440\u0432\u043E\u0435 \u043F\u043E\u0434\u043A\u043B\u044E\u0447\u0435\u043D\u0438\u0435 \u043F\u0440\u043E\u0432\u043E\u0434\u0438\u0442 \u0447\u0435\u0440\u0435\u0437 App ID / App Secret \u043D\u0430\u0441\u0442\u0440\u043E\u0439\u043A\u0443)"
4963
+ },
4964
+ setup: { ...EN.slash.setup, description: "\u043D\u0430\u043F\u043E\u043C\u0438\u043D\u0430\u0435\u0442 \u0432\u044B\u0439\u0442\u0438 \u0438 \u0437\u0430\u043F\u0443\u0441\u0442\u0438\u0442\u044C `reasonix setup`" },
4965
+ semantic: {
4966
+ ...EN.slash.semantic,
4967
+ description: "\u043F\u043E\u043A\u0430\u0437\u0430\u0442\u044C \u0441\u0442\u0430\u0442\u0443\u0441 semantic_search \u2014 \u043F\u043E\u0441\u0442\u0440\u043E\u0435\u043D? Ollama \u0443\u0441\u0442\u0430\u043D\u043E\u0432\u043B\u0435\u043D? \u043A\u0430\u043A \u0432\u043A\u043B\u044E\u0447\u0438\u0442\u044C"
4968
+ },
4969
+ clear: {
4970
+ ...EN.slash.clear,
4971
+ description: "\u043E\u0447\u0438\u0441\u0442\u0438\u0442\u044C \u0442\u043E\u043B\u044C\u043A\u043E \u0432\u0438\u0434\u0438\u043C\u044B\u0439 \u0441\u043A\u0440\u043E\u043B\u043B\u0431\u0435\u043A (\u043B\u043E\u0433/\u043A\u043E\u043D\u0442\u0435\u043A\u0441\u0442 \u0441\u043E\u0445\u0440\u0430\u043D\u044F\u0435\u0442\u0441\u044F)"
4972
+ },
4973
+ new: { ...EN.slash.new, description: "\u043D\u0430\u0447\u0430\u0442\u044C \u043D\u043E\u0432\u044B\u0439 \u0440\u0430\u0437\u0433\u043E\u0432\u043E\u0440 (\u043E\u0447\u0438\u0441\u0442\u0438\u0442\u044C \u043A\u043E\u043D\u0442\u0435\u043A\u0441\u0442 + \u0441\u043A\u0440\u043E\u043B\u043B\u0431\u0435\u043A)" },
4974
+ loop: {
4975
+ ...EN.slash.loop,
4976
+ description: "\u0430\u0432\u0442\u043E-\u043F\u0435\u0440\u0435\u043E\u0442\u043F\u0440\u0430\u0432\u043B\u044F\u0442\u044C <\u043F\u0440\u043E\u043C\u043F\u0442> \u043A\u0430\u0436\u0434\u044B\u0435 <\u0438\u043D\u0442\u0435\u0440\u0432\u0430\u043B> \u043F\u043E\u043A\u0430 \u0442\u044B \u043D\u0435 \u043D\u0430\u043F\u0438\u0448\u0435\u0448\u044C / Esc / /loop stop"
4977
+ },
4978
+ exit: { ...EN.slash.exit, description: "\u0432\u044B\u0439\u0442\u0438 \u0438\u0437 TUI" },
4979
+ init: {
4980
+ ...EN.slash.init,
4981
+ description: "\u043F\u0440\u043E\u0441\u043A\u0430\u043D\u0438\u0440\u043E\u0432\u0430\u0442\u044C \u043F\u0440\u043E\u0435\u043A\u0442 \u0438 \u0441\u0438\u043D\u0442\u0435\u0437\u0438\u0440\u043E\u0432\u0430\u0442\u044C \u0431\u0430\u0437\u043E\u0432\u044B\u0439 REASONIX.md (\u043C\u043E\u0434\u0435\u043B\u044C \u043F\u0438\u0448\u0435\u0442; \u043F\u0440\u043E\u0441\u043C\u043E\u0442\u0440 \u0447\u0435\u0440\u0435\u0437 /apply). `force` \u043F\u0435\u0440\u0435\u0437\u0430\u043F\u0438\u0441\u044B\u0432\u0430\u0435\u0442 \u0441\u0443\u0449\u0435\u0441\u0442\u0432\u0443\u044E\u0449\u0438\u0439 \u0444\u0430\u0439\u043B."
4982
+ },
4983
+ apply: {
4984
+ ...EN.slash.apply,
4985
+ description: "\u043F\u0440\u0438\u043C\u0435\u043D\u0438\u0442\u044C \u043E\u0436\u0438\u0434\u0430\u044E\u0449\u0438\u0435 \u043F\u0440\u0430\u0432\u043A\u0438 \u043D\u0430 \u0434\u0438\u0441\u043A (\u0431\u0435\u0437 \u0430\u0440\u0433\u0443\u043C\u0435\u043D\u0442\u0430 \u2192 \u0432\u0441\u0435; `1`, `1,3` \u0438\u043B\u0438 `1-4` \u2192 \u0443\u043A\u0430\u0437\u0430\u043D\u043D\u044B\u0435, \u043E\u0441\u0442\u0430\u043B\u044C\u043D\u044B\u0435 \u043E\u0441\u0442\u0430\u044E\u0442\u0441\u044F)"
4986
+ },
4987
+ discard: {
4988
+ ...EN.slash.discard,
4989
+ description: "\u043E\u0442\u043C\u0435\u043D\u0438\u0442\u044C \u043E\u0436\u0438\u0434\u0430\u044E\u0449\u0438\u0435 \u043F\u0440\u0430\u0432\u043A\u0438 \u0431\u0435\u0437 \u0437\u0430\u043F\u0438\u0441\u0438 (\u0431\u0435\u0437 \u0430\u0440\u0433\u0443\u043C\u0435\u043D\u0442\u0430 \u2192 \u0432\u0441\u0435; \u0438\u043D\u0434\u0435\u043A\u0441\u044B \u2192 \u0443\u043A\u0430\u0437\u0430\u043D\u043D\u044B\u0435)"
4990
+ },
4991
+ walk: {
4992
+ ...EN.slash.walk,
4993
+ description: "\u043F\u0440\u043E\u0445\u043E\u0434\u0438\u0442\u044C \u043F\u0440\u0430\u0432\u043A\u0438 \u043F\u043E \u043E\u0434\u043D\u043E\u0439 (\u0432 \u0441\u0442\u0438\u043B\u0435 git-add-p: y/n \u043D\u0430 \u0431\u043B\u043E\u043A, a = \u043F\u0440\u0438\u043C\u0435\u043D\u0438\u0442\u044C \u043E\u0441\u0442\u0430\u043B\u044C\u043D\u044B\u0435, A = AUTO)"
4994
+ },
4995
+ undo: { ...EN.slash.undo, description: "\u043E\u0442\u043C\u0435\u043D\u0438\u0442\u044C \u043F\u043E\u0441\u043B\u0435\u0434\u043D\u0438\u0439 \u043F\u0440\u0438\u043C\u0435\u043D\u0451\u043D\u043D\u044B\u0439 \u043F\u0430\u043A\u0435\u0442 \u043F\u0440\u0430\u0432\u043E\u043A" },
4996
+ history: {
4997
+ ...EN.slash.history,
4998
+ description: "\u0441\u043F\u0438\u0441\u043E\u043A \u0432\u0441\u0435\u0445 \u043F\u0430\u043A\u0435\u0442\u043E\u0432 \u043F\u0440\u0430\u0432\u043E\u043A \u044D\u0442\u043E\u0439 \u0441\u0435\u0441\u0441\u0438\u0438 (ID \u0434\u043B\u044F /show, \u043E\u0442\u043C\u0435\u0442\u043A\u0438 \u043E\u0442\u043C\u0435\u043D\u044B)"
4999
+ },
5000
+ show: {
5001
+ ...EN.slash.show,
5002
+ description: "\u043F\u043E\u043A\u0430\u0437\u0430\u0442\u044C \u0441\u043E\u0445\u0440\u0430\u043D\u0451\u043D\u043D\u044B\u0439 diff \u043F\u0440\u0430\u0432\u043A\u0438 (\u0431\u0435\u0437 ID \u2014 \u043D\u043E\u0432\u0435\u0439\u0448\u0430\u044F \u043D\u0435\u043E\u0442\u043C\u0435\u043D\u0451\u043D\u043D\u0430\u044F)"
5003
+ },
5004
+ commit: { ...EN.slash.commit, description: "git add -A && git commit -m ..." },
5005
+ checkpoint: {
5006
+ ...EN.slash.checkpoint,
5007
+ description: "\u0441\u0434\u0435\u043B\u0430\u0442\u044C \u0441\u043D\u0438\u043C\u043E\u043A \u043A\u0430\u0436\u0434\u043E\u0433\u043E \u0444\u0430\u0439\u043B\u0430, \u043A\u043E\u0442\u043E\u0440\u043E\u0433\u043E \u043A\u0430\u0441\u0430\u043B\u0430\u0441\u044C \u0441\u0435\u0441\u0441\u0438\u044F (\u0432\u043D\u0443\u0442\u0440\u0435\u043D\u043D\u0435\u0435 \u0445\u0440\u0430\u043D\u0438\u043B\u0438\u0449\u0435, \u043D\u0435 git). /checkpoint \u0431\u0435\u0437 \u0430\u0440\u0433\u0443\u043C\u0435\u043D\u0442\u043E\u0432 \u2014 \u0441\u043F\u0438\u0441\u043E\u043A."
5008
+ },
5009
+ restore: {
5010
+ ...EN.slash.restore,
5011
+ description: "\u043E\u0442\u043A\u0430\u0442\u0438\u0442\u044C \u0444\u0430\u0439\u043B\u044B \u043A \u0438\u043C\u0435\u043D\u043E\u0432\u0430\u043D\u043D\u043E\u043C\u0443 checkpoint (\u0441\u043C. /checkpoint list)"
5012
+ },
5013
+ plan: {
5014
+ ...EN.slash.plan,
5015
+ description: "\u0432\u043A\u043B\u044E\u0447\u0438\u0442\u044C/\u0432\u044B\u043A\u043B\u044E\u0447\u0438\u0442\u044C read-only \u0440\u0435\u0436\u0438\u043C \u043F\u043B\u0430\u043D\u0430 (\u0437\u0430\u043F\u0438\u0441\u044C \u0437\u0430\u0431\u043B\u043E\u043A\u0438\u0440\u043E\u0432\u0430\u043D\u0430 \u0434\u043E submit_plan + \u043F\u043E\u0434\u0442\u0432\u0435\u0440\u0436\u0434\u0435\u043D\u0438\u044F)"
5016
+ },
5017
+ mode: {
5018
+ ...EN.slash.mode,
5019
+ description: "edit-gate: review (\u043E\u0447\u0435\u0440\u0435\u0434\u044C) \xB7 auto (\u043F\u0440\u0438\u043C\u0435\u043D\u0438\u0442\u044C+\u043E\u0442\u043C\u0435\u043D\u0438\u0442\u044C) \xB7 yolo (\u043F\u0440\u0438\u043C\u0435\u043D\u0438\u0442\u044C+\u0430\u0432\u0442\u043E-shell). Shift+Tab \u043F\u0435\u0440\u0435\u043A\u043B\u044E\u0447\u0430\u0435\u0442."
5020
+ },
5021
+ jobs: {
5022
+ ...EN.slash.jobs,
5023
+ description: "\u0441\u043F\u0438\u0441\u043E\u043A \u0444\u043E\u043D\u043E\u0432\u044B\u0445 \u0437\u0430\u0434\u0430\u0447, \u0437\u0430\u043F\u0443\u0449\u0435\u043D\u043D\u044B\u0445 \u0447\u0435\u0440\u0435\u0437 run_background"
5024
+ },
5025
+ kill: {
5026
+ ...EN.slash.kill,
5027
+ description: "\u043E\u0441\u0442\u0430\u043D\u043E\u0432\u0438\u0442\u044C \u0444\u043E\u043D\u043E\u0432\u0443\u044E \u0437\u0430\u0434\u0430\u0447\u0443 \u043F\u043E ID (SIGTERM \u2192 SIGKILL \u043F\u043E\u0441\u043B\u0435 \u043F\u0430\u0443\u0437\u044B)"
5028
+ },
5029
+ logs: {
5030
+ ...EN.slash.logs,
5031
+ description: "\u0432\u044B\u0432\u043E\u0434 \u0444\u043E\u043D\u043E\u0432\u043E\u0439 \u0437\u0430\u0434\u0430\u0447\u0438 (\u043F\u043E \u0443\u043C\u043E\u043B\u0447. \u043F\u043E\u0441\u043B\u0435\u0434\u043D\u0438\u0435 80 \u0441\u0442\u0440\u043E\u043A)"
5032
+ },
5033
+ btw: {
5034
+ ...EN.slash.btw,
5035
+ description: "\u0431\u044B\u0441\u0442\u0440\u044B\u0439 \u043F\u043E\u0431\u043E\u0447\u043D\u044B\u0439 \u0432\u043E\u043F\u0440\u043E\u0441 \u2014 \u043E\u0442\u0432\u0435\u0447\u0430\u0435\u0442\u0441\u044F \u0441 \u0447\u0438\u0441\u0442\u043E\u0433\u043E \u043B\u0438\u0441\u0442\u0430, \u043D\u0435 \u0434\u043E\u0431\u0430\u0432\u043B\u044F\u0435\u0442\u0441\u044F \u0432 \u043A\u043E\u043D\u0442\u0435\u043A\u0441\u0442 \u0440\u0430\u0437\u0433\u043E\u0432\u043E\u0440\u0430"
5036
+ },
5037
+ "search-engine": {
5038
+ ...EN.slash["search-engine"],
5039
+ description: "\u0441\u043C\u0435\u043D\u0438\u0442\u044C \u043F\u043E\u0438\u0441\u043A\u043E\u0432\u044B\u0439 \u0434\u0432\u0438\u0436\u043E\u043A \u2014 bing (\u043F\u043E \u0443\u043C\u043E\u043B\u0447., \u0440\u0430\u0431\u043E\u0442\u0430\u0435\u0442 \u0438\u0437 \u0420\u0424 \u0431\u0435\u0437 \u043F\u0440\u043E\u043A\u0441\u0438), searxng (\u0441\u0430\u043C\u043E\u0441\u0442\u043E\u044F\u0442\u0435\u043B\u044C\u043D\u044B\u0439 \u0445\u043E\u0441\u0442\u0438\u043D\u0433), metaso (100/\u0434\u0435\u043D\u044C \u0431\u0435\u0441\u043F\u043B\u0430\u0442\u043D\u043E), tavily (1000/\u043C\u0435\u0441 \u0431\u0435\u0441\u043F\u043B\u0430\u0442\u043D\u043E), perplexity (AI-native), exa (AI-native)"
5040
+ }
5041
+ },
5042
+ wizard: {
5043
+ ...EN.wizard,
5044
+ languageTitle: "\u0412\u044B\u0431\u0435\u0440\u0438\u0442\u0435 \u044F\u0437\u044B\u043A",
5045
+ languageSubtitle: "\u041E\u0431\u043D\u0430\u0440\u0443\u0436\u0435\u043D \u0438\u0437 \u0441\u0438\u0441\u0442\u0435\u043C\u043D\u043E\u0439 \u043B\u043E\u043A\u0430\u043B\u0438. \u041C\u043E\u0436\u043D\u043E \u0441\u043C\u0435\u043D\u0438\u0442\u044C \u043F\u043E\u0437\u0436\u0435 \u0447\u0435\u0440\u0435\u0437 /language.",
5046
+ welcomeTitle: "\u0414\u043E\u0431\u0440\u043E \u043F\u043E\u0436\u0430\u043B\u043E\u0432\u0430\u0442\u044C \u0432 Reasonix.",
5047
+ apiKeyPrompt: "\u0412\u0441\u0442\u0430\u0432\u044C\u0442\u0435 \u0432\u0430\u0448 DeepSeek API \u043A\u043B\u044E\u0447 \u0434\u043B\u044F \u043D\u0430\u0447\u0430\u043B\u0430 \u0440\u0430\u0431\u043E\u0442\u044B.",
5048
+ apiKeyGetOne: "\u041F\u043E\u043B\u0443\u0447\u0438\u0442\u044C: https://platform.deepseek.com/api_keys",
5049
+ apiKeySavedLocally: "\u0421\u043E\u0445\u0440\u0430\u043D\u0451\u043D \u043B\u043E\u043A\u0430\u043B\u044C\u043D\u043E: {path}",
5050
+ apiKeyInputLabel: "\u043A\u043B\u044E\u0447 \u203A ",
5051
+ apiKeyPlaceholder: "sk-...",
5052
+ apiKeyInvalid: "\u041A\u043B\u044E\u0447 \u0441\u043B\u0438\u0448\u043A\u043E\u043C \u043A\u043E\u0440\u043E\u0442\u043A\u0438\u0439 \u2014 \u0432\u0441\u0442\u0430\u0432\u044C\u0442\u0435 \u043F\u043E\u043B\u043D\u044B\u0439 \u0442\u043E\u043A\u0435\u043D (16+ \u0441\u0438\u043C\u0432\u043E\u043B\u043E\u0432, \u0431\u0435\u0437 \u043F\u0440\u043E\u0431\u0435\u043B\u043E\u0432).",
5053
+ apiKeyChecking: "\u041F\u0440\u043E\u0432\u0435\u0440\u043A\u0430 API \u043A\u043B\u044E\u0447\u0430\u2026",
5054
+ apiKeyRejected: "DeepSeek \u043E\u0442\u043A\u043B\u043E\u043D\u0438\u043B \u044D\u0442\u043E\u0442 API \u043A\u043B\u044E\u0447. \u0412\u0441\u0442\u0430\u0432\u044C\u0442\u0435 \u043A\u043E\u0440\u0440\u0435\u043A\u0442\u043D\u044B\u0439 \u043A\u043B\u044E\u0447 \u0438\u043B\u0438 \u043D\u0430\u0436\u043C\u0438\u0442\u0435 Esc \u0434\u043B\u044F \u043E\u0442\u043C\u0435\u043D\u044B.",
5055
+ apiKeyCheckFailed: "\u041D\u0435 \u0443\u0434\u0430\u043B\u043E\u0441\u044C \u043F\u0440\u043E\u0432\u0435\u0440\u0438\u0442\u044C API \u043A\u043B\u044E\u0447 ({message}). \u041F\u0440\u043E\u0432\u0435\u0440\u044C\u0442\u0435 \u0441\u043E\u0435\u0434\u0438\u043D\u0435\u043D\u0438\u0435 \u0438\u043B\u0438 \u043F\u043E\u043F\u0440\u043E\u0431\u0443\u0439\u0442\u0435 \u0441\u043D\u043E\u0432\u0430.",
5056
+ apiKeyPreview: "\u043F\u0440\u0435\u0434\u043F\u0440\u043E\u0441\u043C\u043E\u0442\u0440: {redacted}",
5057
+ themeTitle: "\u0412\u044B\u0431\u0435\u0440\u0438\u0442\u0435 \u0442\u0435\u043C\u0443",
5058
+ themeSubtitle: "\u041F\u0440\u0435\u0434\u043F\u0440\u043E\u0441\u043C\u043E\u0442\u0440 \u043E\u0431\u043D\u043E\u0432\u043B\u044F\u0435\u0442\u0441\u044F \u0441\u0440\u0430\u0437\u0443. \u041C\u043E\u0436\u043D\u043E \u0441\u043C\u0435\u043D\u0438\u0442\u044C \u043F\u043E\u0437\u0436\u0435 \u0447\u0435\u0440\u0435\u0437 /theme.",
5059
+ themeSampleHeading: "\u041E\u0431\u0440\u0430\u0437\u0435\u0446",
5060
+ themeFooter: "[\u2191\u2193] \u043D\u0430\u0432\u0438\u0433\u0430\u0446\u0438\u044F \xB7 [Enter] \u043F\u043E\u0434\u0442\u0432\u0435\u0440\u0434\u0438\u0442\u044C \xB7 [Esc] \u043E\u0442\u043C\u0435\u043D\u0430",
5061
+ themeCaption: {
5062
+ ...EN.wizard.themeCaption,
5063
+ dark: "\u0422\u0451\u043C\u043D\u044B\u0435 \u0442\u043E\u043D\u0430 (\u043F\u043E \u0443\u043C\u043E\u043B\u0447.)",
5064
+ light: "\u0421\u0432\u0435\u0442\u043B\u044B\u0439 \u0440\u0435\u0436\u0438\u043C",
5065
+ midnight: "\u041F\u0430\u043B\u0438\u0442\u0440\u0430 Tokyo Night",
5066
+ "deep-blue": "\u0413\u043B\u0443\u0431\u043E\u043A\u0438\u0439 \u0441\u0438\u043D\u0438\u0439 \u043D\u0430 \u0447\u0451\u0440\u043D\u043E\u043C",
5067
+ "high-contrast": "\u0414\u043E\u0441\u0442\u0443\u043F\u043D\u043E\u0441\u0442\u044C"
5068
+ },
5069
+ mcpTitle: "\u041A\u0430\u043A\u0438\u0435 MCP-\u0441\u0435\u0440\u0432\u0435\u0440\u044B \u0434\u043E\u043B\u0436\u0435\u043D \u043F\u043E\u0434\u043A\u043B\u044E\u0447\u0438\u0442\u044C Reasonix?",
5070
+ mcpUserArgsHint: "(\u0432\u044B \u043F\u0440\u0435\u0434\u043E\u0441\u0442\u0430\u0432\u0438\u0442\u0435 {arg})",
5071
+ mcpFooterMulti: "[\u2191\u2193] \u043D\u0430\u0432\u0438\u0433\u0430\u0446\u0438\u044F \xB7 [Space] \u043F\u0435\u0440\u0435\u043A\u043B\u044E\u0447\u0438\u0442\u044C \xB7 [Enter] \u043F\u043E\u0434\u0442\u0432\u0435\u0440\u0434\u0438\u0442\u044C \xB7 [Esc] \u043E\u0442\u043C\u0435\u043D\u0430 \xB7 \u043F\u0443\u0441\u0442\u043E = \u043F\u0440\u043E\u043F\u0443\u0441\u0442\u0438\u0442\u044C",
5072
+ mcpArgsTitle: "\u041D\u0430\u0441\u0442\u0440\u043E\u0439\u043A\u0430 {name}",
5073
+ mcpArgsDirMissing: "\u0414\u0438\u0440\u0435\u043A\u0442\u043E\u0440\u0438\u044F {path} \u043D\u0435 \u0441\u0443\u0449\u0435\u0441\u0442\u0432\u0443\u0435\u0442.",
5074
+ mcpArgsDirCreateHint: "[Y/Enter] \u0441\u043E\u0437\u0434\u0430\u0442\u044C (mkdir -p) \xB7 [N/Esc] \u0443\u043A\u0430\u0437\u0430\u0442\u044C \u0434\u0440\u0443\u0433\u043E\u0439 \u043F\u0443\u0442\u044C",
5075
+ mcpArgsDirCreateFailed: "\u041D\u0435 \u0443\u0434\u0430\u043B\u043E\u0441\u044C \u0441\u043E\u0437\u0434\u0430\u0442\u044C {path}: {message}",
5076
+ mcpArgsRequiredParam: "\u041E\u0431\u044F\u0437\u0430\u0442\u0435\u043B\u044C\u043D\u044B\u0439 \u043F\u0430\u0440\u0430\u043C\u0435\u0442\u0440: ",
5077
+ mcpArgsEmpty: "{name} \u0442\u0440\u0435\u0431\u0443\u0435\u0442 \u0437\u043D\u0430\u0447\u0435\u043D\u0438\u0435 \u2014 \u043F\u043E\u043B\u0443\u0447\u0435\u043D\u0430 \u043F\u0443\u0441\u0442\u0430\u044F \u0441\u0442\u0440\u043E\u043A\u0430.",
5078
+ mcpArgsNotADir: "{path} \u0441\u0443\u0449\u0435\u0441\u0442\u0432\u0443\u0435\u0442, \u043D\u043E \u044D\u0442\u043E \u043D\u0435 \u0434\u0438\u0440\u0435\u043A\u0442\u043E\u0440\u0438\u044F.",
5079
+ reviewTitle: "\u0413\u043E\u0442\u043E\u0432\u043E \u043A \u0441\u043E\u0445\u0440\u0430\u043D\u0435\u043D\u0438\u044E",
5080
+ reviewLabelApiKey: "API \u043A\u043B\u044E\u0447",
5081
+ reviewLabelLanguage: "\u042F\u0437\u044B\u043A",
5082
+ reviewLabelTheme: "\u0422\u0435\u043C\u0430",
5083
+ reviewLabelMcp: "MCP",
5084
+ reviewMcpNone: "(\u043D\u0435\u0442)",
5085
+ reviewMcpServers: "{count} \u0441\u0435\u0440\u0432\u0435\u0440(\u043E\u0432)",
5086
+ reviewSavesTo: "\u0421\u043E\u0445\u0440\u0430\u043D\u0438\u0442\u044C \u0432 {path}",
5087
+ reviewSaveError: "\u041D\u0435 \u0443\u0434\u0430\u043B\u043E\u0441\u044C \u0441\u043E\u0445\u0440\u0430\u043D\u0438\u0442\u044C \u043A\u043E\u043D\u0444\u0438\u0433: {message}",
5088
+ reviewFooter: "[Enter] \u0441\u043E\u0445\u0440\u0430\u043D\u0438\u0442\u044C \xB7 [Esc] \u043E\u0442\u043C\u0435\u043D\u0430",
5089
+ savedTitle: "\u25B8 \u0421\u043E\u0445\u0440\u0430\u043D\u0435\u043D\u043E.",
5090
+ savedShellHint: "\u041A\u043E\u043C\u0430\u043D\u0434\u044B, \u043A\u043E\u0442\u043E\u0440\u044B\u0435 \u043C\u043E\u0434\u0435\u043B\u044C \u0445\u043E\u0447\u0435\u0442 \u0437\u0430\u043F\u0443\u0441\u0442\u0438\u0442\u044C, \u0441\u043F\u0440\u0430\u0448\u0438\u0432\u0430\u044E\u0442 \u043A\u0430\u0436\u0434\u044B\u0439 \u0440\u0430\u0437 \u2014 \u0432\u044B\u0431\u0435\u0440\u0438 \xAB\u0432\u0441\u0435\u0433\u0434\u0430 \u0440\u0430\u0437\u0440\u0435\u0448\u0430\u0442\u044C\xBB \u0432 \u043F\u0440\u0438\u0433\u043B\u0430\u0448\u0435\u043D\u0438\u0438, \u0447\u0442\u043E\u0431\u044B \u0434\u043E\u0431\u0430\u0432\u0438\u0442\u044C \u043A\u043E\u043C\u0430\u043D\u0434\u0443 \u0432 \u0431\u0435\u043B\u044B\u0439 \u0441\u043F\u0438\u0441\u043E\u043A. \u0413\u043B\u043E\u0431\u0430\u043B\u044C\u043D\u043E\u0433\u043E allow-all \u043D\u0435\u0442 \u043F\u043E \u0434\u0438\u0437\u0430\u0439\u043D\u0443.",
5091
+ savedFooter: "[Enter] \u0434\u043B\u044F \u0432\u044B\u0445\u043E\u0434\u0430",
5092
+ selectFooter: "[\u2191\u2193] \u043D\u0430\u0432\u0438\u0433\u0430\u0446\u0438\u044F \xB7 [Enter] \u043F\u043E\u0434\u0442\u0432\u0435\u0440\u0434\u0438\u0442\u044C \xB7 [Esc] \u043E\u0442\u043C\u0435\u043D\u0430",
5093
+ stepCounter: "\u0428\u0430\u0433 {step}/{total} \xB7 ",
5094
+ exitHint: "/exit \u0434\u043B\u044F \u0432\u044B\u0445\u043E\u0434\u0430",
5095
+ themeSampleReasoning: "\u0420\u0430\u0441\u0441\u0443\u0436\u0434\u0435\u043D\u0438\u0435"
5096
+ },
5097
+ themePicker: {
5098
+ ...EN.themePicker,
5099
+ header: "\u0422\u0435\u043C\u0430",
5100
+ footer: "\u2191\u2193 \u0432\u044B\u0431\u043E\u0440 \xB7 \u23CE \u043F\u043E\u0434\u0442\u0432\u0435\u0440\u0434\u0438\u0442\u044C \xB7 esc \u043E\u0442\u043C\u0435\u043D\u0430",
5101
+ currentPref: "\u0442\u0435\u043A\u0443\u0449\u0430\u044F \u043D\u0430\u0441\u0442\u0440\u043E\u0439\u043A\u0430",
5102
+ activeNow: "\u0430\u043A\u0442\u0438\u0432\u043D\u043E \u0441\u0435\u0439\u0447\u0430\u0441",
5103
+ autoDesc: "\u0438\u0441\u043F\u043E\u043B\u044C\u0437\u043E\u0432\u0430\u0442\u044C REASONIX_THEME \u0438\u043B\u0438 \u043F\u043E \u0443\u043C\u043E\u043B\u0447\u0430\u043D\u0438\u044E"
5104
+ },
5105
+ planFlow: {
5106
+ ...EN.planFlow,
5107
+ approveCardTitle: "\u041F\u043E\u0434\u0442\u0432\u0435\u0440\u0434\u0438\u0442\u044C \u043F\u043B\u0430\u043D",
5108
+ approveCardMetaRight: "\u043E\u0436\u0438\u0434\u0430\u043D\u0438\u0435",
5109
+ openQuestionsBanner: "\u25B2 \u043F\u043B\u0430\u043D \u043F\u043E\u043C\u0435\u0447\u0430\u0435\u0442 \u043E\u0442\u043A\u0440\u044B\u0442\u044B\u0435 \u0432\u043E\u043F\u0440\u043E\u0441\u044B \u0438\u043B\u0438 \u0440\u0438\u0441\u043A\u0438 \u2014 \u0432\u044B\u0431\u0435\u0440\u0438 {refine} \u0447\u0442\u043E\u0431\u044B \u043D\u0430\u043F\u0438\u0441\u0430\u0442\u044C \u043A\u043E\u043D\u043A\u0440\u0435\u0442\u043D\u044B\u0435 \u043E\u0442\u0432\u0435\u0442\u044B \u043F\u0435\u0440\u0435\u0434 \u0442\u0435\u043C, \u043A\u0430\u043A \u043C\u043E\u0434\u0435\u043B\u044C \u043F\u0440\u043E\u0434\u043E\u043B\u0436\u0438\u0442.",
5110
+ openQuestionsHeader: "\u041E\u0442\u043A\u0440\u044B\u0442\u044B\u0435 \u0432\u043E\u043F\u0440\u043E\u0441\u044B / \u0440\u0438\u0441\u043A\u0438",
5111
+ truncatedBodyMore: "\u2026 \u0435\u0449\u0451 {n} \u0441\u0442\u0440\u043E\u043A\u0430 \u0432\u044B\u0448\u0435 \u0432 \u0441\u043A\u0440\u043E\u043B\u043B\u0431\u0435\u043A\u0435",
5112
+ truncatedBodyMorePlural: "\u2026 \u0435\u0449\u0451 {n} \u0441\u0442\u0440\u043E\u043A(\u0438) \u0432\u044B\u0448\u0435 \u0432 \u0441\u043A\u0440\u043E\u043B\u043B\u0431\u0435\u043A\u0435",
5113
+ picker: {
5114
+ ...EN.planFlow.picker,
5115
+ accept: "\u043F\u0440\u0438\u043D\u044F\u0442\u044C",
5116
+ acceptHint: "\u0432\u044B\u043F\u043E\u043B\u043D\u0438\u0442\u044C \u0441\u0435\u0439\u0447\u0430\u0441, \u043F\u043E \u043F\u043E\u0440\u044F\u0434\u043A\u0443",
5117
+ refine: "\u0443\u0442\u043E\u0447\u043D\u0438\u0442\u044C",
5118
+ refineHint: "\u0434\u0430\u0442\u044C \u0430\u0433\u0435\u043D\u0442\u0443 \u0431\u043E\u043B\u044C\u0448\u0435 \u0443\u043A\u0430\u0437\u0430\u043D\u0438\u0439, \u0441\u043E\u0441\u0442\u0430\u0432\u0438\u0442\u044C \u043D\u043E\u0432\u044B\u0439 \u043F\u043B\u0430\u043D",
5119
+ revise: "\u043F\u0435\u0440\u0435\u0441\u043C\u043E\u0442\u0440\u0435\u0442\u044C",
5120
+ reviseHint: "\u0438\u0437\u043C\u0435\u043D\u0438\u0442\u044C \u043F\u043B\u0430\u043D \u043F\u0435\u0440\u0435\u0434 \u0432\u044B\u043F\u043E\u043B\u043D\u0435\u043D\u0438\u0435\u043C (\u043F\u0440\u043E\u043F\u0443\u0441\u0442\u0438\u0442\u044C/\u043F\u0435\u0440\u0435\u0443\u043F\u043E\u0440\u044F\u0434\u043E\u0447\u0438\u0442\u044C \u0448\u0430\u0433\u0438)",
5121
+ reject: "\u043E\u0442\u043A\u043B\u043E\u043D\u0438\u0442\u044C",
5122
+ rejectHint: "\u043E\u0442\u043C\u0435\u043D\u0438\u0442\u044C, \u0430\u0433\u0435\u043D\u0442 \u043F\u043E\u043F\u0440\u043E\u0431\u0443\u0435\u0442 \u0437\u0430\u043D\u043E\u0432\u043E \u0441 \u043D\u0443\u043B\u044F"
5123
+ },
5124
+ refineFooter: "\u23CE \u043E\u0442\u043F\u0440\u0430\u0432\u0438\u0442\u044C \xB7 esc \u043D\u0430\u0437\u0430\u0434 \u043A \u0432\u044B\u0431\u043E\u0440\u0443",
5125
+ refineQuestionsHeading: "\u041E\u0442\u0432\u0435\u0442\u044C\u0442\u0435 \u043D\u0430 \u0432\u043E\u043F\u0440\u043E\u0441\u044B \u0438\u043B\u0438 \u043E\u043F\u0438\u0448\u0438\u0442\u0435 \u0436\u0435\u043B\u0430\u0435\u043C\u043E\u0435 \u0438\u0437\u043C\u0435\u043D\u0435\u043D\u0438\u0435:",
5126
+ modes: {
5127
+ ...EN.planFlow.modes,
5128
+ approve: {
5129
+ ...EN.planFlow.modes.approve,
5130
+ title: "\u043F\u043E\u0434\u0442\u0432\u0435\u0440\u0436\u0434\u0435\u043D\u0438\u0435 \u2014 \u0435\u0441\u0442\u044C \u043F\u043E\u0441\u043B\u0435\u0434\u043D\u0438\u0435 \u0443\u043A\u0430\u0437\u0430\u043D\u0438\u044F?",
5131
+ hint: "\u041E\u0442\u0432\u0435\u0442\u044C \u043D\u0430 \u0432\u043E\u043F\u0440\u043E\u0441\u044B \u043F\u043B\u0430\u043D\u0430, \u0434\u043E\u0431\u0430\u0432\u044C \u043E\u0433\u0440\u0430\u043D\u0438\u0447\u0435\u043D\u0438\u044F \u0438\u043B\u0438 \u043F\u0440\u043E\u0441\u0442\u043E \u043D\u0430\u0436\u043C\u0438 Enter \u0434\u043B\u044F \u0443\u0442\u0432\u0435\u0440\u0436\u0434\u0435\u043D\u0438\u044F \u043A\u0430\u043A \u0435\u0441\u0442\u044C.",
5132
+ blankHint: " (Enter \u0431\u0435\u0437 \u0442\u0435\u043A\u0441\u0442\u0430 = \u0443\u0442\u0432\u0435\u0440\u0434\u0438\u0442\u044C \u0431\u0435\u0437 \u0434\u043E\u043F. \u0438\u043D\u0441\u0442\u0440\u0443\u043A\u0446\u0438\u0439.)"
5133
+ },
5134
+ refine: {
5135
+ ...EN.planFlow.modes.refine,
5136
+ title: "\u0443\u0442\u043E\u0447\u043D\u0435\u043D\u0438\u0435 \u2014 \u0447\u0442\u043E \u043C\u043E\u0434\u0435\u043B\u0438 \u0438\u0437\u043C\u0435\u043D\u0438\u0442\u044C?",
5137
+ hint: "\u041E\u043F\u0438\u0448\u0438, \u0447\u0442\u043E \u043D\u0435 \u0442\u0430\u043A \u0438\u043B\u0438 \u0447\u0435\u0433\u043E \u043D\u0435 \u0445\u0432\u0430\u0442\u0430\u0435\u0442, \u0438\u043B\u0438 \u043E\u0442\u0432\u0435\u0442\u044C \u043D\u0430 \u0432\u043E\u043F\u0440\u043E\u0441\u044B \u043F\u043B\u0430\u043D\u0430.",
5138
+ blankHint: " (Enter \u0431\u0435\u0437 \u0442\u0435\u043A\u0441\u0442\u0430 = \u043C\u043E\u0434\u0435\u043B\u044C \u0432\u044B\u0431\u0435\u0440\u0435\u0442 \u0431\u0435\u0437\u043E\u043F\u0430\u0441\u043D\u044B\u0435 \u0437\u043D\u0430\u0447\u0435\u043D\u0438\u044F \u043F\u043E \u0443\u043C\u043E\u043B\u0447.)"
5139
+ },
5140
+ reject: {
5141
+ ...EN.planFlow.modes.reject,
5142
+ title: "\u043E\u0442\u043A\u043B\u043E\u043D\u0435\u043D\u0438\u0435 \u2014 \u043E\u0431\u044A\u044F\u0441\u043D\u0438 \u043C\u043E\u0434\u0435\u043B\u0438 \u043F\u043E\u0447\u0435\u043C\u0443 (\u043D\u0435\u043E\u0431\u044F\u0437\u0430\u0442\u0435\u043B\u044C\u043D\u043E)",
5143
+ hint: "\u0421\u043A\u0430\u0436\u0438, \u0447\u0442\u043E \u043C\u043E\u0434\u0435\u043B\u044C \u043F\u043E\u043D\u044F\u043B\u0430 \u043D\u0435\u043F\u0440\u0430\u0432\u0438\u043B\u044C\u043D\u043E, \u0438\u043B\u0438 \u0447\u0442\u043E \u0442\u044B \u043D\u0430 \u0441\u0430\u043C\u043E\u043C \u0434\u0435\u043B\u0435 \u0445\u043E\u0447\u0435\u0448\u044C.",
5144
+ blankHint: " (Enter \u0431\u0435\u0437 \u0442\u0435\u043A\u0441\u0442\u0430 = \u043E\u0442\u043C\u0435\u043D\u0430 \u0431\u0435\u0437 \u043E\u0431\u044A\u044F\u0441\u043D\u0435\u043D\u0438\u044F; \u043C\u043E\u0434\u0435\u043B\u044C \u0441\u043F\u0440\u043E\u0441\u0438\u0442, \u0447\u0442\u043E \u0442\u044B \u0445\u043E\u0447\u0435\u0448\u044C.)"
5145
+ },
5146
+ "checkpoint-revise": {
5147
+ ...EN.planFlow.modes["checkpoint-revise"],
5148
+ title: "\u043F\u0435\u0440\u0435\u0441\u043C\u043E\u0442\u0440 \u2014 \u0447\u0442\u043E \u0438\u0437\u043C\u0435\u043D\u0438\u0442\u044C \u043F\u0435\u0440\u0435\u0434 \u0441\u043B\u0435\u0434\u0443\u044E\u0449\u0438\u043C \u0448\u0430\u0433\u043E\u043C?",
5149
+ hint: "\u0418\u0437\u043C\u0435\u043D\u0435\u043D\u0438\u0435 \u043E\u0431\u044A\u0451\u043C\u0430, \u043F\u0440\u043E\u043F\u0443\u0441\u043A \u0448\u0430\u0433\u043E\u0432, \u0430\u043B\u044C\u0442\u0435\u0440\u043D\u0430\u0442\u0438\u0432\u043D\u044B\u0439 \u043F\u043E\u0434\u0445\u043E\u0434 \u2014 \u043C\u043E\u0434\u0435\u043B\u044C \u043A\u043E\u0440\u0440\u0435\u043A\u0442\u0438\u0440\u0443\u0435\u0442 \u043E\u0441\u0442\u0430\u0432\u0448\u0438\u0439\u0441\u044F \u043F\u043B\u0430\u043D.",
5150
+ blankHint: " (Enter \u0431\u0435\u0437 \u0442\u0435\u043A\u0441\u0442\u0430 = \u043F\u0440\u043E\u0434\u043E\u043B\u0436\u0438\u0442\u044C \u0441 \u0442\u0435\u043A\u0443\u0449\u0438\u043C \u043F\u043B\u0430\u043D\u043E\u043C.)"
5151
+ },
5152
+ "choice-custom": {
5153
+ ...EN.planFlow.modes["choice-custom"],
5154
+ title: "\u0441\u0432\u043E\u0439 \u043E\u0442\u0432\u0435\u0442 \u2014 \u043D\u0430\u043F\u0438\u0448\u0438 \u0447\u0442\u043E \u0443\u0433\u043E\u0434\u043D\u043E",
5155
+ hint: "\u0421\u0432\u043E\u0431\u043E\u0434\u043D\u044B\u0439 \u043E\u0442\u0432\u0435\u0442. \u041C\u043E\u0434\u0435\u043B\u044C \u0447\u0438\u0442\u0430\u0435\u0442 \u0435\u0433\u043E \u0434\u043E\u0441\u043B\u043E\u0432\u043D\u043E \u0438 \u0434\u0435\u0439\u0441\u0442\u0432\u0443\u0435\u0442 \u2014 \u043D\u0435 \u043E\u0431\u044F\u0437\u0430\u0442\u0435\u043B\u044C\u043D\u043E \u0441\u043E\u043E\u0442\u0432\u0435\u0442\u0441\u0442\u0432\u043E\u0432\u0430\u0442\u044C \u043F\u0440\u0435\u0434\u043B\u043E\u0436\u0435\u043D\u043D\u044B\u043C \u0432\u0430\u0440\u0438\u0430\u043D\u0442\u0430\u043C.",
5156
+ blankHint: " (Enter \u0431\u0435\u0437 \u0442\u0435\u043A\u0441\u0442\u0430 = \u0441\u043F\u0440\u043E\u0441\u0438\u0442\u044C \u043C\u043E\u0434\u0435\u043B\u044C, \u0447\u0442\u043E \u0442\u044B \u043D\u0430 \u0441\u0430\u043C\u043E\u043C \u0434\u0435\u043B\u0435 \u0445\u043E\u0447\u0435\u0448\u044C.)"
5157
+ }
5158
+ },
5159
+ checkpoint: {
5160
+ ...EN.planFlow.checkpoint,
5161
+ title: "\u041A\u043E\u043D\u0442\u0440\u043E\u043B\u044C\u043D\u0430\u044F \u0442\u043E\u0447\u043A\u0430 \u2014 \u0448\u0430\u0433 \u0432\u044B\u043F\u043E\u043B\u043D\u0435\u043D",
5162
+ continue: "\u041F\u0440\u043E\u0434\u043E\u043B\u0436\u0438\u0442\u044C \u2014 \u0432\u044B\u043F\u043E\u043B\u043D\u0438\u0442\u044C \u0441\u043B\u0435\u0434\u0443\u044E\u0449\u0438\u0439 \u0448\u0430\u0433",
5163
+ continueHint: "\u041C\u043E\u0434\u0435\u043B\u044C \u043F\u0440\u043E\u0434\u043E\u043B\u0436\u0430\u0435\u0442 \u0441\u043E \u0441\u043B\u0435\u0434\u0443\u044E\u0449\u0438\u043C \u0448\u0430\u0433\u043E\u043C.",
5164
+ finish: "\u0417\u0430\u0432\u0435\u0440\u0448\u0438\u0442\u044C \u2014 \u043F\u043E\u0434\u0432\u0435\u0441\u0442\u0438 \u0438\u0442\u043E\u0433 \u0438 \u0437\u0430\u043A\u0440\u044B\u0442\u044C",
5165
+ finishHint: "\u041C\u043E\u0434\u0435\u043B\u044C \u0437\u0430\u043F\u0438\u0441\u044B\u0432\u0430\u0435\u0442 \u043F\u043E\u0441\u043B\u0435\u0434\u043D\u0438\u0439 \u0448\u0430\u0433 \u0438 \u043F\u043E\u0434\u0432\u043E\u0434\u0438\u0442 \u0438\u0442\u043E\u0433 \u043F\u043B\u0430\u043D\u0430.",
5166
+ revise: "\u041F\u0435\u0440\u0435\u0441\u043C\u043E\u0442\u0440\u0435\u0442\u044C \u2014 \u0434\u0430\u0442\u044C \u043E\u0431\u0440\u0430\u0442\u043D\u0443\u044E \u0441\u0432\u044F\u0437\u044C \u043F\u0435\u0440\u0435\u0434 \u0441\u043B\u0435\u0434\u0443\u044E\u0449\u0438\u043C \u0448\u0430\u0433\u043E\u043C",
5167
+ reviseHint: "\u041E\u0441\u0442\u0430\u0432\u0430\u0442\u044C\u0441\u044F \u043D\u0430 \u043F\u0430\u0443\u0437\u0435, \u043D\u0430\u043F\u0438\u0441\u0430\u0442\u044C \u0443\u043A\u0430\u0437\u0430\u043D\u0438\u044F; \u043C\u043E\u0434\u0435\u043B\u044C \u043A\u043E\u0440\u0440\u0435\u043A\u0442\u0438\u0440\u0443\u0435\u0442 \u043E\u0441\u0442\u0430\u0432\u0448\u0438\u0439\u0441\u044F \u043F\u043B\u0430\u043D.",
5168
+ stop: "\u0421\u0442\u043E\u043F \u2014 \u0437\u0430\u0432\u0435\u0440\u0448\u0438\u0442\u044C \u043F\u043B\u0430\u043D \u0437\u0434\u0435\u0441\u044C",
5169
+ stopHint: "\u041C\u043E\u0434\u0435\u043B\u044C \u043F\u043E\u0434\u0432\u043E\u0434\u0438\u0442 \u0438\u0442\u043E\u0433 \u0432\u044B\u043F\u043E\u043B\u043D\u0435\u043D\u043D\u043E\u0433\u043E \u0438 \u0437\u0430\u0432\u0435\u0440\u0448\u0430\u0435\u0442."
5170
+ },
5171
+ stepList: {
5172
+ ...EN.planFlow.stepList,
5173
+ counter: "{total} \u0448\u0430\u0433\u043E\u0432",
5174
+ counterSingular: "{total} \u0448\u0430\u0433",
5175
+ counterDone: "{done}/{total} \u0432\u044B\u043F\u043E\u043B\u043D\u0435\u043D\u043E ({pct}%) \xB7 {total} \u0448\u0430\u0433\u043E\u0432",
5176
+ counterDoneSingular: "{done}/{total} \u0432\u044B\u043F\u043E\u043B\u043D\u0435\u043D\u043E ({pct}%) \xB7 {total} \u0448\u0430\u0433"
5177
+ },
5178
+ noPlanSummary: "\u041F\u043B\u0430\u043D \u0435\u0449\u0451 \u043D\u0435 \u043E\u0442\u043F\u0440\u0430\u0432\u043B\u0435\u043D.",
5179
+ detailCollapsedHint: "Ctrl+P \u0440\u0430\u0437\u0432\u043E\u0440\u0430\u0447\u0438\u0432\u0430\u0435\u0442 \u043F\u043E\u043B\u043D\u044B\u0435 \u0434\u0435\u0442\u0430\u043B\u0438 \u043F\u043B\u0430\u043D\u0430.",
5180
+ detailExpandedHint: "Ctrl+P \u0441\u0432\u043E\u0440\u0430\u0447\u0438\u0432\u0430\u0435\u0442 \u0434\u0435\u0442\u0430\u043B\u0438.",
5181
+ detailHeader: "\u0414\u0435\u0442\u0430\u043B\u0438 \u043F\u043B\u0430\u043D\u0430",
5182
+ detailWindow: "\u043F\u043E\u043A\u0430\u0437\u0430\u043D\u044B \u0441\u0442\u0440\u043E\u043A\u0438 {start}-{end} \u0438\u0437 {total}",
5183
+ detailScrollHint: "PgUp/PgDn \u043F\u0440\u043E\u043A\u0440\u0443\u0442\u043A\u0430 \xB7 Home/End \u043F\u0435\u0440\u0435\u0445\u043E\u0434",
5184
+ reviseTitle: "\u041F\u0435\u0440\u0435\u0441\u043C\u043E\u0442\u0440 \u043F\u043B\u0430\u043D\u0430",
5185
+ reviseSteps: "{count} \u0448\u0430\u0433\u043E\u0432",
5186
+ reviseFooter: "\u2191\u2193 \u0444\u043E\u043A\u0443\u0441 \xB7 space \u043F\u0435\u0440\u0435\u043A\u043B\u044E\u0447\u0438\u0442\u044C \u043F\u0440\u043E\u043F\u0443\u0441\u043A \xB7 k/j \u0434\u0432\u0438\u0436\u0435\u043D\u0438\u0435 \xB7 \u23CE \u043F\u0440\u0438\u043D\u044F\u0442\u044C \xB7 esc \u043E\u0442\u043C\u0435\u043D\u0430",
5187
+ riskMed: " \u0441\u0440\u0435\u0434",
5188
+ riskHigh: " \u0432\u044B\u0441",
5189
+ completeMsg: "\u25B8 \u043F\u043B\u0430\u043D \u0432\u044B\u043F\u043E\u043B\u043D\u0435\u043D \u2014 \u0432\u0441\u0435 {total} \u0448\u0430\u0433(\u043E\u0432) \u0441\u0434\u0435\u043B\u0430\u043D\u044B \xB7 \u0430\u0440\u0445\u0438\u0432\u0438\u0440\u043E\u0432\u0430\u043D"
5190
+ }
5191
+ };
5192
+
4655
5193
  // src/i18n/zh-CN.ts
4656
5194
  var zhCN = {
4657
5195
  common: {
@@ -4976,8 +5514,7 @@ var zhCN = {
4976
5514
  sessions: { description: "\u5217\u51FA\u5DF2\u4FDD\u5B58\u7684\u4F1A\u8BDD\uFF08\u5F53\u524D\u6807\u8BB0\u4E3A \u25B8\uFF09" },
4977
5515
  title: { description: "\u8BA9\u6A21\u578B\u6839\u636E\u5F53\u524D\u5BF9\u8BDD\u91CD\u547D\u540D\u6B64\u4F1A\u8BDD" },
4978
5516
  qq: {
4979
- description: "\u8FDE\u63A5\u3001\u67E5\u770B\u6216\u65AD\u5F00\u5F53\u524D\u4F1A\u8BDD\u7684 QQ \u901A\u9053\uFF08\u9996\u6B21\u8FDE\u63A5\u4F1A\u5F15\u5BFC\u5F55\u5165 App ID / App Secret\uFF09",
4980
- argsHint: "[connect [appId appSecret [sandbox]]|status|disconnect]"
5517
+ description: "\u8FDE\u63A5/\u67E5\u770B/\u65AD\u5F00 QQ \u901A\u9053\uFF0C\u9996\u6B21\u8FDE\u63A5\u9700\u63D0\u4F9B AppId + AppSecret\uFF08\u53EF\u9009\u6C99\u7BB1\u6A21\u5F0F sandbox\uFF09"
4981
5518
  },
4982
5519
  setup: { description: "\u63D0\u9192\u60A8\u9000\u51FA\u5E76\u8FD0\u884C `reasonix setup`" },
4983
5520
  semantic: {
@@ -6308,12 +6845,14 @@ var zhCN = {
6308
6845
  var translations = {
6309
6846
  EN,
6310
6847
  "zh-CN": zhCN,
6311
- de
6848
+ de,
6849
+ ru
6312
6850
  };
6313
6851
  function detectSystemLanguage(locale = systemLocale()) {
6314
6852
  if (locale.startsWith("zh")) return "zh-CN";
6315
6853
  if (locale.startsWith("en")) return "EN";
6316
6854
  if (locale.startsWith("de")) return "de";
6855
+ if (locale.startsWith("ru")) return "ru";
6317
6856
  return null;
6318
6857
  }
6319
6858
  function systemLocale() {
@@ -17388,11 +17927,7 @@ var McpClient = class {
17388
17927
  const params = {
17389
17928
  protocolVersion: MCP_PROTOCOL_VERSION,
17390
17929
  capabilities,
17391
- clientInfo: this.clientInfo,
17392
- ...this.workspaceRoot ? {
17393
- rootUri: this.workspaceRoot.uri,
17394
- workspaceFolders: [this.workspaceRoot]
17395
- } : {}
17930
+ clientInfo: this.clientInfo
17396
17931
  };
17397
17932
  const result = await this.request("initialize", params, opts.signal);
17398
17933
  this._serverCapabilities = result.capabilities ?? {};