codebase-context 1.6.2 → 1.8.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 (189) hide show
  1. package/LICENSE +21 -21
  2. package/README.md +417 -282
  3. package/dist/analyzers/angular/index.d.ts.map +1 -1
  4. package/dist/analyzers/angular/index.js +91 -40
  5. package/dist/analyzers/angular/index.js.map +1 -1
  6. package/dist/analyzers/generic/index.d.ts +1 -0
  7. package/dist/analyzers/generic/index.d.ts.map +1 -1
  8. package/dist/analyzers/generic/index.js +94 -14
  9. package/dist/analyzers/generic/index.js.map +1 -1
  10. package/dist/cli-formatters.d.ts +47 -0
  11. package/dist/cli-formatters.d.ts.map +1 -0
  12. package/dist/cli-formatters.js +803 -0
  13. package/dist/cli-formatters.js.map +1 -0
  14. package/dist/cli-memory.d.ts +5 -0
  15. package/dist/cli-memory.d.ts.map +1 -0
  16. package/dist/cli-memory.js +218 -0
  17. package/dist/cli-memory.js.map +1 -0
  18. package/dist/cli.d.ts +3 -1
  19. package/dist/cli.d.ts.map +1 -1
  20. package/dist/cli.js +317 -88
  21. package/dist/cli.js.map +1 -1
  22. package/dist/constants/codebase-context.d.ts +13 -0
  23. package/dist/constants/codebase-context.d.ts.map +1 -1
  24. package/dist/constants/codebase-context.js +13 -0
  25. package/dist/constants/codebase-context.js.map +1 -1
  26. package/dist/core/auto-refresh.d.ts +16 -0
  27. package/dist/core/auto-refresh.d.ts.map +1 -0
  28. package/dist/core/auto-refresh.js +25 -0
  29. package/dist/core/auto-refresh.js.map +1 -0
  30. package/dist/core/file-watcher.d.ts +15 -0
  31. package/dist/core/file-watcher.d.ts.map +1 -0
  32. package/dist/core/file-watcher.js +59 -0
  33. package/dist/core/file-watcher.js.map +1 -0
  34. package/dist/core/index-meta.d.ts +27 -0
  35. package/dist/core/index-meta.d.ts.map +1 -0
  36. package/dist/core/index-meta.js +212 -0
  37. package/dist/core/index-meta.js.map +1 -0
  38. package/dist/core/indexer.d.ts.map +1 -1
  39. package/dist/core/indexer.js +324 -26
  40. package/dist/core/indexer.js.map +1 -1
  41. package/dist/core/reranker.d.ts.map +1 -1
  42. package/dist/core/reranker.js +3 -0
  43. package/dist/core/reranker.js.map +1 -1
  44. package/dist/core/search-quality.js +2 -2
  45. package/dist/core/search-quality.js.map +1 -1
  46. package/dist/core/search.d.ts +1 -0
  47. package/dist/core/search.d.ts.map +1 -1
  48. package/dist/core/search.js +79 -11
  49. package/dist/core/search.js.map +1 -1
  50. package/dist/core/symbol-references.d.ts +20 -0
  51. package/dist/core/symbol-references.d.ts.map +1 -0
  52. package/dist/core/symbol-references.js +186 -0
  53. package/dist/core/symbol-references.js.map +1 -0
  54. package/dist/embeddings/index.d.ts +8 -0
  55. package/dist/embeddings/index.d.ts.map +1 -1
  56. package/dist/embeddings/index.js +17 -2
  57. package/dist/embeddings/index.js.map +1 -1
  58. package/dist/embeddings/openai.d.ts +1 -1
  59. package/dist/embeddings/openai.d.ts.map +1 -1
  60. package/dist/embeddings/openai.js +3 -1
  61. package/dist/embeddings/openai.js.map +1 -1
  62. package/dist/embeddings/transformers.d.ts +6 -0
  63. package/dist/embeddings/transformers.d.ts.map +1 -1
  64. package/dist/embeddings/transformers.js +12 -5
  65. package/dist/embeddings/transformers.js.map +1 -1
  66. package/dist/embeddings/types.d.ts +1 -0
  67. package/dist/embeddings/types.d.ts.map +1 -1
  68. package/dist/embeddings/types.js +7 -1
  69. package/dist/embeddings/types.js.map +1 -1
  70. package/dist/eval/harness.d.ts +5 -0
  71. package/dist/eval/harness.d.ts.map +1 -0
  72. package/dist/eval/harness.js +153 -0
  73. package/dist/eval/harness.js.map +1 -0
  74. package/dist/eval/types.d.ts +59 -0
  75. package/dist/eval/types.d.ts.map +1 -0
  76. package/dist/eval/types.js +2 -0
  77. package/dist/eval/types.js.map +1 -0
  78. package/dist/grammars/manifest.d.ts +26 -0
  79. package/dist/grammars/manifest.d.ts.map +1 -0
  80. package/dist/grammars/manifest.js +64 -0
  81. package/dist/grammars/manifest.js.map +1 -0
  82. package/dist/index.d.ts +16 -2
  83. package/dist/index.d.ts.map +1 -1
  84. package/dist/index.js +181 -1300
  85. package/dist/index.js.map +1 -1
  86. package/dist/patterns/semantics.d.ts +2 -1
  87. package/dist/patterns/semantics.d.ts.map +1 -1
  88. package/dist/patterns/semantics.js +0 -2
  89. package/dist/patterns/semantics.js.map +1 -1
  90. package/dist/preflight/evidence-lock.d.ts +6 -0
  91. package/dist/preflight/evidence-lock.d.ts.map +1 -1
  92. package/dist/preflight/evidence-lock.js +33 -1
  93. package/dist/preflight/evidence-lock.js.map +1 -1
  94. package/dist/storage/index.d.ts +4 -1
  95. package/dist/storage/index.d.ts.map +1 -1
  96. package/dist/storage/index.js +2 -2
  97. package/dist/storage/index.js.map +1 -1
  98. package/dist/storage/lancedb.d.ts +11 -1
  99. package/dist/storage/lancedb.d.ts.map +1 -1
  100. package/dist/storage/lancedb.js +45 -11
  101. package/dist/storage/lancedb.js.map +1 -1
  102. package/dist/storage/types.d.ts +4 -1
  103. package/dist/storage/types.d.ts.map +1 -1
  104. package/dist/storage/types.js.map +1 -1
  105. package/dist/tools/detect-circular-dependencies.d.ts +5 -0
  106. package/dist/tools/detect-circular-dependencies.d.ts.map +1 -0
  107. package/dist/tools/detect-circular-dependencies.js +117 -0
  108. package/dist/tools/detect-circular-dependencies.js.map +1 -0
  109. package/dist/tools/get-codebase-metadata.d.ts +5 -0
  110. package/dist/tools/get-codebase-metadata.d.ts.map +1 -0
  111. package/dist/tools/get-codebase-metadata.js +53 -0
  112. package/dist/tools/get-codebase-metadata.js.map +1 -0
  113. package/dist/tools/get-indexing-status.d.ts +5 -0
  114. package/dist/tools/get-indexing-status.d.ts.map +1 -0
  115. package/dist/tools/get-indexing-status.js +44 -0
  116. package/dist/tools/get-indexing-status.js.map +1 -0
  117. package/dist/tools/get-memory.d.ts +5 -0
  118. package/dist/tools/get-memory.d.ts.map +1 -0
  119. package/dist/tools/get-memory.js +89 -0
  120. package/dist/tools/get-memory.js.map +1 -0
  121. package/dist/tools/get-style-guide.d.ts +5 -0
  122. package/dist/tools/get-style-guide.d.ts.map +1 -0
  123. package/dist/tools/get-style-guide.js +151 -0
  124. package/dist/tools/get-style-guide.js.map +1 -0
  125. package/dist/tools/get-symbol-references.d.ts +5 -0
  126. package/dist/tools/get-symbol-references.d.ts.map +1 -0
  127. package/dist/tools/get-symbol-references.js +70 -0
  128. package/dist/tools/get-symbol-references.js.map +1 -0
  129. package/dist/tools/get-team-patterns.d.ts +5 -0
  130. package/dist/tools/get-team-patterns.d.ts.map +1 -0
  131. package/dist/tools/get-team-patterns.js +147 -0
  132. package/dist/tools/get-team-patterns.js.map +1 -0
  133. package/dist/tools/index.d.ts +6 -0
  134. package/dist/tools/index.d.ts.map +1 -0
  135. package/dist/tools/index.js +41 -0
  136. package/dist/tools/index.js.map +1 -0
  137. package/dist/tools/refresh-index.d.ts +5 -0
  138. package/dist/tools/refresh-index.d.ts.map +1 -0
  139. package/dist/tools/refresh-index.js +40 -0
  140. package/dist/tools/refresh-index.js.map +1 -0
  141. package/dist/tools/remember.d.ts +5 -0
  142. package/dist/tools/remember.d.ts.map +1 -0
  143. package/dist/tools/remember.js +101 -0
  144. package/dist/tools/remember.js.map +1 -0
  145. package/dist/tools/search-codebase.d.ts +5 -0
  146. package/dist/tools/search-codebase.d.ts.map +1 -0
  147. package/dist/tools/search-codebase.js +745 -0
  148. package/dist/tools/search-codebase.js.map +1 -0
  149. package/dist/tools/types.d.ts +223 -0
  150. package/dist/tools/types.d.ts.map +1 -0
  151. package/dist/tools/types.js +2 -0
  152. package/dist/tools/types.js.map +1 -0
  153. package/dist/types/index.d.ts +79 -11
  154. package/dist/types/index.d.ts.map +1 -1
  155. package/dist/types/index.js +0 -1
  156. package/dist/types/index.js.map +1 -1
  157. package/dist/utils/ast-chunker.d.ts +71 -0
  158. package/dist/utils/ast-chunker.d.ts.map +1 -0
  159. package/dist/utils/ast-chunker.js +453 -0
  160. package/dist/utils/ast-chunker.js.map +1 -0
  161. package/dist/utils/chunking.d.ts.map +1 -1
  162. package/dist/utils/chunking.js +10 -3
  163. package/dist/utils/chunking.js.map +1 -1
  164. package/dist/utils/language-detection.d.ts.map +1 -1
  165. package/dist/utils/language-detection.js +26 -1
  166. package/dist/utils/language-detection.js.map +1 -1
  167. package/dist/utils/tree-sitter.d.ts +28 -0
  168. package/dist/utils/tree-sitter.d.ts.map +1 -0
  169. package/dist/utils/tree-sitter.js +422 -0
  170. package/dist/utils/tree-sitter.js.map +1 -0
  171. package/dist/utils/usage-tracker.d.ts +30 -40
  172. package/dist/utils/usage-tracker.d.ts.map +1 -1
  173. package/dist/utils/usage-tracker.js +66 -8
  174. package/dist/utils/usage-tracker.js.map +1 -1
  175. package/docs/capabilities.md +183 -92
  176. package/docs/cli.md +196 -0
  177. package/grammars/.gitkeep +0 -0
  178. package/grammars/tree-sitter-c.wasm +0 -0
  179. package/grammars/tree-sitter-c_sharp.wasm +0 -0
  180. package/grammars/tree-sitter-cpp.wasm +0 -0
  181. package/grammars/tree-sitter-go.wasm +0 -0
  182. package/grammars/tree-sitter-java.wasm +0 -0
  183. package/grammars/tree-sitter-javascript.wasm +0 -0
  184. package/grammars/tree-sitter-kotlin.wasm +0 -0
  185. package/grammars/tree-sitter-python.wasm +0 -0
  186. package/grammars/tree-sitter-rust.wasm +0 -0
  187. package/grammars/tree-sitter-tsx.wasm +0 -0
  188. package/grammars/tree-sitter-typescript.wasm +0 -0
  189. package/package.json +153 -157
