cc-viewer 0.1.6 → 0.2.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/lib/index.html CHANGED
@@ -5,7 +5,7 @@
5
5
  <meta name="viewport" content="width=device-width, initial-scale=1.0">
6
6
  <title>Claude Code Viewer</title>
7
7
 
8
- <script type="module" crossorigin src="/assets/index-B_2FZecC.js"></script>
8
+ <script type="module" crossorigin src="/assets/index-DfxlBPQC.js"></script>
9
9
  <link rel="stylesheet" crossorigin href="/assets/index-C7-c9XfU.css">
10
10
  </head>
11
11
  <body>
package/lib/server.js CHANGED
@@ -4,6 +4,7 @@ import { fileURLToPath } from 'node:url';
4
4
  import { dirname, join, extname, basename } from 'node:path';
5
5
  import { homedir } from 'node:os';
6
6
  import { LOG_FILE } from '../interceptor.js';
7
+ import { t } from '../i18n.js';
7
8
 
8
9
  const LOG_DIR = join(homedir(), '.claude', 'cc-viewer');
9
10
  const SHOW_ALL_FILE = '/tmp/cc-viewer-show-all';
@@ -263,7 +264,7 @@ function handleRequest(req, res) {
263
264
  // 去掉 query string
264
265
  filePath = filePath.split('?')[0];
265
266
 
266
- const fullPath = join(__dirname, filePath);
267
+ const fullPath = join(__dirname, 'dist', filePath);
267
268
 
268
269
  try {
269
270
  if (existsSync(fullPath) && statSync(fullPath).isFile()) {
@@ -280,7 +281,7 @@ function handleRequest(req, res) {
280
281
 
281
282
  // SPA fallback: 非 API/非静态文件请求返回 index.html
282
283
  try {
283
- const indexPath = join(__dirname, 'index.html');
284
+ const indexPath = join(__dirname, 'dist', 'index.html');
284
285
  const html = readFileSync(indexPath, 'utf-8');
285
286
  res.writeHead(200, { 'Content-Type': 'text/html; charset=utf-8' });
286
287
  res.end(html);
@@ -326,7 +327,7 @@ export async function startViewer() {
326
327
  if (alive) {
327
328
  actualPort = existingPort;
328
329
  releaseLock();
329
- console.log(`\n🔍 CC Viewer 已在运行: http://${HOST}:${existingPort}\n`);
330
+ console.log(t('server.reuse', { host: HOST, port: existingPort }));
330
331
  return null;
331
332
  }
332
333
  }
@@ -340,7 +341,7 @@ export async function startViewer() {
340
341
  return new Promise((resolve, reject) => {
341
342
  function tryListen(port) {
342
343
  if (port > MAX_PORT) {
343
- console.log(`⚠️ 端口 ${START_PORT}-${MAX_PORT} 均被占用,请求监控服务未启动`);
344
+ console.log(t('server.portsBusy', { start: START_PORT, end: MAX_PORT }));
344
345
  releaseLock();
345
346
  resolve(null);
346
347
  return;
@@ -353,7 +354,7 @@ export async function startViewer() {
353
354
  actualPort = port;
354
355
  try { writeFileSync(PORT_FILE, String(port)); } catch {}
355
356
  releaseLock();
356
- console.log(`\n🔍 Claude 请求监控服务已启动: http://${HOST}:${port}\n`);
357
+ console.log(t('server.started', { host: HOST, port }));
357
358
  startWatching();
358
359
  resolve(server);
359
360
  });
@@ -0,0 +1,65 @@
1
+ {
2
+ "cli.inject.success": "✅ CC Viewer تم الحقن بنجاح",
3
+ "cli.inject.exists": "✅ CC Viewer محقون بالفعل، لا حاجة لأي إجراء",
4
+ "cli.inject.fail": "❌ فشل الحقن: {error}",
5
+ "cli.inject.notFound": "❌ لم يتم العثور على Claude Code cli.js: {path}",
6
+ "cli.inject.notFoundHint": " يرجى التأكد من تثبيت @anthropic-ai/claude-code",
7
+ "cli.hook.installed": "✅ تم كتابة hook إعادة الحقن التلقائي في {path}",
8
+ "cli.hook.exists": "✅ hook إعادة الحقن التلقائي موجود بالفعل في {path}",
9
+ "cli.hook.fail": "⚠️ فشل كتابة shell hook: {error}",
10
+ "cli.usage.hint": "\nقم بتشغيل claude مباشرة. سيتم إعادة الحقن تلقائياً بعد تحديثات Claude Code",
11
+ "cli.usage.uninstallHint": "لإلغاء التثبيت، قم بتشغيل: ccv --uninstall",
12
+ "cli.uninstall.cliCleaned": "✅ تم تنظيف حقن cli.js",
13
+ "cli.uninstall.cliNotFound": "⚠️ لم يتم العثور على Claude Code cli.js، تم التخطي",
14
+ "cli.uninstall.cliFail": "❌ فشل تنظيف حقن cli.js",
15
+ "cli.uninstall.hookRemoved": "✅ تم إزالة shell hook من {path}",
16
+ "cli.uninstall.hookClean": "✅ لا حاجة للتنظيف في {path}",
17
+ "cli.uninstall.hookFail": "❌ فشل تنظيف shell hook: {error}",
18
+ "cli.uninstall.done": "\n🗑️ تم إلغاء تثبيت CC Viewer بالكامل",
19
+
20
+ "server.started": "\n🔍 تم تشغيل CC Viewer: http://{host}:{port}\n",
21
+ "server.reuse": "\n🔍 CC Viewer يعمل بالفعل: http://{host}:{port}\n",
22
+ "server.portsBusy": "⚠️ المنافذ {start}-{end} كلها مشغولة، لم يتم تشغيل خدمة المراقبة",
23
+
24
+ "ui.requestList": "الطلبات",
25
+ "ui.totalRequests": "الإجمالي: {count}",
26
+ "ui.waitingRequests": "في انتظار الطلبات...",
27
+ "ui.importLocalLogs": "استيراد السجلات المحلية",
28
+ "ui.loadLocalJsonl": "اختيار ملف JSONL محلي",
29
+ "ui.fileTooLarge": "حجم الملف لا يمكن أن يتجاوز 200 ميجابايت",
30
+ "ui.saveLog": "تحميل السجل الحالي",
31
+ "ui.exportPrompts": "تصدير Prompt المستخدم",
32
+ "ui.exportPromptsTxt": "تصدير إلى ملف .txt محلي",
33
+ "ui.tokenStats": "إحصائيات Token",
34
+ "ui.liveMonitoring": "مباشر",
35
+ "ui.historyLog": "السجل: {file}",
36
+ "ui.chatMode": "وضع المحادثة",
37
+ "ui.rawMode": "العودة للوضع الخام",
38
+ "ui.cacheExpired": "منتهي الصلاحية",
39
+ "ui.cacheCountdown": "ينتهي cache{type} لـ MainAgent خلال: ",
40
+ "ui.minuteSecond": "{m}د{s}ث",
41
+ "ui.second": "{s}ث",
42
+ "ui.hitRate": "معدل الإصابة",
43
+ "ui.userPrompt": "Prompt المستخدم",
44
+ "ui.noPrompt": "لا توجد Prompt للمستخدم بعد",
45
+ "ui.unknownTime": "وقت غير معروف",
46
+ "ui.userSelection": "👤 اختيار المستخدم",
47
+ "ui.noAnswer": "لا إجابة",
48
+ "ui.systemContext": "سياق النظام #{index}",
49
+ "ui.logCount": "{count} سجلات",
50
+ "ui.noLogs": "لا توجد ملفات سجلات",
51
+
52
+ "ui.toolReturn": "نتيجة الأداة",
53
+ "ui.toolReturnNamed": "نتيجة {name}",
54
+ "ui.lastResponse": "Last Response",
55
+
56
+ "ui.copySuccess": "تم النسخ",
57
+ "ui.noHeaders": "لا يوجد Headers",
58
+ "ui.noBody": "لا يوجد Body",
59
+ "ui.streamingResponse": "⚡ استجابة متدفقة — استخدم هذا الطلب بث SSE، لا يمكن التقاط محتوى الاستجابة بالكامل.",
60
+ "ui.responseNotCaptured": "لم يتم التقاط بيانات الاستجابة",
61
+
62
+ "ui.expand": "▶ توسيع",
63
+ "ui.collapse": "▼ طي",
64
+ "ui.noChat": "لا توجد بيانات محادثة MainAgent"
65
+ }
@@ -0,0 +1,65 @@
1
+ {
2
+ "cli.inject.success": "✅ CC Viewer indsprøjtet korrekt",
3
+ "cli.inject.exists": "✅ CC Viewer allerede indsprøjtet, ingen handling nødvendig",
4
+ "cli.inject.fail": "❌ Indsprøjtning mislykkedes: {error}",
5
+ "cli.inject.notFound": "❌ Claude Code cli.js ikke fundet: {path}",
6
+ "cli.inject.notFoundHint": " Sørg for at @anthropic-ai/claude-code er installeret",
7
+ "cli.hook.installed": "✅ Auto-reinject hook skrevet til {path}",
8
+ "cli.hook.exists": "✅ Auto-reinject hook findes allerede i {path}",
9
+ "cli.hook.fail": "⚠️ Kunne ikke skrive shell hook: {error}",
10
+ "cli.usage.hint": "\nKør claude direkte. Det vil automatisk genindsprøjte efter Claude Code opdateringer",
11
+ "cli.usage.uninstallHint": "For at afinstallere, kør: ccv --uninstall",
12
+ "cli.uninstall.cliCleaned": "✅ cli.js indsprøjtning renset",
13
+ "cli.uninstall.cliNotFound": "⚠️ Claude Code cli.js ikke fundet, sprunget over",
14
+ "cli.uninstall.cliFail": "❌ Kunne ikke rense cli.js indsprøjtning",
15
+ "cli.uninstall.hookRemoved": "✅ Shell hook fjernet fra {path}",
16
+ "cli.uninstall.hookClean": "✅ Ingen oprydning nødvendig i {path}",
17
+ "cli.uninstall.hookFail": "❌ Kunne ikke rense shell hook: {error}",
18
+ "cli.uninstall.done": "\n🗑️ CC Viewer fuldstændigt afinstalleret",
19
+
20
+ "server.started": "\n🔍 CC Viewer startet: http://{host}:{port}\n",
21
+ "server.reuse": "\n🔍 CC Viewer kører allerede: http://{host}:{port}\n",
22
+ "server.portsBusy": "⚠️ Porte {start}-{end} er alle i brug, overvågningstjeneste ikke startet",
23
+
24
+ "ui.requestList": "Forespørgsler",
25
+ "ui.totalRequests": "Total: {count}",
26
+ "ui.waitingRequests": "Venter på forespørgsler...",
27
+ "ui.importLocalLogs": "Importér lokale logs",
28
+ "ui.loadLocalJsonl": "Vælg lokal JSONL-fil",
29
+ "ui.fileTooLarge": "Filstørrelsen må ikke overstige 200MB",
30
+ "ui.saveLog": "Download nuværende log",
31
+ "ui.exportPrompts": "Eksportér bruger-prompts",
32
+ "ui.exportPromptsTxt": "Eksportér til lokal .txt",
33
+ "ui.tokenStats": "Token-statistik",
34
+ "ui.liveMonitoring": "Live",
35
+ "ui.historyLog": "Historik: {file}",
36
+ "ui.chatMode": "Chat-tilstand",
37
+ "ui.rawMode": "Tilbage til rå tilstand",
38
+ "ui.cacheExpired": "Udløbet",
39
+ "ui.cacheCountdown": "MainAgent cache{type} udløber om: ",
40
+ "ui.minuteSecond": "{m}m{s}s",
41
+ "ui.second": "{s}s",
42
+ "ui.hitRate": "Hitrate",
43
+ "ui.userPrompt": "Bruger-Prompt",
44
+ "ui.noPrompt": "Ingen bruger-prompts endnu",
45
+ "ui.unknownTime": "Ukendt tid",
46
+ "ui.userSelection": "👤 Brugervalg",
47
+ "ui.noAnswer": "Intet svar",
48
+ "ui.systemContext": "Systemkontekst #{index}",
49
+ "ui.logCount": "{count} logs",
50
+ "ui.noLogs": "Ingen logfiler",
51
+
52
+ "ui.toolReturn": "Værktøjsresultat",
53
+ "ui.toolReturnNamed": "{name}-resultat",
54
+ "ui.lastResponse": "Last Response",
55
+
56
+ "ui.copySuccess": "Kopieret",
57
+ "ui.noHeaders": "Ingen Headers",
58
+ "ui.noBody": "Ingen Body",
59
+ "ui.streamingResponse": "⚡ Streaming-svar — Denne forespørgsel brugte SSE-streaming, svarindholdet kunne ikke fuldt indfanges.",
60
+ "ui.responseNotCaptured": "Svardata ikke indfanget",
61
+
62
+ "ui.expand": "▶ Udvid",
63
+ "ui.collapse": "▼ Fold sammen",
64
+ "ui.noChat": "Ingen MainAgent samtaledata"
65
+ }
@@ -0,0 +1,65 @@
1
+ {
2
+ "cli.inject.success": "✅ CC Viewer erfolgreich injiziert",
3
+ "cli.inject.exists": "✅ CC Viewer bereits injiziert, keine Aktion nötig",
4
+ "cli.inject.fail": "❌ Injektion fehlgeschlagen: {error}",
5
+ "cli.inject.notFound": "❌ Claude Code cli.js nicht gefunden: {path}",
6
+ "cli.inject.notFoundHint": " Bitte stellen Sie sicher, dass @anthropic-ai/claude-code installiert ist",
7
+ "cli.hook.installed": "✅ Auto-Reinject-Hook in {path} geschrieben",
8
+ "cli.hook.exists": "✅ Auto-Reinject-Hook existiert bereits in {path}",
9
+ "cli.hook.fail": "⚠️ Shell-Hook konnte nicht geschrieben werden: {error}",
10
+ "cli.usage.hint": "\nFühren Sie claude direkt aus. Nach Claude Code Updates wird automatisch neu injiziert",
11
+ "cli.usage.uninstallHint": "Zum Deinstallieren: ccv --uninstall",
12
+ "cli.uninstall.cliCleaned": "✅ cli.js-Injektion bereinigt",
13
+ "cli.uninstall.cliNotFound": "⚠️ Claude Code cli.js nicht gefunden, übersprungen",
14
+ "cli.uninstall.cliFail": "❌ cli.js-Injektion konnte nicht bereinigt werden",
15
+ "cli.uninstall.hookRemoved": "✅ Shell-Hook aus {path} entfernt",
16
+ "cli.uninstall.hookClean": "✅ Keine Bereinigung in {path} nötig",
17
+ "cli.uninstall.hookFail": "❌ Shell-Hook-Bereinigung fehlgeschlagen: {error}",
18
+ "cli.uninstall.done": "\n🗑️ CC Viewer vollständig deinstalliert",
19
+
20
+ "server.started": "\n🔍 CC Viewer gestartet: http://{host}:{port}\n",
21
+ "server.reuse": "\n🔍 CC Viewer läuft bereits: http://{host}:{port}\n",
22
+ "server.portsBusy": "⚠️ Ports {start}-{end} sind alle belegt, Überwachungsdienst nicht gestartet",
23
+
24
+ "ui.requestList": "Anfragen",
25
+ "ui.totalRequests": "Gesamt: {count}",
26
+ "ui.waitingRequests": "Warte auf Anfragen...",
27
+ "ui.importLocalLogs": "Lokale Logs importieren",
28
+ "ui.loadLocalJsonl": "Lokale JSONL-Datei auswählen",
29
+ "ui.fileTooLarge": "Dateigröße darf 200MB nicht überschreiten",
30
+ "ui.saveLog": "Aktuelles Log herunterladen",
31
+ "ui.exportPrompts": "Benutzer-Prompts exportieren",
32
+ "ui.exportPromptsTxt": "Als lokale .txt exportieren",
33
+ "ui.tokenStats": "Token-Statistik",
34
+ "ui.liveMonitoring": "Live",
35
+ "ui.historyLog": "Verlauf: {file}",
36
+ "ui.chatMode": "Chat-Modus",
37
+ "ui.rawMode": "Zurück zum Rohmodus",
38
+ "ui.cacheExpired": "Abgelaufen",
39
+ "ui.cacheCountdown": "MainAgent Cache{type} läuft ab in: ",
40
+ "ui.minuteSecond": "{m}m{s}s",
41
+ "ui.second": "{s}s",
42
+ "ui.hitRate": "Trefferquote",
43
+ "ui.userPrompt": "Benutzer-Prompt",
44
+ "ui.noPrompt": "Noch keine Benutzer-Prompts",
45
+ "ui.unknownTime": "Unbekannte Zeit",
46
+ "ui.userSelection": "👤 Benutzerauswahl",
47
+ "ui.noAnswer": "Keine Antwort",
48
+ "ui.systemContext": "Systemkontext #{index}",
49
+ "ui.logCount": "{count} Logs",
50
+ "ui.noLogs": "Keine Log-Dateien",
51
+
52
+ "ui.toolReturn": "Tool-Ergebnis",
53
+ "ui.toolReturnNamed": "{name}-Ergebnis",
54
+ "ui.lastResponse": "Last Response",
55
+
56
+ "ui.copySuccess": "Kopiert",
57
+ "ui.noHeaders": "Keine Headers",
58
+ "ui.noBody": "Kein Body",
59
+ "ui.streamingResponse": "⚡ Streaming-Antwort — Diese Anfrage nutzte SSE-Streaming, der Antwortinhalt konnte nicht vollständig erfasst werden.",
60
+ "ui.responseNotCaptured": "Antwortdaten nicht erfasst",
61
+
62
+ "ui.expand": "▶ Aufklappen",
63
+ "ui.collapse": "▼ Zuklappen",
64
+ "ui.noChat": "Keine MainAgent-Gesprächsdaten"
65
+ }
@@ -0,0 +1,65 @@
1
+ {
2
+ "cli.inject.success": "✅ CC Viewer injected successfully",
3
+ "cli.inject.exists": "✅ CC Viewer already injected, no action needed",
4
+ "cli.inject.fail": "❌ Injection failed: {error}",
5
+ "cli.inject.notFound": "❌ Claude Code cli.js not found: {path}",
6
+ "cli.inject.notFoundHint": " Please make sure @anthropic-ai/claude-code is installed",
7
+ "cli.hook.installed": "✅ Auto-reinject hook written to {path}",
8
+ "cli.hook.exists": "✅ Auto-reinject hook already exists in {path}",
9
+ "cli.hook.fail": "⚠️ Failed to write shell hook: {error}",
10
+ "cli.usage.hint": "\nJust run claude directly. It will auto-reinject after Claude Code updates",
11
+ "cli.usage.uninstallHint": "To uninstall, run: ccv --uninstall",
12
+ "cli.uninstall.cliCleaned": "✅ cli.js injection cleaned",
13
+ "cli.uninstall.cliNotFound": "⚠️ Claude Code cli.js not found, skipped",
14
+ "cli.uninstall.cliFail": "❌ Failed to clean cli.js injection",
15
+ "cli.uninstall.hookRemoved": "✅ Shell hook removed from {path}",
16
+ "cli.uninstall.hookClean": "✅ No cleanup needed in {path}",
17
+ "cli.uninstall.hookFail": "❌ Failed to clean shell hook: {error}",
18
+ "cli.uninstall.done": "\n🗑️ CC Viewer fully uninstalled",
19
+
20
+ "server.started": "\n🔍 CC Viewer started: http://{host}:{port}\n",
21
+ "server.reuse": "\n🔍 CC Viewer already running: http://{host}:{port}\n",
22
+ "server.portsBusy": "⚠️ Ports {start}-{end} are all in use, monitoring service not started",
23
+
24
+ "ui.requestList": "Requests",
25
+ "ui.totalRequests": "Total: {count}",
26
+ "ui.waitingRequests": "Waiting for requests...",
27
+ "ui.importLocalLogs": "Import local logs",
28
+ "ui.loadLocalJsonl": "Load local JSONL file",
29
+ "ui.fileTooLarge": "File size cannot exceed 200MB",
30
+ "ui.saveLog": "Download current log",
31
+ "ui.exportPrompts": "Export user prompts",
32
+ "ui.exportPromptsTxt": "Export to local .txt",
33
+ "ui.tokenStats": "Token Stats",
34
+ "ui.liveMonitoring": "Live",
35
+ "ui.historyLog": "History: {file}",
36
+ "ui.chatMode": "Chat mode",
37
+ "ui.rawMode": "Back to Raw",
38
+ "ui.cacheExpired": "Expired",
39
+ "ui.cacheCountdown": "MainAgent cache{type} expires in: ",
40
+ "ui.minuteSecond": "{m}m{s}s",
41
+ "ui.second": "{s}s",
42
+ "ui.hitRate": "Hit rate",
43
+ "ui.userPrompt": "User Prompt",
44
+ "ui.noPrompt": "No user prompts yet",
45
+ "ui.unknownTime": "Unknown time",
46
+ "ui.userSelection": "👤 User selection",
47
+ "ui.noAnswer": "No answer",
48
+ "ui.systemContext": "System context #{index}",
49
+ "ui.logCount": "{count} logs",
50
+ "ui.noLogs": "No log files",
51
+
52
+ "ui.toolReturn": "Tool result",
53
+ "ui.toolReturnNamed": "{name} result",
54
+ "ui.lastResponse": "Last Response",
55
+
56
+ "ui.copySuccess": "Copied",
57
+ "ui.noHeaders": "No Headers",
58
+ "ui.noBody": "No Body",
59
+ "ui.streamingResponse": "⚡ Streaming response — This request used SSE streaming, response content cannot be fully captured.",
60
+ "ui.responseNotCaptured": "Response not captured",
61
+
62
+ "ui.expand": "▶ Expand",
63
+ "ui.collapse": "▼ Collapse",
64
+ "ui.noChat": "No MainAgent conversation data"
65
+ }
@@ -0,0 +1,65 @@
1
+ {
2
+ "cli.inject.success": "✅ CC Viewer inyectado correctamente",
3
+ "cli.inject.exists": "✅ CC Viewer ya inyectado, no se requiere acción",
4
+ "cli.inject.fail": "❌ Inyección fallida: {error}",
5
+ "cli.inject.notFound": "❌ Claude Code cli.js no encontrado: {path}",
6
+ "cli.inject.notFoundHint": " Asegúrese de que @anthropic-ai/claude-code esté instalado",
7
+ "cli.hook.installed": "✅ Hook de reinyección automática escrito en {path}",
8
+ "cli.hook.exists": "✅ Hook de reinyección automática ya existe en {path}",
9
+ "cli.hook.fail": "⚠️ Error al escribir el shell hook: {error}",
10
+ "cli.usage.hint": "\nEjecute claude directamente. Se reinyectará automáticamente tras actualizaciones de Claude Code",
11
+ "cli.usage.uninstallHint": "Para desinstalar, ejecute: ccv --uninstall",
12
+ "cli.uninstall.cliCleaned": "✅ Inyección de cli.js limpiada",
13
+ "cli.uninstall.cliNotFound": "⚠️ Claude Code cli.js no encontrado, omitido",
14
+ "cli.uninstall.cliFail": "❌ Error al limpiar la inyección de cli.js",
15
+ "cli.uninstall.hookRemoved": "✅ Shell hook eliminado de {path}",
16
+ "cli.uninstall.hookClean": "✅ No se necesita limpieza en {path}",
17
+ "cli.uninstall.hookFail": "❌ Error al limpiar el shell hook: {error}",
18
+ "cli.uninstall.done": "\n🗑️ CC Viewer desinstalado completamente",
19
+
20
+ "server.started": "\n🔍 CC Viewer iniciado: http://{host}:{port}\n",
21
+ "server.reuse": "\n🔍 CC Viewer ya en ejecución: http://{host}:{port}\n",
22
+ "server.portsBusy": "⚠️ Puertos {start}-{end} están todos en uso, servicio de monitoreo no iniciado",
23
+
24
+ "ui.requestList": "Solicitudes",
25
+ "ui.totalRequests": "Total: {count}",
26
+ "ui.waitingRequests": "Esperando solicitudes...",
27
+ "ui.importLocalLogs": "Importar logs locales",
28
+ "ui.loadLocalJsonl": "Seleccionar archivo JSONL local",
29
+ "ui.fileTooLarge": "El tamaño del archivo no puede superar 200MB",
30
+ "ui.saveLog": "Descargar log actual",
31
+ "ui.exportPrompts": "Exportar prompts de usuario",
32
+ "ui.exportPromptsTxt": "Exportar a .txt local",
33
+ "ui.tokenStats": "Estadísticas de Token",
34
+ "ui.liveMonitoring": "En vivo",
35
+ "ui.historyLog": "Historial: {file}",
36
+ "ui.chatMode": "Modo chat",
37
+ "ui.rawMode": "Volver al modo raw",
38
+ "ui.cacheExpired": "Expirado",
39
+ "ui.cacheCountdown": "Cache{type} de MainAgent expira en: ",
40
+ "ui.minuteSecond": "{m}m{s}s",
41
+ "ui.second": "{s}s",
42
+ "ui.hitRate": "Tasa de aciertos",
43
+ "ui.userPrompt": "Prompt de usuario",
44
+ "ui.noPrompt": "Sin prompts de usuario aún",
45
+ "ui.unknownTime": "Hora desconocida",
46
+ "ui.userSelection": "👤 Selección del usuario",
47
+ "ui.noAnswer": "Sin respuesta",
48
+ "ui.systemContext": "Contexto del sistema #{index}",
49
+ "ui.logCount": "{count} logs",
50
+ "ui.noLogs": "Sin archivos de log",
51
+
52
+ "ui.toolReturn": "Resultado de herramienta",
53
+ "ui.toolReturnNamed": "Resultado de {name}",
54
+ "ui.lastResponse": "Last Response",
55
+
56
+ "ui.copySuccess": "Copiado",
57
+ "ui.noHeaders": "Sin Headers",
58
+ "ui.noBody": "Sin Body",
59
+ "ui.streamingResponse": "⚡ Respuesta en streaming — Esta solicitud usó streaming SSE, el contenido de la respuesta no se pudo capturar completamente.",
60
+ "ui.responseNotCaptured": "Datos de respuesta no capturados",
61
+
62
+ "ui.expand": "▶ Expandir",
63
+ "ui.collapse": "▼ Contraer",
64
+ "ui.noChat": "Sin datos de conversación de MainAgent"
65
+ }
@@ -0,0 +1,65 @@
1
+ {
2
+ "cli.inject.success": "✅ CC Viewer injecté avec succès",
3
+ "cli.inject.exists": "✅ CC Viewer déjà injecté, aucune action nécessaire",
4
+ "cli.inject.fail": "❌ Échec de l'injection : {error}",
5
+ "cli.inject.notFound": "❌ Claude Code cli.js introuvable : {path}",
6
+ "cli.inject.notFoundHint": " Veuillez vérifier que @anthropic-ai/claude-code est installé",
7
+ "cli.hook.installed": "✅ Hook de réinjection automatique écrit dans {path}",
8
+ "cli.hook.exists": "✅ Hook de réinjection automatique déjà présent dans {path}",
9
+ "cli.hook.fail": "⚠️ Échec de l'écriture du shell hook : {error}",
10
+ "cli.usage.hint": "\nExécutez claude directement. La réinjection se fera automatiquement après les mises à jour de Claude Code",
11
+ "cli.usage.uninstallHint": "Pour désinstaller, exécutez : ccv --uninstall",
12
+ "cli.uninstall.cliCleaned": "✅ Injection cli.js nettoyée",
13
+ "cli.uninstall.cliNotFound": "⚠️ Claude Code cli.js introuvable, ignoré",
14
+ "cli.uninstall.cliFail": "❌ Échec du nettoyage de l'injection cli.js",
15
+ "cli.uninstall.hookRemoved": "✅ Shell hook supprimé de {path}",
16
+ "cli.uninstall.hookClean": "✅ Aucun nettoyage nécessaire dans {path}",
17
+ "cli.uninstall.hookFail": "❌ Échec du nettoyage du shell hook : {error}",
18
+ "cli.uninstall.done": "\n🗑️ CC Viewer entièrement désinstallé",
19
+
20
+ "server.started": "\n🔍 CC Viewer démarré : http://{host}:{port}\n",
21
+ "server.reuse": "\n🔍 CC Viewer déjà en cours d'exécution : http://{host}:{port}\n",
22
+ "server.portsBusy": "⚠️ Ports {start}-{end} tous occupés, service de surveillance non démarré",
23
+
24
+ "ui.requestList": "Requêtes",
25
+ "ui.totalRequests": "Total : {count}",
26
+ "ui.waitingRequests": "En attente de requêtes...",
27
+ "ui.importLocalLogs": "Importer les logs locaux",
28
+ "ui.loadLocalJsonl": "Sélectionner un fichier JSONL local",
29
+ "ui.fileTooLarge": "La taille du fichier ne peut pas dépasser 200 Mo",
30
+ "ui.saveLog": "Télécharger le log actuel",
31
+ "ui.exportPrompts": "Exporter les prompts utilisateur",
32
+ "ui.exportPromptsTxt": "Exporter en .txt local",
33
+ "ui.tokenStats": "Statistiques Token",
34
+ "ui.liveMonitoring": "En direct",
35
+ "ui.historyLog": "Historique : {file}",
36
+ "ui.chatMode": "Mode conversation",
37
+ "ui.rawMode": "Retour au mode brut",
38
+ "ui.cacheExpired": "Expiré",
39
+ "ui.cacheCountdown": "Cache{type} MainAgent expire dans : ",
40
+ "ui.minuteSecond": "{m}m{s}s",
41
+ "ui.second": "{s}s",
42
+ "ui.hitRate": "Taux de succès",
43
+ "ui.userPrompt": "Prompt utilisateur",
44
+ "ui.noPrompt": "Aucun prompt utilisateur",
45
+ "ui.unknownTime": "Heure inconnue",
46
+ "ui.userSelection": "👤 Sélection utilisateur",
47
+ "ui.noAnswer": "Pas de réponse",
48
+ "ui.systemContext": "Contexte système #{index}",
49
+ "ui.logCount": "{count} logs",
50
+ "ui.noLogs": "Aucun fichier de log",
51
+
52
+ "ui.toolReturn": "Résultat d'outil",
53
+ "ui.toolReturnNamed": "Résultat de {name}",
54
+ "ui.lastResponse": "Last Response",
55
+
56
+ "ui.copySuccess": "Copié",
57
+ "ui.noHeaders": "Pas de Headers",
58
+ "ui.noBody": "Pas de Body",
59
+ "ui.streamingResponse": "⚡ Réponse en streaming — Cette requête a utilisé le streaming SSE, le contenu de la réponse n'a pas pu être entièrement capturé.",
60
+ "ui.responseNotCaptured": "Données de réponse non capturées",
61
+
62
+ "ui.expand": "▶ Déplier",
63
+ "ui.collapse": "▼ Replier",
64
+ "ui.noChat": "Aucune donnée de conversation MainAgent"
65
+ }
@@ -0,0 +1,65 @@
1
+ {
2
+ "cli.inject.success": "✅ CC Viewer iniettato con successo",
3
+ "cli.inject.exists": "✅ CC Viewer già iniettato, nessuna azione necessaria",
4
+ "cli.inject.fail": "❌ Iniezione fallita: {error}",
5
+ "cli.inject.notFound": "❌ Claude Code cli.js non trovato: {path}",
6
+ "cli.inject.notFoundHint": " Assicurati che @anthropic-ai/claude-code sia installato",
7
+ "cli.hook.installed": "✅ Hook di reiniezione automatica scritto in {path}",
8
+ "cli.hook.exists": "✅ Hook di reiniezione automatica già presente in {path}",
9
+ "cli.hook.fail": "⚠️ Impossibile scrivere il shell hook: {error}",
10
+ "cli.usage.hint": "\nEsegui claude direttamente. Si reinietterà automaticamente dopo gli aggiornamenti di Claude Code",
11
+ "cli.usage.uninstallHint": "Per disinstallare, esegui: ccv --uninstall",
12
+ "cli.uninstall.cliCleaned": "✅ Iniezione cli.js pulita",
13
+ "cli.uninstall.cliNotFound": "⚠️ Claude Code cli.js non trovato, saltato",
14
+ "cli.uninstall.cliFail": "❌ Pulizia iniezione cli.js fallita",
15
+ "cli.uninstall.hookRemoved": "✅ Shell hook rimosso da {path}",
16
+ "cli.uninstall.hookClean": "✅ Nessuna pulizia necessaria in {path}",
17
+ "cli.uninstall.hookFail": "❌ Pulizia shell hook fallita: {error}",
18
+ "cli.uninstall.done": "\n🗑️ CC Viewer completamente disinstallato",
19
+
20
+ "server.started": "\n🔍 CC Viewer avviato: http://{host}:{port}\n",
21
+ "server.reuse": "\n🔍 CC Viewer già in esecuzione: http://{host}:{port}\n",
22
+ "server.portsBusy": "⚠️ Porte {start}-{end} tutte in uso, servizio di monitoraggio non avviato",
23
+
24
+ "ui.requestList": "Richieste",
25
+ "ui.totalRequests": "Totale: {count}",
26
+ "ui.waitingRequests": "In attesa di richieste...",
27
+ "ui.importLocalLogs": "Importa log locali",
28
+ "ui.loadLocalJsonl": "Seleziona file JSONL locale",
29
+ "ui.fileTooLarge": "La dimensione del file non può superare 200MB",
30
+ "ui.saveLog": "Scarica log corrente",
31
+ "ui.exportPrompts": "Esporta prompt utente",
32
+ "ui.exportPromptsTxt": "Esporta in .txt locale",
33
+ "ui.tokenStats": "Statistiche Token",
34
+ "ui.liveMonitoring": "Live",
35
+ "ui.historyLog": "Cronologia: {file}",
36
+ "ui.chatMode": "Modalità chat",
37
+ "ui.rawMode": "Torna alla modalità raw",
38
+ "ui.cacheExpired": "Scaduto",
39
+ "ui.cacheCountdown": "Cache{type} MainAgent scade tra: ",
40
+ "ui.minuteSecond": "{m}m{s}s",
41
+ "ui.second": "{s}s",
42
+ "ui.hitRate": "Tasso di successo",
43
+ "ui.userPrompt": "Prompt utente",
44
+ "ui.noPrompt": "Nessun prompt utente",
45
+ "ui.unknownTime": "Ora sconosciuta",
46
+ "ui.userSelection": "👤 Selezione utente",
47
+ "ui.noAnswer": "Nessuna risposta",
48
+ "ui.systemContext": "Contesto di sistema #{index}",
49
+ "ui.logCount": "{count} log",
50
+ "ui.noLogs": "Nessun file di log",
51
+
52
+ "ui.toolReturn": "Risultato strumento",
53
+ "ui.toolReturnNamed": "Risultato di {name}",
54
+ "ui.lastResponse": "Last Response",
55
+
56
+ "ui.copySuccess": "Copiato",
57
+ "ui.noHeaders": "Nessun Header",
58
+ "ui.noBody": "Nessun Body",
59
+ "ui.streamingResponse": "⚡ Risposta in streaming — Questa richiesta ha utilizzato lo streaming SSE, il contenuto della risposta non può essere catturato completamente.",
60
+ "ui.responseNotCaptured": "Dati di risposta non catturati",
61
+
62
+ "ui.expand": "▶ Espandi",
63
+ "ui.collapse": "▼ Comprimi",
64
+ "ui.noChat": "Nessun dato di conversazione MainAgent"
65
+ }
@@ -0,0 +1,65 @@
1
+ {
2
+ "cli.inject.success": "✅ CC Viewer インジェクション成功",
3
+ "cli.inject.exists": "✅ CC Viewer は既にインジェクト済み、操作不要",
4
+ "cli.inject.fail": "❌ インジェクション失敗: {error}",
5
+ "cli.inject.notFound": "❌ Claude Code cli.js が見つかりません: {path}",
6
+ "cli.inject.notFoundHint": " @anthropic-ai/claude-code がインストールされていることを確認してください",
7
+ "cli.hook.installed": "✅ 自動再インジェクト hook を {path} に書き込みました",
8
+ "cli.hook.exists": "✅ 自動再インジェクト hook は既に {path} に存在します",
9
+ "cli.hook.fail": "⚠️ shell hook の書き込みに失敗: {error}",
10
+ "cli.usage.hint": "\nclaude を直接実行してください。Claude Code 更新後に自動で再インジェクトされます",
11
+ "cli.usage.uninstallHint": "アンインストールするには: ccv --uninstall",
12
+ "cli.uninstall.cliCleaned": "✅ cli.js インジェクションをクリーンアップしました",
13
+ "cli.uninstall.cliNotFound": "⚠️ Claude Code cli.js が見つかりません、スキップ",
14
+ "cli.uninstall.cliFail": "❌ cli.js インジェクションのクリーンアップに失敗",
15
+ "cli.uninstall.hookRemoved": "✅ shell hook を {path} から削除しました",
16
+ "cli.uninstall.hookClean": "✅ {path} のクリーンアップは不要です",
17
+ "cli.uninstall.hookFail": "❌ shell hook のクリーンアップに失敗: {error}",
18
+ "cli.uninstall.done": "\n🗑️ CC Viewer を完全にアンインストールしました",
19
+
20
+ "server.started": "\n🔍 CC Viewer 起動: http://{host}:{port}\n",
21
+ "server.reuse": "\n🔍 CC Viewer は既に実行中: http://{host}:{port}\n",
22
+ "server.portsBusy": "⚠️ ポート {start}-{end} はすべて使用中、監視サービスは起動されませんでした",
23
+
24
+ "ui.requestList": "リクエスト一覧",
25
+ "ui.totalRequests": "合計: {count}",
26
+ "ui.waitingRequests": "リクエスト待機中...",
27
+ "ui.importLocalLogs": "ローカルログをインポート",
28
+ "ui.loadLocalJsonl": "ローカルJSONLファイルを選択",
29
+ "ui.fileTooLarge": "ファイルサイズは200MBを超えることはできません",
30
+ "ui.saveLog": "現在のログをダウンロード",
31
+ "ui.exportPrompts": "ユーザー Prompt をエクスポート",
32
+ "ui.exportPromptsTxt": "ローカル .txt にエクスポート",
33
+ "ui.tokenStats": "Token 消費統計",
34
+ "ui.liveMonitoring": "リアルタイム監視中",
35
+ "ui.historyLog": "履歴: {file}",
36
+ "ui.chatMode": "チャットモード",
37
+ "ui.rawMode": "Raw モードに戻る",
38
+ "ui.cacheExpired": "期限切れ",
39
+ "ui.cacheCountdown": "MainAgent cache{type} 期限切れまで: ",
40
+ "ui.minuteSecond": "{m}分{s}秒",
41
+ "ui.second": "{s}秒",
42
+ "ui.hitRate": "ヒット率",
43
+ "ui.userPrompt": "ユーザー Prompt",
44
+ "ui.noPrompt": "ユーザー Prompt はまだありません",
45
+ "ui.unknownTime": "不明な時刻",
46
+ "ui.userSelection": "👤 ユーザー選択",
47
+ "ui.noAnswer": "回答なし",
48
+ "ui.systemContext": "システムコンテキスト #{index}",
49
+ "ui.logCount": "{count} 件のログ",
50
+ "ui.noLogs": "ログファイルなし",
51
+
52
+ "ui.toolReturn": "ツール結果",
53
+ "ui.toolReturnNamed": "{name} 結果",
54
+ "ui.lastResponse": "Last Response",
55
+
56
+ "ui.copySuccess": "コピーしました",
57
+ "ui.noHeaders": "Headers なし",
58
+ "ui.noBody": "Body なし",
59
+ "ui.streamingResponse": "⚡ ストリーミングレスポンス — このリクエストは SSE ストリーミングを使用しており、レスポンス内容を完全にキャプチャできませんでした。",
60
+ "ui.responseNotCaptured": "レスポンスデータ未キャプチャ",
61
+
62
+ "ui.expand": "▶ 展開",
63
+ "ui.collapse": "▼ 折りたたむ",
64
+ "ui.noChat": "MainAgent の会話データがありません"
65
+ }