@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.
@@ -0,0 +1,369 @@
1
+ import * as fs from "fs";
2
+ import * as path from "path";
3
+ export const MIN_PROBLEMATIC_BASE64_SIZE = 100000;
4
+ export function findAllJsonlFiles(dir) {
5
+ const files = [];
6
+ function walkDir(currentDir) {
7
+ try {
8
+ const entries = fs.readdirSync(currentDir, { withFileTypes: true });
9
+ for (const entry of entries) {
10
+ const fullPath = path.join(currentDir, entry.name);
11
+ if (entry.isDirectory()) {
12
+ walkDir(fullPath);
13
+ }
14
+ else if (entry.isFile() &&
15
+ entry.name.endsWith(".jsonl") &&
16
+ !entry.name.includes(".backup.")) {
17
+ files.push(fullPath);
18
+ }
19
+ }
20
+ }
21
+ catch {
22
+ // Skip directories we can't read
23
+ }
24
+ }
25
+ walkDir(dir);
26
+ return files;
27
+ }
28
+ export function findBackupFiles(dir) {
29
+ const backups = [];
30
+ function walkDir(currentDir) {
31
+ try {
32
+ const entries = fs.readdirSync(currentDir, { withFileTypes: true });
33
+ for (const entry of entries) {
34
+ const fullPath = path.join(currentDir, entry.name);
35
+ if (entry.isDirectory()) {
36
+ walkDir(fullPath);
37
+ }
38
+ else if (entry.isFile() && entry.name.includes(".backup.")) {
39
+ backups.push(fullPath);
40
+ }
41
+ }
42
+ }
43
+ catch {
44
+ // Skip directories we can't read
45
+ }
46
+ }
47
+ walkDir(dir);
48
+ return backups;
49
+ }
50
+ export function checkContentForImages(content) {
51
+ if (!Array.isArray(content)) {
52
+ return { hasProblems: false, indices: [], totalSize: 0 };
53
+ }
54
+ const problematicIndices = [];
55
+ let totalSize = 0;
56
+ for (let i = 0; i < content.length; i++) {
57
+ const item = content[i];
58
+ if (typeof item !== "object" || item === null)
59
+ continue;
60
+ const itemObj = item;
61
+ if (itemObj.type === "image") {
62
+ const source = itemObj.source;
63
+ if (source?.type === "base64") {
64
+ const base64Data = source.data;
65
+ if (base64Data) {
66
+ const size = base64Data.length;
67
+ totalSize += size;
68
+ if (size > MIN_PROBLEMATIC_BASE64_SIZE) {
69
+ problematicIndices.push(i);
70
+ }
71
+ }
72
+ }
73
+ }
74
+ else if (itemObj.type === "tool_result") {
75
+ const innerContent = itemObj.content;
76
+ if (Array.isArray(innerContent)) {
77
+ for (let j = 0; j < innerContent.length; j++) {
78
+ const innerItem = innerContent[j];
79
+ if (typeof innerItem === "object" && innerItem !== null) {
80
+ const innerObj = innerItem;
81
+ if (innerObj.type === "image") {
82
+ const source = innerObj.source;
83
+ if (source?.type === "base64") {
84
+ const base64Data = source.data;
85
+ if (base64Data) {
86
+ const size = base64Data.length;
87
+ totalSize += size;
88
+ if (size > MIN_PROBLEMATIC_BASE64_SIZE) {
89
+ problematicIndices.push([i, j]);
90
+ }
91
+ }
92
+ }
93
+ }
94
+ }
95
+ }
96
+ }
97
+ }
98
+ }
99
+ return { hasProblems: problematicIndices.length > 0, indices: problematicIndices, totalSize };
100
+ }
101
+ export function fixImageInContent(content, indices) {
102
+ const result = JSON.parse(JSON.stringify(content));
103
+ for (const idx of indices) {
104
+ if (Array.isArray(idx)) {
105
+ const [i, j] = idx;
106
+ const item = result[i];
107
+ if (Array.isArray(item.content)) {
108
+ item.content[j] = {
109
+ type: "text",
110
+ text: "[Image removed - exceeded size limit]",
111
+ };
112
+ }
113
+ }
114
+ else {
115
+ result[idx] = {
116
+ type: "text",
117
+ text: "[Image removed - exceeded size limit]",
118
+ };
119
+ }
120
+ }
121
+ return result;
122
+ }
123
+ export function scanFile(filePath) {
124
+ const issues = [];
125
+ let content;
126
+ try {
127
+ content = fs.readFileSync(filePath, "utf-8");
128
+ }
129
+ catch (e) {
130
+ throw new Error(`Cannot read file: ${e}`);
131
+ }
132
+ const lines = content.split("\n");
133
+ for (let lineNum = 0; lineNum < lines.length; lineNum++) {
134
+ const line = lines[lineNum];
135
+ if (!line.trim())
136
+ continue;
137
+ let data;
138
+ try {
139
+ data = JSON.parse(line);
140
+ }
141
+ catch {
142
+ continue;
143
+ }
144
+ const message = data.message;
145
+ const messageContent = message?.content;
146
+ if (messageContent) {
147
+ const { hasProblems, indices, totalSize } = checkContentForImages(messageContent);
148
+ if (hasProblems) {
149
+ issues.push({
150
+ line: lineNum + 1,
151
+ indices,
152
+ type: "message_content",
153
+ estimatedSize: totalSize,
154
+ });
155
+ }
156
+ }
157
+ if (data.toolUseResult) {
158
+ const toolResult = data.toolUseResult;
159
+ const resultContent = toolResult.content;
160
+ const { hasProblems, indices, totalSize } = checkContentForImages(resultContent);
161
+ if (hasProblems) {
162
+ const existingIssue = issues.find((i) => i.line === lineNum + 1);
163
+ if (!existingIssue) {
164
+ issues.push({
165
+ line: lineNum + 1,
166
+ indices,
167
+ type: "toolUseResult",
168
+ estimatedSize: totalSize,
169
+ });
170
+ }
171
+ }
172
+ }
173
+ }
174
+ return {
175
+ file: filePath,
176
+ issues,
177
+ totalLines: lines.length,
178
+ scannedAt: new Date(),
179
+ };
180
+ }
181
+ export function fixFile(filePath, createBackup = true) {
182
+ const scanResult = scanFile(filePath);
183
+ if (scanResult.issues.length === 0) {
184
+ return { ...scanResult, fixed: false };
185
+ }
186
+ let content;
187
+ try {
188
+ content = fs.readFileSync(filePath, "utf-8");
189
+ }
190
+ catch (e) {
191
+ return { ...scanResult, fixed: false, error: `Cannot read file: ${e}` };
192
+ }
193
+ const lines = content.split("\n");
194
+ let backupPath;
195
+ if (createBackup) {
196
+ const timestamp = new Date().toISOString().replace(/[:.]/g, "-");
197
+ backupPath = `${filePath}.backup.${timestamp}`;
198
+ try {
199
+ fs.writeFileSync(backupPath, content, "utf-8");
200
+ }
201
+ catch (e) {
202
+ return { ...scanResult, fixed: false, error: `Cannot create backup: ${e}` };
203
+ }
204
+ }
205
+ for (const issue of scanResult.issues) {
206
+ const lineIdx = issue.line - 1;
207
+ const line = lines[lineIdx];
208
+ if (!line)
209
+ continue;
210
+ try {
211
+ const data = JSON.parse(line);
212
+ if (issue.type === "message_content") {
213
+ const message = data.message;
214
+ if (message?.content) {
215
+ message.content = fixImageInContent(message.content, issue.indices);
216
+ }
217
+ }
218
+ if (issue.type === "toolUseResult" || data.toolUseResult) {
219
+ const toolResult = data.toolUseResult;
220
+ if (toolResult?.content) {
221
+ const { indices } = checkContentForImages(toolResult.content);
222
+ if (indices.length > 0) {
223
+ toolResult.content = fixImageInContent(toolResult.content, indices);
224
+ }
225
+ }
226
+ }
227
+ lines[lineIdx] = JSON.stringify(data);
228
+ }
229
+ catch {
230
+ continue;
231
+ }
232
+ }
233
+ try {
234
+ fs.writeFileSync(filePath, lines.join("\n"), "utf-8");
235
+ }
236
+ catch (e) {
237
+ return { ...scanResult, fixed: false, error: `Cannot write file: ${e}`, backupPath };
238
+ }
239
+ return { ...scanResult, fixed: true, backupPath };
240
+ }
241
+ export function getConversationStats(filePath) {
242
+ const stats = {
243
+ file: filePath,
244
+ totalMessages: 0,
245
+ userMessages: 0,
246
+ assistantMessages: 0,
247
+ toolUses: 0,
248
+ imageCount: 0,
249
+ problematicImages: 0,
250
+ fileSizeBytes: 0,
251
+ lastModified: new Date(),
252
+ };
253
+ try {
254
+ const fileStat = fs.statSync(filePath);
255
+ stats.fileSizeBytes = fileStat.size;
256
+ stats.lastModified = fileStat.mtime;
257
+ }
258
+ catch {
259
+ return stats;
260
+ }
261
+ let content;
262
+ try {
263
+ content = fs.readFileSync(filePath, "utf-8");
264
+ }
265
+ catch {
266
+ return stats;
267
+ }
268
+ const lines = content.split("\n");
269
+ for (const line of lines) {
270
+ if (!line.trim())
271
+ continue;
272
+ let data;
273
+ try {
274
+ data = JSON.parse(line);
275
+ }
276
+ catch {
277
+ continue;
278
+ }
279
+ stats.totalMessages++;
280
+ const message = data.message;
281
+ if (message) {
282
+ const role = message.role;
283
+ if (role === "user")
284
+ stats.userMessages++;
285
+ if (role === "assistant")
286
+ stats.assistantMessages++;
287
+ const messageContent = message.content;
288
+ if (Array.isArray(messageContent)) {
289
+ for (const item of messageContent) {
290
+ if (typeof item === "object" && item !== null) {
291
+ const itemObj = item;
292
+ if (itemObj.type === "tool_use")
293
+ stats.toolUses++;
294
+ if (itemObj.type === "image") {
295
+ stats.imageCount++;
296
+ const source = itemObj.source;
297
+ if (source?.type === "base64") {
298
+ const data = source.data;
299
+ if (data && data.length > MIN_PROBLEMATIC_BASE64_SIZE) {
300
+ stats.problematicImages++;
301
+ }
302
+ }
303
+ }
304
+ }
305
+ }
306
+ }
307
+ }
308
+ if (data.toolUseResult) {
309
+ const toolResult = data.toolUseResult;
310
+ const resultContent = toolResult.content;
311
+ if (Array.isArray(resultContent)) {
312
+ for (const item of resultContent) {
313
+ if (typeof item === "object" && item !== null) {
314
+ const itemObj = item;
315
+ if (itemObj.type === "image") {
316
+ stats.imageCount++;
317
+ const source = itemObj.source;
318
+ if (source?.type === "base64") {
319
+ const data = source.data;
320
+ if (data && data.length > MIN_PROBLEMATIC_BASE64_SIZE) {
321
+ stats.problematicImages++;
322
+ }
323
+ }
324
+ }
325
+ }
326
+ }
327
+ }
328
+ }
329
+ }
330
+ return stats;
331
+ }
332
+ export function restoreFromBackup(backupPath) {
333
+ if (!fs.existsSync(backupPath)) {
334
+ return { success: false, originalPath: "", error: "Backup file not found" };
335
+ }
336
+ const match = backupPath.match(/^(.+)\.backup\.\d{4}-\d{2}-\d{2}T/);
337
+ if (!match) {
338
+ return { success: false, originalPath: "", error: "Invalid backup file name format" };
339
+ }
340
+ const originalPath = match[1];
341
+ try {
342
+ fs.copyFileSync(backupPath, originalPath);
343
+ return { success: true, originalPath };
344
+ }
345
+ catch (e) {
346
+ return { success: false, originalPath, error: `Failed to restore: ${e}` };
347
+ }
348
+ }
349
+ export function deleteOldBackups(dir, olderThanDays) {
350
+ const backups = findBackupFiles(dir);
351
+ const cutoffDate = new Date();
352
+ cutoffDate.setDate(cutoffDate.getDate() - olderThanDays);
353
+ const deleted = [];
354
+ const errors = [];
355
+ for (const backup of backups) {
356
+ try {
357
+ const stat = fs.statSync(backup);
358
+ if (stat.mtime < cutoffDate) {
359
+ fs.unlinkSync(backup);
360
+ deleted.push(backup);
361
+ }
362
+ }
363
+ catch (e) {
364
+ errors.push(`${backup}: ${e}`);
365
+ }
366
+ }
367
+ return { deleted, errors };
368
+ }
369
+ //# sourceMappingURL=scanner.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"scanner.js","sourceRoot":"","sources":["../../src/lib/scanner.ts"],"names":[],"mappings":"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"}
package/package.json ADDED
@@ -0,0 +1,63 @@
1
+ {
2
+ "name": "@asifkibria/claude-code-toolkit",
3
+ "version": "1.0.0",
4
+ "description": "MCP server and CLI toolkit for maintaining, optimizing, and troubleshooting Claude Code installations",
5
+ "type": "module",
6
+ "main": "dist/index.js",
7
+ "bin": {
8
+ "claude-code-toolkit": "dist/cli.js",
9
+ "cct": "dist/cli.js",
10
+ "claude-code-toolkit-server": "dist/index.js"
11
+ },
12
+ "scripts": {
13
+ "build": "tsc",
14
+ "start": "node dist/index.js",
15
+ "cli": "node dist/cli.js",
16
+ "dev": "tsc --watch",
17
+ "test": "vitest run",
18
+ "test:watch": "vitest",
19
+ "test:coverage": "vitest run --coverage",
20
+ "prepublishOnly": "npm run build && npm run test"
21
+ },
22
+ "keywords": [
23
+ "claude",
24
+ "claude-code",
25
+ "mcp",
26
+ "model-context-protocol",
27
+ "anthropic",
28
+ "cli",
29
+ "toolkit",
30
+ "maintenance",
31
+ "optimization",
32
+ "troubleshooting",
33
+ "conversation",
34
+ "context"
35
+ ],
36
+ "author": "Asif Kibria",
37
+ "license": "MIT",
38
+ "repository": {
39
+ "type": "git",
40
+ "url": "https://github.com/asifkibria/claude-code-toolkit"
41
+ },
42
+ "bugs": {
43
+ "url": "https://github.com/asifkibria/claude-code-toolkit/issues"
44
+ },
45
+ "homepage": "https://github.com/asifkibria/claude-code-toolkit#readme",
46
+ "engines": {
47
+ "node": ">=18.0.0"
48
+ },
49
+ "files": [
50
+ "dist",
51
+ "README.md",
52
+ "LICENSE",
53
+ "CONTRIBUTING.md"
54
+ ],
55
+ "dependencies": {
56
+ "@modelcontextprotocol/sdk": "^1.0.0"
57
+ },
58
+ "devDependencies": {
59
+ "@types/node": "^20.0.0",
60
+ "typescript": "^5.0.0",
61
+ "vitest": "^1.0.0"
62
+ }
63
+ }