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.
- package/LICENSE +21 -21
- package/README.md +417 -282
- package/dist/analyzers/angular/index.d.ts.map +1 -1
- package/dist/analyzers/angular/index.js +91 -40
- package/dist/analyzers/angular/index.js.map +1 -1
- package/dist/analyzers/generic/index.d.ts +1 -0
- package/dist/analyzers/generic/index.d.ts.map +1 -1
- package/dist/analyzers/generic/index.js +94 -14
- package/dist/analyzers/generic/index.js.map +1 -1
- package/dist/cli-formatters.d.ts +47 -0
- package/dist/cli-formatters.d.ts.map +1 -0
- package/dist/cli-formatters.js +803 -0
- package/dist/cli-formatters.js.map +1 -0
- package/dist/cli-memory.d.ts +5 -0
- package/dist/cli-memory.d.ts.map +1 -0
- package/dist/cli-memory.js +218 -0
- package/dist/cli-memory.js.map +1 -0
- package/dist/cli.d.ts +3 -1
- package/dist/cli.d.ts.map +1 -1
- package/dist/cli.js +317 -88
- package/dist/cli.js.map +1 -1
- package/dist/constants/codebase-context.d.ts +13 -0
- package/dist/constants/codebase-context.d.ts.map +1 -1
- package/dist/constants/codebase-context.js +13 -0
- package/dist/constants/codebase-context.js.map +1 -1
- package/dist/core/auto-refresh.d.ts +16 -0
- package/dist/core/auto-refresh.d.ts.map +1 -0
- package/dist/core/auto-refresh.js +25 -0
- package/dist/core/auto-refresh.js.map +1 -0
- package/dist/core/file-watcher.d.ts +15 -0
- package/dist/core/file-watcher.d.ts.map +1 -0
- package/dist/core/file-watcher.js +59 -0
- package/dist/core/file-watcher.js.map +1 -0
- package/dist/core/index-meta.d.ts +27 -0
- package/dist/core/index-meta.d.ts.map +1 -0
- package/dist/core/index-meta.js +212 -0
- package/dist/core/index-meta.js.map +1 -0
- package/dist/core/indexer.d.ts.map +1 -1
- package/dist/core/indexer.js +324 -26
- package/dist/core/indexer.js.map +1 -1
- package/dist/core/reranker.d.ts.map +1 -1
- package/dist/core/reranker.js +3 -0
- package/dist/core/reranker.js.map +1 -1
- package/dist/core/search-quality.js +2 -2
- package/dist/core/search-quality.js.map +1 -1
- package/dist/core/search.d.ts +1 -0
- package/dist/core/search.d.ts.map +1 -1
- package/dist/core/search.js +79 -11
- package/dist/core/search.js.map +1 -1
- package/dist/core/symbol-references.d.ts +20 -0
- package/dist/core/symbol-references.d.ts.map +1 -0
- package/dist/core/symbol-references.js +186 -0
- package/dist/core/symbol-references.js.map +1 -0
- package/dist/embeddings/index.d.ts +8 -0
- package/dist/embeddings/index.d.ts.map +1 -1
- package/dist/embeddings/index.js +17 -2
- package/dist/embeddings/index.js.map +1 -1
- package/dist/embeddings/openai.d.ts +1 -1
- package/dist/embeddings/openai.d.ts.map +1 -1
- package/dist/embeddings/openai.js +3 -1
- package/dist/embeddings/openai.js.map +1 -1
- package/dist/embeddings/transformers.d.ts +6 -0
- package/dist/embeddings/transformers.d.ts.map +1 -1
- package/dist/embeddings/transformers.js +12 -5
- package/dist/embeddings/transformers.js.map +1 -1
- package/dist/embeddings/types.d.ts +1 -0
- package/dist/embeddings/types.d.ts.map +1 -1
- package/dist/embeddings/types.js +7 -1
- package/dist/embeddings/types.js.map +1 -1
- package/dist/eval/harness.d.ts +5 -0
- package/dist/eval/harness.d.ts.map +1 -0
- package/dist/eval/harness.js +153 -0
- package/dist/eval/harness.js.map +1 -0
- package/dist/eval/types.d.ts +59 -0
- package/dist/eval/types.d.ts.map +1 -0
- package/dist/eval/types.js +2 -0
- package/dist/eval/types.js.map +1 -0
- package/dist/grammars/manifest.d.ts +26 -0
- package/dist/grammars/manifest.d.ts.map +1 -0
- package/dist/grammars/manifest.js +64 -0
- package/dist/grammars/manifest.js.map +1 -0
- package/dist/index.d.ts +16 -2
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +181 -1300
- package/dist/index.js.map +1 -1
- package/dist/patterns/semantics.d.ts +2 -1
- package/dist/patterns/semantics.d.ts.map +1 -1
- package/dist/patterns/semantics.js +0 -2
- package/dist/patterns/semantics.js.map +1 -1
- package/dist/preflight/evidence-lock.d.ts +6 -0
- package/dist/preflight/evidence-lock.d.ts.map +1 -1
- package/dist/preflight/evidence-lock.js +33 -1
- package/dist/preflight/evidence-lock.js.map +1 -1
- package/dist/storage/index.d.ts +4 -1
- package/dist/storage/index.d.ts.map +1 -1
- package/dist/storage/index.js +2 -2
- package/dist/storage/index.js.map +1 -1
- package/dist/storage/lancedb.d.ts +11 -1
- package/dist/storage/lancedb.d.ts.map +1 -1
- package/dist/storage/lancedb.js +45 -11
- package/dist/storage/lancedb.js.map +1 -1
- package/dist/storage/types.d.ts +4 -1
- package/dist/storage/types.d.ts.map +1 -1
- package/dist/storage/types.js.map +1 -1
- package/dist/tools/detect-circular-dependencies.d.ts +5 -0
- package/dist/tools/detect-circular-dependencies.d.ts.map +1 -0
- package/dist/tools/detect-circular-dependencies.js +117 -0
- package/dist/tools/detect-circular-dependencies.js.map +1 -0
- package/dist/tools/get-codebase-metadata.d.ts +5 -0
- package/dist/tools/get-codebase-metadata.d.ts.map +1 -0
- package/dist/tools/get-codebase-metadata.js +53 -0
- package/dist/tools/get-codebase-metadata.js.map +1 -0
- package/dist/tools/get-indexing-status.d.ts +5 -0
- package/dist/tools/get-indexing-status.d.ts.map +1 -0
- package/dist/tools/get-indexing-status.js +44 -0
- package/dist/tools/get-indexing-status.js.map +1 -0
- package/dist/tools/get-memory.d.ts +5 -0
- package/dist/tools/get-memory.d.ts.map +1 -0
- package/dist/tools/get-memory.js +89 -0
- package/dist/tools/get-memory.js.map +1 -0
- package/dist/tools/get-style-guide.d.ts +5 -0
- package/dist/tools/get-style-guide.d.ts.map +1 -0
- package/dist/tools/get-style-guide.js +151 -0
- package/dist/tools/get-style-guide.js.map +1 -0
- package/dist/tools/get-symbol-references.d.ts +5 -0
- package/dist/tools/get-symbol-references.d.ts.map +1 -0
- package/dist/tools/get-symbol-references.js +70 -0
- package/dist/tools/get-symbol-references.js.map +1 -0
- package/dist/tools/get-team-patterns.d.ts +5 -0
- package/dist/tools/get-team-patterns.d.ts.map +1 -0
- package/dist/tools/get-team-patterns.js +147 -0
- package/dist/tools/get-team-patterns.js.map +1 -0
- package/dist/tools/index.d.ts +6 -0
- package/dist/tools/index.d.ts.map +1 -0
- package/dist/tools/index.js +41 -0
- package/dist/tools/index.js.map +1 -0
- package/dist/tools/refresh-index.d.ts +5 -0
- package/dist/tools/refresh-index.d.ts.map +1 -0
- package/dist/tools/refresh-index.js +40 -0
- package/dist/tools/refresh-index.js.map +1 -0
- package/dist/tools/remember.d.ts +5 -0
- package/dist/tools/remember.d.ts.map +1 -0
- package/dist/tools/remember.js +101 -0
- package/dist/tools/remember.js.map +1 -0
- package/dist/tools/search-codebase.d.ts +5 -0
- package/dist/tools/search-codebase.d.ts.map +1 -0
- package/dist/tools/search-codebase.js +745 -0
- package/dist/tools/search-codebase.js.map +1 -0
- package/dist/tools/types.d.ts +223 -0
- package/dist/tools/types.d.ts.map +1 -0
- package/dist/tools/types.js +2 -0
- package/dist/tools/types.js.map +1 -0
- package/dist/types/index.d.ts +79 -11
- package/dist/types/index.d.ts.map +1 -1
- package/dist/types/index.js +0 -1
- package/dist/types/index.js.map +1 -1
- package/dist/utils/ast-chunker.d.ts +71 -0
- package/dist/utils/ast-chunker.d.ts.map +1 -0
- package/dist/utils/ast-chunker.js +453 -0
- package/dist/utils/ast-chunker.js.map +1 -0
- package/dist/utils/chunking.d.ts.map +1 -1
- package/dist/utils/chunking.js +10 -3
- package/dist/utils/chunking.js.map +1 -1
- package/dist/utils/language-detection.d.ts.map +1 -1
- package/dist/utils/language-detection.js +26 -1
- package/dist/utils/language-detection.js.map +1 -1
- package/dist/utils/tree-sitter.d.ts +28 -0
- package/dist/utils/tree-sitter.d.ts.map +1 -0
- package/dist/utils/tree-sitter.js +422 -0
- package/dist/utils/tree-sitter.js.map +1 -0
- package/dist/utils/usage-tracker.d.ts +30 -40
- package/dist/utils/usage-tracker.d.ts.map +1 -1
- package/dist/utils/usage-tracker.js +66 -8
- package/dist/utils/usage-tracker.js.map +1 -1
- package/docs/capabilities.md +183 -92
- package/docs/cli.md +196 -0
- package/grammars/.gitkeep +0 -0
- package/grammars/tree-sitter-c.wasm +0 -0
- package/grammars/tree-sitter-c_sharp.wasm +0 -0
- package/grammars/tree-sitter-cpp.wasm +0 -0
- package/grammars/tree-sitter-go.wasm +0 -0
- package/grammars/tree-sitter-java.wasm +0 -0
- package/grammars/tree-sitter-javascript.wasm +0 -0
- package/grammars/tree-sitter-kotlin.wasm +0 -0
- package/grammars/tree-sitter-python.wasm +0 -0
- package/grammars/tree-sitter-rust.wasm +0 -0
- package/grammars/tree-sitter-tsx.wasm +0 -0
- package/grammars/tree-sitter-typescript.wasm +0 -0
- 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 {
|
|
7
|
-
import {
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
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
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
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
|
-
|
|
34
|
-
|
|
35
|
-
|
|
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
|
-
|
|
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
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
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
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
process.exit(1);
|
|
250
|
+
case 'metadata': {
|
|
251
|
+
dispatch = { toolName: 'get_codebase_metadata', toolArgs: {} };
|
|
252
|
+
break;
|
|
68
253
|
}
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
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
|
-
|
|
86
|
-
|
|
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
|
-
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
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
|
-
|
|
96
|
-
|
|
97
|
-
|
|
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
|
-
|
|
101
|
-
|
|
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
|
-
|
|
105
|
-
console.error('
|
|
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"}
|