@asifkibria/claude-code-toolkit 1.0.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.
- package/CONTRIBUTING.md +187 -0
- package/LICENSE +21 -0
- package/README.md +258 -0
- package/dist/__tests__/scanner.test.d.ts +2 -0
- package/dist/__tests__/scanner.test.d.ts.map +1 -0
- package/dist/__tests__/scanner.test.js +409 -0
- package/dist/__tests__/scanner.test.js.map +1 -0
- package/dist/cli.d.ts +7 -0
- package/dist/cli.d.ts.map +1 -0
- package/dist/cli.js +389 -0
- package/dist/cli.js.map +1 -0
- package/dist/index.d.ts +8 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +514 -0
- package/dist/index.js.map +1 -0
- package/dist/lib/scanner.d.ts +50 -0
- package/dist/lib/scanner.d.ts.map +1 -0
- package/dist/lib/scanner.js +369 -0
- package/dist/lib/scanner.js.map +1 -0
- package/package.json +63 -0
package/dist/cli.js
ADDED
|
@@ -0,0 +1,389 @@
|
|
|
1
|
+
#!/usr/bin/env node
|
|
2
|
+
/**
|
|
3
|
+
* CLI for Claude Code Image Fixer
|
|
4
|
+
* Can be used standalone without MCP integration
|
|
5
|
+
*/
|
|
6
|
+
import * as fs from "fs";
|
|
7
|
+
import * as path from "path";
|
|
8
|
+
import * as os from "os";
|
|
9
|
+
import { findAllJsonlFiles, findBackupFiles, scanFile, fixFile, getConversationStats, restoreFromBackup, deleteOldBackups, } from "./lib/scanner.js";
|
|
10
|
+
const CLAUDE_DIR = path.join(os.homedir(), ".claude");
|
|
11
|
+
const PROJECTS_DIR = path.join(CLAUDE_DIR, "projects");
|
|
12
|
+
function formatBytes(bytes) {
|
|
13
|
+
if (bytes < 1024)
|
|
14
|
+
return `${bytes} B`;
|
|
15
|
+
if (bytes < 1024 * 1024)
|
|
16
|
+
return `${(bytes / 1024).toFixed(1)} KB`;
|
|
17
|
+
return `${(bytes / (1024 * 1024)).toFixed(1)} MB`;
|
|
18
|
+
}
|
|
19
|
+
function formatDate(date) {
|
|
20
|
+
return date.toISOString().replace("T", " ").slice(0, 19);
|
|
21
|
+
}
|
|
22
|
+
function printHelp() {
|
|
23
|
+
console.log(`
|
|
24
|
+
Claude Code Toolkit v1.0.0
|
|
25
|
+
Maintain, optimize, and troubleshoot your Claude Code installation.
|
|
26
|
+
|
|
27
|
+
USAGE:
|
|
28
|
+
cct <command> [options]
|
|
29
|
+
claude-code-toolkit <command> [options]
|
|
30
|
+
|
|
31
|
+
COMMANDS:
|
|
32
|
+
health Quick health check (start here!)
|
|
33
|
+
stats Show conversation statistics
|
|
34
|
+
scan Scan for issues (dry run)
|
|
35
|
+
fix Fix all detected issues
|
|
36
|
+
backups List backup files
|
|
37
|
+
restore <path> Restore from a backup file
|
|
38
|
+
cleanup Delete old backup files
|
|
39
|
+
|
|
40
|
+
OPTIONS:
|
|
41
|
+
-f, --file <path> Target a specific file
|
|
42
|
+
-d, --dry-run Show what would be done without making changes
|
|
43
|
+
--no-backup Skip creating backups when fixing (not recommended)
|
|
44
|
+
--days <n> For cleanup: delete backups older than n days (default: 7)
|
|
45
|
+
--limit <n> For stats: limit results (default: 10)
|
|
46
|
+
--sort <field> For stats: sort by size|messages|images|modified
|
|
47
|
+
-h, --help Show this help message
|
|
48
|
+
-v, --version Show version
|
|
49
|
+
|
|
50
|
+
EXAMPLES:
|
|
51
|
+
cct health # Quick health check
|
|
52
|
+
cct stats --limit 5 --sort size # Top 5 largest conversations
|
|
53
|
+
cct scan # Scan for issues
|
|
54
|
+
cct fix # Fix all issues
|
|
55
|
+
cct fix -f /path/to/file # Fix specific file
|
|
56
|
+
cct cleanup --days 30 --dry-run # Preview old backups to delete
|
|
57
|
+
cct cleanup --days 30 # Delete old backups
|
|
58
|
+
|
|
59
|
+
For more info: https://github.com/asifkibria/claude-code-toolkit
|
|
60
|
+
`);
|
|
61
|
+
}
|
|
62
|
+
function parseArgs(args) {
|
|
63
|
+
const result = {
|
|
64
|
+
command: "",
|
|
65
|
+
file: undefined,
|
|
66
|
+
dryRun: false,
|
|
67
|
+
noBackup: false,
|
|
68
|
+
days: 7,
|
|
69
|
+
limit: 10,
|
|
70
|
+
sort: "size",
|
|
71
|
+
};
|
|
72
|
+
for (let i = 0; i < args.length; i++) {
|
|
73
|
+
const arg = args[i];
|
|
74
|
+
if (arg === "-h" || arg === "--help") {
|
|
75
|
+
printHelp();
|
|
76
|
+
process.exit(0);
|
|
77
|
+
}
|
|
78
|
+
if (arg === "-v" || arg === "--version") {
|
|
79
|
+
console.log("1.0.0");
|
|
80
|
+
process.exit(0);
|
|
81
|
+
}
|
|
82
|
+
if (arg === "-f" || arg === "--file") {
|
|
83
|
+
result.file = args[++i];
|
|
84
|
+
continue;
|
|
85
|
+
}
|
|
86
|
+
if (arg === "-d" || arg === "--dry-run") {
|
|
87
|
+
result.dryRun = true;
|
|
88
|
+
continue;
|
|
89
|
+
}
|
|
90
|
+
if (arg === "--no-backup") {
|
|
91
|
+
result.noBackup = true;
|
|
92
|
+
continue;
|
|
93
|
+
}
|
|
94
|
+
if (arg === "--days") {
|
|
95
|
+
result.days = parseInt(args[++i], 10);
|
|
96
|
+
continue;
|
|
97
|
+
}
|
|
98
|
+
if (arg === "--limit") {
|
|
99
|
+
result.limit = parseInt(args[++i], 10);
|
|
100
|
+
continue;
|
|
101
|
+
}
|
|
102
|
+
if (arg === "--sort") {
|
|
103
|
+
result.sort = args[++i];
|
|
104
|
+
continue;
|
|
105
|
+
}
|
|
106
|
+
if (!arg.startsWith("-") && !result.command) {
|
|
107
|
+
result.command = arg;
|
|
108
|
+
continue;
|
|
109
|
+
}
|
|
110
|
+
if (!arg.startsWith("-") && result.command === "restore") {
|
|
111
|
+
result.file = arg;
|
|
112
|
+
}
|
|
113
|
+
}
|
|
114
|
+
return result;
|
|
115
|
+
}
|
|
116
|
+
async function cmdScan(file) {
|
|
117
|
+
if (!fs.existsSync(PROJECTS_DIR)) {
|
|
118
|
+
console.error(`Claude projects directory not found: ${PROJECTS_DIR}`);
|
|
119
|
+
process.exit(1);
|
|
120
|
+
}
|
|
121
|
+
const files = file ? [file] : findAllJsonlFiles(PROJECTS_DIR);
|
|
122
|
+
console.log(`Scanning ${files.length} file(s)...\n`);
|
|
123
|
+
let totalIssues = 0;
|
|
124
|
+
let filesWithIssues = 0;
|
|
125
|
+
for (const f of files) {
|
|
126
|
+
try {
|
|
127
|
+
const result = scanFile(f);
|
|
128
|
+
if (result.issues.length > 0) {
|
|
129
|
+
filesWithIssues++;
|
|
130
|
+
totalIssues += result.issues.length;
|
|
131
|
+
const relPath = path.relative(PROJECTS_DIR, f);
|
|
132
|
+
console.log(`\x1b[33m${relPath}\x1b[0m`);
|
|
133
|
+
for (const issue of result.issues) {
|
|
134
|
+
console.log(` Line ${issue.line}: ${issue.type} (~${formatBytes(issue.estimatedSize)})`);
|
|
135
|
+
}
|
|
136
|
+
}
|
|
137
|
+
}
|
|
138
|
+
catch {
|
|
139
|
+
// Skip
|
|
140
|
+
}
|
|
141
|
+
}
|
|
142
|
+
console.log();
|
|
143
|
+
if (totalIssues === 0) {
|
|
144
|
+
console.log("\x1b[32m✓ No oversized images found.\x1b[0m");
|
|
145
|
+
}
|
|
146
|
+
else {
|
|
147
|
+
console.log(`\x1b[33mFound ${totalIssues} issue(s) in ${filesWithIssues} file(s).\x1b[0m`);
|
|
148
|
+
console.log("Run 'mcp-claude-image-fixer fix' to fix them.");
|
|
149
|
+
}
|
|
150
|
+
}
|
|
151
|
+
async function cmdFix(file, noBackup = false) {
|
|
152
|
+
if (!fs.existsSync(PROJECTS_DIR)) {
|
|
153
|
+
console.error(`Claude projects directory not found: ${PROJECTS_DIR}`);
|
|
154
|
+
process.exit(1);
|
|
155
|
+
}
|
|
156
|
+
const files = file ? [file] : findAllJsonlFiles(PROJECTS_DIR);
|
|
157
|
+
console.log(`Processing ${files.length} file(s)...\n`);
|
|
158
|
+
let totalFixed = 0;
|
|
159
|
+
let filesFixed = 0;
|
|
160
|
+
for (const f of files) {
|
|
161
|
+
try {
|
|
162
|
+
const result = fixFile(f, !noBackup);
|
|
163
|
+
if (result.fixed) {
|
|
164
|
+
filesFixed++;
|
|
165
|
+
totalFixed += result.issues.length;
|
|
166
|
+
const relPath = path.relative(PROJECTS_DIR, f);
|
|
167
|
+
console.log(`\x1b[32m✓ ${relPath}\x1b[0m`);
|
|
168
|
+
console.log(` Fixed ${result.issues.length} issue(s)`);
|
|
169
|
+
if (result.backupPath) {
|
|
170
|
+
console.log(` Backup: ${path.basename(result.backupPath)}`);
|
|
171
|
+
}
|
|
172
|
+
}
|
|
173
|
+
}
|
|
174
|
+
catch {
|
|
175
|
+
// Skip
|
|
176
|
+
}
|
|
177
|
+
}
|
|
178
|
+
console.log();
|
|
179
|
+
if (totalFixed === 0) {
|
|
180
|
+
console.log("\x1b[32m✓ No issues to fix.\x1b[0m");
|
|
181
|
+
}
|
|
182
|
+
else {
|
|
183
|
+
console.log(`\x1b[32m✓ Fixed ${totalFixed} issue(s) in ${filesFixed} file(s).\x1b[0m`);
|
|
184
|
+
console.log("Restart Claude Code to apply changes.");
|
|
185
|
+
}
|
|
186
|
+
}
|
|
187
|
+
async function cmdStats(limit, sort) {
|
|
188
|
+
if (!fs.existsSync(PROJECTS_DIR)) {
|
|
189
|
+
console.error(`Claude projects directory not found: ${PROJECTS_DIR}`);
|
|
190
|
+
process.exit(1);
|
|
191
|
+
}
|
|
192
|
+
const files = findAllJsonlFiles(PROJECTS_DIR);
|
|
193
|
+
const allStats = files.map((f) => {
|
|
194
|
+
try {
|
|
195
|
+
return getConversationStats(f);
|
|
196
|
+
}
|
|
197
|
+
catch {
|
|
198
|
+
return null;
|
|
199
|
+
}
|
|
200
|
+
}).filter(Boolean);
|
|
201
|
+
allStats.sort((a, b) => {
|
|
202
|
+
switch (sort) {
|
|
203
|
+
case "messages":
|
|
204
|
+
return b.totalMessages - a.totalMessages;
|
|
205
|
+
case "images":
|
|
206
|
+
return b.imageCount - a.imageCount;
|
|
207
|
+
case "modified":
|
|
208
|
+
return b.lastModified.getTime() - a.lastModified.getTime();
|
|
209
|
+
default:
|
|
210
|
+
return b.fileSizeBytes - a.fileSizeBytes;
|
|
211
|
+
}
|
|
212
|
+
});
|
|
213
|
+
const totalSize = allStats.reduce((sum, s) => sum + s.fileSizeBytes, 0);
|
|
214
|
+
const totalMessages = allStats.reduce((sum, s) => sum + s.totalMessages, 0);
|
|
215
|
+
const totalImages = allStats.reduce((sum, s) => sum + s.imageCount, 0);
|
|
216
|
+
const totalProblematic = allStats.reduce((sum, s) => sum + s.problematicImages, 0);
|
|
217
|
+
console.log("Conversation Statistics\n");
|
|
218
|
+
console.log(`Total: ${allStats.length} conversations, ${formatBytes(totalSize)}`);
|
|
219
|
+
console.log(`Messages: ${totalMessages.toLocaleString()}, Images: ${totalImages}, Problematic: ${totalProblematic}\n`);
|
|
220
|
+
console.log(`Top ${Math.min(limit, allStats.length)} by ${sort}:\n`);
|
|
221
|
+
for (const stats of allStats.slice(0, limit)) {
|
|
222
|
+
const relPath = path.relative(PROJECTS_DIR, stats.file);
|
|
223
|
+
const shortPath = relPath.length > 60 ? "..." + relPath.slice(-57) : relPath;
|
|
224
|
+
console.log(`\x1b[36m${shortPath}\x1b[0m`);
|
|
225
|
+
console.log(` Size: ${formatBytes(stats.fileSizeBytes)}, Messages: ${stats.totalMessages}`);
|
|
226
|
+
console.log(` Images: ${stats.imageCount}${stats.problematicImages > 0 ? ` (\x1b[33m${stats.problematicImages} oversized\x1b[0m)` : ""}`);
|
|
227
|
+
console.log(` Modified: ${formatDate(stats.lastModified)}\n`);
|
|
228
|
+
}
|
|
229
|
+
}
|
|
230
|
+
async function cmdBackups() {
|
|
231
|
+
if (!fs.existsSync(PROJECTS_DIR)) {
|
|
232
|
+
console.error(`Claude projects directory not found: ${PROJECTS_DIR}`);
|
|
233
|
+
process.exit(1);
|
|
234
|
+
}
|
|
235
|
+
const backups = findBackupFiles(PROJECTS_DIR);
|
|
236
|
+
if (backups.length === 0) {
|
|
237
|
+
console.log("No backup files found.");
|
|
238
|
+
return;
|
|
239
|
+
}
|
|
240
|
+
const backupInfo = backups.map((b) => {
|
|
241
|
+
try {
|
|
242
|
+
const stat = fs.statSync(b);
|
|
243
|
+
return { path: b, size: stat.size, mtime: stat.mtime };
|
|
244
|
+
}
|
|
245
|
+
catch {
|
|
246
|
+
return { path: b, size: 0, mtime: new Date(0) };
|
|
247
|
+
}
|
|
248
|
+
}).sort((a, b) => b.mtime.getTime() - a.mtime.getTime());
|
|
249
|
+
const totalSize = backupInfo.reduce((sum, b) => sum + b.size, 0);
|
|
250
|
+
console.log(`Backup Files (${backups.length} files, ${formatBytes(totalSize)} total)\n`);
|
|
251
|
+
for (const backup of backupInfo) {
|
|
252
|
+
const relPath = path.relative(PROJECTS_DIR, backup.path);
|
|
253
|
+
console.log(`${relPath}`);
|
|
254
|
+
console.log(` Size: ${formatBytes(backup.size)}, Created: ${formatDate(backup.mtime)}`);
|
|
255
|
+
}
|
|
256
|
+
}
|
|
257
|
+
async function cmdRestore(backupPath) {
|
|
258
|
+
if (!backupPath) {
|
|
259
|
+
console.error("Please specify a backup file path.");
|
|
260
|
+
process.exit(1);
|
|
261
|
+
}
|
|
262
|
+
const result = restoreFromBackup(backupPath);
|
|
263
|
+
if (!result.success) {
|
|
264
|
+
console.error(`Error: ${result.error}`);
|
|
265
|
+
process.exit(1);
|
|
266
|
+
}
|
|
267
|
+
console.log(`\x1b[32m✓ Restored ${result.originalPath}\x1b[0m`);
|
|
268
|
+
console.log("Restart Claude Code to apply changes.");
|
|
269
|
+
}
|
|
270
|
+
async function cmdCleanup(days, dryRun) {
|
|
271
|
+
if (!fs.existsSync(PROJECTS_DIR)) {
|
|
272
|
+
console.error(`Claude projects directory not found: ${PROJECTS_DIR}`);
|
|
273
|
+
process.exit(1);
|
|
274
|
+
}
|
|
275
|
+
if (dryRun) {
|
|
276
|
+
const backups = findBackupFiles(PROJECTS_DIR);
|
|
277
|
+
const cutoffDate = new Date();
|
|
278
|
+
cutoffDate.setDate(cutoffDate.getDate() - days);
|
|
279
|
+
const toDelete = backups.filter((b) => {
|
|
280
|
+
try {
|
|
281
|
+
const stat = fs.statSync(b);
|
|
282
|
+
return stat.mtime < cutoffDate;
|
|
283
|
+
}
|
|
284
|
+
catch {
|
|
285
|
+
return false;
|
|
286
|
+
}
|
|
287
|
+
});
|
|
288
|
+
if (toDelete.length === 0) {
|
|
289
|
+
console.log(`No backups older than ${days} days found.`);
|
|
290
|
+
return;
|
|
291
|
+
}
|
|
292
|
+
console.log(`Would delete ${toDelete.length} backup(s):\n`);
|
|
293
|
+
for (const b of toDelete) {
|
|
294
|
+
console.log(` ${path.relative(PROJECTS_DIR, b)}`);
|
|
295
|
+
}
|
|
296
|
+
console.log("\nRun without --dry-run to delete.");
|
|
297
|
+
}
|
|
298
|
+
else {
|
|
299
|
+
const result = deleteOldBackups(PROJECTS_DIR, days);
|
|
300
|
+
if (result.deleted.length === 0) {
|
|
301
|
+
console.log(`No backups older than ${days} days found.`);
|
|
302
|
+
return;
|
|
303
|
+
}
|
|
304
|
+
console.log(`\x1b[32m✓ Deleted ${result.deleted.length} backup(s)\x1b[0m`);
|
|
305
|
+
if (result.errors.length > 0) {
|
|
306
|
+
console.log("\nErrors:");
|
|
307
|
+
for (const err of result.errors) {
|
|
308
|
+
console.log(` ${err}`);
|
|
309
|
+
}
|
|
310
|
+
}
|
|
311
|
+
}
|
|
312
|
+
}
|
|
313
|
+
async function cmdHealth() {
|
|
314
|
+
if (!fs.existsSync(PROJECTS_DIR)) {
|
|
315
|
+
console.error(`Claude projects directory not found: ${PROJECTS_DIR}`);
|
|
316
|
+
process.exit(1);
|
|
317
|
+
}
|
|
318
|
+
const files = findAllJsonlFiles(PROJECTS_DIR);
|
|
319
|
+
const backups = findBackupFiles(PROJECTS_DIR);
|
|
320
|
+
let issueCount = 0;
|
|
321
|
+
let totalSize = 0;
|
|
322
|
+
let largestFile = { path: "", size: 0 };
|
|
323
|
+
for (const file of files) {
|
|
324
|
+
try {
|
|
325
|
+
const stat = fs.statSync(file);
|
|
326
|
+
totalSize += stat.size;
|
|
327
|
+
if (stat.size > largestFile.size) {
|
|
328
|
+
largestFile = { path: file, size: stat.size };
|
|
329
|
+
}
|
|
330
|
+
const scanResult = scanFile(file);
|
|
331
|
+
issueCount += scanResult.issues.length;
|
|
332
|
+
}
|
|
333
|
+
catch {
|
|
334
|
+
// Skip
|
|
335
|
+
}
|
|
336
|
+
}
|
|
337
|
+
const status = issueCount === 0 ? "\x1b[32m✓ Healthy\x1b[0m" : "\x1b[33m⚠ Issues Found\x1b[0m";
|
|
338
|
+
console.log(`Health Check: ${status}\n`);
|
|
339
|
+
console.log(`Conversations: ${files.length}`);
|
|
340
|
+
console.log(`Total size: ${formatBytes(totalSize)}`);
|
|
341
|
+
console.log(`Backups: ${backups.length}`);
|
|
342
|
+
console.log(`Oversized images: ${issueCount}`);
|
|
343
|
+
if (largestFile.path) {
|
|
344
|
+
console.log(`\nLargest: ${path.relative(PROJECTS_DIR, largestFile.path)}`);
|
|
345
|
+
console.log(` Size: ${formatBytes(largestFile.size)}`);
|
|
346
|
+
}
|
|
347
|
+
if (issueCount > 0) {
|
|
348
|
+
console.log(`\n\x1b[33mRecommendation: Run 'mcp-claude-image-fixer fix' to fix ${issueCount} issue(s)\x1b[0m`);
|
|
349
|
+
}
|
|
350
|
+
}
|
|
351
|
+
async function main() {
|
|
352
|
+
const args = parseArgs(process.argv.slice(2));
|
|
353
|
+
if (!args.command) {
|
|
354
|
+
printHelp();
|
|
355
|
+
process.exit(0);
|
|
356
|
+
}
|
|
357
|
+
switch (args.command) {
|
|
358
|
+
case "scan":
|
|
359
|
+
await cmdScan(args.file);
|
|
360
|
+
break;
|
|
361
|
+
case "fix":
|
|
362
|
+
await cmdFix(args.file, args.noBackup);
|
|
363
|
+
break;
|
|
364
|
+
case "stats":
|
|
365
|
+
await cmdStats(args.limit, args.sort);
|
|
366
|
+
break;
|
|
367
|
+
case "backups":
|
|
368
|
+
await cmdBackups();
|
|
369
|
+
break;
|
|
370
|
+
case "restore":
|
|
371
|
+
await cmdRestore(args.file);
|
|
372
|
+
break;
|
|
373
|
+
case "cleanup":
|
|
374
|
+
await cmdCleanup(args.days, args.dryRun);
|
|
375
|
+
break;
|
|
376
|
+
case "health":
|
|
377
|
+
await cmdHealth();
|
|
378
|
+
break;
|
|
379
|
+
default:
|
|
380
|
+
console.error(`Unknown command: ${args.command}`);
|
|
381
|
+
printHelp();
|
|
382
|
+
process.exit(1);
|
|
383
|
+
}
|
|
384
|
+
}
|
|
385
|
+
main().catch((err) => {
|
|
386
|
+
console.error("Error:", err.message);
|
|
387
|
+
process.exit(1);
|
|
388
|
+
});
|
|
389
|
+
//# sourceMappingURL=cli.js.map
|
package/dist/cli.js.map
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"cli.js","sourceRoot":"","sources":["../src/cli.ts"],"names":[],"mappings":"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"}
|
package/dist/index.d.ts
ADDED
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
#!/usr/bin/env node
|
|
2
|
+
/**
|
|
3
|
+
* MCP Server: Claude Code Image Fixer
|
|
4
|
+
* Fixes the "image dimensions exceed max allowed size" error that poisons conversation context.
|
|
5
|
+
* See: https://github.com/anthropics/claude-code/issues/2939
|
|
6
|
+
*/
|
|
7
|
+
export {};
|
|
8
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";AACA;;;;GAIG"}
|