@side-quest/kit 0.0.0 → 0.2.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.
Files changed (127) hide show
  1. package/CHANGELOG.md +36 -0
  2. package/README.md +54 -352
  3. package/dist/cli.d.ts +14 -0
  4. package/dist/cli.d.ts.map +1 -0
  5. package/dist/cli.js +156 -0
  6. package/dist/cli.js.map +1 -0
  7. package/dist/index.d.ts +8 -0
  8. package/dist/index.d.ts.map +1 -0
  9. package/dist/index.js +8 -2509
  10. package/dist/index.js.map +1 -0
  11. package/dist/lib/ast/index.d.ts +11 -0
  12. package/dist/lib/ast/index.d.ts.map +1 -0
  13. package/dist/lib/ast/index.js +15 -0
  14. package/dist/lib/ast/index.js.map +1 -0
  15. package/dist/lib/ast/languages.d.ts +55 -0
  16. package/dist/lib/ast/languages.d.ts.map +1 -0
  17. package/dist/lib/ast/languages.js +146 -0
  18. package/dist/lib/ast/languages.js.map +1 -0
  19. package/dist/lib/ast/pattern.d.ts +84 -0
  20. package/dist/lib/ast/pattern.d.ts.map +1 -0
  21. package/dist/lib/ast/pattern.js +268 -0
  22. package/dist/lib/ast/pattern.js.map +1 -0
  23. package/dist/lib/ast/searcher.d.ts +89 -0
  24. package/dist/lib/ast/searcher.d.ts.map +1 -0
  25. package/dist/lib/ast/searcher.js +316 -0
  26. package/dist/lib/ast/searcher.js.map +1 -0
  27. package/dist/lib/ast/types.d.ts +93 -0
  28. package/dist/lib/ast/types.d.ts.map +1 -0
  29. package/dist/lib/ast/types.js +23 -0
  30. package/dist/lib/ast/types.js.map +1 -0
  31. package/dist/lib/commands/callers.d.ts +20 -0
  32. package/dist/lib/commands/callers.d.ts.map +1 -0
  33. package/dist/lib/commands/callers.js +162 -0
  34. package/dist/lib/commands/callers.js.map +1 -0
  35. package/dist/lib/commands/find.d.ts +15 -0
  36. package/dist/lib/commands/find.d.ts.map +1 -0
  37. package/dist/lib/commands/find.js +113 -0
  38. package/dist/lib/commands/find.js.map +1 -0
  39. package/dist/lib/commands/overview.d.ts +6 -0
  40. package/dist/lib/commands/overview.d.ts.map +1 -0
  41. package/dist/lib/commands/overview.js +52 -0
  42. package/dist/lib/commands/overview.js.map +1 -0
  43. package/dist/lib/commands/prime.d.ts +16 -0
  44. package/dist/lib/commands/prime.d.ts.map +1 -0
  45. package/dist/lib/commands/prime.js +168 -0
  46. package/dist/lib/commands/prime.js.map +1 -0
  47. package/dist/lib/commands/search.d.ts +20 -0
  48. package/dist/lib/commands/search.d.ts.map +1 -0
  49. package/dist/lib/commands/search.js +111 -0
  50. package/dist/lib/commands/search.js.map +1 -0
  51. package/dist/lib/errors.d.ts +80 -0
  52. package/dist/lib/errors.d.ts.map +1 -0
  53. package/dist/lib/errors.js +189 -0
  54. package/dist/lib/errors.js.map +1 -0
  55. package/dist/lib/formatters/output.d.ts +5 -0
  56. package/dist/lib/formatters/output.d.ts.map +1 -0
  57. package/dist/lib/formatters/output.js +5 -0
  58. package/dist/lib/formatters/output.js.map +1 -0
  59. package/dist/lib/formatters.d.ts +29 -0
  60. package/dist/lib/formatters.d.ts.map +1 -0
  61. package/dist/lib/formatters.js +141 -0
  62. package/dist/lib/formatters.js.map +1 -0
  63. package/dist/lib/index-tools.d.ts +108 -0
  64. package/dist/lib/index-tools.d.ts.map +1 -0
  65. package/dist/lib/index-tools.js +311 -0
  66. package/dist/lib/index-tools.js.map +1 -0
  67. package/dist/lib/index.d.ts +21 -0
  68. package/dist/lib/index.d.ts.map +1 -0
  69. package/dist/lib/index.js +42 -0
  70. package/dist/lib/index.js.map +1 -0
  71. package/dist/lib/kit-wrapper.d.ts +70 -0
  72. package/dist/lib/kit-wrapper.d.ts.map +1 -0
  73. package/dist/lib/kit-wrapper.js +462 -0
  74. package/dist/lib/kit-wrapper.js.map +1 -0
  75. package/dist/lib/logger.d.ts +28 -0
  76. package/dist/lib/logger.d.ts.map +1 -0
  77. package/dist/lib/logger.js +39 -0
  78. package/dist/lib/logger.js.map +1 -0
  79. package/dist/lib/types.d.ts +179 -0
  80. package/dist/lib/types.d.ts.map +1 -0
  81. package/dist/lib/types.js +48 -0
  82. package/dist/lib/types.js.map +1 -0
  83. package/dist/lib/utils/args.d.ts +40 -0
  84. package/dist/lib/utils/args.d.ts.map +1 -0
  85. package/dist/lib/utils/args.js +58 -0
  86. package/dist/lib/utils/args.js.map +1 -0
  87. package/dist/lib/utils/git.d.ts +23 -0
  88. package/dist/lib/utils/git.d.ts.map +1 -0
  89. package/dist/lib/utils/git.js +50 -0
  90. package/dist/lib/utils/git.js.map +1 -0
  91. package/dist/lib/utils/index-parser.d.ts +155 -0
  92. package/dist/lib/utils/index-parser.d.ts.map +1 -0
  93. package/dist/lib/utils/index-parser.js +252 -0
  94. package/dist/lib/utils/index-parser.js.map +1 -0
  95. package/dist/lib/validators.d.ts +138 -0
  96. package/dist/lib/validators.d.ts.map +1 -0
  97. package/dist/lib/validators.js +302 -0
  98. package/dist/lib/validators.js.map +1 -0
  99. package/dist/mcp/index.d.ts +19 -0
  100. package/dist/mcp/index.d.ts.map +1 -0
  101. package/dist/mcp/index.js +769 -0
  102. package/dist/mcp/index.js.map +1 -0
  103. package/package.json +5 -2
  104. package/src/cli.ts +170 -0
  105. package/src/lib/ast/index.ts +32 -0
  106. package/src/lib/ast/languages.ts +172 -0
  107. package/src/lib/ast/pattern.ts +299 -0
  108. package/src/lib/ast/searcher.ts +381 -0
  109. package/src/lib/ast/types.ts +99 -0
  110. package/src/lib/commands/callers.ts +226 -0
  111. package/src/lib/commands/find.ts +159 -0
  112. package/src/lib/commands/overview.ts +73 -0
  113. package/src/lib/commands/prime.ts +271 -0
  114. package/src/lib/commands/search.ts +146 -0
  115. package/src/lib/errors.ts +221 -0
  116. package/src/lib/formatters/output.ts +9 -0
  117. package/src/lib/formatters.ts +189 -0
  118. package/src/lib/index-tools.ts +471 -0
  119. package/src/lib/index.ts +122 -0
  120. package/src/lib/kit-wrapper.ts +675 -0
  121. package/src/lib/logger.ts +57 -0
  122. package/src/lib/types.ts +228 -0
  123. package/src/lib/utils/args.ts +72 -0
  124. package/src/lib/utils/git.ts +65 -0
  125. package/src/lib/utils/index-parser.ts +350 -0
  126. package/src/lib/validators.ts +437 -0
  127. package/src/mcp/index.ts +144 -79
