@j0hanz/filesystem-context-mcp 1.1.0 → 1.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/README.md +106 -29
- package/dist/__tests__/lib/errors.test.js +3 -23
- package/dist/__tests__/lib/errors.test.js.map +1 -1
- package/dist/__tests__/lib/file-operations.test.js +34 -0
- package/dist/__tests__/lib/file-operations.test.js.map +1 -1
- package/dist/__tests__/lib/path-validation.test.js +8 -0
- package/dist/__tests__/lib/path-validation.test.js.map +1 -1
- package/dist/__tests__/schemas/validators.test.js +101 -122
- package/dist/__tests__/schemas/validators.test.js.map +1 -1
- package/dist/__tests__/security/filesystem-boundary.test.js +1 -1
- package/dist/__tests__/security/filesystem-boundary.test.js.map +1 -1
- package/dist/config/types.d.ts +1 -85
- package/dist/config/types.d.ts.map +1 -1
- package/dist/config/types.js +0 -2
- package/dist/config/types.js.map +1 -1
- package/dist/index.js +3 -3
- package/dist/index.js.map +1 -1
- package/dist/instructions.md +1 -2
- package/dist/lib/constants.d.ts +3 -1
- package/dist/lib/constants.d.ts.map +1 -1
- package/dist/lib/constants.js +73 -259
- package/dist/lib/constants.js.map +1 -1
- package/dist/lib/errors.d.ts +25 -3
- package/dist/lib/errors.d.ts.map +1 -1
- package/dist/lib/errors.js +4 -94
- package/dist/lib/errors.js.map +1 -1
- package/dist/lib/file-operations/analyze-directory.d.ts +8 -0
- package/dist/lib/file-operations/analyze-directory.d.ts.map +1 -0
- package/dist/lib/file-operations/analyze-directory.js +117 -0
- package/dist/lib/file-operations/analyze-directory.js.map +1 -0
- package/dist/lib/file-operations/directory-helpers.d.ts +35 -0
- package/dist/lib/file-operations/directory-helpers.d.ts.map +1 -0
- package/dist/lib/file-operations/directory-helpers.js +136 -0
- package/dist/lib/file-operations/directory-helpers.js.map +1 -0
- package/dist/lib/file-operations/directory-items.d.ts +20 -0
- package/dist/lib/file-operations/directory-items.d.ts.map +1 -0
- package/dist/lib/file-operations/directory-items.js +85 -0
- package/dist/lib/file-operations/directory-items.js.map +1 -0
- package/dist/lib/file-operations/directory-iteration.d.ts +17 -0
- package/dist/lib/file-operations/directory-iteration.d.ts.map +1 -0
- package/dist/lib/file-operations/directory-iteration.js +55 -0
- package/dist/lib/file-operations/directory-iteration.js.map +1 -0
- package/dist/lib/file-operations/directory-tree.d.ts +9 -0
- package/dist/lib/file-operations/directory-tree.d.ts.map +1 -0
- package/dist/lib/file-operations/directory-tree.js +175 -0
- package/dist/lib/file-operations/directory-tree.js.map +1 -0
- package/dist/lib/file-operations/file-info.d.ts +3 -0
- package/dist/lib/file-operations/file-info.d.ts.map +1 -0
- package/dist/lib/file-operations/file-info.js +56 -0
- package/dist/lib/file-operations/file-info.js.map +1 -0
- package/dist/lib/file-operations/list-directory.d.ts +10 -0
- package/dist/lib/file-operations/list-directory.d.ts.map +1 -0
- package/dist/lib/file-operations/list-directory.js +189 -0
- package/dist/lib/file-operations/list-directory.js.map +1 -0
- package/dist/lib/file-operations/pattern-complexity.d.ts +16 -0
- package/dist/lib/file-operations/pattern-complexity.d.ts.map +1 -0
- package/dist/lib/file-operations/pattern-complexity.js +86 -0
- package/dist/lib/file-operations/pattern-complexity.js.map +1 -0
- package/dist/lib/file-operations/pattern-validator.d.ts +15 -0
- package/dist/lib/file-operations/pattern-validator.d.ts.map +1 -0
- package/dist/lib/file-operations/pattern-validator.js +69 -0
- package/dist/lib/file-operations/pattern-validator.js.map +1 -0
- package/dist/lib/file-operations/read-media-file.d.ts +5 -0
- package/dist/lib/file-operations/read-media-file.d.ts.map +1 -0
- package/dist/lib/file-operations/read-media-file.js +31 -0
- package/dist/lib/file-operations/read-media-file.js.map +1 -0
- package/dist/lib/file-operations/read-multiple-files.d.ts +16 -0
- package/dist/lib/file-operations/read-multiple-files.d.ts.map +1 -0
- package/dist/lib/file-operations/read-multiple-files.js +100 -0
- package/dist/lib/file-operations/read-multiple-files.js.map +1 -0
- package/dist/lib/file-operations/search-content.d.ts +18 -0
- package/dist/lib/file-operations/search-content.d.ts.map +1 -0
- package/dist/lib/file-operations/search-content.js +436 -0
- package/dist/lib/file-operations/search-content.js.map +1 -0
- package/dist/lib/file-operations/search-files.d.ts +11 -0
- package/dist/lib/file-operations/search-files.d.ts.map +1 -0
- package/dist/lib/file-operations/search-files.js +143 -0
- package/dist/lib/file-operations/search-files.js.map +1 -0
- package/dist/lib/file-operations/sorting.d.ts +12 -0
- package/dist/lib/file-operations/sorting.d.ts.map +1 -0
- package/dist/lib/file-operations/sorting.js +24 -0
- package/dist/lib/file-operations/sorting.js.map +1 -0
- package/dist/lib/file-operations.d.ts +9 -57
- package/dist/lib/file-operations.d.ts.map +1 -1
- package/dist/lib/file-operations.js +9 -773
- package/dist/lib/file-operations.js.map +1 -1
- package/dist/lib/fs-helpers/binary-detect.d.ts +3 -0
- package/dist/lib/fs-helpers/binary-detect.d.ts.map +1 -0
- package/dist/lib/fs-helpers/binary-detect.js +54 -0
- package/dist/lib/fs-helpers/binary-detect.js.map +1 -0
- package/dist/lib/fs-helpers/concurrency.d.ts +11 -0
- package/dist/lib/fs-helpers/concurrency.d.ts.map +1 -0
- package/dist/lib/fs-helpers/concurrency.js +95 -0
- package/dist/lib/fs-helpers/concurrency.js.map +1 -0
- package/dist/lib/fs-helpers/fs-utils.d.ts +5 -0
- package/dist/lib/fs-helpers/fs-utils.d.ts.map +1 -0
- package/dist/lib/fs-helpers/fs-utils.js +13 -0
- package/dist/lib/fs-helpers/fs-utils.js.map +1 -0
- package/dist/lib/fs-helpers/readers/head-file.d.ts +2 -0
- package/dist/lib/fs-helpers/readers/head-file.d.ts.map +1 -0
- package/dist/lib/fs-helpers/readers/head-file.js +73 -0
- package/dist/lib/fs-helpers/readers/head-file.js.map +1 -0
- package/dist/lib/fs-helpers/readers/line-range.d.ts +7 -0
- package/dist/lib/fs-helpers/readers/line-range.d.ts.map +1 -0
- package/dist/lib/fs-helpers/readers/line-range.js +46 -0
- package/dist/lib/fs-helpers/readers/line-range.js.map +1 -0
- package/dist/lib/fs-helpers/readers/read-file.d.ts +16 -0
- package/dist/lib/fs-helpers/readers/read-file.d.ts.map +1 -0
- package/dist/lib/fs-helpers/readers/read-file.js +87 -0
- package/dist/lib/fs-helpers/readers/read-file.js.map +1 -0
- package/dist/lib/fs-helpers/readers/stream-lines.d.ts +7 -0
- package/dist/lib/fs-helpers/readers/stream-lines.d.ts.map +1 -0
- package/dist/lib/fs-helpers/readers/stream-lines.js +61 -0
- package/dist/lib/fs-helpers/readers/stream-lines.js.map +1 -0
- package/dist/lib/fs-helpers/readers/tail-file.d.ts +2 -0
- package/dist/lib/fs-helpers/readers/tail-file.d.ts.map +1 -0
- package/dist/lib/fs-helpers/readers/tail-file.js +98 -0
- package/dist/lib/fs-helpers/readers/tail-file.js.map +1 -0
- package/dist/lib/fs-helpers/readers/utf8.d.ts +3 -0
- package/dist/lib/fs-helpers/readers/utf8.d.ts.map +1 -0
- package/dist/lib/fs-helpers/readers/utf8.js +22 -0
- package/dist/lib/fs-helpers/readers/utf8.js.map +1 -0
- package/dist/lib/fs-helpers/readers.d.ts +4 -0
- package/dist/lib/fs-helpers/readers.d.ts.map +1 -0
- package/dist/lib/fs-helpers/readers.js +4 -0
- package/dist/lib/fs-helpers/readers.js.map +1 -0
- package/dist/lib/fs-helpers.d.ts +4 -25
- package/dist/lib/fs-helpers.d.ts.map +1 -1
- package/dist/lib/fs-helpers.js +4 -327
- package/dist/lib/fs-helpers.js.map +1 -1
- package/dist/lib/path-validation/allowed-directories.d.ts +9 -0
- package/dist/lib/path-validation/allowed-directories.d.ts.map +1 -0
- package/dist/lib/path-validation/allowed-directories.js +94 -0
- package/dist/lib/path-validation/allowed-directories.js.map +1 -0
- package/dist/lib/path-validation/errors.d.ts +5 -0
- package/dist/lib/path-validation/errors.d.ts.map +1 -0
- package/dist/lib/path-validation/errors.js +33 -0
- package/dist/lib/path-validation/errors.js.map +1 -0
- package/dist/lib/path-validation/roots.d.ts +3 -0
- package/dist/lib/path-validation/roots.d.ts.map +1 -0
- package/dist/lib/path-validation/roots.js +49 -0
- package/dist/lib/path-validation/roots.js.map +1 -0
- package/dist/lib/path-validation/validators.d.ts +9 -0
- package/dist/lib/path-validation/validators.d.ts.map +1 -0
- package/dist/lib/path-validation/validators.js +70 -0
- package/dist/lib/path-validation/validators.js.map +1 -0
- package/dist/lib/path-validation.d.ts +3 -7
- package/dist/lib/path-validation.d.ts.map +1 -1
- package/dist/lib/path-validation.js +3 -141
- package/dist/lib/path-validation.js.map +1 -1
- package/dist/lib/performance/monitor.d.ts +25 -0
- package/dist/lib/performance/monitor.d.ts.map +1 -0
- package/dist/lib/performance/monitor.js +84 -0
- package/dist/lib/performance/monitor.js.map +1 -0
- package/dist/schemas/input-helpers.d.ts +27 -0
- package/dist/schemas/input-helpers.d.ts.map +1 -0
- package/dist/schemas/input-helpers.js +176 -0
- package/dist/schemas/input-helpers.js.map +1 -0
- package/dist/schemas/inputs.d.ts +14 -7
- package/dist/schemas/inputs.d.ts.map +1 -1
- package/dist/schemas/inputs.js +56 -228
- package/dist/schemas/inputs.js.map +1 -1
- package/dist/schemas/output-helpers.d.ts +24 -0
- package/dist/schemas/output-helpers.d.ts.map +1 -0
- package/dist/schemas/output-helpers.js +13 -0
- package/dist/schemas/output-helpers.js.map +1 -0
- package/dist/schemas/outputs.d.ts +476 -42
- package/dist/schemas/outputs.d.ts.map +1 -1
- package/dist/schemas/outputs.js +26 -41
- package/dist/schemas/outputs.js.map +1 -1
- package/dist/server.d.ts +9 -1
- package/dist/server.d.ts.map +1 -1
- package/dist/server.js +29 -45
- package/dist/server.js.map +1 -1
- package/dist/tools/analyze-directory.d.ts.map +1 -1
- package/dist/tools/analyze-directory.js +115 -53
- package/dist/tools/analyze-directory.js.map +1 -1
- package/dist/tools/directory-tree.d.ts.map +1 -1
- package/dist/tools/directory-tree.js +86 -49
- package/dist/tools/directory-tree.js.map +1 -1
- package/dist/tools/get-file-info.d.ts.map +1 -1
- package/dist/tools/get-file-info.js +71 -37
- package/dist/tools/get-file-info.js.map +1 -1
- package/dist/tools/list-allowed-dirs.d.ts.map +1 -1
- package/dist/tools/list-allowed-dirs.js +48 -35
- package/dist/tools/list-allowed-dirs.js.map +1 -1
- package/dist/tools/list-directory.d.ts.map +1 -1
- package/dist/tools/list-directory.js +129 -58
- package/dist/tools/list-directory.js.map +1 -1
- package/dist/tools/read-file.d.ts.map +1 -1
- package/dist/tools/read-file.js +70 -56
- package/dist/tools/read-file.js.map +1 -1
- package/dist/tools/read-media-file.d.ts.map +1 -1
- package/dist/tools/read-media-file.js +39 -41
- package/dist/tools/read-media-file.js.map +1 -1
- package/dist/tools/read-multiple-files.d.ts.map +1 -1
- package/dist/tools/read-multiple-files.js +58 -50
- package/dist/tools/read-multiple-files.js.map +1 -1
- package/dist/tools/search-content.d.ts.map +1 -1
- package/dist/tools/search-content.js +148 -89
- package/dist/tools/search-content.js.map +1 -1
- package/dist/tools/search-files.d.ts.map +1 -1
- package/dist/tools/search-files.js +123 -50
- package/dist/tools/search-files.js.map +1 -1
- package/dist/tools/tool-response.d.ts +9 -0
- package/dist/tools/tool-response.d.ts.map +1 -0
- package/dist/tools/tool-response.js +7 -0
- package/dist/tools/tool-response.js.map +1 -0
- package/package.json +2 -1
- package/dist/__tests__/errors.test.d.ts +0 -2
- package/dist/__tests__/errors.test.d.ts.map +0 -1
- package/dist/__tests__/errors.test.js +0 -88
- package/dist/__tests__/errors.test.js.map +0 -1
- package/dist/__tests__/file-operations.test.d.ts +0 -2
- package/dist/__tests__/file-operations.test.d.ts.map +0 -1
- package/dist/__tests__/file-operations.test.js +0 -230
- package/dist/__tests__/file-operations.test.js.map +0 -1
- package/dist/__tests__/lib/formatters.test.d.ts +0 -2
- package/dist/__tests__/lib/formatters.test.d.ts.map +0 -1
- package/dist/__tests__/lib/formatters.test.js +0 -248
- package/dist/__tests__/lib/formatters.test.js.map +0 -1
- package/dist/__tests__/lib/image-parsing.test.d.ts +0 -2
- package/dist/__tests__/lib/image-parsing.test.d.ts.map +0 -1
- package/dist/__tests__/lib/image-parsing.test.js +0 -262
- package/dist/__tests__/lib/image-parsing.test.js.map +0 -1
- package/dist/__tests__/path-validation.test.d.ts +0 -2
- package/dist/__tests__/path-validation.test.d.ts.map +0 -1
- package/dist/__tests__/path-validation.test.js +0 -92
- package/dist/__tests__/path-validation.test.js.map +0 -1
- package/dist/lib/directory-helpers.d.ts +0 -4
- package/dist/lib/directory-helpers.d.ts.map +0 -1
- package/dist/lib/directory-helpers.js +0 -36
- package/dist/lib/directory-helpers.js.map +0 -1
- package/dist/lib/formatters.d.ts +0 -10
- package/dist/lib/formatters.d.ts.map +0 -1
- package/dist/lib/formatters.js +0 -202
- package/dist/lib/formatters.js.map +0 -1
- package/dist/lib/image-parsing.d.ts +0 -4
- package/dist/lib/image-parsing.d.ts.map +0 -1
- package/dist/lib/image-parsing.js +0 -124
- package/dist/lib/image-parsing.js.map +0 -1
- package/dist/lib/mcp-logger.d.ts +0 -11
- package/dist/lib/mcp-logger.d.ts.map +0 -1
- package/dist/lib/mcp-logger.js +0 -49
- package/dist/lib/mcp-logger.js.map +0 -1
- package/dist/lib/roots-utils.d.ts +0 -7
- package/dist/lib/roots-utils.d.ts.map +0 -1
- package/dist/lib/roots-utils.js +0 -39
- package/dist/lib/roots-utils.js.map +0 -1
- package/dist/lib/search-helpers.d.ts +0 -16
- package/dist/lib/search-helpers.d.ts.map +0 -1
- package/dist/lib/search-helpers.js +0 -169
- package/dist/lib/search-helpers.js.map +0 -1
- package/dist/lib/sorting.d.ts +0 -12
- package/dist/lib/sorting.d.ts.map +0 -1
- package/dist/lib/sorting.js +0 -41
- package/dist/lib/sorting.js.map +0 -1
- package/dist/lib/types.d.ts +0 -6
- package/dist/lib/types.d.ts.map +0 -1
- package/dist/lib/types.js +0 -2
- package/dist/lib/types.js.map +0 -1
- package/dist/prompts/analyze-codebase.d.ts +0 -3
- package/dist/prompts/analyze-codebase.d.ts.map +0 -1
- package/dist/prompts/analyze-codebase.js +0 -144
- package/dist/prompts/analyze-codebase.js.map +0 -1
- package/dist/prompts/filesystem-query.d.ts +0 -3
- package/dist/prompts/filesystem-query.d.ts.map +0 -1
- package/dist/prompts/filesystem-query.js +0 -168
- package/dist/prompts/filesystem-query.js.map +0 -1
- package/dist/prompts/find-duplicates.d.ts +0 -3
- package/dist/prompts/find-duplicates.d.ts.map +0 -1
- package/dist/prompts/find-duplicates.js +0 -77
- package/dist/prompts/find-duplicates.js.map +0 -1
- package/dist/prompts/index.d.ts +0 -3
- package/dist/prompts/index.d.ts.map +0 -1
- package/dist/prompts/index.js +0 -13
- package/dist/prompts/index.js.map +0 -1
- package/dist/prompts/project-overview.d.ts +0 -3
- package/dist/prompts/project-overview.d.ts.map +0 -1
- package/dist/prompts/project-overview.js +0 -122
- package/dist/prompts/project-overview.js.map +0 -1
- package/dist/prompts/search-and-replace.d.ts +0 -3
- package/dist/prompts/search-and-replace.d.ts.map +0 -1
- package/dist/prompts/search-and-replace.js +0 -130
- package/dist/prompts/search-and-replace.js.map +0 -1
- package/dist/prompts/shared.d.ts +0 -11
- package/dist/prompts/shared.d.ts.map +0 -1
- package/dist/prompts/shared.js +0 -32
- package/dist/prompts/shared.js.map +0 -1
- package/dist/resources/index.d.ts +0 -3
- package/dist/resources/index.d.ts.map +0 -1
- package/dist/resources/index.js +0 -54
- package/dist/resources/index.js.map +0 -1
- package/dist/schemas/validators.d.ts +0 -12
- package/dist/schemas/validators.d.ts.map +0 -1
- package/dist/schemas/validators.js +0 -35
- package/dist/schemas/validators.js.map +0 -1
- package/dist/utils/index.d.ts +0 -2
- package/dist/utils/index.d.ts.map +0 -1
- package/dist/utils/index.js +0 -2
- package/dist/utils/index.js.map +0 -1
- package/dist/utils/response-helpers.d.ts +0 -22
- package/dist/utils/response-helpers.d.ts.map +0 -1
- package/dist/utils/response-helpers.js +0 -24
- package/dist/utils/response-helpers.js.map +0 -1
|
@@ -1,144 +0,0 @@
|
|
|
1
|
-
import { completable } from '@modelcontextprotocol/sdk/server/completable.js';
|
|
2
|
-
import { z } from 'zod';
|
|
3
|
-
import { buildExcludes, pathCompleter } from './shared.js';
|
|
4
|
-
// Extended excludes for codebase analysis (adds minified files)
|
|
5
|
-
const ANALYZE_EXCLUDES = buildExcludes('minified');
|
|
6
|
-
const FOCUS_CONFIG = {
|
|
7
|
-
architecture: {
|
|
8
|
-
patterns: [
|
|
9
|
-
'export (class|interface|type|function) \\w+',
|
|
10
|
-
'^import .+ from',
|
|
11
|
-
'@module|@package|@namespace',
|
|
12
|
-
],
|
|
13
|
-
deliverables: [
|
|
14
|
-
'Module organization & boundaries',
|
|
15
|
-
'Dependency graph (imports/exports)',
|
|
16
|
-
'Layer violations & circular deps',
|
|
17
|
-
'Entry points & public API surface',
|
|
18
|
-
],
|
|
19
|
-
maxResults: 100,
|
|
20
|
-
},
|
|
21
|
-
patterns: {
|
|
22
|
-
patterns: [
|
|
23
|
-
'class \\w+Factory|create\\w+\\(',
|
|
24
|
-
'getInstance\\(|private constructor',
|
|
25
|
-
'subscribe\\(|addEventListener\\(|on[A-Z]\\w+\\(',
|
|
26
|
-
'implements \\w+(Strategy|Handler|Provider)',
|
|
27
|
-
],
|
|
28
|
-
deliverables: [
|
|
29
|
-
'Design patterns identified (Factory, Singleton, Observer, Strategy)',
|
|
30
|
-
'Pattern usage frequency & locations',
|
|
31
|
-
'Anti-patterns & code smells',
|
|
32
|
-
'Refactoring opportunities',
|
|
33
|
-
],
|
|
34
|
-
maxResults: 50,
|
|
35
|
-
},
|
|
36
|
-
quality: {
|
|
37
|
-
patterns: [
|
|
38
|
-
'TODO|FIXME|HACK|XXX|BUG',
|
|
39
|
-
'@deprecated|@obsolete|@legacy',
|
|
40
|
-
'console\\.(log|warn|error|debug)',
|
|
41
|
-
'eslint-disable|@ts-ignore|@ts-expect-error',
|
|
42
|
-
],
|
|
43
|
-
deliverables: [
|
|
44
|
-
'Technical debt inventory with severity',
|
|
45
|
-
'Debug/console statements left behind',
|
|
46
|
-
'Suppressed linting rules',
|
|
47
|
-
'Documentation coverage gaps',
|
|
48
|
-
],
|
|
49
|
-
maxResults: 100,
|
|
50
|
-
},
|
|
51
|
-
security: {
|
|
52
|
-
patterns: [
|
|
53
|
-
'eval\\(|new Function\\(|exec\\(',
|
|
54
|
-
'password|secret|api_?key|token|credential',
|
|
55
|
-
'innerHTML|dangerouslySetInnerHTML|outerHTML',
|
|
56
|
-
'process\\.env\\.|\\$\\{.*SECRET|\\$\\{.*KEY',
|
|
57
|
-
],
|
|
58
|
-
deliverables: [
|
|
59
|
-
'Potential code injection vulnerabilities',
|
|
60
|
-
'Hardcoded secrets & credentials',
|
|
61
|
-
'Unsafe DOM manipulation',
|
|
62
|
-
'Environment variable exposure',
|
|
63
|
-
],
|
|
64
|
-
maxResults: 50,
|
|
65
|
-
},
|
|
66
|
-
};
|
|
67
|
-
export function registerAnalyzeCodebasePrompt(server) {
|
|
68
|
-
server.registerPrompt('analyze-codebase', {
|
|
69
|
-
description: 'Deep code analysis: architecture, patterns, quality, or security',
|
|
70
|
-
argsSchema: {
|
|
71
|
-
path: completable(z.string().min(1).describe('Codebase root path'), pathCompleter),
|
|
72
|
-
focus: z
|
|
73
|
-
.enum(['architecture', 'patterns', 'quality', 'security', 'all'])
|
|
74
|
-
.optional()
|
|
75
|
-
.default('all')
|
|
76
|
-
.describe('Focus: architecture, patterns, quality, security, or all'),
|
|
77
|
-
filePattern: z
|
|
78
|
-
.string()
|
|
79
|
-
.optional()
|
|
80
|
-
.default('**/*.{ts,js,tsx,jsx,py,java,go,rs}')
|
|
81
|
-
.describe('Source file glob pattern'),
|
|
82
|
-
maxDepth: z
|
|
83
|
-
.number()
|
|
84
|
-
.int()
|
|
85
|
-
.min(1)
|
|
86
|
-
.max(20)
|
|
87
|
-
.optional()
|
|
88
|
-
.default(10)
|
|
89
|
-
.describe('Maximum directory depth (default: 10)'),
|
|
90
|
-
},
|
|
91
|
-
}, ({ path, focus, filePattern, maxDepth }) => {
|
|
92
|
-
const focusAreas = focus === 'all' ? Object.keys(FOCUS_CONFIG) : [focus];
|
|
93
|
-
const allPatterns = focusAreas.flatMap((f) => FOCUS_CONFIG[f]?.patterns ?? []);
|
|
94
|
-
const allDeliverables = focusAreas.flatMap((f) => FOCUS_CONFIG[f]?.deliverables ?? []);
|
|
95
|
-
const maxResults = Math.min(...focusAreas.map((f) => FOCUS_CONFIG[f]?.maxResults ?? 100));
|
|
96
|
-
const excludesJson = JSON.stringify(ANALYZE_EXCLUDES);
|
|
97
|
-
// Build search instructions for each focus area
|
|
98
|
-
const searchInstructions = focusAreas
|
|
99
|
-
.map((f) => {
|
|
100
|
-
const config = FOCUS_CONFIG[f];
|
|
101
|
-
if (!config)
|
|
102
|
-
return '';
|
|
103
|
-
return ` - **${f}**: \`${config.patterns.slice(0, 2).join('` or `')}\``;
|
|
104
|
-
})
|
|
105
|
-
.filter(Boolean)
|
|
106
|
-
.join('\n');
|
|
107
|
-
return {
|
|
108
|
-
messages: [
|
|
109
|
-
{
|
|
110
|
-
role: 'user',
|
|
111
|
-
content: {
|
|
112
|
-
type: 'text',
|
|
113
|
-
text: `Analyze codebase at "${path}" (focus: **${focus}**).
|
|
114
|
-
|
|
115
|
-
⚠️ First run \`list_allowed_directories\` to verify path is accessible.
|
|
116
|
-
|
|
117
|
-
**Default excludes:** ${ANALYZE_EXCLUDES.slice(0, 4).join(', ')}
|
|
118
|
-
|
|
119
|
-
**Workflow:**
|
|
120
|
-
1. \`directory_tree\` maxDepth=${maxDepth} excludePatterns=${excludesJson} → structure overview
|
|
121
|
-
2. \`search_files\` pattern="${filePattern}" excludePatterns=${excludesJson} → find source files
|
|
122
|
-
3. \`analyze_directory\` maxDepth=${maxDepth} excludePatterns=${excludesJson} → stats & hotspots
|
|
123
|
-
4. \`search_content\` contextLines=2 maxResults=${maxResults} excludePatterns=${excludesJson} → search for:
|
|
124
|
-
${searchInstructions}
|
|
125
|
-
5. \`read_multiple_files\` → batch examine key files (most efficient)
|
|
126
|
-
|
|
127
|
-
**Regex patterns to search:**
|
|
128
|
-
${allPatterns.map((p) => `- \`${p}\``).join('\n')}
|
|
129
|
-
|
|
130
|
-
**Deliverables:**
|
|
131
|
-
${allDeliverables.map((d) => `- ${d}`).join('\n')}
|
|
132
|
-
|
|
133
|
-
**Final Report:**
|
|
134
|
-
- Executive summary (1-2 paragraphs)
|
|
135
|
-
- Findings by category with file:line references
|
|
136
|
-
- Prioritized recommendations (High/Medium/Low)
|
|
137
|
-
- Quick wins vs long-term improvements`,
|
|
138
|
-
},
|
|
139
|
-
},
|
|
140
|
-
],
|
|
141
|
-
};
|
|
142
|
-
});
|
|
143
|
-
}
|
|
144
|
-
//# sourceMappingURL=analyze-codebase.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"analyze-codebase.js","sourceRoot":"","sources":["../../src/prompts/analyze-codebase.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"filesystem-query.d.ts","sourceRoot":"","sources":["../../src/prompts/filesystem-query.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;AAyEzE,wBAAgB,6BAA6B,CAAC,MAAM,EAAE,SAAS,GAAG,IAAI,CA6HrE"}
|
|
@@ -1,168 +0,0 @@
|
|
|
1
|
-
import { completable } from '@modelcontextprotocol/sdk/server/completable.js';
|
|
2
|
-
import { z } from 'zod';
|
|
3
|
-
import { DEFAULT_EXCLUDES, pathCompleter } from './shared.js';
|
|
4
|
-
const OPERATIONS = {
|
|
5
|
-
explore: {
|
|
6
|
-
tools: `1. \`directory_tree\` maxDepth={depth} excludePatterns={excludes} → hierarchy
|
|
7
|
-
2. \`analyze_directory\` excludePatterns={excludes} → stats
|
|
8
|
-
3. \`list_directory\` sortBy="modified" → recent activity`,
|
|
9
|
-
deliverables: `- Structure overview & folder purposes
|
|
10
|
-
- File distribution by type
|
|
11
|
-
- Key config/entry files
|
|
12
|
-
- Notable findings`,
|
|
13
|
-
requiresPattern: false,
|
|
14
|
-
usesDepth: true,
|
|
15
|
-
},
|
|
16
|
-
'find-files': {
|
|
17
|
-
tools: `1. \`search_files\` pattern="{pattern}" excludePatterns={excludes} maxResults=100 → find matches
|
|
18
|
-
2. \`read_multiple_files\` → batch examine contents
|
|
19
|
-
3. \`get_file_info\` → metadata if needed`,
|
|
20
|
-
deliverables: `- Matched files with sizes (up to 100 results)
|
|
21
|
-
- Content summary of key files
|
|
22
|
-
- Related pattern suggestions`,
|
|
23
|
-
requiresPattern: true,
|
|
24
|
-
usesDepth: true,
|
|
25
|
-
maxResults: 100,
|
|
26
|
-
},
|
|
27
|
-
'search-code': {
|
|
28
|
-
tools: `1. \`search_content\` pattern="{pattern}" contextLines=2 maxResults=50 excludePatterns={excludes} → find matches
|
|
29
|
-
2. \`read_multiple_files\` → batch read for full context`,
|
|
30
|
-
deliverables: `- Match count & files affected (up to 50 matches)
|
|
31
|
-
- Key matches with surrounding context
|
|
32
|
-
- Pattern usage analysis
|
|
33
|
-
- Suggested refactoring if duplicates found`,
|
|
34
|
-
requiresPattern: true,
|
|
35
|
-
usesDepth: false,
|
|
36
|
-
maxResults: 50,
|
|
37
|
-
},
|
|
38
|
-
'analyze-size': {
|
|
39
|
-
tools: `1. \`analyze_directory\` maxDepth={depth} excludePatterns={excludes} → size stats
|
|
40
|
-
2. \`directory_tree\` includeSize=true maxDepth={depth} excludePatterns={excludes} → visualize
|
|
41
|
-
3. \`search_files\` sortBy="size" maxResults=20 → largest files`,
|
|
42
|
-
deliverables: `- Total size & file counts
|
|
43
|
-
- Top 10 largest files with paths
|
|
44
|
-
- Size breakdown by extension
|
|
45
|
-
- Cleanup suggestions (large/unused files)`,
|
|
46
|
-
requiresPattern: false,
|
|
47
|
-
usesDepth: true,
|
|
48
|
-
},
|
|
49
|
-
'recent-changes': {
|
|
50
|
-
tools: `1. \`analyze_directory\` maxDepth={depth} excludePatterns={excludes} → recentlyModified
|
|
51
|
-
2. \`list_directory\` sortBy="modified" recursive=true maxDepth={depth}
|
|
52
|
-
3. \`read_multiple_files\` → batch examine recent files`,
|
|
53
|
-
deliverables: `- Recent activity timeline (last 24h, 7d, 30d)
|
|
54
|
-
- Most active directories
|
|
55
|
-
- Change patterns & hot spots
|
|
56
|
-
- Files to review`,
|
|
57
|
-
requiresPattern: false,
|
|
58
|
-
usesDepth: true,
|
|
59
|
-
},
|
|
60
|
-
};
|
|
61
|
-
export function registerFilesystemQueryPrompt(server) {
|
|
62
|
-
server.registerPrompt('filesystem-query', {
|
|
63
|
-
description: 'Guided filesystem operations: explore, find, search, size, changes',
|
|
64
|
-
argsSchema: {
|
|
65
|
-
path: completable(z.string().min(1).describe('Target path'), pathCompleter),
|
|
66
|
-
operation: z
|
|
67
|
-
.enum([
|
|
68
|
-
'explore',
|
|
69
|
-
'find-files',
|
|
70
|
-
'search-code',
|
|
71
|
-
'analyze-size',
|
|
72
|
-
'recent-changes',
|
|
73
|
-
])
|
|
74
|
-
.describe('Operation type'),
|
|
75
|
-
pattern: z
|
|
76
|
-
.string()
|
|
77
|
-
.optional()
|
|
78
|
-
.describe('Search pattern (glob for find-files, regex for search-code)'),
|
|
79
|
-
depth: z
|
|
80
|
-
.number()
|
|
81
|
-
.int()
|
|
82
|
-
.min(1)
|
|
83
|
-
.max(20)
|
|
84
|
-
.optional()
|
|
85
|
-
.default(5)
|
|
86
|
-
.describe('Max depth (1-20, default: 5)'),
|
|
87
|
-
caseSensitive: z
|
|
88
|
-
.boolean()
|
|
89
|
-
.optional()
|
|
90
|
-
.default(false)
|
|
91
|
-
.describe('Case-sensitive search (search-code only)'),
|
|
92
|
-
},
|
|
93
|
-
}, ({ path, operation, pattern, depth, caseSensitive }) => {
|
|
94
|
-
const config = OPERATIONS[operation];
|
|
95
|
-
// Type guard - should never happen with enum validation, but TypeScript needs this
|
|
96
|
-
if (!config) {
|
|
97
|
-
return {
|
|
98
|
-
messages: [
|
|
99
|
-
{
|
|
100
|
-
role: 'user',
|
|
101
|
-
content: {
|
|
102
|
-
type: 'text',
|
|
103
|
-
text: `Unknown operation: "${operation}". Valid operations: ${Object.keys(OPERATIONS).join(', ')}`,
|
|
104
|
-
},
|
|
105
|
-
},
|
|
106
|
-
],
|
|
107
|
-
};
|
|
108
|
-
}
|
|
109
|
-
const excludesJson = JSON.stringify(DEFAULT_EXCLUDES);
|
|
110
|
-
// Validate pattern requirement
|
|
111
|
-
if (config.requiresPattern && !pattern) {
|
|
112
|
-
return {
|
|
113
|
-
messages: [
|
|
114
|
-
{
|
|
115
|
-
role: 'user',
|
|
116
|
-
content: {
|
|
117
|
-
type: 'text',
|
|
118
|
-
text: `⚠️ The "${operation}" operation requires a pattern.
|
|
119
|
-
|
|
120
|
-
Please provide:
|
|
121
|
-
- For **find-files**: a glob pattern (e.g., "**/*.ts", "src/**/*.json")
|
|
122
|
-
- For **search-code**: a regex pattern (e.g., "TODO|FIXME", "function\\s+\\w+")`,
|
|
123
|
-
},
|
|
124
|
-
},
|
|
125
|
-
],
|
|
126
|
-
};
|
|
127
|
-
}
|
|
128
|
-
// Build tools section with substitutions
|
|
129
|
-
const tools = config.tools
|
|
130
|
-
.replace(/{depth}/g, String(depth))
|
|
131
|
-
.replace(/{excludes}/g, excludesJson)
|
|
132
|
-
.replace(/{pattern}/g, pattern ?? '*');
|
|
133
|
-
// Build search options for search-code
|
|
134
|
-
const searchOptions = operation === 'search-code'
|
|
135
|
-
? ` caseSensitive=${String(caseSensitive)}`
|
|
136
|
-
: '';
|
|
137
|
-
const patternInfo = pattern ? ` pattern="${pattern}"` : '';
|
|
138
|
-
const depthInfo = config.usesDepth ? ` maxDepth=${String(depth)}` : '';
|
|
139
|
-
const promptText = `**${operation.charAt(0).toUpperCase() + operation.slice(1)}** "${path}"${patternInfo}${depthInfo}${searchOptions}
|
|
140
|
-
|
|
141
|
-
⚠️ First run \`list_allowed_directories\` to verify path is accessible.
|
|
142
|
-
|
|
143
|
-
**Default excludes:** ${DEFAULT_EXCLUDES.join(', ')}
|
|
144
|
-
|
|
145
|
-
**Tools:**
|
|
146
|
-
${tools}
|
|
147
|
-
|
|
148
|
-
**Deliverables:**
|
|
149
|
-
${config.deliverables}
|
|
150
|
-
|
|
151
|
-
**Best Practices:**
|
|
152
|
-
- Use \`read_multiple_files\` to batch read (more efficient than sequential reads)
|
|
153
|
-
- Stop early if results are sufficient
|
|
154
|
-
- Report any inaccessible paths encountered`;
|
|
155
|
-
return {
|
|
156
|
-
messages: [
|
|
157
|
-
{
|
|
158
|
-
role: 'user',
|
|
159
|
-
content: {
|
|
160
|
-
type: 'text',
|
|
161
|
-
text: promptText,
|
|
162
|
-
},
|
|
163
|
-
},
|
|
164
|
-
],
|
|
165
|
-
};
|
|
166
|
-
});
|
|
167
|
-
}
|
|
168
|
-
//# sourceMappingURL=filesystem-query.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"filesystem-query.js","sourceRoot":"","sources":["../../src/prompts/filesystem-query.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,MAAM,iDAAiD,CAAC;AAG9E,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAExB,OAAO,EAAE,gBAAgB,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AAW9D,MAAM,UAAU,GAAoC;IAClD,OAAO,EAAE;QACP,KAAK,EAAE;;0DAE+C;QACtD,YAAY,EAAE;;;mBAGC;QACf,eAAe,EAAE,KAAK;QACtB,SAAS,EAAE,IAAI;KAChB;IACD,YAAY,EAAE;QACZ,KAAK,EAAE;;0CAE+B;QACtC,YAAY,EAAE;;8BAEY;QAC1B,eAAe,EAAE,IAAI;QACrB,SAAS,EAAE,IAAI;QACf,UAAU,EAAE,GAAG;KAChB;IACD,aAAa,EAAE;QACb,KAAK,EAAE;yDAC8C;QACrD,YAAY,EAAE;;;4CAG0B;QACxC,eAAe,EAAE,IAAI;QACrB,SAAS,EAAE,KAAK;QAChB,UAAU,EAAE,EAAE;KACf;IACD,cAAc,EAAE;QACd,KAAK,EAAE;;gEAEqD;QAC5D,YAAY,EAAE;;;2CAGyB;QACvC,eAAe,EAAE,KAAK;QACtB,SAAS,EAAE,IAAI;KAChB;IACD,gBAAgB,EAAE;QAChB,KAAK,EAAE;;wDAE6C;QACpD,YAAY,EAAE;;;kBAGA;QACd,eAAe,EAAE,KAAK;QACtB,SAAS,EAAE,IAAI;KAChB;CACF,CAAC;AAEF,MAAM,UAAU,6BAA6B,CAAC,MAAiB;IAC7D,MAAM,CAAC,cAAc,CACnB,kBAAkB,EAClB;QACE,WAAW,EACT,oEAAoE;QACtE,UAAU,EAAE;YACV,IAAI,EAAE,WAAW,CACf,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,aAAa,CAAC,EACzC,aAAa,CACd;YACD,SAAS,EAAE,CAAC;iBACT,IAAI,CAAC;gBACJ,SAAS;gBACT,YAAY;gBACZ,aAAa;gBACb,cAAc;gBACd,gBAAgB;aACjB,CAAC;iBACD,QAAQ,CAAC,gBAAgB,CAAC;YAC7B,OAAO,EAAE,CAAC;iBACP,MAAM,EAAE;iBACR,QAAQ,EAAE;iBACV,QAAQ,CACP,6DAA6D,CAC9D;YACH,KAAK,EAAE,CAAC;iBACL,MAAM,EAAE;iBACR,GAAG,EAAE;iBACL,GAAG,CAAC,CAAC,CAAC;iBACN,GAAG,CAAC,EAAE,CAAC;iBACP,QAAQ,EAAE;iBACV,OAAO,CAAC,CAAC,CAAC;iBACV,QAAQ,CAAC,8BAA8B,CAAC;YAC3C,aAAa,EAAE,CAAC;iBACb,OAAO,EAAE;iBACT,QAAQ,EAAE;iBACV,OAAO,CAAC,KAAK,CAAC;iBACd,QAAQ,CAAC,0CAA0C,CAAC;SACxD;KACF,EACD,CAAC,EAAE,IAAI,EAAE,SAAS,EAAE,OAAO,EAAE,KAAK,EAAE,aAAa,EAAE,EAAE,EAAE;QACrD,MAAM,MAAM,GAAG,UAAU,CAAC,SAAS,CAAC,CAAC;QAErC,mFAAmF;QACnF,IAAI,CAAC,MAAM,EAAE,CAAC;YACZ,OAAO;gBACL,QAAQ,EAAE;oBACR;wBACE,IAAI,EAAE,MAAM;wBACZ,OAAO,EAAE;4BACP,IAAI,EAAE,MAAM;4BACZ,IAAI,EAAE,uBAAuB,SAAS,wBAAwB,MAAM,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE;yBACnG;qBACF;iBACF;aACF,CAAC;QACJ,CAAC;QAED,MAAM,YAAY,GAAG,IAAI,CAAC,SAAS,CAAC,gBAAgB,CAAC,CAAC;QAEtD,+BAA+B;QAC/B,IAAI,MAAM,CAAC,eAAe,IAAI,CAAC,OAAO,EAAE,CAAC;YACvC,OAAO;gBACL,QAAQ,EAAE;oBACR;wBACE,IAAI,EAAE,MAAM;wBACZ,OAAO,EAAE;4BACP,IAAI,EAAE,MAAM;4BACZ,IAAI,EAAE,WAAW,SAAS;;;;gFAIsC;yBACjE;qBACF;iBACF;aACF,CAAC;QACJ,CAAC;QAED,yCAAyC;QACzC,MAAM,KAAK,GAAG,MAAM,CAAC,KAAK;aACvB,OAAO,CAAC,UAAU,EAAE,MAAM,CAAC,KAAK,CAAC,CAAC;aAClC,OAAO,CAAC,aAAa,EAAE,YAAY,CAAC;aACpC,OAAO,CAAC,YAAY,EAAE,OAAO,IAAI,GAAG,CAAC,CAAC;QAEzC,uCAAuC;QACvC,MAAM,aAAa,GACjB,SAAS,KAAK,aAAa;YACzB,CAAC,CAAC,kBAAkB,MAAM,CAAC,aAAa,CAAC,EAAE;YAC3C,CAAC,CAAC,EAAE,CAAC;QAET,MAAM,WAAW,GAAG,OAAO,CAAC,CAAC,CAAC,aAAa,OAAO,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC;QAC3D,MAAM,SAAS,GAAG,MAAM,CAAC,SAAS,CAAC,CAAC,CAAC,aAAa,MAAM,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;QAEvE,MAAM,UAAU,GAAG,KAAK,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,WAAW,EAAE,GAAG,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,OAAO,IAAI,IAAI,WAAW,GAAG,SAAS,GAAG,aAAa;;;;wBAIlH,gBAAgB,CAAC,IAAI,CAAC,IAAI,CAAC;;;EAGjD,KAAK;;;EAGL,MAAM,CAAC,YAAY;;;;;4CAKuB,CAAC;QAEvC,OAAO;YACL,QAAQ,EAAE;gBACR;oBACE,IAAI,EAAE,MAAM;oBACZ,OAAO,EAAE;wBACP,IAAI,EAAE,MAAM;wBACZ,IAAI,EAAE,UAAU;qBACjB;iBACF;aACF;SACF,CAAC;IACJ,CAAC,CACF,CAAC;AACJ,CAAC"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"find-duplicates.d.ts","sourceRoot":"","sources":["../../src/prompts/find-duplicates.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;AASzE,wBAAgB,4BAA4B,CAAC,MAAM,EAAE,SAAS,GAAG,IAAI,CAgFpE"}
|
|
@@ -1,77 +0,0 @@
|
|
|
1
|
-
import { completable } from '@modelcontextprotocol/sdk/server/completable.js';
|
|
2
|
-
import { z } from 'zod';
|
|
3
|
-
import { buildExcludes, pathCompleter } from './shared.js';
|
|
4
|
-
// Extended excludes for duplicate scanning (adds minified/bundled files to base excludes)
|
|
5
|
-
const DUPLICATE_EXCLUDES = buildExcludes('minified', 'bundled');
|
|
6
|
-
export function registerFindDuplicatesPrompt(server) {
|
|
7
|
-
server.registerPrompt('find-duplicates', {
|
|
8
|
-
description: 'Find duplicate code, similar patterns, and refactoring opportunities',
|
|
9
|
-
argsSchema: {
|
|
10
|
-
path: completable(z.string().min(1).describe('Root path to search'), pathCompleter),
|
|
11
|
-
pattern: z
|
|
12
|
-
.string()
|
|
13
|
-
.optional()
|
|
14
|
-
.default('**/*.{ts,js,tsx,jsx,py,java}')
|
|
15
|
-
.describe('Source file glob pattern'),
|
|
16
|
-
searchTerm: z
|
|
17
|
-
.string()
|
|
18
|
-
.optional()
|
|
19
|
-
.describe('Specific function/pattern to find duplicates of'),
|
|
20
|
-
minLines: z
|
|
21
|
-
.number()
|
|
22
|
-
.int()
|
|
23
|
-
.min(2)
|
|
24
|
-
.max(50)
|
|
25
|
-
.optional()
|
|
26
|
-
.default(5)
|
|
27
|
-
.describe('Minimum lines to consider as duplicate (default: 5)'),
|
|
28
|
-
},
|
|
29
|
-
}, ({ path, pattern, searchTerm, minLines }) => {
|
|
30
|
-
const excludePatterns = JSON.stringify(DUPLICATE_EXCLUDES);
|
|
31
|
-
const searchInstructions = searchTerm
|
|
32
|
-
? `\`search_content\` pattern="${searchTerm}" contextLines=2 → find all occurrences`
|
|
33
|
-
: `\`search_content\` → find duplicates using these patterns:
|
|
34
|
-
- Function signatures: \`(export )?(async )?(function|const)\\s+\\w+\`
|
|
35
|
-
- Import blocks: \`^import .+ from\`
|
|
36
|
-
- Error handlers: \`catch\\s*\\(\` or \`\\.catch\\(\`
|
|
37
|
-
- Repeated utility patterns: loops, conditionals, API calls`;
|
|
38
|
-
return {
|
|
39
|
-
messages: [
|
|
40
|
-
{
|
|
41
|
-
role: 'user',
|
|
42
|
-
content: {
|
|
43
|
-
type: 'text',
|
|
44
|
-
text: `Find duplicate code in "${path}".
|
|
45
|
-
|
|
46
|
-
⚠️ First run \`list_allowed_directories\` to verify path is accessible.
|
|
47
|
-
|
|
48
|
-
**Workflow:**
|
|
49
|
-
1. \`search_files\` pattern="${pattern}" excludePatterns=${excludePatterns}
|
|
50
|
-
2. \`analyze_directory\` excludePatterns=${excludePatterns} → identify similar-sized files (potential copies)
|
|
51
|
-
3. ${searchInstructions}
|
|
52
|
-
4. \`read_multiple_files\` → batch compare suspect files
|
|
53
|
-
|
|
54
|
-
**Duplicate Detection Criteria (minimum ${minLines} lines):**
|
|
55
|
-
- Code blocks that are character-for-character identical
|
|
56
|
-
- Code with only variable/parameter name differences
|
|
57
|
-
- Structural duplicates: same logic, different formatting
|
|
58
|
-
|
|
59
|
-
**Report Format:**
|
|
60
|
-
| Category | Description |
|
|
61
|
-
|----------|-------------|
|
|
62
|
-
| **Exact duplicates** | Identical code blocks with file:line locations |
|
|
63
|
-
| **Near duplicates** | 80%+ similar code, highlight differences |
|
|
64
|
-
| **Extractable patterns** | Repeated logic → shared utility/hook candidates |
|
|
65
|
-
| **Refactoring plan** | Priority order, files affected, breaking change risks |
|
|
66
|
-
|
|
67
|
-
**For each duplicate found, provide:**
|
|
68
|
-
1. File locations (all occurrences)
|
|
69
|
-
2. Code snippet (first occurrence)
|
|
70
|
-
3. Suggested abstraction (function name, module location)`,
|
|
71
|
-
},
|
|
72
|
-
},
|
|
73
|
-
],
|
|
74
|
-
};
|
|
75
|
-
});
|
|
76
|
-
}
|
|
77
|
-
//# sourceMappingURL=find-duplicates.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"find-duplicates.js","sourceRoot":"","sources":["../../src/prompts/find-duplicates.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,MAAM,iDAAiD,CAAC;AAG9E,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAExB,OAAO,EAAE,aAAa,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AAE3D,0FAA0F;AAC1F,MAAM,kBAAkB,GAAG,aAAa,CAAC,UAAU,EAAE,SAAS,CAAC,CAAC;AAEhE,MAAM,UAAU,4BAA4B,CAAC,MAAiB;IAC5D,MAAM,CAAC,cAAc,CACnB,iBAAiB,EACjB;QACE,WAAW,EACT,sEAAsE;QACxE,UAAU,EAAE;YACV,IAAI,EAAE,WAAW,CACf,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,qBAAqB,CAAC,EACjD,aAAa,CACd;YACD,OAAO,EAAE,CAAC;iBACP,MAAM,EAAE;iBACR,QAAQ,EAAE;iBACV,OAAO,CAAC,8BAA8B,CAAC;iBACvC,QAAQ,CAAC,0BAA0B,CAAC;YACvC,UAAU,EAAE,CAAC;iBACV,MAAM,EAAE;iBACR,QAAQ,EAAE;iBACV,QAAQ,CAAC,iDAAiD,CAAC;YAC9D,QAAQ,EAAE,CAAC;iBACR,MAAM,EAAE;iBACR,GAAG,EAAE;iBACL,GAAG,CAAC,CAAC,CAAC;iBACN,GAAG,CAAC,EAAE,CAAC;iBACP,QAAQ,EAAE;iBACV,OAAO,CAAC,CAAC,CAAC;iBACV,QAAQ,CAAC,qDAAqD,CAAC;SACnE;KACF,EACD,CAAC,EAAE,IAAI,EAAE,OAAO,EAAE,UAAU,EAAE,QAAQ,EAAE,EAAE,EAAE;QAC1C,MAAM,eAAe,GAAG,IAAI,CAAC,SAAS,CAAC,kBAAkB,CAAC,CAAC;QAE3D,MAAM,kBAAkB,GAAG,UAAU;YACnC,CAAC,CAAC,+BAA+B,UAAU,yCAAyC;YACpF,CAAC,CAAC;;;;4DAIkD,CAAC;QAEvD,OAAO;YACL,QAAQ,EAAE;gBACR;oBACE,IAAI,EAAE,MAAM;oBACZ,OAAO,EAAE;wBACP,IAAI,EAAE,MAAM;wBACZ,IAAI,EAAE,2BAA2B,IAAI;;;;;+BAKpB,OAAO,qBAAqB,eAAe;2CAC/B,eAAe;KACrD,kBAAkB;;;0CAGmB,QAAQ;;;;;;;;;;;;;;;;0DAgBQ;qBAC7C;iBACF;aACF;SACF,CAAC;IACJ,CAAC,CACF,CAAC;AACJ,CAAC"}
|
package/dist/prompts/index.d.ts
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/prompts/index.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;AAQzE,wBAAgB,kBAAkB,CAAC,MAAM,EAAE,SAAS,GAAG,IAAI,CAM1D"}
|
package/dist/prompts/index.js
DELETED
|
@@ -1,13 +0,0 @@
|
|
|
1
|
-
import { registerAnalyzeCodebasePrompt } from './analyze-codebase.js';
|
|
2
|
-
import { registerFilesystemQueryPrompt } from './filesystem-query.js';
|
|
3
|
-
import { registerFindDuplicatesPrompt } from './find-duplicates.js';
|
|
4
|
-
import { registerProjectOverviewPrompt } from './project-overview.js';
|
|
5
|
-
import { registerSearchAndReplacePrompt } from './search-and-replace.js';
|
|
6
|
-
export function registerAllPrompts(server) {
|
|
7
|
-
registerProjectOverviewPrompt(server);
|
|
8
|
-
registerAnalyzeCodebasePrompt(server);
|
|
9
|
-
registerFindDuplicatesPrompt(server);
|
|
10
|
-
registerSearchAndReplacePrompt(server);
|
|
11
|
-
registerFilesystemQueryPrompt(server);
|
|
12
|
-
}
|
|
13
|
-
//# sourceMappingURL=index.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/prompts/index.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,6BAA6B,EAAE,MAAM,uBAAuB,CAAC;AACtE,OAAO,EAAE,6BAA6B,EAAE,MAAM,uBAAuB,CAAC;AACtE,OAAO,EAAE,4BAA4B,EAAE,MAAM,sBAAsB,CAAC;AACpE,OAAO,EAAE,6BAA6B,EAAE,MAAM,uBAAuB,CAAC;AACtE,OAAO,EAAE,8BAA8B,EAAE,MAAM,yBAAyB,CAAC;AAEzE,MAAM,UAAU,kBAAkB,CAAC,MAAiB;IAClD,6BAA6B,CAAC,MAAM,CAAC,CAAC;IACtC,6BAA6B,CAAC,MAAM,CAAC,CAAC;IACtC,4BAA4B,CAAC,MAAM,CAAC,CAAC;IACrC,8BAA8B,CAAC,MAAM,CAAC,CAAC;IACvC,6BAA6B,CAAC,MAAM,CAAC,CAAC;AACxC,CAAC"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"project-overview.d.ts","sourceRoot":"","sources":["../../src/prompts/project-overview.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;AA4CzE,wBAAgB,6BAA6B,CAAC,MAAM,EAAE,SAAS,GAAG,IAAI,CA+FrE"}
|
|
@@ -1,122 +0,0 @@
|
|
|
1
|
-
import { completable } from '@modelcontextprotocol/sdk/server/completable.js';
|
|
2
|
-
import { z } from 'zod';
|
|
3
|
-
import { buildExcludes, pathCompleter } from './shared.js';
|
|
4
|
-
// Extended excludes for project overview (adds framework-specific dirs)
|
|
5
|
-
const PROJECT_EXCLUDES = buildExcludes('nextjs', 'nuxtjs');
|
|
6
|
-
// Config files to look for by category
|
|
7
|
-
const CONFIG_FILES = {
|
|
8
|
-
project: [
|
|
9
|
-
'package.json',
|
|
10
|
-
'pyproject.toml',
|
|
11
|
-
'Cargo.toml',
|
|
12
|
-
'go.mod',
|
|
13
|
-
'pom.xml',
|
|
14
|
-
'build.gradle',
|
|
15
|
-
],
|
|
16
|
-
typescript: ['tsconfig.json', 'jsconfig.json'],
|
|
17
|
-
build: [
|
|
18
|
-
'vite.config.*',
|
|
19
|
-
'webpack.config.*',
|
|
20
|
-
'rollup.config.*',
|
|
21
|
-
'next.config.*',
|
|
22
|
-
'nuxt.config.*',
|
|
23
|
-
],
|
|
24
|
-
lint: ['.eslintrc*', 'eslint.config.*', '.prettierrc*', 'biome.json'],
|
|
25
|
-
docker: ['Dockerfile', 'docker-compose.yml', 'docker-compose.yaml'],
|
|
26
|
-
ci: ['.github/workflows/*.yml', '.gitlab-ci.yml'],
|
|
27
|
-
docs: ['README.md', 'CHANGELOG.md', 'CONTRIBUTING.md', 'LICENSE'],
|
|
28
|
-
env: ['.env.example', '.env.sample', '.env.template'],
|
|
29
|
-
};
|
|
30
|
-
// Build flat list of priority config files for the prompt
|
|
31
|
-
function getConfigFileList() {
|
|
32
|
-
return Object.entries(CONFIG_FILES)
|
|
33
|
-
.map(([category, files]) => `- **${category}**: ${files.slice(0, 3).join(', ')}`)
|
|
34
|
-
.join('\n');
|
|
35
|
-
}
|
|
36
|
-
export function registerProjectOverviewPrompt(server) {
|
|
37
|
-
server.registerPrompt('project-overview', {
|
|
38
|
-
description: 'Quick overview of project structure, tech stack, and key files',
|
|
39
|
-
argsSchema: {
|
|
40
|
-
path: completable(z.string().min(1).describe('Project root path'), pathCompleter),
|
|
41
|
-
depth: z
|
|
42
|
-
.number()
|
|
43
|
-
.int()
|
|
44
|
-
.min(1)
|
|
45
|
-
.max(10)
|
|
46
|
-
.optional()
|
|
47
|
-
.default(4)
|
|
48
|
-
.describe('Tree depth (1-10, default: 4)'),
|
|
49
|
-
includeCI: z
|
|
50
|
-
.boolean()
|
|
51
|
-
.optional()
|
|
52
|
-
.default(false)
|
|
53
|
-
.describe('Include CI/CD config analysis'),
|
|
54
|
-
},
|
|
55
|
-
}, ({ path, depth, includeCI }) => {
|
|
56
|
-
const excludesJson = JSON.stringify(PROJECT_EXCLUDES);
|
|
57
|
-
const configList = getConfigFileList();
|
|
58
|
-
// Priority files to always try reading
|
|
59
|
-
const priorityFiles = [
|
|
60
|
-
'package.json',
|
|
61
|
-
'README.md',
|
|
62
|
-
'tsconfig.json',
|
|
63
|
-
...(includeCI ? ['.github/workflows/*.yml'] : []),
|
|
64
|
-
];
|
|
65
|
-
return {
|
|
66
|
-
messages: [
|
|
67
|
-
{
|
|
68
|
-
role: 'user',
|
|
69
|
-
content: {
|
|
70
|
-
type: 'text',
|
|
71
|
-
text: `Analyze project at "${path}".
|
|
72
|
-
|
|
73
|
-
⚠️ First run \`list_allowed_directories\` to verify path is accessible.
|
|
74
|
-
|
|
75
|
-
**Default excludes:** ${PROJECT_EXCLUDES.slice(0, 4).join(', ')}
|
|
76
|
-
|
|
77
|
-
**Workflow:**
|
|
78
|
-
1. \`directory_tree\` maxDepth=${String(depth)} excludePatterns=${excludesJson} → structure
|
|
79
|
-
2. \`search_files\` pattern="*config*|*.json|*.toml|*.yml" excludePatterns=${excludesJson} → find config files
|
|
80
|
-
3. \`analyze_directory\` excludePatterns=${excludesJson} → stats & largest files
|
|
81
|
-
4. \`read_multiple_files\` → batch read found configs (priority: ${priorityFiles.join(', ')})
|
|
82
|
-
|
|
83
|
-
**Config files to look for:**
|
|
84
|
-
${configList}
|
|
85
|
-
|
|
86
|
-
**Deliverables:**
|
|
87
|
-
|
|
88
|
-
| Section | Details |
|
|
89
|
-
|---------|---------|
|
|
90
|
-
| **Tech Stack** | Languages, frameworks, runtime versions |
|
|
91
|
-
| **Package Manager** | npm/yarn/pnpm + lock file present |
|
|
92
|
-
| **Build System** | Bundler, compiler, scripts |
|
|
93
|
-
| **Folder Structure** | src/, lib/, tests/ conventions |
|
|
94
|
-
| **Entry Points** | main, bin, exports in package.json |
|
|
95
|
-
| **Dependencies** | Key deps vs devDeps, outdated indicators |
|
|
96
|
-
| **Code Quality** | Linting, formatting, type checking setup |
|
|
97
|
-
${includeCI ? '| **CI/CD** | Workflows, test/deploy pipelines |' : ''}
|
|
98
|
-
|
|
99
|
-
**Output Format:**
|
|
100
|
-
\`\`\`
|
|
101
|
-
## Project: {name}
|
|
102
|
-
**Type**: {monorepo|library|application|cli}
|
|
103
|
-
**Stack**: {languages} + {frameworks}
|
|
104
|
-
**Build**: {tool} → {output}
|
|
105
|
-
|
|
106
|
-
### Structure
|
|
107
|
-
{tree summary}
|
|
108
|
-
|
|
109
|
-
### Key Findings
|
|
110
|
-
- {finding 1}
|
|
111
|
-
- {finding 2}
|
|
112
|
-
|
|
113
|
-
### Recommendations
|
|
114
|
-
- {recommendation if any}
|
|
115
|
-
\`\`\``,
|
|
116
|
-
},
|
|
117
|
-
},
|
|
118
|
-
],
|
|
119
|
-
};
|
|
120
|
-
});
|
|
121
|
-
}
|
|
122
|
-
//# sourceMappingURL=project-overview.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"project-overview.js","sourceRoot":"","sources":["../../src/prompts/project-overview.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"search-and-replace.d.ts","sourceRoot":"","sources":["../../src/prompts/search-and-replace.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;AASzE,wBAAgB,8BAA8B,CAAC,MAAM,EAAE,SAAS,GAAG,IAAI,CAkJtE"}
|