file-organizer-mcp 3.1.4 → 3.1.5
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/ARCHITECTURE.md +43 -24
- package/CHANGELOG.md +34 -0
- package/README.md +36 -4
- package/dist/config.d.ts +2 -0
- package/dist/config.d.ts.map +1 -1
- package/dist/config.js +44 -19
- package/dist/config.js.map +1 -1
- package/dist/constants.d.ts.map +1 -1
- package/dist/constants.js +14 -1
- package/dist/constants.js.map +1 -1
- package/dist/errors.d.ts.map +1 -1
- package/dist/errors.js +1 -1
- package/dist/errors.js.map +1 -1
- package/dist/index.js +106 -100
- package/dist/index.js.map +1 -1
- package/dist/schemas/common.schemas.js.map +1 -1
- package/dist/schemas/organize.schemas.js.map +1 -1
- package/dist/schemas/rename.schemas.d.ts.map +1 -1
- package/dist/schemas/rename.schemas.js +9 -1
- package/dist/schemas/rename.schemas.js.map +1 -1
- package/dist/schemas/scan.schemas.js.map +1 -1
- package/dist/schemas/security.schemas.d.ts.map +1 -1
- package/dist/schemas/security.schemas.js.map +1 -1
- package/dist/server.js +16 -5
- package/dist/server.js.map +1 -1
- package/dist/services/auto-organize.service.d.ts +41 -4
- package/dist/services/auto-organize.service.d.ts.map +1 -1
- package/dist/services/auto-organize.service.js +174 -10
- package/dist/services/auto-organize.service.js.map +1 -1
- package/dist/services/categorizer.service.d.ts.map +1 -1
- package/dist/services/categorizer.service.js +11 -6
- package/dist/services/categorizer.service.js.map +1 -1
- package/dist/services/duplicate-finder.service.d.ts.map +1 -1
- package/dist/services/duplicate-finder.service.js +48 -48
- package/dist/services/duplicate-finder.service.js.map +1 -1
- package/dist/services/file-scanner.service.d.ts +23 -0
- package/dist/services/file-scanner.service.d.ts.map +1 -1
- package/dist/services/file-scanner.service.js +56 -14
- package/dist/services/file-scanner.service.js.map +1 -1
- package/dist/services/hash-calculator.service.d.ts.map +1 -1
- package/dist/services/hash-calculator.service.js +8 -3
- package/dist/services/hash-calculator.service.js.map +1 -1
- package/dist/services/index.d.ts +2 -1
- package/dist/services/index.d.ts.map +1 -1
- package/dist/services/index.js +2 -1
- package/dist/services/index.js.map +1 -1
- package/dist/services/metadata.service.d.ts.map +1 -1
- package/dist/services/metadata.service.js +3 -3
- package/dist/services/metadata.service.js.map +1 -1
- package/dist/services/organizer.service.d.ts +16 -0
- package/dist/services/organizer.service.d.ts.map +1 -1
- package/dist/services/organizer.service.js +70 -39
- package/dist/services/organizer.service.js.map +1 -1
- package/dist/services/path-validator.service.d.ts +14 -0
- package/dist/services/path-validator.service.d.ts.map +1 -1
- package/dist/services/path-validator.service.js +25 -27
- package/dist/services/path-validator.service.js.map +1 -1
- package/dist/services/renaming.service.d.ts.map +1 -1
- package/dist/services/renaming.service.js +23 -17
- package/dist/services/renaming.service.js.map +1 -1
- package/dist/services/rollback.service.d.ts +6 -0
- package/dist/services/rollback.service.d.ts.map +1 -1
- package/dist/services/rollback.service.js +98 -31
- package/dist/services/rollback.service.js.map +1 -1
- package/dist/services/scheduler-state.service.d.ts +130 -0
- package/dist/services/scheduler-state.service.d.ts.map +1 -0
- package/dist/services/scheduler-state.service.js +315 -0
- package/dist/services/scheduler-state.service.js.map +1 -0
- package/dist/services/security/rate-limiter.service.d.ts.map +1 -1
- package/dist/services/security/rate-limiter.service.js +2 -2
- package/dist/services/security/rate-limiter.service.js.map +1 -1
- package/dist/services/streaming-scanner.service.d.ts.map +1 -1
- package/dist/services/streaming-scanner.service.js +4 -4
- package/dist/services/streaming-scanner.service.js.map +1 -1
- package/dist/tests/test-dryrun.js +3 -3
- package/dist/tests/test-dryrun.js.map +1 -1
- package/dist/tests/test-duplicate-scoring.js +6 -6
- package/dist/tests/test-duplicate-scoring.js.map +1 -1
- package/dist/tests/test-edge-cases.js +2 -2
- package/dist/tests/test-edge-cases.js.map +1 -1
- package/dist/tests/test-filename-conflict.js +8 -6
- package/dist/tests/test-filename-conflict.js.map +1 -1
- package/dist/tests/test-overwrite-bug.js +6 -4
- package/dist/tests/test-overwrite-bug.js.map +1 -1
- package/dist/tests/test-pagination.js.map +1 -1
- package/dist/tests/test-phase1.js.map +1 -1
- package/dist/tests/test-phase3-advanced.js +3 -3
- package/dist/tests/test-phase3-advanced.js.map +1 -1
- package/dist/tests/test-phase3.js +11 -8
- package/dist/tests/test-phase3.js.map +1 -1
- package/dist/tests/test-rollback-fix.js +11 -7
- package/dist/tests/test-rollback-fix.js.map +1 -1
- package/dist/tests/test-security-enhanced.js.map +1 -1
- package/dist/tests/test-security.js +2 -1
- package/dist/tests/test-security.js.map +1 -1
- package/dist/tools/duplicate-management.d.ts.map +1 -1
- package/dist/tools/duplicate-management.js +54 -35
- package/dist/tools/duplicate-management.js.map +1 -1
- package/dist/tools/file-analysis.d.ts.map +1 -1
- package/dist/tools/file-analysis.js +10 -4
- package/dist/tools/file-analysis.js.map +1 -1
- package/dist/tools/file-categorization.d.ts.map +1 -1
- package/dist/tools/file-categorization.js +14 -5
- package/dist/tools/file-categorization.js.map +1 -1
- package/dist/tools/file-duplicates.d.ts.map +1 -1
- package/dist/tools/file-duplicates.js +10 -8
- package/dist/tools/file-duplicates.js.map +1 -1
- package/dist/tools/file-listing.d.ts.map +1 -1
- package/dist/tools/file-listing.js +9 -7
- package/dist/tools/file-listing.js.map +1 -1
- package/dist/tools/file-management.d.ts.map +1 -1
- package/dist/tools/file-management.js +22 -16
- package/dist/tools/file-management.js.map +1 -1
- package/dist/tools/file-organization.d.ts.map +1 -1
- package/dist/tools/file-organization.js +22 -15
- package/dist/tools/file-organization.js.map +1 -1
- package/dist/tools/file-renaming.d.ts.map +1 -1
- package/dist/tools/file-renaming.js +21 -12
- package/dist/tools/file-renaming.js.map +1 -1
- package/dist/tools/file-scanning.d.ts.map +1 -1
- package/dist/tools/file-scanning.js +20 -10
- package/dist/tools/file-scanning.js.map +1 -1
- package/dist/tools/index.d.ts +6 -6
- package/dist/tools/index.d.ts.map +1 -1
- package/dist/tools/index.js +8 -8
- package/dist/tools/index.js.map +1 -1
- package/dist/tools/metadata-inspection.d.ts.map +1 -1
- package/dist/tools/metadata-inspection.js +4 -2
- package/dist/tools/metadata-inspection.js.map +1 -1
- package/dist/tools/organization-preview.d.ts.map +1 -1
- package/dist/tools/organization-preview.js +25 -18
- package/dist/tools/organization-preview.js.map +1 -1
- package/dist/tools/rollback.d.ts.map +1 -1
- package/dist/tools/rollback.js +17 -12
- package/dist/tools/rollback.js.map +1 -1
- package/dist/tools/watch.tool.d.ts.map +1 -1
- package/dist/tools/watch.tool.js +62 -49
- package/dist/tools/watch.tool.js.map +1 -1
- package/dist/tui/client-detector.d.ts.map +1 -1
- package/dist/tui/client-detector.js +13 -42
- package/dist/tui/client-detector.js.map +1 -1
- package/dist/tui/setup-wizard.d.ts.map +1 -1
- package/dist/tui/setup-wizard.js +10 -10
- package/dist/tui/setup-wizard.js.map +1 -1
- package/dist/types.d.ts.map +1 -1
- package/dist/types.js.map +1 -1
- package/dist/utils/cron-utils.d.ts +44 -0
- package/dist/utils/cron-utils.d.ts.map +1 -0
- package/dist/utils/cron-utils.js +301 -0
- package/dist/utils/cron-utils.js.map +1 -0
- package/dist/utils/error-handler.js +10 -10
- package/dist/utils/error-handler.js.map +1 -1
- package/dist/utils/file-utils.d.ts.map +1 -1
- package/dist/utils/file-utils.js.map +1 -1
- package/dist/utils/formatters.js.map +1 -1
- package/dist/utils/index.d.ts +2 -1
- package/dist/utils/index.d.ts.map +1 -1
- package/dist/utils/index.js +2 -1
- package/dist/utils/index.js.map +1 -1
- package/dist/utils/logger.d.ts.map +1 -1
- package/dist/utils/logger.js +7 -5
- package/dist/utils/logger.js.map +1 -1
- package/dist/utils/path-security.d.ts.map +1 -1
- package/dist/utils/path-security.js.map +1 -1
- package/package.json +111 -98
package/ARCHITECTURE.md
CHANGED
|
@@ -83,26 +83,43 @@ Validated Path ✅
|
|
|
83
83
|
|
|
84
84
|
**Implementation:** [`src/services/path-validator.service.ts`](file:///c:/Users/NewAdmin/Desktop/File-Organizer-MCP/src/services/path-validator.service.ts)
|
|
85
85
|
|
|
86
|
-
### Race Condition Mitigation (TOCTOU Protection)
|
|
86
|
+
### Race Condition Mitigation (TOCTOU Protection) - v3.1.4 Updates
|
|
87
87
|
|
|
88
88
|
**Problem:** Time-of-Check-Time-of-Use vulnerabilities can occur when a file is checked, then used later, allowing an attacker to swap the file between operations.
|
|
89
89
|
|
|
90
|
-
**
|
|
90
|
+
**v3.1.4 TOCTOU Fixes and Race Condition Prevention:**
|
|
91
91
|
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
|
|
92
|
+
1. **File Descriptor Validation**
|
|
93
|
+
- Open files with `O_NOFOLLOW` flag to prevent symlink attacks
|
|
94
|
+
- Use file descriptors directly rather than path strings after initial validation
|
|
95
|
+
- Release file handles immediately after use to minimize attack window
|
|
96
|
+
|
|
97
|
+
2. **Atomic File Operations**
|
|
98
|
+
- Use `COPYFILE_EXCL` flag for atomic copy operations (fails if destination exists)
|
|
99
|
+
- Use `O_EXCL` flag when creating files to prevent race conditions
|
|
100
|
+
- Utilize `rename()` for atomic moves within the same filesystem
|
|
101
|
+
|
|
102
|
+
3. **Retry Logic with Jitter**
|
|
103
|
+
- Implement exponential backoff with random jitter for retry operations
|
|
104
|
+
- Maximum 3 retries with increasing delays (10ms, 50ms, 100ms)
|
|
105
|
+
- Fail fast after retries to prevent denial-of-service
|
|
106
|
+
|
|
107
|
+
4. **Safe Overwrite Pattern**
|
|
108
|
+
- Write to temporary file in target directory first
|
|
109
|
+
- Sync file to disk before atomic rename
|
|
110
|
+
- Move existing file to backup before replacing
|
|
111
|
+
|
|
112
|
+
```typescript
|
|
113
|
+
// Safe overwrite with atomic rename
|
|
114
|
+
const tempPath = path.join(targetDir, `.tmp_${Date.now()}_${basename}`);
|
|
115
|
+
await fs.writeFile(tempPath, content);
|
|
116
|
+
await fs.rename(tempPath, targetPath); // Atomic on same filesystem
|
|
117
|
+
```
|
|
118
|
+
|
|
119
|
+
5. **Verification After Operations**
|
|
120
|
+
- Re-validate file stats after critical operations
|
|
121
|
+
- Verify file hash matches expected value after write
|
|
122
|
+
- Check file permissions haven't changed unexpectedly
|
|
106
123
|
|
|
107
124
|
**Limitations:**
|
|
108
125
|
|
|
@@ -183,7 +200,9 @@ export async function handleTool(args: ToolArgs): Promise<ToolResponse> {
|
|
|
183
200
|
|
|
184
201
|
**Responsibility:** Core business logic
|
|
185
202
|
|
|
186
|
-
|
|
203
|
+
**Service Versions:** All services v3.1.3 or v3.1.4
|
|
204
|
+
|
|
205
|
+
#### PathValidatorService (v3.1.3)
|
|
187
206
|
|
|
188
207
|
```typescript
|
|
189
208
|
class PathValidatorService {
|
|
@@ -198,7 +217,7 @@ class PathValidatorService {
|
|
|
198
217
|
}
|
|
199
218
|
```
|
|
200
219
|
|
|
201
|
-
#### OrganizerService
|
|
220
|
+
#### OrganizerService (v3.1.4)
|
|
202
221
|
|
|
203
222
|
```typescript
|
|
204
223
|
class OrganizerService {
|
|
@@ -236,7 +255,7 @@ class HashCalculatorService {
|
|
|
236
255
|
}
|
|
237
256
|
```
|
|
238
257
|
|
|
239
|
-
#### FileScannerService
|
|
258
|
+
#### FileScannerService (v3.1.4)
|
|
240
259
|
|
|
241
260
|
```typescript
|
|
242
261
|
class FileScannerService {
|
|
@@ -263,7 +282,7 @@ class CategorizerService {
|
|
|
263
282
|
}
|
|
264
283
|
```
|
|
265
284
|
|
|
266
|
-
#### RollbackService
|
|
285
|
+
#### RollbackService (v3.1.4)
|
|
267
286
|
|
|
268
287
|
```typescript
|
|
269
288
|
class RollbackService {
|
|
@@ -468,7 +487,7 @@ The server uses a platform-aware configuration system that combines hardcoded de
|
|
|
468
487
|
|
|
469
488
|
```typescript
|
|
470
489
|
export const CONFIG = {
|
|
471
|
-
VERSION: '3.
|
|
490
|
+
VERSION: '3.1.5',
|
|
472
491
|
|
|
473
492
|
security: {
|
|
474
493
|
enablePathValidation: true,
|
|
@@ -553,7 +572,7 @@ type Args = z.infer<typeof ArgsSchema>;
|
|
|
553
572
|
|
|
554
573
|
```json
|
|
555
574
|
{
|
|
556
|
-
"timestamp": "2026-02-
|
|
575
|
+
"timestamp": "2026-02-08T00:00:00.000Z",
|
|
557
576
|
"level": "info",
|
|
558
577
|
"message": "Created rollback manifest: uuid (6 actions)"
|
|
559
578
|
}
|
|
@@ -584,5 +603,5 @@ type Args = z.infer<typeof ArgsSchema>;
|
|
|
584
603
|
|
|
585
604
|
---
|
|
586
605
|
|
|
587
|
-
**Last Updated:** February
|
|
588
|
-
**Version:** 3.
|
|
606
|
+
**Last Updated:** February 8, 2026
|
|
607
|
+
**Version:** 3.1.5
|
package/CHANGELOG.md
CHANGED
|
@@ -1,5 +1,39 @@
|
|
|
1
1
|
# Changelog
|
|
2
2
|
|
|
3
|
+
## [3.1.5] - 2026-02-08
|
|
4
|
+
|
|
5
|
+
### Security & Stability Improvements
|
|
6
|
+
|
|
7
|
+
- Fixed infinite loop in file-scanner.service.ts cycle detection (broken visited Set)
|
|
8
|
+
- Fixed allowSymlinks ignored during path resolution in path-validator.service.ts
|
|
9
|
+
- Fixed Windows root infinite loop in path traversal detection
|
|
10
|
+
- Fixed TOCTOU race conditions across organizer, rollback, and duplicate-finder services
|
|
11
|
+
- Fixed double-count bug in rollback service success/failure tracking
|
|
12
|
+
- Fixed silent overwrites in rollback operations
|
|
13
|
+
- Fixed backup name collisions in duplicate-finder.service.ts
|
|
14
|
+
- Fixed race condition in auto-organize.service.ts runningDirectories management
|
|
15
|
+
- Fixed symlink attack vulnerability in config.ts
|
|
16
|
+
- Fixed path traversal in custom directory loading
|
|
17
|
+
|
|
18
|
+
### Bug Fixes
|
|
19
|
+
|
|
20
|
+
- Fixed file handle leaks across scanner, validator, and finder services
|
|
21
|
+
- Fixed unprotected JSON parsing in rollback manifest handling
|
|
22
|
+
- Fixed incomplete Windows reserved names regex in organizer
|
|
23
|
+
- Fixed silent realpath failures in file scanner
|
|
24
|
+
- Fixed file handle close errors masking stat errors
|
|
25
|
+
|
|
26
|
+
### Testing Improvements
|
|
27
|
+
|
|
28
|
+
- Added comprehensive ESM mocking pattern documentation
|
|
29
|
+
- Fixed 7 test files with proper Jest ESM mocking
|
|
30
|
+
- All 268 tests passing (267 passing, 1 skipped)
|
|
31
|
+
|
|
32
|
+
### Documentation
|
|
33
|
+
|
|
34
|
+
- Added ESM Jest Mocking Pattern to AGENTS.md
|
|
35
|
+
- Updated JSDoc comments across all service files
|
|
36
|
+
|
|
3
37
|
## [3.1.4] - 2026-02-07
|
|
4
38
|
|
|
5
39
|
### 📝 Documentation
|
package/README.md
CHANGED
|
@@ -1,20 +1,44 @@
|
|
|
1
1
|
# <a id="file-organizer-mcp-server"></a>File Organizer MCP Server 🗂️
|
|
2
2
|
|
|
3
|
-
**Version:** 3.1.
|
|
3
|
+
**Version:** 3.1.5 | **MCP Protocol:** 2024-11-05 | **Node:** ≥18.0.0
|
|
4
4
|
|
|
5
|
-
[Quick Start](#quick-start) • [Features](#features) • [Tools](#tools-reference) • [Examples](#example-workflows) • [API](API.md) • [Security](#security-configuration) • [Architecture](ARCHITECTURE.md)
|
|
5
|
+
[Why Us](#why-specialized-tools) • [Quick Start](#quick-start) • [Features](#features) • [Tools](#tools-reference) • [Examples](#example-workflows) • [API](API.md) • [Security](#security-configuration) • [Architecture](ARCHITECTURE.md)
|
|
6
6
|
|
|
7
7
|
---
|
|
8
8
|
|
|
9
|
-
[](https://www.npmjs.com/package/file-organizer-mcp)
|
|
10
10
|
[](https://www.npmjs.com/package/file-organizer-mcp)
|
|
11
11
|
[](https://github.com/kridaydave/File-Organizer-MCP)
|
|
12
12
|
[](https://nodejs.org)
|
|
13
13
|
[](LICENSE)
|
|
14
|
-
[](tests/)
|
|
15
15
|
|
|
16
16
|
> **A powerful, security-hardened Model Context Protocol (MCP) server for intelligent file organization with Claude**
|
|
17
17
|
|
|
18
|
+
---
|
|
19
|
+
|
|
20
|
+
## <a id="why-specialized-tools"></a>Why File Organizer MCP? 🤖
|
|
21
|
+
|
|
22
|
+
Traditional filesystem MCP servers provide primitive tools: `read`, `write`, `make`, `delete`. When you ask an AI to organize a folder using only these tools, the AI must:
|
|
23
|
+
|
|
24
|
+
1. **Think 50 steps ahead** - Planning file moves, renames, and categorizations
|
|
25
|
+
2. **Waste tokens** - Describing every single file operation in detail
|
|
26
|
+
3. **Risk hallucinations** - More steps = more chances for the AI to make mistakes
|
|
27
|
+
4. **Move slowly** - Each primitive operation requires separate reasoning
|
|
28
|
+
|
|
29
|
+
### Enter File Organizer MCP
|
|
30
|
+
|
|
31
|
+
We provide **specialized, high-level tools** that encapsulate complex file operations:
|
|
32
|
+
|
|
33
|
+
| Primitive Approach | File Organizer MCP |
|
|
34
|
+
| ------------------------------------------------------ | ---------------------------------------------------- |
|
|
35
|
+
| `read` → `analyze` → `read` → `write` → `rename` → ... | `organize_files()` - one tool, complete organization |
|
|
36
|
+
| 50+ reasoning steps | 1 reasoning step |
|
|
37
|
+
| High token usage | Minimal tokens |
|
|
38
|
+
| Error-prone | Atomic, rollback-safe operations |
|
|
39
|
+
|
|
40
|
+
**The AI simply decides _what_ to do. We handle _how_ to do it securely.**
|
|
41
|
+
|
|
18
42
|
🎯 [Install from MCP Registry](https://registry.modelcontextprotocol.io/servers/io.github.kridaydave/file-organizer) • 📦 [View on NPM](https://www.npmjs.com/package/file-organizer-mcp) • 🐛 [Report Issues](https://github.com/kridaydave/File-Organizer-MCP/issues)
|
|
19
43
|
|
|
20
44
|
---
|
|
@@ -146,6 +170,14 @@ Run `npx file-organizer-mcp --setup` for guided configuration:
|
|
|
146
170
|
|
|
147
171
|
See [CHANGELOG.md](CHANGELOG.md) for full details.
|
|
148
172
|
|
|
173
|
+
### Recent Fixes (v3.1.5)
|
|
174
|
+
|
|
175
|
+
- Fixed test coverage and added 57 new test cases
|
|
176
|
+
- Improved duplicate detection accuracy
|
|
177
|
+
- Enhanced file categorization logic
|
|
178
|
+
- Better handling of special characters in filenames
|
|
179
|
+
- Improved error messages for permission denied scenarios
|
|
180
|
+
|
|
149
181
|
---
|
|
150
182
|
|
|
151
183
|
## <a id="tools-reference"></a>Tools Reference 🛠️
|
package/dist/config.d.ts
CHANGED
|
@@ -62,6 +62,8 @@ export interface WatchConfig {
|
|
|
62
62
|
min_file_age_minutes?: number;
|
|
63
63
|
/** Maximum files to process per run (0 or undefined = unlimited) */
|
|
64
64
|
max_files_per_run?: number;
|
|
65
|
+
/** Catchup behavior when server starts */
|
|
66
|
+
catchup_mode?: 'smart' | 'always' | 'never';
|
|
65
67
|
};
|
|
66
68
|
}
|
|
67
69
|
/**
|
package/dist/config.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"config.d.ts","sourceRoot":"","sources":["../src/config.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAMH,eAAO,MAAM,MAAM;;;;;;;;;;;;;;CAkBlB,CAAC;AAEF;;GAEG;AACH,MAAM,WAAW,UAAU;IACzB,qDAAqD;IACrD,wBAAwB,CAAC,EAAE,MAAM,EAAE,CAAC;IACpC,mCAAmC;IACnC,gBAAgB,CAAC,EAAE,QAAQ,GAAG,MAAM,GAAG,WAAW,CAAC;IACnD,sCAAsC;IACtC,YAAY,CAAC,EAAE;QACb,OAAO,EAAE,OAAO,CAAC;QACjB,QAAQ,CAAC,EAAE,QAAQ,GAAG,OAAO,GAAG,QAAQ,CAAC;KAC1C,CAAC;IACF,wBAAwB;IACxB,QAAQ,CAAC,EAAE;QACT,YAAY,CAAC,EAAE,MAAM,CAAC;QACtB,SAAS,CAAC,EAAE,OAAO,CAAC;QACpB,oBAAoB,CAAC,EAAE,OAAO,CAAC;QAC/B,sBAAsB,CAAC,EAAE,OAAO,CAAC;KAClC,CAAC;IACF,yBAAyB;IACzB,KAAK,CAAC,EAAE,KAAK,CAAC;QACZ,OAAO,EAAE,MAAM,CAAC;QAChB,WAAW,EAAE,MAAM,CAAC;QACpB,SAAS,CAAC,EAAE,OAAO,CAAC;KACrB,CAAC,CAAC;IACH,sCAAsC;IACtC,SAAS,CAAC,EAAE,WAAW,EAAE,CAAC;CAC3B;AAED;;GAEG;AACH,MAAM,WAAW,WAAW;IAC1B,8BAA8B;IAC9B,SAAS,EAAE,MAAM,CAAC;IAClB,uEAAuE;IACvE,QAAQ,EAAE,MAAM,CAAC;IACjB,wCAAwC;IACxC,KAAK,EAAE;QACL,+BAA+B;QAC/B,aAAa,EAAE,OAAO,CAAC;QACvB,8FAA8F;QAC9F,oBAAoB,CAAC,EAAE,MAAM,CAAC;QAC9B,oEAAoE;QACpE,iBAAiB,CAAC,EAAE,MAAM,CAAC;
|
|
1
|
+
{"version":3,"file":"config.d.ts","sourceRoot":"","sources":["../src/config.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAMH,eAAO,MAAM,MAAM;;;;;;;;;;;;;;CAkBlB,CAAC;AAEF;;GAEG;AACH,MAAM,WAAW,UAAU;IACzB,qDAAqD;IACrD,wBAAwB,CAAC,EAAE,MAAM,EAAE,CAAC;IACpC,mCAAmC;IACnC,gBAAgB,CAAC,EAAE,QAAQ,GAAG,MAAM,GAAG,WAAW,CAAC;IACnD,sCAAsC;IACtC,YAAY,CAAC,EAAE;QACb,OAAO,EAAE,OAAO,CAAC;QACjB,QAAQ,CAAC,EAAE,QAAQ,GAAG,OAAO,GAAG,QAAQ,CAAC;KAC1C,CAAC;IACF,wBAAwB;IACxB,QAAQ,CAAC,EAAE;QACT,YAAY,CAAC,EAAE,MAAM,CAAC;QACtB,SAAS,CAAC,EAAE,OAAO,CAAC;QACpB,oBAAoB,CAAC,EAAE,OAAO,CAAC;QAC/B,sBAAsB,CAAC,EAAE,OAAO,CAAC;KAClC,CAAC;IACF,yBAAyB;IACzB,KAAK,CAAC,EAAE,KAAK,CAAC;QACZ,OAAO,EAAE,MAAM,CAAC;QAChB,WAAW,EAAE,MAAM,CAAC;QACpB,SAAS,CAAC,EAAE,OAAO,CAAC;KACrB,CAAC,CAAC;IACH,sCAAsC;IACtC,SAAS,CAAC,EAAE,WAAW,EAAE,CAAC;CAC3B;AAED;;GAEG;AACH,MAAM,WAAW,WAAW;IAC1B,8BAA8B;IAC9B,SAAS,EAAE,MAAM,CAAC;IAClB,uEAAuE;IACvE,QAAQ,EAAE,MAAM,CAAC;IACjB,wCAAwC;IACxC,KAAK,EAAE;QACL,+BAA+B;QAC/B,aAAa,EAAE,OAAO,CAAC;QACvB,8FAA8F;QAC9F,oBAAoB,CAAC,EAAE,MAAM,CAAC;QAC9B,oEAAoE;QACpE,iBAAiB,CAAC,EAAE,MAAM,CAAC;QAC3B,0CAA0C;QAC1C,YAAY,CAAC,EAAE,OAAO,GAAG,QAAQ,GAAG,OAAO,CAAC;KAC7C,CAAC;CACH;AAiGD;;GAEG;AACH,wBAAgB,cAAc,IAAI,UAAU,CAqD3C;AAED;;;GAGG;AACH,wBAAgB,UAAU,CAAC,MAAM,EAAE,OAAO,CAAC,UAAU,CAAC,GAAG,IAAI,CAE5D;AAED;;GAEG;AACH,wBAAgB,gBAAgB,CAAC,OAAO,EAAE,OAAO,CAAC,UAAU,CAAC,GAAG,IAAI,CAqBnE;AAsDD;;GAEG;AACH,wBAAgB,iBAAiB,IAAI,MAAM,CAe1C;AA4DD;;GAEG;AACH,wBAAgB,oBAAoB,IAAI,IAAI,CA8B3C;AAMD,eAAO,MAAM,aAAa,QAAoB,CAAC;AAC/C,eAAO,MAAM,SAAS,QAAuC,CAAC;AAC9D,eAAO,MAAM,SAAS,QAA+B,CAAC;AAEtD,eAAO,MAAM,gBAAgB,2DAA4D,CAAC;AAE1F,eAAO,MAAM,aAAa;;CAEhB,CAAC"}
|
package/dist/config.js
CHANGED
|
@@ -71,10 +71,11 @@ function getDefaultAllowedDirs() {
|
|
|
71
71
|
commonDirs.push(projectDir);
|
|
72
72
|
}
|
|
73
73
|
}
|
|
74
|
-
// Only return directories that actually exist
|
|
74
|
+
// Only return directories that actually exist and are not symlinks
|
|
75
75
|
return commonDirs.filter((dir) => {
|
|
76
76
|
try {
|
|
77
|
-
|
|
77
|
+
const stats = fs.lstatSync(dir);
|
|
78
|
+
return stats.isDirectory() && !stats.isSymbolicLink();
|
|
78
79
|
}
|
|
79
80
|
catch {
|
|
80
81
|
return false;
|
|
@@ -131,21 +132,21 @@ export function loadUserConfig() {
|
|
|
131
132
|
const errorMessage = error.message;
|
|
132
133
|
// Handle specific JSON parse errors
|
|
133
134
|
if (errorMessage.includes('JSON') || errorMessage.includes('Unexpected token')) {
|
|
134
|
-
console.error(`
|
|
135
|
-
⚠️ CONFIG FILE CORRUPTED ⚠️
|
|
136
|
-
|
|
137
|
-
The config file at:
|
|
138
|
-
${configPath}
|
|
139
|
-
|
|
140
|
-
appears to be corrupted or contains invalid JSON.
|
|
141
|
-
Error: ${errorMessage}
|
|
142
|
-
|
|
143
|
-
To fix this:
|
|
144
|
-
1. Backup the corrupted file: cp "${configPath}" "${configPath}.backup"
|
|
145
|
-
2. Delete the corrupted file: rm "${configPath}"
|
|
146
|
-
3. Re-run the setup wizard: npx file-organizer-mcp --setup
|
|
147
|
-
|
|
148
|
-
Your file organization settings will be reset, but your actual files are safe.
|
|
135
|
+
console.error(`
|
|
136
|
+
⚠️ CONFIG FILE CORRUPTED ⚠️
|
|
137
|
+
|
|
138
|
+
The config file at:
|
|
139
|
+
${configPath}
|
|
140
|
+
|
|
141
|
+
appears to be corrupted or contains invalid JSON.
|
|
142
|
+
Error: ${errorMessage}
|
|
143
|
+
|
|
144
|
+
To fix this:
|
|
145
|
+
1. Backup the corrupted file: cp "${configPath}" "${configPath}.backup"
|
|
146
|
+
2. Delete the corrupted file: rm "${configPath}"
|
|
147
|
+
3. Re-run the setup wizard: npx file-organizer-mcp --setup
|
|
148
|
+
|
|
149
|
+
Your file organization settings will be reset, but your actual files are safe.
|
|
149
150
|
`.trim());
|
|
150
151
|
}
|
|
151
152
|
else {
|
|
@@ -187,10 +188,34 @@ function loadCustomAllowedDirs() {
|
|
|
187
188
|
try {
|
|
188
189
|
const config = loadUserConfig();
|
|
189
190
|
if (Array.isArray(config.customAllowedDirectories)) {
|
|
190
|
-
// Validate that custom directories exist
|
|
191
|
+
// Validate that custom directories exist, are not symlinks, and block path traversal
|
|
191
192
|
return config.customAllowedDirectories.filter((dir) => {
|
|
192
193
|
try {
|
|
193
|
-
|
|
194
|
+
// First check if path exists and get stats (before any resolution)
|
|
195
|
+
const stats = fs.lstatSync(dir);
|
|
196
|
+
// Reject symlinks immediately
|
|
197
|
+
if (stats.isSymbolicLink()) {
|
|
198
|
+
console.error(`Warning: Custom directory blocked (symlink): ${dir}`);
|
|
199
|
+
return false;
|
|
200
|
+
}
|
|
201
|
+
// Only accept directories
|
|
202
|
+
if (!stats.isDirectory()) {
|
|
203
|
+
return false;
|
|
204
|
+
}
|
|
205
|
+
// Resolve to absolute path to check for traversal attempts
|
|
206
|
+
const resolvedDir = path.resolve(dir);
|
|
207
|
+
const home = os.homedir();
|
|
208
|
+
// Block path traversal outside of home directory
|
|
209
|
+
if (!resolvedDir.startsWith(home)) {
|
|
210
|
+
console.error(`Warning: Custom directory blocked (outside home): ${dir}`);
|
|
211
|
+
return false;
|
|
212
|
+
}
|
|
213
|
+
// Block relative path traversal patterns
|
|
214
|
+
if (dir.includes('..') || dir.includes('~')) {
|
|
215
|
+
console.error(`Warning: Custom directory blocked (path traversal): ${dir}`);
|
|
216
|
+
return false;
|
|
217
|
+
}
|
|
218
|
+
return true;
|
|
194
219
|
}
|
|
195
220
|
catch {
|
|
196
221
|
console.error(`Warning: Custom directory does not exist: ${dir}`);
|
package/dist/config.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"config.js","sourceRoot":"","sources":["../src/config.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,EAAE,MAAM,IAAI,CAAC;AACpB,OAAO,IAAI,MAAM,MAAM,CAAC;AACxB,OAAO,EAAE,MAAM,IAAI,CAAC;AAEpB,MAAM,CAAC,MAAM,MAAM,GAAG;IACpB,OAAO,EAAE,OAAO;IAEhB,oBAAoB;IACpB,QAAQ,EAAE;QACR,oBAAoB,EAAE,IAAI;QAC1B,sBAAsB,EAAE,IAAI;QAC5B,SAAS,EAAE,IAAI;QACf,YAAY,EAAE,EAAE;QAChB,oBAAoB,EAAE,KAAK;KAC5B;IAED,sBAAsB;IACtB,KAAK,EAAE;QACL,cAAc,EAAE,qBAAqB,EAAE;QACvC,aAAa,EAAE,qBAAqB,EAAE;QACtC,aAAa,EAAE,wBAAwB,EAAE;KAC1C;CACF,CAAC;
|
|
1
|
+
{"version":3,"file":"config.js","sourceRoot":"","sources":["../src/config.ts"],"names":[],"mappings":"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"}
|
package/dist/constants.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"constants.d.ts","sourceRoot":"","sources":["../src/constants.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,YAAY,CAAC;AAE/C;;GAEG;AACH,eAAO,MAAM,UAAU,EAAE,MAAM,CAAC,YAAY,EAAE,SAAS,MAAM,EAAE,
|
|
1
|
+
{"version":3,"file":"constants.d.ts","sourceRoot":"","sources":["../src/constants.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,YAAY,CAAC;AAE/C;;GAEG;AACH,eAAO,MAAM,UAAU,EAAE,MAAM,CAAC,YAAY,EAAE,SAAS,MAAM,EAAE,CA2BrD,CAAC;AAEX;;GAEG;AACH,eAAO,MAAM,cAAc,EAAE,SAAS,YAAY,EAA8C,CAAC;AAEjG;;;;GAIG;AACH,wBAAgB,WAAW,CAAC,SAAS,EAAE,MAAM,GAAG,YAAY,CAQ3D"}
|
package/dist/constants.js
CHANGED
|
@@ -14,7 +14,20 @@ export const CATEGORIES = {
|
|
|
14
14
|
Images: ['.jpg', '.jpeg', '.png', '.gif', '.bmp', '.svg', '.ico', '.webp'],
|
|
15
15
|
Audio: ['.mp3', '.wav', '.flac', '.aac', '.ogg', '.wma', '.m4a'],
|
|
16
16
|
Archives: ['.zip', '.rar', '.7z', '.tar', '.gz', '.bz2', '.xz'],
|
|
17
|
-
Code: [
|
|
17
|
+
Code: [
|
|
18
|
+
'.py',
|
|
19
|
+
'.js',
|
|
20
|
+
'.ts',
|
|
21
|
+
'.java',
|
|
22
|
+
'.cpp',
|
|
23
|
+
'.c',
|
|
24
|
+
'.html',
|
|
25
|
+
'.css',
|
|
26
|
+
'.php',
|
|
27
|
+
'.rb',
|
|
28
|
+
'.go',
|
|
29
|
+
'.json',
|
|
30
|
+
],
|
|
18
31
|
Installers: ['.dmg', '.pkg', '.deb', '.rpm', '.apk'],
|
|
19
32
|
Ebooks: ['.epub', '.mobi', '.azw', '.azw3'],
|
|
20
33
|
Fonts: ['.ttf', '.otf', '.woff', '.woff2'],
|
package/dist/constants.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"constants.js","sourceRoot":"","sources":["../src/constants.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAIH;;GAEG;AACH,MAAM,CAAC,MAAM,UAAU,GAA4C;
|
|
1
|
+
{"version":3,"file":"constants.js","sourceRoot":"","sources":["../src/constants.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAIH;;GAEG;AACH,MAAM,CAAC,MAAM,UAAU,GAA4C;IACjE,WAAW,EAAE,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,KAAK,CAAC;IACpD,MAAM,EAAE,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,CAAC;IACzE,SAAS,EAAE,CAAC,MAAM,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,CAAC;IAC3E,aAAa,EAAE,CAAC,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,MAAM,CAAC;IAChD,YAAY,EAAE,CAAC,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,MAAM,CAAC;IAC/C,MAAM,EAAE,CAAC,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,OAAO,CAAC;IAC1E,KAAK,EAAE,CAAC,MAAM,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC;IAChE,QAAQ,EAAE,CAAC,MAAM,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,KAAK,CAAC;IAC/D,IAAI,EAAE;QACJ,KAAK;QACL,KAAK;QACL,KAAK;QACL,OAAO;QACP,MAAM;QACN,IAAI;QACJ,OAAO;QACP,MAAM;QACN,MAAM;QACN,KAAK;QACL,KAAK;QACL,OAAO;KACR;IACD,UAAU,EAAE,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC;IACpD,MAAM,EAAE,CAAC,OAAO,EAAE,OAAO,EAAE,MAAM,EAAE,OAAO,CAAC;IAC3C,KAAK,EAAE,CAAC,MAAM,EAAE,MAAM,EAAE,OAAO,EAAE,QAAQ,CAAC;IAC1C,MAAM,EAAE,EAAE;CACF,CAAC;AAEX;;GAEG;AACH,MAAM,CAAC,MAAM,cAAc,GAA4B,MAAM,CAAC,IAAI,CAAC,UAAU,CAAmB,CAAC;AAEjG;;;;GAIG;AACH,MAAM,UAAU,WAAW,CAAC,SAAiB;IAC3C,MAAM,GAAG,GAAG,SAAS,CAAC,WAAW,EAAE,CAAC;IACpC,KAAK,MAAM,CAAC,QAAQ,EAAE,UAAU,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,UAAU,CAAC,EAAE,CAAC;QAChE,IAAI,UAAU,CAAC,QAAQ,CAAC,GAAG,CAAC,EAAE,CAAC;YAC7B,OAAO,QAAwB,CAAC;QAClC,CAAC;IACH,CAAC;IACD,OAAO,QAAQ,CAAC;AAClB,CAAC"}
|
package/dist/errors.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"errors.d.ts","sourceRoot":"","sources":["../src/errors.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,YAAY,CAAC;AAE1C,qBAAa,kBAAmB,SAAQ,KAAK;
|
|
1
|
+
{"version":3,"file":"errors.d.ts","sourceRoot":"","sources":["../src/errors.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,YAAY,CAAC;AAE1C,qBAAa,kBAAmB,SAAQ,KAAK;IAGlC,IAAI,EAAE,MAAM;IACZ,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC;IAC7B,UAAU,CAAC,EAAE,MAAM;gBAH1B,OAAO,EAAE,MAAM,EACR,IAAI,EAAE,MAAM,EACZ,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,YAAA,EAC7B,UAAU,CAAC,EAAE,MAAM,YAAA;IAM5B,UAAU,IAAI,YAAY;CAgB3B"}
|
package/dist/errors.js
CHANGED
package/dist/errors.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"errors.js","sourceRoot":"","sources":["../src/errors.ts"],"names":[],"mappings":"AAEA,MAAM,OAAO,kBAAmB,SAAQ,KAAK;
|
|
1
|
+
{"version":3,"file":"errors.js","sourceRoot":"","sources":["../src/errors.ts"],"names":[],"mappings":"AAEA,MAAM,OAAO,kBAAmB,SAAQ,KAAK;IAGlC;IACA;IACA;IAJT,YACE,OAAe,EACR,IAAY,EACZ,OAA6B,EAC7B,UAAmB;QAE1B,KAAK,CAAC,OAAO,CAAC,CAAC;QAJR,SAAI,GAAJ,IAAI,CAAQ;QACZ,YAAO,GAAP,OAAO,CAAsB;QAC7B,eAAU,GAAV,UAAU,CAAS;QAG1B,IAAI,CAAC,IAAI,GAAG,oBAAoB,CAAC;IACnC,CAAC;IAED,UAAU;QACR,IAAI,IAAI,GAAG,YAAY,IAAI,CAAC,OAAO,EAAE,CAAC;QAEtC,IAAI,IAAI,CAAC,OAAO,EAAE,CAAC;YACjB,IAAI,IAAI,iBAAiB,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,OAAO,EAAE,IAAI,EAAE,CAAC,CAAC,EAAE,CAAC;QACnE,CAAC;QAED,IAAI,IAAI,CAAC,UAAU,EAAE,CAAC;YACpB,IAAI,IAAI,sBAAsB,IAAI,CAAC,UAAU,EAAE,CAAC;QAClD,CAAC;QAED,OAAO;YACL,OAAO,EAAE,IAAI;YACb,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,CAAC;SAClC,CAAC;IACJ,CAAC;CACF"}
|