@@ -0,0 +1,302 @@
1
+ /**
2
+ * Kit Plugin Validators
3
+ *
4
+ * Input validation and security utilities for safe Kit CLI operations.
5
+ */
6
+ import { normalizePath, pathExistsSync, statSync } from '@side-quest/core/fs';
7
+ import { validateGlob, validateInteger, validateRegex, } from '@side-quest/core/validation';
8
+ import { getDefaultKitPath } from './types.js';
9
+ /**
10
+ * Validate a path for Kit operations.
11
+ *
12
+ * Checks:
13
+ * - Path exists
14
+ * - Path is a directory (for search operations)
15
+ * - No path traversal attacks (.. sequences escaping base)
16
+ *
17
+ * @param inputPath - Path to validate
18
+ * @param options - Validation options
19
+ * @returns Validation result with normalized path or error
20
+ */
21
+ export function validatePath(inputPath, options = {}) {
22
+ const { basePath, mustBeDirectory = true, mustExist = true } = options;
23
+ // Empty path check
24
+ if (!inputPath || inputPath.trim() === '') {
25
+ return { valid: false, error: 'Path cannot be empty' };
26
+ }
27
+ // Normalize the path
28
+ const normalizedPath = normalizePath(inputPath, basePath);
29
+ // Path traversal check - if basePath is specified, ensure we stay within it
30
+ if (basePath) {
31
+ const normalizedBase = normalizePath(basePath);
32
+ if (!normalizedPath.startsWith(normalizedBase)) {
33
+ return {
34
+ valid: false,
35
+ error: 'Path traversal detected: path escapes base directory',
36
+ };
37
+ }
38
+ }
39
+ // Existence check
40
+ if (mustExist && !pathExistsSync(normalizedPath)) {
41
+ return { valid: false, error: `Path does not exist: ${normalizedPath}` };
42
+ }
43
+ // Directory check
44
+ if (mustExist && mustBeDirectory) {
45
+ try {
46
+ const stats = statSync(normalizedPath);
47
+ if (!stats.isDirectory()) {
48
+ return {
49
+ valid: false,
50
+ error: `Path is not a directory: ${normalizedPath}`,
51
+ };
52
+ }
53
+ }
54
+ catch {
55
+ return { valid: false, error: `Cannot access path: ${normalizedPath}` };
56
+ }
57
+ }
58
+ return { valid: true, path: normalizedPath };
59
+ }
60
+ // ============================================================================
61
+ // Integer Validation
62
+ // ============================================================================
63
+ /**
64
+ * Validate a number is a positive integer within bounds.
65
+ * @deprecated Use validateInteger from @sidequest/core/validation instead
66
+ * @param value - Value to validate
67
+ * @param options - Validation options
68
+ * @returns Validation result
69
+ */
70
+ export function validatePositiveInt(value, options) {
71
+ // Delegate to core validateInteger with backward-compatible defaults
72
+ return validateInteger(value, {
73
+ name: options.name,
74
+ min: options.min ?? 1,
75
+ max: options.max ?? 10000,
76
+ defaultValue: options.defaultValue,
77
+ });
78
+ }
79
+ // ============================================================================
80
+ // Composite Validators
81
+ // ============================================================================
82
+ /**
83
+ * Validate all inputs for a grep search operation.
84
+ * @param inputs - Grep inputs to validate
85
+ * @returns Combined validation result
86
+ */
87
+ export function validateGrepInputs(inputs) {
88
+ const errors = [];
89
+ // Validate pattern - core returns ValidationResult<RegExp>
90
+ const patternResult = validateRegex(inputs.pattern);
91
+ if (!patternResult.valid) {
92
+ errors.push(patternResult.error);
93
+ }
94
+ // Validate path
95
+ const pathResult = validatePath(inputs.path || getDefaultKitPath());
96
+ if (!pathResult.valid) {
97
+ errors.push(pathResult.error);
98
+ }
99
+ // Validate include glob (optional)
100
+ let validatedInclude;
101
+ if (inputs.include) {
102
+ const includeResult = validateGlob(inputs.include);
103
+ if (!includeResult.valid) {
104
+ errors.push(`Include pattern: ${includeResult.error}`);
105
+ }
106
+ else {
107
+ validatedInclude = includeResult.value;
108
+ }
109
+ }
110
+ // Validate exclude glob (optional)
111
+ let validatedExclude;
112
+ if (inputs.exclude) {
113
+ const excludeResult = validateGlob(inputs.exclude);
114
+ if (!excludeResult.valid) {
115
+ errors.push(`Exclude pattern: ${excludeResult.error}`);
116
+ }
117
+ else {
118
+ validatedExclude = excludeResult.value;
119
+ }
120
+ }
121
+ // Validate maxResults
122
+ const maxResultsResult = validatePositiveInt(inputs.maxResults, {
123
+ name: 'maxResults',
124
+ min: 1,
125
+ max: 1000,
126
+ defaultValue: 100,
127
+ });
128
+ if (!maxResultsResult.valid) {
129
+ errors.push(maxResultsResult.error);
130
+ }
131
+ if (errors.length > 0) {
132
+ return { valid: false, errors };
133
+ }
134
+ return {
135
+ valid: true,
136
+ errors: [],
137
+ validated: {
138
+ pattern: patternResult.value.source, // Extract source from compiled RegExp
139
+ path: pathResult.path,
140
+ include: validatedInclude,
141
+ exclude: validatedExclude,
142
+ maxResults: maxResultsResult.value,
143
+ },
144
+ };
145
+ }
146
+ /**
147
+ * Validate all inputs for a semantic search operation.
148
+ * @param inputs - Semantic search inputs to validate
149
+ * @returns Combined validation result
150
+ */
151
+ export function validateSemanticInputs(inputs) {
152
+ const errors = [];
153
+ // Validate query (not a regex, just non-empty)
154
+ if (!inputs.query || inputs.query.trim() === '') {
155
+ errors.push('Query cannot be empty');
156
+ }
157
+ // Validate path
158
+ const pathResult = validatePath(inputs.path || getDefaultKitPath());
159
+ if (!pathResult.valid) {
160
+ errors.push(pathResult.error);
161
+ }
162
+ // Validate topK
163
+ const topKResult = validatePositiveInt(inputs.topK, {
164
+ name: 'topK',
165
+ min: 1,
166
+ max: 50,
167
+ defaultValue: 5,
168
+ });
169
+ if (!topKResult.valid) {
170
+ errors.push(topKResult.error);
171
+ }
172
+ if (errors.length > 0) {
173
+ return { valid: false, errors };
174
+ }
175
+ return {
176
+ valid: true,
177
+ errors: [],
178
+ validated: {
179
+ query: inputs.query.trim(),
180
+ path: pathResult.path,
181
+ topK: topKResult.value,
182
+ },
183
+ };
184
+ }
185
+ /**
186
+ * Validate all inputs for a symbol usages operation.
187
+ * @param inputs - Usages inputs to validate
188
+ * @returns Combined validation result
189
+ */
190
+ export function validateUsagesInputs(inputs) {
191
+ const errors = [];
192
+ // Validate path
193
+ const pathResult = validatePath(inputs.path || getDefaultKitPath());
194
+ if (!pathResult.valid) {
195
+ errors.push(pathResult.error);
196
+ }
197
+ // Validate symbol name
198
+ if (!inputs.symbolName || inputs.symbolName.trim() === '') {
199
+ errors.push('Symbol name is required');
200
+ }
201
+ // Validate symbol type (optional)
202
+ let validatedSymbolType;
203
+ if (inputs.symbolType) {
204
+ const sanitized = inputs.symbolType.trim().toLowerCase();
205
+ const validTypes = [
206
+ 'function',
207
+ 'class',
208
+ 'variable',
209
+ 'type',
210
+ 'interface',
211
+ 'method',
212
+ 'property',
213
+ 'constant',
214
+ ];
215
+ if (sanitized && !validTypes.includes(sanitized)) {
216
+ errors.push(`Invalid symbol type: ${inputs.symbolType}. Valid types: ${validTypes.join(', ')}`);
217
+ }
218
+ else {
219
+ validatedSymbolType = sanitized || undefined;
220
+ }
221
+ }
222
+ if (errors.length > 0) {
223
+ return { valid: false, errors };
224
+ }
225
+ return {
226
+ valid: true,
227
+ errors: [],
228
+ validated: {
229
+ path: pathResult.path,
230
+ symbolName: inputs.symbolName.trim(),
231
+ symbolType: validatedSymbolType,
232
+ },
233
+ };
234
+ }
235
+ /**
236
+ * Validate all inputs for an AST search operation.
237
+ * @param inputs - AST search inputs to validate
238
+ * @returns Combined validation result
239
+ */
240
+ export function validateAstSearchInputs(inputs) {
241
+ const errors = [];
242
+ // Validate pattern
243
+ if (!inputs.pattern || inputs.pattern.trim() === '') {
244
+ errors.push('Pattern cannot be empty');
245
+ }
246
+ // Validate mode
247
+ const validModes = ['simple', 'pattern'];
248
+ const mode = (inputs.mode || 'simple').toLowerCase();
249
+ if (!validModes.includes(mode)) {
250
+ errors.push(`Invalid mode: ${inputs.mode}. Valid modes: ${validModes.join(', ')}`);
251
+ }
252
+ // Validate pattern mode JSON if mode is 'pattern'
253
+ if (mode === 'pattern' && inputs.pattern) {
254
+ try {
255
+ JSON.parse(inputs.pattern);
256
+ }
257
+ catch {
258
+ // Allow non-JSON patterns - they'll be treated as textMatch
259
+ }
260
+ }
261
+ // Validate file pattern (optional glob)
262
+ let validatedFilePattern;
263
+ if (inputs.filePattern) {
264
+ const patternResult = validateGlob(inputs.filePattern);
265
+ if (!patternResult.valid) {
266
+ errors.push(`File pattern: ${patternResult.error}`);
267
+ }
268
+ else {
269
+ validatedFilePattern = patternResult.value;
270
+ }
271
+ }
272
+ // Validate path
273
+ const pathResult = validatePath(inputs.path || getDefaultKitPath());
274
+ if (!pathResult.valid) {
275
+ errors.push(pathResult.error);
276
+ }
277
+ // Validate maxResults
278
+ const maxResultsResult = validatePositiveInt(inputs.maxResults, {
279
+ name: 'maxResults',
280
+ min: 1,
281
+ max: 500,
282
+ defaultValue: 100,
283
+ });
284
+ if (!maxResultsResult.valid) {
285
+ errors.push(maxResultsResult.error);
286
+ }
287
+ if (errors.length > 0) {
288
+ return { valid: false, errors };
289
+ }
290
+ return {
291
+ valid: true,
292
+ errors: [],
293
+ validated: {
294
+ pattern: inputs.pattern.trim(),
295
+ mode: mode,
296
+ filePattern: validatedFilePattern,
297
+ path: pathResult.path,
298
+ maxResults: maxResultsResult.value,
299
+ },
300
+ };
301
+ }
302
+ //# sourceMappingURL=validators.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"validators.js","sourceRoot":"","sources":["../../src/lib/validators.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,19 @@
1
+ #!/usr/bin/env bun
2
+ /**
3
+ * Kit MCP Server (Slim)
4
+ *
5
+ * 7 focused tools for token-efficient codebase navigation using Kit CLI.
6
+ *
7
+ * Tools:
8
+ * 1. kit_prime - Generate/refresh PROJECT_INDEX.json
9
+ * 2. kit_find - Symbol lookup + file overview (merged)
10
+ * 3. kit_references - Callers + usages (merged)
11
+ * 4. kit_semantic - Vector search with grep fallback
12
+ * 5. kit_ast_search - Tree-sitter structural search
13
+ * 6. kit_context - Extract enclosing definition around file:line
14
+ * 7. kit_chunk - Split file into LLM-friendly chunks
15
+ *
16
+ * Observability: JSONL file logging to ~/.claude/logs/kit.jsonl
17
+ */
18
+ export {};
19
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/mcp/index.ts"],"names":[],"mappings":";AAEA;;;;;;;;;;;;;;;GAeG"}