@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,462 @@
1
+ /**
2
+ * Kit CLI Wrapper
3
+ *
4
+ * Pure functions for executing Kit CLI commands with proper error handling.
5
+ * Uses Bun.spawnSync via shared helpers for synchronous execution to fit MCP tool patterns.
6
+ */
7
+ import { join } from 'node:path';
8
+ import { TimeoutError, withTimeout } from '@side-quest/core/concurrency';
9
+ import { ensureCacheDir, isCachePopulated, withTempJsonFileSync, } from '@side-quest/core/fs';
10
+ import { buildEnhancedPath, ensureCommandAvailable, spawnSyncCollect, } from '@side-quest/core/spawn';
11
+ import { AST_SEARCH_TIMEOUT, ASTSearcher, } from './ast/index.js';
12
+ import { createErrorFromOutput, isSemanticUnavailableError, isTimeoutError, KitError, KitErrorType, SEMANTIC_INSTALL_HINT, } from './errors.js';
13
+ import { astLogger, createCorrelationId, grepLogger, semanticLogger, usagesLogger, } from './logger.js';
14
+ import { GREP_TIMEOUT, getDefaultKitPath, SEMANTIC_TIMEOUT, USAGES_TIMEOUT, } from './types.js';
15
+ // ============================================================================
16
+ // Kit CLI Execution
17
+ // ============================================================================
18
+ /**
19
+ * Check if Kit CLI is installed and available in PATH.
20
+ * @returns True if kit command is available
21
+ */
22
+ export function isKitInstalled() {
23
+ try {
24
+ ensureCommandAvailable('kit');
25
+ return true;
26
+ }
27
+ catch {
28
+ return false;
29
+ }
30
+ }
31
+ /**
32
+ * Get Kit CLI version.
33
+ * @returns Version string or null if not installed
34
+ */
35
+ export function getKitVersion() {
36
+ try {
37
+ const result = spawnSyncCollect(['kit', '--version'], {
38
+ env: {
39
+ ...process.env,
40
+ PATH: buildEnhancedPath(),
41
+ },
42
+ });
43
+ if (result.exitCode === 0 && result.stdout) {
44
+ return result.stdout.trim();
45
+ }
46
+ return null;
47
+ }
48
+ catch {
49
+ return null;
50
+ }
51
+ }
52
+ /**
53
+ * Execute a Kit CLI command.
54
+ * @param args - Arguments to pass to kit
55
+ * @param options - Execution options
56
+ * @returns Execution result with stdout, stderr, and exit code
57
+ */
58
+ function executeKit(args, options = {}) {
59
+ const { cwd } = options;
60
+ const result = spawnSyncCollect(['kit', ...args], {
61
+ env: {
62
+ ...process.env,
63
+ PATH: buildEnhancedPath(),
64
+ },
65
+ ...(cwd && { cwd }),
66
+ });
67
+ return {
68
+ stdout: result.stdout || '',
69
+ stderr: result.stderr || '',
70
+ exitCode: result.exitCode ?? 1,
71
+ };
72
+ }
73
+ /**
74
+ * Execute kit grep command.
75
+ * @param options - Grep options
76
+ * @returns Grep result or error
77
+ */
78
+ export function executeKitGrep(options) {
79
+ const cid = createCorrelationId();
80
+ const startTime = Date.now();
81
+ // Check if Kit is installed
82
+ if (!isKitInstalled()) {
83
+ grepLogger.error('Kit not installed', { cid });
84
+ return new KitError(KitErrorType.KitNotInstalled).toJSON();
85
+ }
86
+ const { pattern, path = getDefaultKitPath(), caseSensitive = true, include, exclude, maxResults = 100, directory, } = options;
87
+ // Build command arguments
88
+ const args = ['grep', path, pattern];
89
+ // Add options
90
+ if (!caseSensitive) {
91
+ args.push('--ignore-case');
92
+ }
93
+ if (include) {
94
+ args.push('--include', include);
95
+ }
96
+ if (exclude) {
97
+ args.push('--exclude', exclude);
98
+ }
99
+ args.push('--max-results', String(maxResults));
100
+ if (directory) {
101
+ args.push('--directory', directory);
102
+ }
103
+ grepLogger.info('Executing kit grep', {
104
+ cid,
105
+ pattern,
106
+ path,
107
+ args,
108
+ });
109
+ try {
110
+ // Use temp file for JSON output with automatic cleanup
111
+ const rawMatches = withTempJsonFileSync(`kit-grep-${cid}`, (tempFile) => {
112
+ args.push('--output', tempFile);
113
+ const result = executeKit(args, { timeout: GREP_TIMEOUT });
114
+ return {
115
+ exitCode: result.exitCode,
116
+ stderr: result.stderr,
117
+ };
118
+ });
119
+ // Transform to our format
120
+ const matches = rawMatches.map((m) => ({
121
+ file: m.file,
122
+ line: m.line_number,
123
+ content: m.line_content,
124
+ }));
125
+ grepLogger.info('Grep completed', {
126
+ cid,
127
+ pattern,
128
+ matchCount: matches.length,
129
+ durationMs: Date.now() - startTime,
130
+ });
131
+ return {
132
+ count: matches.length,
133
+ matches,
134
+ pattern,
135
+ path,
136
+ };
137
+ }
138
+ catch (error) {
139
+ const message = error instanceof Error ? error.message : 'Unknown error';
140
+ grepLogger.error('Grep threw exception', { cid, error: message });
141
+ // Check if this is a Kit CLI error from withTempJsonFileSync
142
+ if (message.includes('Operation failed with exit code')) {
143
+ const exitCode = Number.parseInt(message.match(/exit code (\d+)/)?.[1] || '1', 10);
144
+ const stderr = message.split(': ').slice(2).join(': ') || message;
145
+ return createErrorFromOutput(stderr, exitCode).toJSON();
146
+ }
147
+ return new KitError(KitErrorType.KitCommandFailed, message).toJSON();
148
+ }
149
+ }
150
+ /**
151
+ * Execute kit semantic search command.
152
+ * @param options - Semantic search options
153
+ * @returns Semantic result or error (with fallback to grep)
154
+ */
155
+ export function executeKitSemantic(options) {
156
+ const cid = createCorrelationId();
157
+ const startTime = Date.now();
158
+ // Check if Kit is installed
159
+ if (!isKitInstalled()) {
160
+ semanticLogger.error('Kit not installed', { cid });
161
+ return new KitError(KitErrorType.KitNotInstalled).toJSON();
162
+ }
163
+ const { query, path = getDefaultKitPath(), topK = 5, chunkBy = 'symbols', buildIndex = false, } = options;
164
+ // Pre-flight check: if index not built and not forcing build, tell user to build it first
165
+ if (!buildIndex && !isSemanticIndexBuilt(path)) {
166
+ semanticLogger.info('Semantic index not built, instructing user to build', {
167
+ cid,
168
+ path,
169
+ });
170
+ const buildCommand = `kit search-semantic "${path}" "${query}" --build-index`;
171
+ const error = new KitError(KitErrorType.SemanticIndexNotBuilt, `To use semantic search, build the vector index with:\n\n ${buildCommand}\n\nAfter building (one-time), semantic search will be fast and cached.`);
172
+ return error.toJSON();
173
+ }
174
+ // Get global cache directory for this repo's vector index
175
+ const persistDir = getSemanticCacheDir(path);
176
+ // Build command arguments
177
+ const args = [
178
+ 'search-semantic',
179
+ path,
180
+ query,
181
+ '--top-k',
182
+ String(topK),
183
+ '--format',
184
+ 'json',
185
+ '--chunk-by',
186
+ chunkBy,
187
+ '--persist-dir',
188
+ persistDir,
189
+ ];
190
+ if (buildIndex) {
191
+ args.push('--build-index');
192
+ }
193
+ semanticLogger.info('Executing kit semantic search', {
194
+ cid,
195
+ query,
196
+ path,
197
+ topK,
198
+ chunkBy,
199
+ persistDir,
200
+ });
201
+ try {
202
+ const result = executeKit(args, { timeout: SEMANTIC_TIMEOUT });
203
+ // Check for semantic search unavailable (ML deps not installed)
204
+ // Note: kit writes error messages to stdout, not stderr
205
+ const combinedOutput = `${result.stdout}\n${result.stderr}`;
206
+ if (result.exitCode !== 0 && isSemanticUnavailableError(combinedOutput)) {
207
+ semanticLogger.warn('Semantic search unavailable, falling back to grep', {
208
+ cid,
209
+ output: combinedOutput.slice(0, 200),
210
+ });
211
+ // Fall back to grep search
212
+ return fallbackToGrep(query, path, topK, cid);
213
+ }
214
+ // Check for timeout - DO NOT fall back to grep as it would also timeout
215
+ if (result.exitCode !== 0 && isTimeoutError(combinedOutput)) {
216
+ semanticLogger.warn('Semantic search timed out on large repository', {
217
+ cid,
218
+ query,
219
+ durationMs: Date.now() - startTime,
220
+ });
221
+ return new KitError(KitErrorType.Timeout, `Semantic search timed out after ${SEMANTIC_TIMEOUT}ms. On first run, building the vector index may take longer. Try again to use the cached index.`).toJSON();
222
+ }
223
+ // Check for other errors
224
+ if (result.exitCode !== 0) {
225
+ semanticLogger.error('Semantic search failed', {
226
+ cid,
227
+ exitCode: result.exitCode,
228
+ output: combinedOutput.slice(0, 500),
229
+ durationMs: Date.now() - startTime,
230
+ });
231
+ return createErrorFromOutput(combinedOutput, result.exitCode).toJSON();
232
+ }
233
+ // Parse JSON output
234
+ let rawMatches;
235
+ try {
236
+ rawMatches = JSON.parse(result.stdout);
237
+ }
238
+ catch {
239
+ semanticLogger.error('Failed to parse semantic output', {
240
+ cid,
241
+ stdout: result.stdout,
242
+ });
243
+ return new KitError(KitErrorType.OutputParseError, 'Failed to parse semantic search JSON output').toJSON();
244
+ }
245
+ // Transform to our format
246
+ const matches = rawMatches.map((m) => ({
247
+ file: m.file,
248
+ chunk: m.code,
249
+ score: m.score,
250
+ startLine: m.start_line,
251
+ endLine: m.end_line,
252
+ }));
253
+ semanticLogger.info('Semantic search completed', {
254
+ cid,
255
+ query,
256
+ matchCount: matches.length,
257
+ durationMs: Date.now() - startTime,
258
+ });
259
+ return {
260
+ count: matches.length,
261
+ matches,
262
+ query,
263
+ path,
264
+ };
265
+ }
266
+ catch (error) {
267
+ const message = error instanceof Error ? error.message : 'Unknown error';
268
+ semanticLogger.error('Semantic search threw exception', {
269
+ cid,
270
+ error: message,
271
+ });
272
+ return new KitError(KitErrorType.KitCommandFailed, message).toJSON();
273
+ }
274
+ }
275
+ /**
276
+ * Fall back to grep when semantic search is unavailable.
277
+ */
278
+ function fallbackToGrep(query, path, limit, cid) {
279
+ // Extract keywords from the query for grep
280
+ const keywords = query
281
+ .split(/\s+/)
282
+ .filter((w) => w.length > 2)
283
+ .slice(0, 3);
284
+ const pattern = keywords.join('|');
285
+ semanticLogger.info('Fallback grep search', { cid, pattern, path });
286
+ const grepResult = executeKitGrep({
287
+ pattern,
288
+ path,
289
+ maxResults: limit,
290
+ caseSensitive: false,
291
+ });
292
+ if ('error' in grepResult) {
293
+ return grepResult;
294
+ }
295
+ // Convert grep matches to semantic format
296
+ // Score decreases by 0.05 per result, with minimum of 0.1 to avoid negative scores
297
+ const matches = grepResult.matches.map((m, idx) => ({
298
+ file: m.file,
299
+ chunk: m.content,
300
+ score: Math.max(0.1, 1 - idx * 0.05),
301
+ startLine: m.line,
302
+ endLine: m.line,
303
+ }));
304
+ return {
305
+ count: matches.length,
306
+ matches,
307
+ query,
308
+ path,
309
+ fallback: true,
310
+ installHint: SEMANTIC_INSTALL_HINT,
311
+ };
312
+ }
313
+ /**
314
+ * Execute kit usages command to find symbol definitions.
315
+ * @param options - Usages options
316
+ * @returns Usages result or error
317
+ */
318
+ export function executeKitUsages(options) {
319
+ const cid = createCorrelationId();
320
+ const startTime = Date.now();
321
+ // Check if Kit is installed
322
+ if (!isKitInstalled()) {
323
+ usagesLogger.error('Kit not installed', { cid });
324
+ return new KitError(KitErrorType.KitNotInstalled).toJSON();
325
+ }
326
+ const { path = getDefaultKitPath(), symbolName, symbolType } = options;
327
+ if (!symbolName || symbolName.trim() === '') {
328
+ return new KitError(KitErrorType.InvalidInput, 'Symbol name is required').toJSON();
329
+ }
330
+ // Build command arguments
331
+ const args = ['usages', path, symbolName.trim()];
332
+ if (symbolType) {
333
+ args.push('--type', symbolType);
334
+ }
335
+ usagesLogger.info('Executing kit usages', {
336
+ cid,
337
+ path,
338
+ symbolName,
339
+ symbolType,
340
+ args,
341
+ });
342
+ try {
343
+ // Use temp file for JSON output with automatic cleanup
344
+ const rawUsages = withTempJsonFileSync(`kit-usages-${cid}`, (tempFile) => {
345
+ const argsWithOutput = [...args, '--output', tempFile];
346
+ const result = executeKit(argsWithOutput, { timeout: USAGES_TIMEOUT });
347
+ return {
348
+ exitCode: result.exitCode,
349
+ stderr: result.stderr,
350
+ };
351
+ });
352
+ // Transform to our format
353
+ const usages = rawUsages.map((u) => ({
354
+ file: u.file,
355
+ type: u.type,
356
+ name: u.name,
357
+ line: u.line,
358
+ context: u.context,
359
+ }));
360
+ usagesLogger.info('Usages completed', {
361
+ cid,
362
+ symbolName,
363
+ usageCount: usages.length,
364
+ durationMs: Date.now() - startTime,
365
+ });
366
+ return {
367
+ count: usages.length,
368
+ usages,
369
+ symbolName: symbolName.trim(),
370
+ path,
371
+ };
372
+ }
373
+ catch (error) {
374
+ const message = error instanceof Error ? error.message : 'Unknown error';
375
+ usagesLogger.error('Usages threw exception', { cid, error: message });
376
+ // Check if this is a Kit CLI error from withTempJsonFileSync
377
+ if (message.includes('Operation failed with exit code')) {
378
+ const exitCode = Number.parseInt(message.match(/exit code (\d+)/)?.[1] || '1', 10);
379
+ const stderr = message.split(': ').slice(2).join(': ') || message;
380
+ return createErrorFromOutput(stderr, exitCode).toJSON();
381
+ }
382
+ return new KitError(KitErrorType.KitCommandFailed, message).toJSON();
383
+ }
384
+ }
385
+ // ============================================================================
386
+ // AST Search Execution (tree-sitter powered)
387
+ // ============================================================================
388
+ /**
389
+ * Execute AST-based code search using tree-sitter.
390
+ *
391
+ * Unlike other Kit commands, this uses an internal tree-sitter
392
+ * implementation rather than shelling out to the Kit CLI.
393
+ *
394
+ * @param options - AST search options
395
+ * @returns AST search result or error
396
+ */
397
+ export async function executeAstSearch(options) {
398
+ const cid = createCorrelationId();
399
+ const startTime = Date.now();
400
+ const { pattern, mode, filePattern, path, maxResults } = options;
401
+ astLogger.info('Executing AST search', {
402
+ cid,
403
+ pattern,
404
+ mode,
405
+ filePattern,
406
+ path,
407
+ maxResults,
408
+ });
409
+ try {
410
+ const searcher = new ASTSearcher(path);
411
+ // Use core timeout utility
412
+ const result = await withTimeout(searcher.searchPattern(options), AST_SEARCH_TIMEOUT, 'AST search timed out');
413
+ astLogger.info('AST search completed', {
414
+ cid,
415
+ pattern,
416
+ matchCount: result.count,
417
+ durationMs: Date.now() - startTime,
418
+ });
419
+ return result;
420
+ }
421
+ catch (error) {
422
+ const message = error instanceof Error ? error.message : 'Unknown error';
423
+ const timeoutInfo = error instanceof TimeoutError ? ` after ${error.timeoutMs}ms` : '';
424
+ astLogger.error('AST search failed', {
425
+ cid,
426
+ error: message + timeoutInfo,
427
+ });
428
+ return new KitError(KitErrorType.KitCommandFailed, message).toJSON();
429
+ }
430
+ }
431
+ // ============================================================================
432
+ // Utilities
433
+ // ============================================================================
434
+ /**
435
+ * Get the persist directory for a repo's semantic search vector index.
436
+ * Creates the directory if it doesn't exist.
437
+ *
438
+ * Per-repo caching strategy: Each repository gets its own .kit/vector_db/
439
+ * directory for isolated, portable vector indexes. This ensures:
440
+ * - Cache is scoped to the repo being searched
441
+ * - No cross-contamination between different repos
442
+ * - Cache travels with the repo context in Claude Code sessions
443
+ * - Easy cleanup (delete .kit/ when done with project)
444
+ *
445
+ * Structure: <repo-path>/.kit/vector_db/
446
+ *
447
+ * @param repoPath - Absolute path to the repository
448
+ * @returns Path to the persist directory for this repo's vector index
449
+ */
450
+ export function getSemanticCacheDir(repoPath) {
451
+ return ensureCacheDir(repoPath, 'vector_db');
452
+ }
453
+ /**
454
+ * Check if semantic search vector index has been built for a repository.
455
+ * @param repoPath - Path to the repository
456
+ * @returns True if vector index exists and has been built
457
+ */
458
+ export function isSemanticIndexBuilt(repoPath) {
459
+ const cacheDir = join(repoPath, '.kit', 'vector_db');
460
+ return isCachePopulated(cacheDir);
461
+ }
462
+ //# sourceMappingURL=kit-wrapper.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"kit-wrapper.js","sourceRoot":"","sources":["../../src/lib/kit-wrapper.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAA;AAChC,OAAO,EAAE,YAAY,EAAE,WAAW,EAAE,MAAM,8BAA8B,CAAA;AACxE,OAAO,EACN,cAAc,EACd,gBAAgB,EAChB,oBAAoB,GACpB,MAAM,qBAAqB,CAAA;AAC5B,OAAO,EACN,iBAAiB,EACjB,sBAAsB,EACtB,gBAAgB,GAChB,MAAM,wBAAwB,CAAA;AAE/B,OAAO,EACN,kBAAkB,EAClB,WAAW,GAGX,MAAM,gBAAgB,CAAA;AACvB,OAAO,EACN,qBAAqB,EACrB,0BAA0B,EAC1B,cAAc,EACd,QAAQ,EACR,YAAY,EACZ,qBAAqB,GACrB,MAAM,aAAa,CAAA;AACpB,OAAO,EACN,SAAS,EACT,mBAAmB,EACnB,UAAU,EACV,cAAc,EACd,YAAY,GACZ,MAAM,aAAa,CAAA;AAapB,OAAO,EACN,YAAY,EACZ,iBAAiB,EACjB,gBAAgB,EAChB,cAAc,GACd,MAAM,YAAY,CAAA;AAEnB,+EAA+E;AAC/E,oBAAoB;AACpB,+EAA+E;AAE/E;;;GAGG;AACH,MAAM,UAAU,cAAc;IAC7B,IAAI,CAAC;QACJ,sBAAsB,CAAC,KAAK,CAAC,CAAA;QAC7B,OAAO,IAAI,CAAA;IACZ,CAAC;IAAC,MAAM,CAAC;QACR,OAAO,KAAK,CAAA;IACb,CAAC;AACF,CAAC;AAED;;;GAGG;AACH,MAAM,UAAU,aAAa;IAC5B,IAAI,CAAC;QACJ,MAAM,MAAM,GAAG,gBAAgB,CAAC,CAAC,KAAK,EAAE,WAAW,CAAC,EAAE;YACrD,GAAG,EAAE;gBACJ,GAAG,OAAO,CAAC,GAAG;gBACd,IAAI,EAAE,iBAAiB,EAAE;aACzB;SACD,CAAC,CAAA;QACF,IAAI,MAAM,CAAC,QAAQ,KAAK,CAAC,IAAI,MAAM,CAAC,MAAM,EAAE,CAAC;YAC5C,OAAO,MAAM,CAAC,MAAM,CAAC,IAAI,EAAE,CAAA;QAC5B,CAAC;QACD,OAAO,IAAI,CAAA;IACZ,CAAC;IAAC,MAAM,CAAC;QACR,OAAO,IAAI,CAAA;IACZ,CAAC;AACF,CAAC;AAED;;;;;GAKG;AACH,SAAS,UAAU,CAClB,IAAc,EACd,UAGI,EAAE;IAEN,MAAM,EAAE,GAAG,EAAE,GAAG,OAAO,CAAA;IAEvB,MAAM,MAAM,GAAG,gBAAgB,CAAC,CAAC,KAAK,EAAE,GAAG,IAAI,CAAC,EAAE;QACjD,GAAG,EAAE;YACJ,GAAG,OAAO,CAAC,GAAG;YACd,IAAI,EAAE,iBAAiB,EAAE;SACzB;QACD,GAAG,CAAC,GAAG,IAAI,EAAE,GAAG,EAAE,CAAC;KACnB,CAAC,CAAA;IAEF,OAAO;QACN,MAAM,EAAE,MAAM,CAAC,MAAM,IAAI,EAAE;QAC3B,MAAM,EAAE,MAAM,CAAC,MAAM,IAAI,EAAE;QAC3B,QAAQ,EAAE,MAAM,CAAC,QAAQ,IAAI,CAAC;KAC9B,CAAA;AACF,CAAC;AAeD;;;;GAIG;AACH,MAAM,UAAU,cAAc,CAAC,OAAoB;IAClD,MAAM,GAAG,GAAG,mBAAmB,EAAE,CAAA;IACjC,MAAM,SAAS,GAAG,IAAI,CAAC,GAAG,EAAE,CAAA;IAE5B,4BAA4B;IAC5B,IAAI,CAAC,cAAc,EAAE,EAAE,CAAC;QACvB,UAAU,CAAC,KAAK,CAAC,mBAAmB,EAAE,EAAE,GAAG,EAAE,CAAC,CAAA;QAC9C,OAAO,IAAI,QAAQ,CAAC,YAAY,CAAC,eAAe,CAAC,CAAC,MAAM,EAAE,CAAA;IAC3D,CAAC;IAED,MAAM,EACL,OAAO,EACP,IAAI,GAAG,iBAAiB,EAAE,EAC1B,aAAa,GAAG,IAAI,EACpB,OAAO,EACP,OAAO,EACP,UAAU,GAAG,GAAG,EAChB,SAAS,GACT,GAAG,OAAO,CAAA;IAEX,0BAA0B;IAC1B,MAAM,IAAI,GAAa,CAAC,MAAM,EAAE,IAAI,EAAE,OAAO,CAAC,CAAA;IAE9C,cAAc;IACd,IAAI,CAAC,aAAa,EAAE,CAAC;QACpB,IAAI,CAAC,IAAI,CAAC,eAAe,CAAC,CAAA;IAC3B,CAAC;IAED,IAAI,OAAO,EAAE,CAAC;QACb,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE,OAAO,CAAC,CAAA;IAChC,CAAC;IAED,IAAI,OAAO,EAAE,CAAC;QACb,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE,OAAO,CAAC,CAAA;IAChC,CAAC;IAED,IAAI,CAAC,IAAI,CAAC,eAAe,EAAE,MAAM,CAAC,UAAU,CAAC,CAAC,CAAA;IAE9C,IAAI,SAAS,EAAE,CAAC;QACf,IAAI,CAAC,IAAI,CAAC,aAAa,EAAE,SAAS,CAAC,CAAA;IACpC,CAAC;IAED,UAAU,CAAC,IAAI,CAAC,oBAAoB,EAAE;QACrC,GAAG;QACH,OAAO;QACP,IAAI;QACJ,IAAI;KACJ,CAAC,CAAA;IAEF,IAAI,CAAC;QACJ,uDAAuD;QACvD,MAAM,UAAU,GAAG,oBAAoB,CACtC,YAAY,GAAG,EAAE,EACjB,CAAC,QAAQ,EAAE,EAAE;YACZ,IAAI,CAAC,IAAI,CAAC,UAAU,EAAE,QAAQ,CAAC,CAAA;YAC/B,MAAM,MAAM,GAAG,UAAU,CAAC,IAAI,EAAE,EAAE,OAAO,EAAE,YAAY,EAAE,CAAC,CAAA;YAC1D,OAAO;gBACN,QAAQ,EAAE,MAAM,CAAC,QAAQ;gBACzB,MAAM,EAAE,MAAM,CAAC,MAAM;aACrB,CAAA;QACF,CAAC,CACD,CAAA;QAED,0BAA0B;QAC1B,MAAM,OAAO,GAAgB,UAAU,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;YACnD,IAAI,EAAE,CAAC,CAAC,IAAI;YACZ,IAAI,EAAE,CAAC,CAAC,WAAW;YACnB,OAAO,EAAE,CAAC,CAAC,YAAY;SACvB,CAAC,CAAC,CAAA;QAEH,UAAU,CAAC,IAAI,CAAC,gBAAgB,EAAE;YACjC,GAAG;YACH,OAAO;YACP,UAAU,EAAE,OAAO,CAAC,MAAM;YAC1B,UAAU,EAAE,IAAI,CAAC,GAAG,EAAE,GAAG,SAAS;SAClC,CAAC,CAAA;QAEF,OAAO;YACN,KAAK,EAAE,OAAO,CAAC,MAAM;YACrB,OAAO;YACP,OAAO;YACP,IAAI;SACJ,CAAA;IACF,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QAChB,MAAM,OAAO,GAAG,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,eAAe,CAAA;QACxE,UAAU,CAAC,KAAK,CAAC,sBAAsB,EAAE,EAAE,GAAG,EAAE,KAAK,EAAE,OAAO,EAAE,CAAC,CAAA;QAEjE,6DAA6D;QAC7D,IAAI,OAAO,CAAC,QAAQ,CAAC,iCAAiC,CAAC,EAAE,CAAC;YACzD,MAAM,QAAQ,GAAG,MAAM,CAAC,QAAQ,CAC/B,OAAO,CAAC,KAAK,CAAC,iBAAiB,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,GAAG,EAC5C,EAAE,CACF,CAAA;YACD,MAAM,MAAM,GAAG,OAAO,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,OAAO,CAAA;YACjE,OAAO,qBAAqB,CAAC,MAAM,EAAE,QAAQ,CAAC,CAAC,MAAM,EAAE,CAAA;QACxD,CAAC;QAED,OAAO,IAAI,QAAQ,CAAC,YAAY,CAAC,gBAAgB,EAAE,OAAO,CAAC,CAAC,MAAM,EAAE,CAAA;IACrE,CAAC;AACF,CAAC;AAmBD;;;;GAIG;AACH,MAAM,UAAU,kBAAkB,CACjC,OAAwB;IAExB,MAAM,GAAG,GAAG,mBAAmB,EAAE,CAAA;IACjC,MAAM,SAAS,GAAG,IAAI,CAAC,GAAG,EAAE,CAAA;IAE5B,4BAA4B;IAC5B,IAAI,CAAC,cAAc,EAAE,EAAE,CAAC;QACvB,cAAc,CAAC,KAAK,CAAC,mBAAmB,EAAE,EAAE,GAAG,EAAE,CAAC,CAAA;QAClD,OAAO,IAAI,QAAQ,CAAC,YAAY,CAAC,eAAe,CAAC,CAAC,MAAM,EAAE,CAAA;IAC3D,CAAC;IAED,MAAM,EACL,KAAK,EACL,IAAI,GAAG,iBAAiB,EAAE,EAC1B,IAAI,GAAG,CAAC,EACR,OAAO,GAAG,SAAS,EACnB,UAAU,GAAG,KAAK,GAClB,GAAG,OAAO,CAAA;IAEX,0FAA0F;IAC1F,IAAI,CAAC,UAAU,IAAI,CAAC,oBAAoB,CAAC,IAAI,CAAC,EAAE,CAAC;QAChD,cAAc,CAAC,IAAI,CAAC,qDAAqD,EAAE;YAC1E,GAAG;YACH,IAAI;SACJ,CAAC,CAAA;QAEF,MAAM,YAAY,GAAG,wBAAwB,IAAI,MAAM,KAAK,iBAAiB,CAAA;QAC7E,MAAM,KAAK,GAAG,IAAI,QAAQ,CACzB,YAAY,CAAC,qBAAqB,EAClC,6DAA6D,YAAY,yEAAyE,CAClJ,CAAA;QACD,OAAO,KAAK,CAAC,MAAM,EAAE,CAAA;IACtB,CAAC;IAED,0DAA0D;IAC1D,MAAM,UAAU,GAAG,mBAAmB,CAAC,IAAI,CAAC,CAAA;IAE5C,0BAA0B;IAC1B,MAAM,IAAI,GAAa;QACtB,iBAAiB;QACjB,IAAI;QACJ,KAAK;QACL,SAAS;QACT,MAAM,CAAC,IAAI,CAAC;QACZ,UAAU;QACV,MAAM;QACN,YAAY;QACZ,OAAO;QACP,eAAe;QACf,UAAU;KACV,CAAA;IAED,IAAI,UAAU,EAAE,CAAC;QAChB,IAAI,CAAC,IAAI,CAAC,eAAe,CAAC,CAAA;IAC3B,CAAC;IAED,cAAc,CAAC,IAAI,CAAC,+BAA+B,EAAE;QACpD,GAAG;QACH,KAAK;QACL,IAAI;QACJ,IAAI;QACJ,OAAO;QACP,UAAU;KACV,CAAC,CAAA;IAEF,IAAI,CAAC;QACJ,MAAM,MAAM,GAAG,UAAU,CAAC,IAAI,EAAE,EAAE,OAAO,EAAE,gBAAgB,EAAE,CAAC,CAAA;QAE9D,gEAAgE;QAChE,wDAAwD;QACxD,MAAM,cAAc,GAAG,GAAG,MAAM,CAAC,MAAM,KAAK,MAAM,CAAC,MAAM,EAAE,CAAA;QAC3D,IAAI,MAAM,CAAC,QAAQ,KAAK,CAAC,IAAI,0BAA0B,CAAC,cAAc,CAAC,EAAE,CAAC;YACzE,cAAc,CAAC,IAAI,CAAC,mDAAmD,EAAE;gBACxE,GAAG;gBACH,MAAM,EAAE,cAAc,CAAC,KAAK,CAAC,CAAC,EAAE,GAAG,CAAC;aACpC,CAAC,CAAA;YAEF,2BAA2B;YAC3B,OAAO,cAAc,CAAC,KAAK,EAAE,IAAI,EAAE,IAAI,EAAE,GAAG,CAAC,CAAA;QAC9C,CAAC;QAED,wEAAwE;QACxE,IAAI,MAAM,CAAC,QAAQ,KAAK,CAAC,IAAI,cAAc,CAAC,cAAc,CAAC,EAAE,CAAC;YAC7D,cAAc,CAAC,IAAI,CAAC,+CAA+C,EAAE;gBACpE,GAAG;gBACH,KAAK;gBACL,UAAU,EAAE,IAAI,CAAC,GAAG,EAAE,GAAG,SAAS;aAClC,CAAC,CAAA;YACF,OAAO,IAAI,QAAQ,CAClB,YAAY,CAAC,OAAO,EACpB,mCAAmC,gBAAgB,iGAAiG,CACpJ,CAAC,MAAM,EAAE,CAAA;QACX,CAAC;QAED,yBAAyB;QACzB,IAAI,MAAM,CAAC,QAAQ,KAAK,CAAC,EAAE,CAAC;YAC3B,cAAc,CAAC,KAAK,CAAC,wBAAwB,EAAE;gBAC9C,GAAG;gBACH,QAAQ,EAAE,MAAM,CAAC,QAAQ;gBACzB,MAAM,EAAE,cAAc,CAAC,KAAK,CAAC,CAAC,EAAE,GAAG,CAAC;gBACpC,UAAU,EAAE,IAAI,CAAC,GAAG,EAAE,GAAG,SAAS;aAClC,CAAC,CAAA;YACF,OAAO,qBAAqB,CAAC,cAAc,EAAE,MAAM,CAAC,QAAQ,CAAC,CAAC,MAAM,EAAE,CAAA;QACvE,CAAC;QAED,oBAAoB;QACpB,IAAI,UAA8B,CAAA;QAClC,IAAI,CAAC;YACJ,UAAU,GAAG,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,MAAM,CAAC,CAAA;QACvC,CAAC;QAAC,MAAM,CAAC;YACR,cAAc,CAAC,KAAK,CAAC,iCAAiC,EAAE;gBACvD,GAAG;gBACH,MAAM,EAAE,MAAM,CAAC,MAAM;aACrB,CAAC,CAAA;YACF,OAAO,IAAI,QAAQ,CAClB,YAAY,CAAC,gBAAgB,EAC7B,6CAA6C,CAC7C,CAAC,MAAM,EAAE,CAAA;QACX,CAAC;QAED,0BAA0B;QAC1B,MAAM,OAAO,GAAoB,UAAU,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;YACvD,IAAI,EAAE,CAAC,CAAC,IAAI;YACZ,KAAK,EAAE,CAAC,CAAC,IAAI;YACb,KAAK,EAAE,CAAC,CAAC,KAAK;YACd,SAAS,EAAE,CAAC,CAAC,UAAU;YACvB,OAAO,EAAE,CAAC,CAAC,QAAQ;SACnB,CAAC,CAAC,CAAA;QAEH,cAAc,CAAC,IAAI,CAAC,2BAA2B,EAAE;YAChD,GAAG;YACH,KAAK;YACL,UAAU,EAAE,OAAO,CAAC,MAAM;YAC1B,UAAU,EAAE,IAAI,CAAC,GAAG,EAAE,GAAG,SAAS;SAClC,CAAC,CAAA;QAEF,OAAO;YACN,KAAK,EAAE,OAAO,CAAC,MAAM;YACrB,OAAO;YACP,KAAK;YACL,IAAI;SACJ,CAAA;IACF,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QAChB,MAAM,OAAO,GAAG,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,eAAe,CAAA;QACxE,cAAc,CAAC,KAAK,CAAC,iCAAiC,EAAE;YACvD,GAAG;YACH,KAAK,EAAE,OAAO;SACd,CAAC,CAAA;QACF,OAAO,IAAI,QAAQ,CAAC,YAAY,CAAC,gBAAgB,EAAE,OAAO,CAAC,CAAC,MAAM,EAAE,CAAA;IACrE,CAAC;AACF,CAAC;AAED;;GAEG;AACH,SAAS,cAAc,CACtB,KAAa,EACb,IAAY,EACZ,KAAa,EACb,GAAW;IAEX,2CAA2C;IAC3C,MAAM,QAAQ,GAAG,KAAK;SACpB,KAAK,CAAC,KAAK,CAAC;SACZ,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,MAAM,GAAG,CAAC,CAAC;SAC3B,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAA;IAEb,MAAM,OAAO,GAAG,QAAQ,CAAC,IAAI,CAAC,GAAG,CAAC,CAAA;IAElC,cAAc,CAAC,IAAI,CAAC,sBAAsB,EAAE,EAAE,GAAG,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC,CAAA;IAEnE,MAAM,UAAU,GAAG,cAAc,CAAC;QACjC,OAAO;QACP,IAAI;QACJ,UAAU,EAAE,KAAK;QACjB,aAAa,EAAE,KAAK;KACpB,CAAC,CAAA;IAEF,IAAI,OAAO,IAAI,UAAU,EAAE,CAAC;QAC3B,OAAO,UAAU,CAAA;IAClB,CAAC;IAED,0CAA0C;IAC1C,mFAAmF;IACnF,MAAM,OAAO,GAAoB,UAAU,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,GAAG,EAAE,EAAE,CAAC,CAAC;QACpE,IAAI,EAAE,CAAC,CAAC,IAAI;QACZ,KAAK,EAAE,CAAC,CAAC,OAAO;QAChB,KAAK,EAAE,IAAI,CAAC,GAAG,CAAC,GAAG,EAAE,CAAC,GAAG,GAAG,GAAG,IAAI,CAAC;QACpC,SAAS,EAAE,CAAC,CAAC,IAAI;QACjB,OAAO,EAAE,CAAC,CAAC,IAAI;KACf,CAAC,CAAC,CAAA;IAEH,OAAO;QACN,KAAK,EAAE,OAAO,CAAC,MAAM;QACrB,OAAO;QACP,KAAK;QACL,IAAI;QACJ,QAAQ,EAAE,IAAI;QACd,WAAW,EAAE,qBAAqB;KAClC,CAAA;AACF,CAAC;AAiBD;;;;GAIG;AACH,MAAM,UAAU,gBAAgB,CAC/B,OAAsB;IAEtB,MAAM,GAAG,GAAG,mBAAmB,EAAE,CAAA;IACjC,MAAM,SAAS,GAAG,IAAI,CAAC,GAAG,EAAE,CAAA;IAE5B,4BAA4B;IAC5B,IAAI,CAAC,cAAc,EAAE,EAAE,CAAC;QACvB,YAAY,CAAC,KAAK,CAAC,mBAAmB,EAAE,EAAE,GAAG,EAAE,CAAC,CAAA;QAChD,OAAO,IAAI,QAAQ,CAAC,YAAY,CAAC,eAAe,CAAC,CAAC,MAAM,EAAE,CAAA;IAC3D,CAAC;IAED,MAAM,EAAE,IAAI,GAAG,iBAAiB,EAAE,EAAE,UAAU,EAAE,UAAU,EAAE,GAAG,OAAO,CAAA;IAEtE,IAAI,CAAC,UAAU,IAAI,UAAU,CAAC,IAAI,EAAE,KAAK,EAAE,EAAE,CAAC;QAC7C,OAAO,IAAI,QAAQ,CAClB,YAAY,CAAC,YAAY,EACzB,yBAAyB,CACzB,CAAC,MAAM,EAAE,CAAA;IACX,CAAC;IAED,0BAA0B;IAC1B,MAAM,IAAI,GAAa,CAAC,QAAQ,EAAE,IAAI,EAAE,UAAU,CAAC,IAAI,EAAE,CAAC,CAAA;IAE1D,IAAI,UAAU,EAAE,CAAC;QAChB,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE,UAAU,CAAC,CAAA;IAChC,CAAC;IAED,YAAY,CAAC,IAAI,CAAC,sBAAsB,EAAE;QACzC,GAAG;QACH,IAAI;QACJ,UAAU;QACV,UAAU;QACV,IAAI;KACJ,CAAC,CAAA;IAEF,IAAI,CAAC;QACJ,uDAAuD;QACvD,MAAM,SAAS,GAAG,oBAAoB,CACrC,cAAc,GAAG,EAAE,EACnB,CAAC,QAAQ,EAAE,EAAE;YACZ,MAAM,cAAc,GAAG,CAAC,GAAG,IAAI,EAAE,UAAU,EAAE,QAAQ,CAAC,CAAA;YACtD,MAAM,MAAM,GAAG,UAAU,CAAC,cAAc,EAAE,EAAE,OAAO,EAAE,cAAc,EAAE,CAAC,CAAA;YACtE,OAAO;gBACN,QAAQ,EAAE,MAAM,CAAC,QAAQ;gBACzB,MAAM,EAAE,MAAM,CAAC,MAAM;aACrB,CAAA;QACF,CAAC,CACD,CAAA;QAED,0BAA0B;QAC1B,MAAM,MAAM,GAAkB,SAAS,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;YACnD,IAAI,EAAE,CAAC,CAAC,IAAI;YACZ,IAAI,EAAE,CAAC,CAAC,IAAI;YACZ,IAAI,EAAE,CAAC,CAAC,IAAI;YACZ,IAAI,EAAE,CAAC,CAAC,IAAI;YACZ,OAAO,EAAE,CAAC,CAAC,OAAO;SAClB,CAAC,CAAC,CAAA;QAEH,YAAY,CAAC,IAAI,CAAC,kBAAkB,EAAE;YACrC,GAAG;YACH,UAAU;YACV,UAAU,EAAE,MAAM,CAAC,MAAM;YACzB,UAAU,EAAE,IAAI,CAAC,GAAG,EAAE,GAAG,SAAS;SAClC,CAAC,CAAA;QAEF,OAAO;YACN,KAAK,EAAE,MAAM,CAAC,MAAM;YACpB,MAAM;YACN,UAAU,EAAE,UAAU,CAAC,IAAI,EAAE;YAC7B,IAAI;SACJ,CAAA;IACF,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QAChB,MAAM,OAAO,GAAG,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,eAAe,CAAA;QACxE,YAAY,CAAC,KAAK,CAAC,wBAAwB,EAAE,EAAE,GAAG,EAAE,KAAK,EAAE,OAAO,EAAE,CAAC,CAAA;QAErE,6DAA6D;QAC7D,IAAI,OAAO,CAAC,QAAQ,CAAC,iCAAiC,CAAC,EAAE,CAAC;YACzD,MAAM,QAAQ,GAAG,MAAM,CAAC,QAAQ,CAC/B,OAAO,CAAC,KAAK,CAAC,iBAAiB,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,GAAG,EAC5C,EAAE,CACF,CAAA;YACD,MAAM,MAAM,GAAG,OAAO,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,OAAO,CAAA;YACjE,OAAO,qBAAqB,CAAC,MAAM,EAAE,QAAQ,CAAC,CAAC,MAAM,EAAE,CAAA;QACxD,CAAC;QAED,OAAO,IAAI,QAAQ,CAAC,YAAY,CAAC,gBAAgB,EAAE,OAAO,CAAC,CAAC,MAAM,EAAE,CAAA;IACrE,CAAC;AACF,CAAC;AAED,+EAA+E;AAC/E,6CAA6C;AAC7C,+EAA+E;AAE/E;;;;;;;;GAQG;AACH,MAAM,CAAC,KAAK,UAAU,gBAAgB,CACrC,OAAyB;IAEzB,MAAM,GAAG,GAAG,mBAAmB,EAAE,CAAA;IACjC,MAAM,SAAS,GAAG,IAAI,CAAC,GAAG,EAAE,CAAA;IAE5B,MAAM,EAAE,OAAO,EAAE,IAAI,EAAE,WAAW,EAAE,IAAI,EAAE,UAAU,EAAE,GAAG,OAAO,CAAA;IAEhE,SAAS,CAAC,IAAI,CAAC,sBAAsB,EAAE;QACtC,GAAG;QACH,OAAO;QACP,IAAI;QACJ,WAAW;QACX,IAAI;QACJ,UAAU;KACV,CAAC,CAAA;IAEF,IAAI,CAAC;QACJ,MAAM,QAAQ,GAAG,IAAI,WAAW,CAAC,IAAI,CAAC,CAAA;QAEtC,2BAA2B;QAC3B,MAAM,MAAM,GAAG,MAAM,WAAW,CAC/B,QAAQ,CAAC,aAAa,CAAC,OAAO,CAAC,EAC/B,kBAAkB,EAClB,sBAAsB,CACtB,CAAA;QAED,SAAS,CAAC,IAAI,CAAC,sBAAsB,EAAE;YACtC,GAAG;YACH,OAAO;YACP,UAAU,EAAE,MAAM,CAAC,KAAK;YACxB,UAAU,EAAE,IAAI,CAAC,GAAG,EAAE,GAAG,SAAS;SAClC,CAAC,CAAA;QAEF,OAAO,MAAM,CAAA;IACd,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QAChB,MAAM,OAAO,GAAG,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,eAAe,CAAA;QACxE,MAAM,WAAW,GAChB,KAAK,YAAY,YAAY,CAAC,CAAC,CAAC,UAAU,KAAK,CAAC,SAAS,IAAI,CAAC,CAAC,CAAC,EAAE,CAAA;QACnE,SAAS,CAAC,KAAK,CAAC,mBAAmB,EAAE;YACpC,GAAG;YACH,KAAK,EAAE,OAAO,GAAG,WAAW;SAC5B,CAAC,CAAA;QACF,OAAO,IAAI,QAAQ,CAAC,YAAY,CAAC,gBAAgB,EAAE,OAAO,CAAC,CAAC,MAAM,EAAE,CAAA;IACrE,CAAC;AACF,CAAC;AAED,+EAA+E;AAC/E,YAAY;AACZ,+EAA+E;AAE/E;;;;;;;;;;;;;;;GAeG;AACH,MAAM,UAAU,mBAAmB,CAAC,QAAgB;IACnD,OAAO,cAAc,CAAC,QAAQ,EAAE,WAAW,CAAC,CAAA;AAC7C,CAAC;AAED;;;;GAIG;AACH,MAAM,UAAU,oBAAoB,CAAC,QAAgB;IACpD,MAAM,QAAQ,GAAG,IAAI,CAAC,QAAQ,EAAE,MAAM,EAAE,WAAW,CAAC,CAAA;IACpD,OAAO,gBAAgB,CAAC,QAAQ,CAAC,CAAA;AAClC,CAAC"}
@@ -0,0 +1,28 @@
1
+ /**
2
+ * Kit Plugin Logger
3
+ *
4
+ * JSONL logging with LogTape for observability and debugging.
5
+ * Uses @sidequest/core logging factory for consistent log location.
6
+ *
7
+ * Log location: ~/.claude/logs/kit.jsonl
8
+ *
9
+ * Logging Level Convention:
10
+ * - DEBUG: Detailed diagnostic info (file counts, cache hits, parameter echo)
11
+ * - INFO: Normal operation events (start/complete, results summary)
12
+ * - WARN: Degraded operation (fallbacks, skipped files, soft failures)
13
+ * - ERROR: Operation failures (exceptions, command failures, parse errors)
14
+ */
15
+ import { createCorrelationId } from '@side-quest/core/logging';
16
+ declare const initLogger: () => Promise<void>, logger: import("@logtape/logtape").Logger, logDir: string, logFile: string;
17
+ export { createCorrelationId, initLogger, logDir, logFile, logger };
18
+ /** Grep subsystem logger */
19
+ export declare const grepLogger: import("@logtape/logtape").Logger;
20
+ /** Semantic search subsystem logger */
21
+ export declare const semanticLogger: import("@logtape/logtape").Logger;
22
+ /** Usages subsystem logger */
23
+ export declare const usagesLogger: import("@logtape/logtape").Logger;
24
+ /** AST search subsystem logger */
25
+ export declare const astLogger: import("@logtape/logtape").Logger;
26
+ /** @deprecated Use astLogger directly */
27
+ export declare function getAstLogger(): import("@logtape/logtape").Logger;
28
+ //# sourceMappingURL=logger.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"logger.d.ts","sourceRoot":"","sources":["../../src/lib/logger.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;GAaG;AAEH,OAAO,EACN,mBAAmB,EAEnB,MAAM,0BAA0B,CAAA;AAEjC,QAAA,MACC,UAAU,uBACE,MAAM,qCAElB,MAAM,UACN,OAAO,QAIN,CAAA;AAMF,OAAO,EAAE,mBAAmB,EAAE,UAAU,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,CAAA;AAEnE,4BAA4B;AAC5B,eAAO,MAAM,UAAU,mCAA6B,CAAA;AAEpD,uCAAuC;AACvC,eAAO,MAAM,cAAc,mCAAiC,CAAA;AAE5D,8BAA8B;AAC9B,eAAO,MAAM,YAAY,mCAA+B,CAAA;AAExD,kCAAkC;AAClC,eAAO,MAAM,SAAS,mCAA4B,CAAA;AAMlD,yCAAyC;AACzC,wBAAgB,YAAY,sCAE3B"}
@@ -0,0 +1,39 @@
1
+ /**
2
+ * Kit Plugin Logger
3
+ *
4
+ * JSONL logging with LogTape for observability and debugging.
5
+ * Uses @sidequest/core logging factory for consistent log location.
6
+ *
7
+ * Log location: ~/.claude/logs/kit.jsonl
8
+ *
9
+ * Logging Level Convention:
10
+ * - DEBUG: Detailed diagnostic info (file counts, cache hits, parameter echo)
11
+ * - INFO: Normal operation events (start/complete, results summary)
12
+ * - WARN: Degraded operation (fallbacks, skipped files, soft failures)
13
+ * - ERROR: Operation failures (exceptions, command failures, parse errors)
14
+ */
15
+ import { createCorrelationId, createPluginLogger, } from '@side-quest/core/logging';
16
+ const { initLogger, rootLogger: logger, getSubsystemLogger, logDir, logFile, } = createPluginLogger({
17
+ name: 'kit',
18
+ subsystems: ['grep', 'semantic', 'usages', 'ast'],
19
+ });
20
+ // ============================================================================
21
+ // Exports
22
+ // ============================================================================
23
+ export { createCorrelationId, initLogger, logDir, logFile, logger };
24
+ /** Grep subsystem logger */
25
+ export const grepLogger = getSubsystemLogger('grep');
26
+ /** Semantic search subsystem logger */
27
+ export const semanticLogger = getSubsystemLogger('semantic');
28
+ /** Usages subsystem logger */
29
+ export const usagesLogger = getSubsystemLogger('usages');
30
+ /** AST search subsystem logger */
31
+ export const astLogger = getSubsystemLogger('ast');
32
+ // ============================================================================
33
+ // Legacy getter functions (for backwards compatibility)
34
+ // ============================================================================
35
+ /** @deprecated Use astLogger directly */
36
+ export function getAstLogger() {
37
+ return astLogger;
38
+ }
39
+ //# sourceMappingURL=logger.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"logger.js","sourceRoot":"","sources":["../../src/lib/logger.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;GAaG;AAEH,OAAO,EACN,mBAAmB,EACnB,kBAAkB,GAClB,MAAM,0BAA0B,CAAA;AAEjC,MAAM,EACL,UAAU,EACV,UAAU,EAAE,MAAM,EAClB,kBAAkB,EAClB,MAAM,EACN,OAAO,GACP,GAAG,kBAAkB,CAAC;IACtB,IAAI,EAAE,KAAK;IACX,UAAU,EAAE,CAAC,MAAM,EAAE,UAAU,EAAE,QAAQ,EAAE,KAAK,CAAC;CACjD,CAAC,CAAA;AAEF,+EAA+E;AAC/E,UAAU;AACV,+EAA+E;AAE/E,OAAO,EAAE,mBAAmB,EAAE,UAAU,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,CAAA;AAEnE,4BAA4B;AAC5B,MAAM,CAAC,MAAM,UAAU,GAAG,kBAAkB,CAAC,MAAM,CAAC,CAAA;AAEpD,uCAAuC;AACvC,MAAM,CAAC,MAAM,cAAc,GAAG,kBAAkB,CAAC,UAAU,CAAC,CAAA;AAE5D,8BAA8B;AAC9B,MAAM,CAAC,MAAM,YAAY,GAAG,kBAAkB,CAAC,QAAQ,CAAC,CAAA;AAExD,kCAAkC;AAClC,MAAM,CAAC,MAAM,SAAS,GAAG,kBAAkB,CAAC,KAAK,CAAC,CAAA;AAElD,+EAA+E;AAC/E,wDAAwD;AACxD,+EAA+E;AAE/E,yCAAyC;AACzC,MAAM,UAAU,YAAY;IAC3B,OAAO,SAAS,CAAA;AACjB,CAAC"}