package/dist/cli.js CHANGED
@@ -1,112 +1,341 @@
1
1
  /**
2
2
  * CLI subcommands for codebase-context.
3
3
  * Memory list/add/remove — vendor-neutral access without any AI agent.
4
+ * search/metadata/status/reindex/style-guide/patterns/refs/cycles — all MCP tools.
4
5
  */
5
6
  import path from 'path';
6
- import { CODEBASE_CONTEXT_DIRNAME, MEMORY_FILENAME } from './constants/codebase-context.js';
7
- import { appendMemoryFile, readMemoriesFile, removeMemory, filterMemories, withConfidence } from './memory/store.js';
8
- export async function handleMemoryCli(args) {
9
- // Resolve project root: use CODEBASE_ROOT env or cwd (argv[2] is "memory", not a path)
10
- const cliRoot = process.env.CODEBASE_ROOT || process.cwd();
11
- const memoryPath = path.join(cliRoot, CODEBASE_CONTEXT_DIRNAME, MEMORY_FILENAME);
12
- const subcommand = args[0]; // list | add | remove
13
- if (subcommand === 'list') {
14
- const memories = await readMemoriesFile(memoryPath);
15
- const opts = {};
16
- for (let i = 1; i < args.length; i++) {
17
- if (args[i] === '--category' && args[i + 1])
18
- opts.category = args[++i];
19
- else if (args[i] === '--type' && args[i + 1])
20
- opts.type = args[++i];
21
- else if (args[i] === '--query' && args[i + 1])
22
- opts.query = args[++i];
23
- else if (args[i] === '--json') {
24
- // handled below
25
- }
7
+ import { promises as fs } from 'fs';
8
+ import { CODEBASE_CONTEXT_DIRNAME, MEMORY_FILENAME, INTELLIGENCE_FILENAME, KEYWORD_INDEX_FILENAME, VECTOR_DB_DIRNAME } from './constants/codebase-context.js';
9
+ import { CodebaseIndexer } from './core/indexer.js';
10
+ import { dispatchTool } from './tools/index.js';
11
+ import { analyzerRegistry } from './core/analyzer-registry.js';
12
+ import { AngularAnalyzer } from './analyzers/angular/index.js';
13
+ import { GenericAnalyzer } from './analyzers/generic/index.js';
14
+ import { formatJson } from './cli-formatters.js';
15
+ import { handleMemoryCli } from './cli-memory.js';
16
+ export { handleMemoryCli } from './cli-memory.js';
17
+ analyzerRegistry.register(new AngularAnalyzer());
18
+ analyzerRegistry.register(new GenericAnalyzer());
19
+ const _CLI_COMMANDS = [
20
+ 'memory',
21
+ 'search',
22
+ 'metadata',
23
+ 'status',
24
+ 'reindex',
25
+ 'style-guide',
26
+ 'patterns',
27
+ 'refs',
28
+ 'cycles'
29
+ ];
30
+ const CLI_COMMAND_SET = new Set(_CLI_COMMANDS);
31
+ function isCliCommand(value) {
32
+ return CLI_COMMAND_SET.has(value);
33
+ }
34
+ const SEARCH_INTENTS = ['explore', 'edit', 'refactor', 'migrate'];
35
+ const SEARCH_INTENT_SET = new Set(SEARCH_INTENTS);
36
+ function isSearchIntent(value) {
37
+ return SEARCH_INTENT_SET.has(value);
38
+ }
39
+ const TEAM_PATTERN_CATEGORIES = ['all', 'di', 'state', 'testing', 'libraries'];
40
+ const TEAM_PATTERN_CATEGORY_SET = new Set(TEAM_PATTERN_CATEGORIES);
41
+ function isTeamPatternCategory(value) {
42
+ return TEAM_PATTERN_CATEGORY_SET.has(value);
43
+ }
44
+ function printUsage() {
45
+ console.log('codebase-context <command> [options]');
46
+ console.log('');
47
+ console.log('Commands:');
48
+ console.log(' memory <list|add|remove> Memory CRUD');
49
+ console.log(' search --query <q> Search the indexed codebase');
50
+ console.log(' [--intent explore|edit|refactor|migrate]');
51
+ console.log(' [--limit <n>] [--lang <l>] [--framework <f>] [--layer <l>]');
52
+ console.log(' metadata Project structure, frameworks, deps');
53
+ console.log(' status Index state and progress');
54
+ console.log(' reindex [--incremental] [--reason <r>] Re-index the codebase');
55
+ console.log(' style-guide [--query <q>] [--category <c>] Style guide rules');
56
+ console.log(' patterns [--category all|di|state|testing|libraries] Team patterns');
57
+ console.log(' refs --symbol <name> [--limit <n>] Symbol references');
58
+ console.log(' cycles [--scope <path>] Circular dependency detection');
59
+ console.log('');
60
+ console.log('Global flags:');
61
+ console.log(' --json Output raw JSON (default: human-readable)');
62
+ console.log(' --help Show this help');
63
+ console.log('');
64
+ console.log('Environment:');
65
+ console.log(' CODEBASE_ROOT Project root path (default: cwd)');
66
+ console.log(' CODEBASE_CONTEXT_ASCII=1 Force ASCII-only box output');
67
+ console.log(' CODEBASE_CONTEXT_DEBUG=1 Enable verbose logs');
68
+ }
69
+ async function initToolContext() {
70
+ const rootPath = path.resolve(process.env.CODEBASE_ROOT || process.cwd());
71
+ const paths = {
72
+ baseDir: path.join(rootPath, CODEBASE_CONTEXT_DIRNAME),
73
+ memory: path.join(rootPath, CODEBASE_CONTEXT_DIRNAME, MEMORY_FILENAME),
74
+ intelligence: path.join(rootPath, CODEBASE_CONTEXT_DIRNAME, INTELLIGENCE_FILENAME),
75
+ keywordIndex: path.join(rootPath, CODEBASE_CONTEXT_DIRNAME, KEYWORD_INDEX_FILENAME),
76
+ vectorDb: path.join(rootPath, CODEBASE_CONTEXT_DIRNAME, VECTOR_DB_DIRNAME)
77
+ };
78
+ let indexExists = false;
79
+ try {
80
+ await fs.access(paths.keywordIndex);
81
+ indexExists = true;
82
+ }
83
+ catch {
84
+ // no index on disk
85
+ }
86
+ const indexState = {
87
+ status: indexExists ? 'ready' : 'idle'
88
+ };
89
+ const performIndexing = async (incrementalOnly, reason) => {
90
+ indexState.status = 'indexing';
91
+ const mode = incrementalOnly ? 'incremental' : 'full';
92
+ console.error(`Indexing (${mode})${reason ? ` — ${reason}` : ''}: ${rootPath}`);
93
+ try {
94
+ let lastLoggedProgress = { phase: '', percentage: -1 };
95
+ const indexer = new CodebaseIndexer({
96
+ rootPath,
97
+ incrementalOnly,
98
+ onProgress: (progress) => {
99
+ const shouldLog = progress.phase !== lastLoggedProgress.phase ||
100
+ (progress.percentage % 10 === 0 &&
101
+ progress.percentage !== lastLoggedProgress.percentage);
102
+ if (shouldLog) {
103
+ console.error(`[${progress.phase}] ${progress.percentage}%`);
104
+ lastLoggedProgress = { phase: progress.phase, percentage: progress.percentage };
105
+ }
106
+ }
107
+ });
108
+ indexState.indexer = indexer;
109
+ const stats = await indexer.index();
110
+ indexState.status = 'ready';
111
+ indexState.lastIndexed = new Date();
112
+ indexState.stats = stats;
113
+ console.error(`Complete: ${stats.indexedFiles} files, ${stats.totalChunks} chunks in ${(stats.duration / 1000).toFixed(2)}s`);
26
114
  }
27
- const filtered = filterMemories(memories, opts);
28
- const enriched = withConfidence(filtered);
29
- const useJson = args.includes('--json');
30
- if (useJson) {
31
- console.log(JSON.stringify(enriched, null, 2));
115
+ catch (error) {
116
+ indexState.status = 'error';
117
+ indexState.error = error instanceof Error ? error.message : String(error);
118
+ console.error('Indexing failed:', indexState.error);
32
119
  }
33
- else {
34
- if (enriched.length === 0) {
35
- console.log('No memories found.');
120
+ };
121
+ return { indexState, paths, rootPath, performIndexing };
122
+ }
123
+ function extractText(result) {
124
+ return result.content?.[0]?.text ?? '';
125
+ }
126
+ function exitWithError(message) {
127
+ console.error(message);
128
+ process.exit(1);
129
+ }
130
+ function parseFlags(argv) {
131
+ const flags = {};
132
+ for (let i = 1; i < argv.length; i++) {
133
+ const arg = argv[i];
134
+ if (arg === '--json')
135
+ continue;
136
+ if (arg.startsWith('--')) {
137
+ const key = arg.slice(2);
138
+ const next = argv[i + 1];
139
+ if (next && !next.startsWith('--')) {
140
+ flags[key] = next;
141
+ i++;
36
142
  }
37
143
  else {
38
- for (const m of enriched) {
39
- const staleTag = m.stale ? ' [STALE]' : '';
40
- console.log(`[${m.id}] ${m.type}/${m.category}: ${m.memory}${staleTag}`);
41
- console.log(` Reason: ${m.reason}`);
42
- console.log(` Date: ${m.date} | Confidence: ${m.effectiveConfidence}`);
43
- console.log('');
44
- }
45
- console.log(`${enriched.length} memor${enriched.length === 1 ? 'y' : 'ies'} total.`);
144
+ flags[key] = true;
46
145
  }
47
146
  }
48
147
  }
49
- else if (subcommand === 'add') {
50
- let type = 'decision';
51
- let category;
52
- let memory;
53
- let reason;
54
- for (let i = 1; i < args.length; i++) {
55
- if (args[i] === '--type' && args[i + 1])
56
- type = args[++i];
57
- else if (args[i] === '--category' && args[i + 1])
58
- category = args[++i];
59
- else if (args[i] === '--memory' && args[i + 1])
60
- memory = args[++i];
61
- else if (args[i] === '--reason' && args[i + 1])
62
- reason = args[++i];
148
+ return flags;
149
+ }
150
+ function requireStringFlag(flags, key, usage) {
151
+ const value = flags[key];
152
+ if (value === undefined) {
153
+ exitWithError(`Error: --${key} is required\nUsage: ${usage}`);
154
+ }
155
+ if (typeof value !== 'string') {
156
+ exitWithError(`Error: --${key} requires a value\nUsage: ${usage}`);
157
+ }
158
+ return value;
159
+ }
160
+ function optionalStringFlag(flags, key, usage) {
161
+ const value = flags[key];
162
+ if (value === true) {
163
+ exitWithError(`Error: --${key} requires a value\nUsage: ${usage}`);
164
+ }
165
+ return typeof value === 'string' ? value : undefined;
166
+ }
167
+ function optionalPositiveIntFlag(flags, key, usage) {
168
+ const value = flags[key];
169
+ if (value === undefined)
170
+ return undefined;
171
+ if (typeof value !== 'string') {
172
+ exitWithError(`Error: --${key} requires a value\nUsage: ${usage}`);
173
+ }
174
+ const num = Number(value);
175
+ if (!Number.isFinite(num) || num <= 0) {
176
+ exitWithError(`Error: --${key} must be a positive number\nUsage: ${usage}`);
177
+ }
178
+ return Math.floor(num);
179
+ }
180
+ function booleanFlag(flags, key, usage) {
181
+ const value = flags[key];
182
+ if (value === undefined)
183
+ return false;
184
+ if (value === true)
185
+ return true;
186
+ const normalized = value.trim().toLowerCase();
187
+ if (normalized === 'true' || normalized === '1' || normalized === 'yes')
188
+ return true;
189
+ if (normalized === 'false' || normalized === '0' || normalized === 'no')
190
+ return false;
191
+ exitWithError(`Error: --${key} must be a boolean (true/false)\nUsage: ${usage}`);
192
+ }
193
+ export async function handleCliCommand(argv) {
194
+ const rawCommand = argv[0];
195
+ if (!rawCommand || rawCommand === '--help') {
196
+ printUsage();
197
+ return;
198
+ }
199
+ if (!isCliCommand(rawCommand)) {
200
+ console.error(`Unknown command: ${rawCommand}`);
201
+ console.error('');
202
+ printUsage();
203
+ process.exit(1);
204
+ }
205
+ const command = rawCommand;
206
+ if (command === 'memory') {
207
+ return handleMemoryCli(argv.slice(1));
208
+ }
209
+ const useJson = argv.includes('--json');
210
+ const flags = parseFlags(argv);
211
+ const ctx = await initToolContext();
212
+ let dispatch;
213
+ let formatQuery;
214
+ let formatIntent;
215
+ switch (command) {
216
+ case 'search': {
217
+ const usage = 'codebase-context search --query <text> [--intent <i>] [--limit <n>]';
218
+ const query = requireStringFlag(flags, 'query', usage);
219
+ const intentValue = optionalStringFlag(flags, 'intent', usage);
220
+ let intent;
221
+ if (intentValue) {
222
+ if (!isSearchIntent(intentValue)) {
223
+ exitWithError(`Error: invalid --intent "${intentValue}". Allowed: ${SEARCH_INTENTS.join(', ')}\nUsage: ${usage}`);
224
+ }
225
+ intent = intentValue;
226
+ }
227
+ const limit = optionalPositiveIntFlag(flags, 'limit', usage);
228
+ const lang = optionalStringFlag(flags, 'lang', usage);
229
+ const framework = optionalStringFlag(flags, 'framework', usage);
230
+ const layer = optionalStringFlag(flags, 'layer', usage);
231
+ const filters = {};
232
+ if (lang)
233
+ filters.language = lang;
234
+ if (framework)
235
+ filters.framework = framework;
236
+ if (layer)
237
+ filters.layer = layer;
238
+ const args = {
239
+ query,
240
+ includeSnippets: true,
241
+ ...(intent ? { intent } : {}),
242
+ ...(limit != null ? { limit } : {}),
243
+ ...(Object.keys(filters).length > 0 ? { filters } : {})
244
+ };
245
+ dispatch = { toolName: 'search_codebase', toolArgs: args };
246
+ formatQuery = query;
247
+ formatIntent = intentValue;
248
+ break;
63
249
  }
64
- if (!category || !memory || !reason) {
65
- console.error('Usage: codebase-context memory add --type <type> --category <category> --memory <text> --reason <text>');
66
- console.error('Required: --category, --memory, --reason');
67
- process.exit(1);
250
+ case 'metadata': {
251
+ dispatch = { toolName: 'get_codebase_metadata', toolArgs: {} };
252
+ break;
68
253
  }
69
- const crypto = await import('crypto');
70
- const hashContent = `${type}:${category}:${memory}:${reason}`;
71
- const hash = crypto.createHash('sha256').update(hashContent).digest('hex');
72
- const id = hash.substring(0, 12);
73
- const newMemory = {
74
- id,
75
- type,
76
- category,
77
- memory,
78
- reason,
79
- date: new Date().toISOString()
80
- };
81
- const result = await appendMemoryFile(memoryPath, newMemory);
82
- if (result.status === 'duplicate') {
83
- console.log(`Already exists: [${id}] ${memory}`);
254
+ case 'status': {
255
+ dispatch = { toolName: 'get_indexing_status', toolArgs: {} };
256
+ break;
84
257
  }
85
- else {
86
- console.log(`Added: [${id}] ${memory}`);
258
+ case 'reindex': {
259
+ const usage = 'codebase-context reindex [--incremental] [--reason <r>]';
260
+ const reason = optionalStringFlag(flags, 'reason', usage);
261
+ const incremental = booleanFlag(flags, 'incremental', usage);
262
+ await ctx.performIndexing(incremental, reason);
263
+ const statusResult = await dispatchTool('get_indexing_status', {}, ctx);
264
+ formatJson(extractText(statusResult), useJson, 'status', ctx.rootPath);
265
+ return;
87
266
  }
88
- }
89
- else if (subcommand === 'remove') {
90
- const id = args[1];
91
- if (!id) {
92
- console.error('Usage: codebase-context memory remove <id>');
93
- process.exit(1);
267
+ case 'style-guide': {
268
+ const usage = 'codebase-context style-guide [--query <q>] [--category <c>]';
269
+ const query = optionalStringFlag(flags, 'query', usage);
270
+ const category = optionalStringFlag(flags, 'category', usage);
271
+ dispatch = {
272
+ toolName: 'get_style_guide',
273
+ toolArgs: {
274
+ ...(query ? { query } : {}),
275
+ ...(category ? { category } : {})
276
+ }
277
+ };
278
+ break;
94
279
  }
95
- const result = await removeMemory(memoryPath, id);
96
- if (result.status === 'not_found') {
97
- console.error(`Memory not found: ${id}`);
280
+ case 'patterns': {
281
+ const usage = 'codebase-context patterns [--category all|di|state|testing|libraries]';
282
+ const categoryValue = optionalStringFlag(flags, 'category', usage);
283
+ let category;
284
+ if (categoryValue) {
285
+ if (!isTeamPatternCategory(categoryValue)) {
286
+ exitWithError(`Error: invalid --category "${categoryValue}". Allowed: ${TEAM_PATTERN_CATEGORIES.join(', ')}\nUsage: ${usage}`);
287
+ }
288
+ category = categoryValue;
289
+ }
290
+ dispatch = {
291
+ toolName: 'get_team_patterns',
292
+ toolArgs: {
293
+ ...(category ? { category } : {})
294
+ }
295
+ };
296
+ break;
297
+ }
298
+ case 'refs': {
299
+ const usage = 'codebase-context refs --symbol <name> [--limit <n>]';
300
+ const symbol = requireStringFlag(flags, 'symbol', usage);
301
+ const limit = optionalPositiveIntFlag(flags, 'limit', usage);
302
+ dispatch = {
303
+ toolName: 'get_symbol_references',
304
+ toolArgs: {
305
+ symbol,
306
+ ...(limit != null ? { limit } : {})
307
+ }
308
+ };
309
+ break;
310
+ }
311
+ case 'cycles': {
312
+ const usage = 'codebase-context cycles [--scope <path>]';
313
+ const scope = optionalStringFlag(flags, 'scope', usage);
314
+ dispatch = {
315
+ toolName: 'detect_circular_dependencies',
316
+ toolArgs: {
317
+ ...(scope ? { scope } : {})
318
+ }
319
+ };
320
+ break;
321
+ }
322
+ default: {
323
+ console.error(`Unknown command: ${command}`);
324
+ console.error('');
325
+ printUsage();
98
326
  process.exit(1);
99
327
  }
100
- else {
101
- console.log(`Removed: ${id}`);
328
+ }
329
+ try {
330
+ const result = await dispatchTool(dispatch.toolName, dispatch.toolArgs, ctx);
331
+ if (result.isError) {
332
+ console.error(extractText(result));
333
+ process.exit(1);
102
334
  }
335
+ formatJson(extractText(result), useJson, command, ctx.rootPath, formatQuery, formatIntent);
103
336
  }
104
- else {
105
- console.error('Usage: codebase-context memory <list|add|remove>');
106
- console.error('');
107
- console.error(' list [--category <cat>] [--type <type>] [--query <text>] [--json]');
108
- console.error(' add --type <type> --category <category> --memory <text> --reason <text>');
109
- console.error(' remove <id>');
337
+ catch (error) {
338
+ console.error('Error:', error instanceof Error ? error.message : String(error));
110
339
  process.exit(1);
111
340
  }
112
341
  }
package/dist/cli.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"cli.js","sourceRoot":"","sources":["../src/cli.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"cli.js","sourceRoot":"","sources":["../src/cli.ts"],"names":[],"mappings":"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"}
@@ -1,8 +1,21 @@
1
1
  export declare const CODEBASE_CONTEXT_DIRNAME: ".codebase-context";
2
+ /**
3
+ * Index format version for on-disk artifacts under `.codebase-context/`.
4
+ *
5
+ * Bump when:
6
+ * - Chunk boundaries change (AST chunking rules, split/merge behavior)
7
+ * - Embedding input string changes (e.g. scope-prefix content, prepended metadata)
8
+ * - Required persisted fields/artifact headers change
9
+ */
10
+ export declare const INDEX_FORMAT_VERSION: 1;
11
+ /** Schema version for `.codebase-context/index-meta.json` itself. */
12
+ export declare const INDEX_META_VERSION: 1;
13
+ export declare const INDEX_META_FILENAME: "index-meta.json";
2
14
  export declare const MEMORY_FILENAME: "memory.json";
3
15
  export declare const INTELLIGENCE_FILENAME: "intelligence.json";
4
16
  export declare const KEYWORD_INDEX_FILENAME: "index.json";
5
17
  export declare const INDEXING_STATS_FILENAME: "indexing-stats.json";
6
18
  export declare const VECTOR_DB_DIRNAME: "index";
7
19
  export declare const MANIFEST_FILENAME: "manifest.json";
20
+ export declare const RELATIONSHIPS_FILENAME: "relationships.json";
8
21
  //# sourceMappingURL=codebase-context.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"codebase-context.d.ts","sourceRoot":"","sources":["../../src/constants/codebase-context.ts"],"names":[],"mappings":"AAGA,eAAO,MAAM,wBAAwB,EAAG,mBAA4B,CAAC;AAErE,eAAO,MAAM,eAAe,EAAG,aAAsB,CAAC;AACtD,eAAO,MAAM,qBAAqB,EAAG,mBAA4B,CAAC;AAClE,eAAO,MAAM,sBAAsB,EAAG,YAAqB,CAAC;AAC5D,eAAO,MAAM,uBAAuB,EAAG,qBAA8B,CAAC;AACtE,eAAO,MAAM,iBAAiB,EAAG,OAAgB,CAAC;AAClD,eAAO,MAAM,iBAAiB,EAAG,eAAwB,CAAC"}
1
+ {"version":3,"file":"codebase-context.d.ts","sourceRoot":"","sources":["../../src/constants/codebase-context.ts"],"names":[],"mappings":"AAGA,eAAO,MAAM,wBAAwB,EAAG,mBAA4B,CAAC;AAErE;;;;;;;GAOG;AACH,eAAO,MAAM,oBAAoB,EAAG,CAAU,CAAC;AAE/C,qEAAqE;AACrE,eAAO,MAAM,kBAAkB,EAAG,CAAU,CAAC;AAE7C,eAAO,MAAM,mBAAmB,EAAG,iBAA0B,CAAC;AAE9D,eAAO,MAAM,eAAe,EAAG,aAAsB,CAAC;AACtD,eAAO,MAAM,qBAAqB,EAAG,mBAA4B,CAAC;AAClE,eAAO,MAAM,sBAAsB,EAAG,YAAqB,CAAC;AAC5D,eAAO,MAAM,uBAAuB,EAAG,qBAA8B,CAAC;AACtE,eAAO,MAAM,iBAAiB,EAAG,OAAgB,CAAC;AAClD,eAAO,MAAM,iBAAiB,EAAG,eAAwB,CAAC;AAC1D,eAAO,MAAM,sBAAsB,EAAG,oBAA6B,CAAC"}
@@ -1,10 +1,23 @@
1
1
  // Centralized constants for on-disk MCP artifacts.
2
2
  // Keep this module dependency-free to avoid import cycles.
3
3
  export const CODEBASE_CONTEXT_DIRNAME = '.codebase-context';
4
+ /**
5
+ * Index format version for on-disk artifacts under `.codebase-context/`.
6
+ *
7
+ * Bump when:
8
+ * - Chunk boundaries change (AST chunking rules, split/merge behavior)
9
+ * - Embedding input string changes (e.g. scope-prefix content, prepended metadata)
10
+ * - Required persisted fields/artifact headers change
11
+ */
12
+ export const INDEX_FORMAT_VERSION = 1;
13
+ /** Schema version for `.codebase-context/index-meta.json` itself. */
14
+ export const INDEX_META_VERSION = 1;
15
+ export const INDEX_META_FILENAME = 'index-meta.json';
4
16
  export const MEMORY_FILENAME = 'memory.json';
5
17
  export const INTELLIGENCE_FILENAME = 'intelligence.json';
6
18
  export const KEYWORD_INDEX_FILENAME = 'index.json';
7
19
  export const INDEXING_STATS_FILENAME = 'indexing-stats.json';
8
20
  export const VECTOR_DB_DIRNAME = 'index';
9
21
  export const MANIFEST_FILENAME = 'manifest.json';
22
+ export const RELATIONSHIPS_FILENAME = 'relationships.json';
10
23
  //# sourceMappingURL=codebase-context.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"codebase-context.js","sourceRoot":"","sources":["../../src/constants/codebase-context.ts"],"names":[],"mappings":"AAAA,mDAAmD;AACnD,2DAA2D;AAE3D,MAAM,CAAC,MAAM,wBAAwB,GAAG,mBAA4B,CAAC;AAErE,MAAM,CAAC,MAAM,eAAe,GAAG,aAAsB,CAAC;AACtD,MAAM,CAAC,MAAM,qBAAqB,GAAG,mBAA4B,CAAC;AAClE,MAAM,CAAC,MAAM,sBAAsB,GAAG,YAAqB,CAAC;AAC5D,MAAM,CAAC,MAAM,uBAAuB,GAAG,qBAA8B,CAAC;AACtE,MAAM,CAAC,MAAM,iBAAiB,GAAG,OAAgB,CAAC;AAClD,MAAM,CAAC,MAAM,iBAAiB,GAAG,eAAwB,CAAC"}
1
+ {"version":3,"file":"codebase-context.js","sourceRoot":"","sources":["../../src/constants/codebase-context.ts"],"names":[],"mappings":"AAAA,mDAAmD;AACnD,2DAA2D;AAE3D,MAAM,CAAC,MAAM,wBAAwB,GAAG,mBAA4B,CAAC;AAErE;;;;;;;GAOG;AACH,MAAM,CAAC,MAAM,oBAAoB,GAAG,CAAU,CAAC;AAE/C,qEAAqE;AACrE,MAAM,CAAC,MAAM,kBAAkB,GAAG,CAAU,CAAC;AAE7C,MAAM,CAAC,MAAM,mBAAmB,GAAG,iBAA0B,CAAC;AAE9D,MAAM,CAAC,MAAM,eAAe,GAAG,aAAsB,CAAC;AACtD,MAAM,CAAC,MAAM,qBAAqB,GAAG,mBAA4B,CAAC;AAClE,MAAM,CAAC,MAAM,sBAAsB,GAAG,YAAqB,CAAC;AAC5D,MAAM,CAAC,MAAM,uBAAuB,GAAG,qBAA8B,CAAC;AACtE,MAAM,CAAC,MAAM,iBAAiB,GAAG,OAAgB,CAAC;AAClD,MAAM,CAAC,MAAM,iBAAiB,GAAG,eAAwB,CAAC;AAC1D,MAAM,CAAC,MAAM,sBAAsB,GAAG,oBAA6B,CAAC"}
@@ -0,0 +1,16 @@
1
+ export interface AutoRefreshController {
2
+ /**
3
+ * Called when a file watcher detects a change.
4
+ * Returns true when an incremental refresh should run immediately.
5
+ */
6
+ onFileChange: (isIndexing: boolean) => boolean;
7
+ /**
8
+ * Called after an indexing run completes.
9
+ * Returns true when a queued incremental refresh should run next.
10
+ */
11
+ consumeQueuedRefresh: (indexStatus: 'ready' | 'error' | 'idle' | 'indexing') => boolean;
12
+ /** Clears any queued refresh. */
13
+ reset: () => void;
14
+ }
15
+ export declare function createAutoRefreshController(): AutoRefreshController;
16
+ //# sourceMappingURL=auto-refresh.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"auto-refresh.d.ts","sourceRoot":"","sources":["../../src/core/auto-refresh.ts"],"names":[],"mappings":"AAAA,MAAM,WAAW,qBAAqB;IACpC;;;OAGG;IACH,YAAY,EAAE,CAAC,UAAU,EAAE,OAAO,KAAK,OAAO,CAAC;IAC/C;;;OAGG;IACH,oBAAoB,EAAE,CAAC,WAAW,EAAE,OAAO,GAAG,OAAO,GAAG,MAAM,GAAG,UAAU,KAAK,OAAO,CAAC;IACxF,iCAAiC;IACjC,KAAK,EAAE,MAAM,IAAI,CAAC;CACnB;AAED,wBAAgB,2BAA2B,IAAI,qBAAqB,CAwBnE"}
@@ -0,0 +1,25 @@
1
+ export function createAutoRefreshController() {
2
+ let queued = false;
3
+ return {
4
+ onFileChange: (isIndexing) => {
5
+ if (isIndexing) {
6
+ queued = true;
7
+ return false;
8
+ }
9
+ return true;
10
+ },
11
+ consumeQueuedRefresh: (indexStatus) => {
12
+ if (indexStatus === 'indexing') {
13
+ // Defensive: if called while indexing, do not clear the queue.
14
+ return false;
15
+ }
16
+ const shouldRun = queued && indexStatus === 'ready';
17
+ queued = false;
18
+ return shouldRun;
19
+ },
20
+ reset: () => {
21
+ queued = false;
22
+ }
23
+ };
24
+ }
25
+ //# sourceMappingURL=auto-refresh.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"auto-refresh.js","sourceRoot":"","sources":["../../src/core/auto-refresh.ts"],"names":[],"mappings":"AAeA,MAAM,UAAU,2BAA2B;IACzC,IAAI,MAAM,GAAG,KAAK,CAAC;IAEnB,OAAO;QACL,YAAY,EAAE,CAAC,UAAmB,EAAE,EAAE;YACpC,IAAI,UAAU,EAAE,CAAC;gBACf,MAAM,GAAG,IAAI,CAAC;gBACd,OAAO,KAAK,CAAC;YACf,CAAC;YACD,OAAO,IAAI,CAAC;QACd,CAAC;QACD,oBAAoB,EAAE,CAAC,WAAW,EAAE,EAAE;YACpC,IAAI,WAAW,KAAK,UAAU,EAAE,CAAC;gBAC/B,+DAA+D;gBAC/D,OAAO,KAAK,CAAC;YACf,CAAC;YACD,MAAM,SAAS,GAAG,MAAM,IAAI,WAAW,KAAK,OAAO,CAAC;YACpD,MAAM,GAAG,KAAK,CAAC;YACf,OAAO,SAAS,CAAC;QACnB,CAAC;QACD,KAAK,EAAE,GAAG,EAAE;YACV,MAAM,GAAG,KAAK,CAAC;QACjB,CAAC;KACF,CAAC;AACJ,CAAC"}
@@ -0,0 +1,15 @@
1
+ export interface FileWatcherOptions {
2
+ rootPath: string;
3
+ /** ms after last change before triggering. Default: 2000 */
4
+ debounceMs?: number;
5
+ /** Called once chokidar finishes initial scan and starts emitting change events */
6
+ onReady?: () => void;
7
+ /** Called once the debounce window expires after the last detected change */
8
+ onChanged: () => void;
9
+ }
10
+ /**
11
+ * Watch rootPath for source file changes and call onChanged (debounced).
12
+ * Returns a stop() function that cancels the debounce timer and closes the watcher.
13
+ */
14
+ export declare function startFileWatcher(opts: FileWatcherOptions): () => void;
15
+ //# sourceMappingURL=file-watcher.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"file-watcher.d.ts","sourceRoot":"","sources":["../../src/core/file-watcher.ts"],"names":[],"mappings":"AAIA,MAAM,WAAW,kBAAkB;IACjC,QAAQ,EAAE,MAAM,CAAC;IACjB,4DAA4D;IAC5D,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,mFAAmF;IACnF,OAAO,CAAC,EAAE,MAAM,IAAI,CAAC;IACrB,6EAA6E;IAC7E,SAAS,EAAE,MAAM,IAAI,CAAC;CACvB;AAeD;;;GAGG;AACH,wBAAgB,gBAAgB,CAAC,IAAI,EAAE,kBAAkB,GAAG,MAAM,IAAI,CA0CrE"}