@code-rag/cli 0.1.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 -0
- package/README.md +27 -0
- package/dist/cli.test.d.ts +1 -0
- package/dist/cli.test.js +369 -0
- package/dist/cli.test.js.map +1 -0
- package/dist/commands/hooks-cmd.d.ts +53 -0
- package/dist/commands/hooks-cmd.js +279 -0
- package/dist/commands/index-cmd.d.ts +4 -0
- package/dist/commands/index-cmd.js +1037 -0
- package/dist/commands/index-cmd.js.map +1 -0
- package/dist/commands/index-cmd.test.d.ts +1 -0
- package/dist/commands/index-cmd.test.js +74 -0
- package/dist/commands/index-cmd.test.js.map +1 -0
- package/dist/commands/init-wizard.d.ts +95 -0
- package/dist/commands/init-wizard.js +526 -0
- package/dist/commands/init.d.ts +7 -0
- package/dist/commands/init.js +125 -0
- package/dist/commands/init.js.map +1 -0
- package/dist/commands/search.d.ts +7 -0
- package/dist/commands/search.js +124 -0
- package/dist/commands/search.js.map +1 -0
- package/dist/commands/serve.d.ts +2 -0
- package/dist/commands/serve.js +56 -0
- package/dist/commands/serve.js.map +1 -0
- package/dist/commands/status.d.ts +21 -0
- package/dist/commands/status.js +117 -0
- package/dist/commands/status.js.map +1 -0
- package/dist/commands/viewer.d.ts +20 -0
- package/dist/commands/viewer.js +197 -0
- package/dist/commands/viewer.js.map +1 -0
- package/dist/commands/viewer.test.d.ts +1 -0
- package/dist/commands/viewer.test.js +69 -0
- package/dist/commands/viewer.test.js.map +1 -0
- package/dist/commands/watch-cmd.d.ts +8 -0
- package/dist/commands/watch-cmd.js +152 -0
- package/dist/index.d.ts +2 -0
- package/dist/index.js +24 -0
- package/dist/index.js.map +1 -0
- package/package.json +66 -0
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"viewer.test.js","sourceRoot":"","sources":["../../src/commands/viewer.test.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
import { Command } from 'commander';
|
|
2
|
+
/**
|
|
3
|
+
* Register the `coderag watch` CLI command.
|
|
4
|
+
*
|
|
5
|
+
* Starts a file watcher that monitors the project directory for changes
|
|
6
|
+
* and triggers incremental re-indexing on each debounced batch.
|
|
7
|
+
*/
|
|
8
|
+
export declare function registerWatchCommand(program: Command): void;
|
|
@@ -0,0 +1,152 @@
|
|
|
1
|
+
import chalk from 'chalk';
|
|
2
|
+
import ora from 'ora';
|
|
3
|
+
import { resolve, sep } from 'node:path';
|
|
4
|
+
import { spawn } from 'node:child_process';
|
|
5
|
+
import { loadConfig, createIgnoreFilter, FileWatcher, } from '@code-rag/core';
|
|
6
|
+
/**
|
|
7
|
+
* Register the `coderag watch` CLI command.
|
|
8
|
+
*
|
|
9
|
+
* Starts a file watcher that monitors the project directory for changes
|
|
10
|
+
* and triggers incremental re-indexing on each debounced batch.
|
|
11
|
+
*/
|
|
12
|
+
export function registerWatchCommand(program) {
|
|
13
|
+
program
|
|
14
|
+
.command('watch')
|
|
15
|
+
.description('Watch the codebase for changes and trigger incremental re-indexing')
|
|
16
|
+
.option('--debounce <ms>', 'Debounce window in milliseconds', '2000')
|
|
17
|
+
.action(async (options) => {
|
|
18
|
+
const debounceMs = parseInt(options.debounce, 10);
|
|
19
|
+
if (isNaN(debounceMs) || debounceMs < 0) {
|
|
20
|
+
// eslint-disable-next-line no-console
|
|
21
|
+
console.error(chalk.red('Invalid debounce value. Must be a non-negative integer.'));
|
|
22
|
+
process.exit(1);
|
|
23
|
+
}
|
|
24
|
+
const spinner = ora('Loading configuration...').start();
|
|
25
|
+
try {
|
|
26
|
+
const rootDir = process.cwd();
|
|
27
|
+
// Load config
|
|
28
|
+
const configResult = await loadConfig(rootDir);
|
|
29
|
+
if (configResult.isErr()) {
|
|
30
|
+
spinner.fail(configResult.error.message);
|
|
31
|
+
// eslint-disable-next-line no-console
|
|
32
|
+
console.error(chalk.red('Run "coderag init" first to create a configuration file.'));
|
|
33
|
+
process.exit(1);
|
|
34
|
+
}
|
|
35
|
+
const config = configResult.value;
|
|
36
|
+
const storagePath = resolve(rootDir, config.storage.path);
|
|
37
|
+
// Prevent path traversal outside project root
|
|
38
|
+
if (!storagePath.startsWith(resolve(rootDir) + sep) && storagePath !== resolve(rootDir)) {
|
|
39
|
+
spinner.fail('Storage path escapes project root');
|
|
40
|
+
process.exit(1);
|
|
41
|
+
}
|
|
42
|
+
// Create ignore filter
|
|
43
|
+
const ignoreFilter = createIgnoreFilter(rootDir);
|
|
44
|
+
// Create and start file watcher
|
|
45
|
+
const watcher = new FileWatcher({
|
|
46
|
+
rootDir,
|
|
47
|
+
ignoreFilter,
|
|
48
|
+
debounceMs,
|
|
49
|
+
});
|
|
50
|
+
let isIndexing = false;
|
|
51
|
+
let indexCount = 0;
|
|
52
|
+
watcher.on('change', (changedPaths) => {
|
|
53
|
+
if (isIndexing) {
|
|
54
|
+
// eslint-disable-next-line no-console
|
|
55
|
+
console.log(chalk.yellow(` Skipping batch (${changedPaths.length} files) — indexing already in progress`));
|
|
56
|
+
return;
|
|
57
|
+
}
|
|
58
|
+
isIndexing = true;
|
|
59
|
+
indexCount++;
|
|
60
|
+
const batchNum = indexCount;
|
|
61
|
+
// eslint-disable-next-line no-console
|
|
62
|
+
console.log('');
|
|
63
|
+
// eslint-disable-next-line no-console
|
|
64
|
+
console.log(chalk.bold(`[Batch ${batchNum}] ${changedPaths.length} file(s) changed:`));
|
|
65
|
+
for (const filePath of changedPaths.slice(0, 10)) {
|
|
66
|
+
// eslint-disable-next-line no-console
|
|
67
|
+
console.log(` ${chalk.gray('→')} ${filePath}`);
|
|
68
|
+
}
|
|
69
|
+
if (changedPaths.length > 10) {
|
|
70
|
+
// eslint-disable-next-line no-console
|
|
71
|
+
console.log(` ${chalk.gray(`… and ${changedPaths.length - 10} more`)}`);
|
|
72
|
+
}
|
|
73
|
+
// eslint-disable-next-line no-console
|
|
74
|
+
console.log(chalk.cyan(' Running incremental index...'));
|
|
75
|
+
const startTime = Date.now();
|
|
76
|
+
const child = spawn(process.execPath, [process.argv[1], 'index'], {
|
|
77
|
+
cwd: rootDir,
|
|
78
|
+
stdio: ['ignore', 'pipe', 'pipe'],
|
|
79
|
+
});
|
|
80
|
+
child.stdout.on('data', (data) => {
|
|
81
|
+
const lines = data.toString().trimEnd().split('\n');
|
|
82
|
+
for (const line of lines) {
|
|
83
|
+
// eslint-disable-next-line no-console
|
|
84
|
+
console.log(` ${chalk.gray('│')} ${line}`);
|
|
85
|
+
}
|
|
86
|
+
});
|
|
87
|
+
child.stderr.on('data', (data) => {
|
|
88
|
+
const lines = data.toString().trimEnd().split('\n');
|
|
89
|
+
for (const line of lines) {
|
|
90
|
+
// eslint-disable-next-line no-console
|
|
91
|
+
console.log(` ${chalk.gray('│')} ${chalk.yellow(line)}`);
|
|
92
|
+
}
|
|
93
|
+
});
|
|
94
|
+
child.on('close', (code) => {
|
|
95
|
+
const elapsed = ((Date.now() - startTime) / 1000).toFixed(1);
|
|
96
|
+
if (code === 0) {
|
|
97
|
+
// eslint-disable-next-line no-console
|
|
98
|
+
console.log(chalk.green(` Batch ${batchNum} complete (${elapsed}s)`));
|
|
99
|
+
}
|
|
100
|
+
else {
|
|
101
|
+
// eslint-disable-next-line no-console
|
|
102
|
+
console.log(chalk.red(` Batch ${batchNum} failed with exit code ${code ?? 'unknown'} (${elapsed}s)`));
|
|
103
|
+
}
|
|
104
|
+
isIndexing = false;
|
|
105
|
+
});
|
|
106
|
+
child.on('error', (err) => {
|
|
107
|
+
// eslint-disable-next-line no-console
|
|
108
|
+
console.log(chalk.red(` Batch ${batchNum} spawn error: ${err.message}`));
|
|
109
|
+
isIndexing = false;
|
|
110
|
+
});
|
|
111
|
+
});
|
|
112
|
+
watcher.on('error', (error) => {
|
|
113
|
+
// eslint-disable-next-line no-console
|
|
114
|
+
console.error(chalk.red(`Watcher error: ${error.message}`));
|
|
115
|
+
});
|
|
116
|
+
spinner.succeed('Configuration loaded');
|
|
117
|
+
// eslint-disable-next-line no-console
|
|
118
|
+
console.log('');
|
|
119
|
+
// eslint-disable-next-line no-console
|
|
120
|
+
console.log(chalk.bold('CodeRAG File Watcher'));
|
|
121
|
+
// eslint-disable-next-line no-console
|
|
122
|
+
console.log(` Root: ${chalk.cyan(rootDir)}`);
|
|
123
|
+
// eslint-disable-next-line no-console
|
|
124
|
+
console.log(` Debounce: ${chalk.cyan(debounceMs + 'ms')}`);
|
|
125
|
+
// eslint-disable-next-line no-console
|
|
126
|
+
console.log(` Storage: ${chalk.cyan(storagePath)}`);
|
|
127
|
+
// eslint-disable-next-line no-console
|
|
128
|
+
console.log('');
|
|
129
|
+
// eslint-disable-next-line no-console
|
|
130
|
+
console.log(chalk.gray('Watching for file changes... (press Ctrl+C to stop)'));
|
|
131
|
+
await watcher.start();
|
|
132
|
+
// Handle graceful shutdown
|
|
133
|
+
const shutdown = async () => {
|
|
134
|
+
// eslint-disable-next-line no-console
|
|
135
|
+
console.log('');
|
|
136
|
+
// eslint-disable-next-line no-console
|
|
137
|
+
console.log(chalk.yellow('Stopping watcher...'));
|
|
138
|
+
await watcher.stop();
|
|
139
|
+
// eslint-disable-next-line no-console
|
|
140
|
+
console.log(chalk.green(`Watcher stopped. Processed ${indexCount} batch(es).`));
|
|
141
|
+
process.exit(0);
|
|
142
|
+
};
|
|
143
|
+
process.on('SIGINT', () => void shutdown());
|
|
144
|
+
process.on('SIGTERM', () => void shutdown());
|
|
145
|
+
}
|
|
146
|
+
catch (error) {
|
|
147
|
+
const message = error instanceof Error ? error.message : String(error);
|
|
148
|
+
spinner.fail(`Watch failed: ${message}`);
|
|
149
|
+
process.exit(1);
|
|
150
|
+
}
|
|
151
|
+
});
|
|
152
|
+
}
|
package/dist/index.d.ts
ADDED
package/dist/index.js
ADDED
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
#!/usr/bin/env node
|
|
2
|
+
import { Command } from 'commander';
|
|
3
|
+
import { registerInitCommand } from './commands/init.js';
|
|
4
|
+
import { registerIndexCommand } from './commands/index-cmd.js';
|
|
5
|
+
import { registerSearchCommand } from './commands/search.js';
|
|
6
|
+
import { registerServeCommand } from './commands/serve.js';
|
|
7
|
+
import { registerStatusCommand } from './commands/status.js';
|
|
8
|
+
import { registerViewerCommand } from './commands/viewer.js';
|
|
9
|
+
import { registerWatchCommand } from './commands/watch-cmd.js';
|
|
10
|
+
import { registerHooksCommand } from './commands/hooks-cmd.js';
|
|
11
|
+
const program = new Command();
|
|
12
|
+
program
|
|
13
|
+
.name('coderag')
|
|
14
|
+
.description('CodeRAG — intelligent codebase context engine for AI coding agents')
|
|
15
|
+
.version('0.1.0');
|
|
16
|
+
registerInitCommand(program);
|
|
17
|
+
registerIndexCommand(program);
|
|
18
|
+
registerSearchCommand(program);
|
|
19
|
+
registerServeCommand(program);
|
|
20
|
+
registerStatusCommand(program);
|
|
21
|
+
registerViewerCommand(program);
|
|
22
|
+
registerWatchCommand(program);
|
|
23
|
+
registerHooksCommand(program);
|
|
24
|
+
program.parse();
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";AACA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AACpC,OAAO,EAAE,mBAAmB,EAAE,MAAM,oBAAoB,CAAC;AACzD,OAAO,EAAE,oBAAoB,EAAE,MAAM,yBAAyB,CAAC;AAC/D,OAAO,EAAE,qBAAqB,EAAE,MAAM,sBAAsB,CAAC;AAC7D,OAAO,EAAE,oBAAoB,EAAE,MAAM,qBAAqB,CAAC;AAC3D,OAAO,EAAE,qBAAqB,EAAE,MAAM,sBAAsB,CAAC;AAC7D,OAAO,EAAE,qBAAqB,EAAE,MAAM,sBAAsB,CAAC;AAE7D,MAAM,OAAO,GAAG,IAAI,OAAO,EAAE,CAAC;AAC9B,OAAO;KACJ,IAAI,CAAC,SAAS,CAAC;KACf,WAAW,CAAC,oEAAoE,CAAC;KACjF,OAAO,CAAC,OAAO,CAAC,CAAC;AAEpB,mBAAmB,CAAC,OAAO,CAAC,CAAC;AAC7B,oBAAoB,CAAC,OAAO,CAAC,CAAC;AAC9B,qBAAqB,CAAC,OAAO,CAAC,CAAC;AAC/B,oBAAoB,CAAC,OAAO,CAAC,CAAC;AAC9B,qBAAqB,CAAC,OAAO,CAAC,CAAC;AAC/B,qBAAqB,CAAC,OAAO,CAAC,CAAC;AAE/B,OAAO,CAAC,KAAK,EAAE,CAAC"}
|
package/package.json
ADDED
|
@@ -0,0 +1,66 @@
|
|
|
1
|
+
{
|
|
2
|
+
"name": "@code-rag/cli",
|
|
3
|
+
"version": "0.1.0",
|
|
4
|
+
"description": "CLI tool for CodeRAG — init, index, search, serve, and status commands for codebase context engine",
|
|
5
|
+
"type": "module",
|
|
6
|
+
"license": "MIT",
|
|
7
|
+
"author": "CodeRAG Contributors",
|
|
8
|
+
"homepage": "https://dev.azure.com/momc-pl/CodeRAG/_git/CodeRAG",
|
|
9
|
+
"bugs": {
|
|
10
|
+
"url": "https://dev.azure.com/momc-pl/CodeRAG/_git/CodeRAG/issues"
|
|
11
|
+
},
|
|
12
|
+
"repository": {
|
|
13
|
+
"type": "git",
|
|
14
|
+
"url": "https://dev.azure.com/momc-pl/CodeRAG/_git/CodeRAG",
|
|
15
|
+
"directory": "packages/cli"
|
|
16
|
+
},
|
|
17
|
+
"engines": {
|
|
18
|
+
"node": ">=20"
|
|
19
|
+
},
|
|
20
|
+
"keywords": [
|
|
21
|
+
"coderag",
|
|
22
|
+
"cli",
|
|
23
|
+
"code-search",
|
|
24
|
+
"ai-coding",
|
|
25
|
+
"rag",
|
|
26
|
+
"embeddings",
|
|
27
|
+
"developer-tools"
|
|
28
|
+
],
|
|
29
|
+
"files": [
|
|
30
|
+
"dist",
|
|
31
|
+
"LICENSE",
|
|
32
|
+
"README.md"
|
|
33
|
+
],
|
|
34
|
+
"bin": {
|
|
35
|
+
"coderag": "./dist/index.js"
|
|
36
|
+
},
|
|
37
|
+
"main": "./dist/index.js",
|
|
38
|
+
"types": "./dist/index.d.ts",
|
|
39
|
+
"exports": {
|
|
40
|
+
".": {
|
|
41
|
+
"import": "./dist/index.js",
|
|
42
|
+
"types": "./dist/index.d.ts"
|
|
43
|
+
}
|
|
44
|
+
},
|
|
45
|
+
"scripts": {
|
|
46
|
+
"build": "tsc",
|
|
47
|
+
"clean": "rm -rf dist",
|
|
48
|
+
"test": "vitest run"
|
|
49
|
+
},
|
|
50
|
+
"dependencies": {
|
|
51
|
+
"@code-rag/api-server": "workspace:*",
|
|
52
|
+
"@code-rag/core": "workspace:*",
|
|
53
|
+
"@code-rag/mcp-server": "workspace:*",
|
|
54
|
+
"@inquirer/prompts": "^8.3.0",
|
|
55
|
+
"chalk": "^5.4.1",
|
|
56
|
+
"commander": "^13.1.0",
|
|
57
|
+
"ora": "^8.2.0",
|
|
58
|
+
"yaml": "^2.7.0"
|
|
59
|
+
},
|
|
60
|
+
"devDependencies": {
|
|
61
|
+
"@types/node": "^22.13.4",
|
|
62
|
+
"@vitest/coverage-v8": "^3.0.5",
|
|
63
|
+
"typescript": "^5.7.3",
|
|
64
|
+
"vitest": "^3.0.5"
|
|
65
|
+
}
|
|
66
|
+
}
|