@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/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
@@ -0,0 +1 @@
1
+ {"version":3,"file":"cli.js","sourceRoot":"","sources":["../src/cli.ts"],"names":[],"mappings":"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"}
@@ -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"}