@mcampa/ai-context-cli 0.0.1-beta.f7ff6c2 → 0.0.2-beta.2250c7e
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/README.md +57 -3
- package/dist/config-loader.d.ts +4 -0
- package/dist/config-loader.d.ts.map +1 -1
- package/dist/config-loader.js +131 -13
- package/dist/config-loader.js.map +1 -1
- package/dist/config-loader.test.js +372 -2
- package/dist/config-loader.test.js.map +1 -1
- package/dist/index.js +7 -1
- package/dist/index.js.map +1 -1
- package/package.json +5 -4
package/README.md
CHANGED
|
@@ -24,7 +24,9 @@ npm install -D @mcampa/ai-context-cli
|
|
|
24
24
|
|
|
25
25
|
## Quick Start
|
|
26
26
|
|
|
27
|
-
1. Create a configuration file
|
|
27
|
+
1. Create a configuration file in your project root. You can use TypeScript (`.ts`), JavaScript (`.js`), or JSON (`.json`):
|
|
28
|
+
|
|
29
|
+
**TypeScript/JavaScript projects** - `ai-context.config.ts`:
|
|
28
30
|
|
|
29
31
|
```typescript
|
|
30
32
|
import type { ContextConfig } from "@mcampa/ai-context-cli";
|
|
@@ -45,6 +47,21 @@ const config: ContextConfig = {
|
|
|
45
47
|
export default config;
|
|
46
48
|
```
|
|
47
49
|
|
|
50
|
+
**Non-JS/TS projects (Python, Go, Rust, etc.)** - `ai-context.config.json`:
|
|
51
|
+
|
|
52
|
+
```json
|
|
53
|
+
{
|
|
54
|
+
"name": "my-project",
|
|
55
|
+
"embeddingConfig": {
|
|
56
|
+
"apiKey": "[OPENAI_API_KEY]",
|
|
57
|
+
"model": "text-embedding-3-small"
|
|
58
|
+
},
|
|
59
|
+
"vectorDatabaseConfig": {
|
|
60
|
+
"address": "localhost:19530"
|
|
61
|
+
}
|
|
62
|
+
}
|
|
63
|
+
```
|
|
64
|
+
|
|
48
65
|
2. Run the indexer:
|
|
49
66
|
|
|
50
67
|
```bash
|
|
@@ -120,6 +137,43 @@ const config = {
|
|
|
120
137
|
export default config;
|
|
121
138
|
```
|
|
122
139
|
|
|
140
|
+
### JSON Configuration (`ai-context.config.json`)
|
|
141
|
+
|
|
142
|
+
For non-JavaScript/TypeScript projects (Python, Go, Rust, etc.), you can use a JSON config file:
|
|
143
|
+
|
|
144
|
+
```json
|
|
145
|
+
{
|
|
146
|
+
"name": "my-project",
|
|
147
|
+
"embeddingConfig": {
|
|
148
|
+
"apiKey": "[OPENAI_API_KEY]",
|
|
149
|
+
"model": "text-embedding-3-small"
|
|
150
|
+
},
|
|
151
|
+
"vectorDatabaseConfig": {
|
|
152
|
+
"token": "[ZILLIZ_TOKEN]",
|
|
153
|
+
"address": "localhost:19530"
|
|
154
|
+
},
|
|
155
|
+
"supportedExtensions": [".py", ".go", ".rs"],
|
|
156
|
+
"ignorePatterns": ["venv/**", "__pycache__/**", "target/**"],
|
|
157
|
+
"customExtensions": [".proto"],
|
|
158
|
+
"customIgnorePatterns": ["*_test.go"]
|
|
159
|
+
}
|
|
160
|
+
```
|
|
161
|
+
|
|
162
|
+
#### Environment Variable Substitution
|
|
163
|
+
|
|
164
|
+
JSON configs support environment variable substitution using the `[ENV_VAR_NAME]` syntax. Any value containing `[VARIABLE_NAME]` will be replaced with the corresponding environment variable:
|
|
165
|
+
|
|
166
|
+
```json
|
|
167
|
+
{
|
|
168
|
+
"embeddingConfig": {
|
|
169
|
+
"apiKey": "[OPENAI_API_KEY]",
|
|
170
|
+
"baseURL": "https://[API_HOST]:[API_PORT]/v1"
|
|
171
|
+
}
|
|
172
|
+
}
|
|
173
|
+
```
|
|
174
|
+
|
|
175
|
+
The CLI will throw an error if a referenced environment variable is not set, ensuring you don't accidentally run with missing configuration
|
|
176
|
+
|
|
123
177
|
## CLI Options
|
|
124
178
|
|
|
125
179
|
```
|
|
@@ -127,7 +181,7 @@ Usage: ai-context-index [options]
|
|
|
127
181
|
|
|
128
182
|
Options:
|
|
129
183
|
-V, --version output the version number
|
|
130
|
-
-c, --config <path> path to config file (default: ai-context.config.ts/js)
|
|
184
|
+
-c, --config <path> path to config file (default: ai-context.config.ts/js/json)
|
|
131
185
|
-f, --force force reindex even if collection already exists
|
|
132
186
|
-h, --help display help for command
|
|
133
187
|
```
|
|
@@ -232,7 +286,7 @@ Use `customExtensions` to add more file types or `supportedExtensions` to overri
|
|
|
232
286
|
|
|
233
287
|
### "Config file not found"
|
|
234
288
|
|
|
235
|
-
Make sure you have a config file named `ai-context.config.ts` or `ai-context.config.
|
|
289
|
+
Make sure you have a config file named `ai-context.config.ts`, `ai-context.config.js`, or `ai-context.config.json` in the directory where you're running the command, or specify a custom path with `--config`.
|
|
236
290
|
|
|
237
291
|
### "Missing required field: embeddingConfig.apiKey"
|
|
238
292
|
|
package/dist/config-loader.d.ts
CHANGED
|
@@ -4,6 +4,10 @@ import type { ContextConfig } from "./types.js";
|
|
|
4
4
|
* Searches for ai-context.config.ts first, then ai-context.config.js
|
|
5
5
|
*/
|
|
6
6
|
export declare function findConfigFile(cwd: string): string | null;
|
|
7
|
+
/**
|
|
8
|
+
* Find tsx binary in multiple locations
|
|
9
|
+
*/
|
|
10
|
+
export declare function findTsxBinary(): string | null;
|
|
7
11
|
/**
|
|
8
12
|
* Load and validate the configuration file
|
|
9
13
|
* @param configPath Path to the config file, or directory to search for config
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"config-loader.d.ts","sourceRoot":"","sources":["../src/config-loader.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,YAAY,CAAC;
|
|
1
|
+
{"version":3,"file":"config-loader.d.ts","sourceRoot":"","sources":["../src/config-loader.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,YAAY,CAAC;AAQhD;;;GAGG;AACH,wBAAgB,cAAc,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI,CAQzD;AAED;;GAEG;AACH,wBAAgB,aAAa,IAAI,MAAM,GAAG,IAAI,CA8C7C;AAmID;;;;GAIG;AACH,wBAAsB,UAAU,CAAC,UAAU,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,aAAa,CAAC,CAmE5E"}
|
package/dist/config-loader.js
CHANGED
|
@@ -1,8 +1,12 @@
|
|
|
1
|
-
import { existsSync } from "fs";
|
|
1
|
+
import { existsSync, readFileSync } from "fs";
|
|
2
2
|
import { resolve, join } from "path";
|
|
3
3
|
import { pathToFileURL } from "url";
|
|
4
|
-
import { spawnSync } from "child_process";
|
|
5
|
-
const CONFIG_FILE_NAMES = [
|
|
4
|
+
import { spawnSync, execSync } from "child_process";
|
|
5
|
+
const CONFIG_FILE_NAMES = [
|
|
6
|
+
"ai-context.config.ts",
|
|
7
|
+
"ai-context.config.js",
|
|
8
|
+
"ai-context.config.json",
|
|
9
|
+
];
|
|
6
10
|
/**
|
|
7
11
|
* Find the config file in the given directory
|
|
8
12
|
* Searches for ai-context.config.ts first, then ai-context.config.js
|
|
@@ -17,19 +21,59 @@ export function findConfigFile(cwd) {
|
|
|
17
21
|
return null;
|
|
18
22
|
}
|
|
19
23
|
/**
|
|
20
|
-
*
|
|
24
|
+
* Find tsx binary in multiple locations
|
|
21
25
|
*/
|
|
22
|
-
function
|
|
23
|
-
//
|
|
26
|
+
export function findTsxBinary() {
|
|
27
|
+
// 1. Check CLI package's node_modules
|
|
24
28
|
const cliRoot = process.env.AI_CONTEXT_CLI_ROOT;
|
|
25
|
-
// Find tsx binary
|
|
26
|
-
let tsxPath = null;
|
|
27
29
|
if (cliRoot) {
|
|
28
|
-
const
|
|
29
|
-
if (existsSync(
|
|
30
|
-
|
|
30
|
+
const cliPath = join(cliRoot, "node_modules", ".bin", "tsx");
|
|
31
|
+
if (existsSync(cliPath)) {
|
|
32
|
+
return cliPath;
|
|
33
|
+
}
|
|
34
|
+
}
|
|
35
|
+
// 2. Check current working directory's node_modules (where user is running the command)
|
|
36
|
+
const cwd = process.cwd();
|
|
37
|
+
const localPath = join(cwd, "node_modules", ".bin", "tsx");
|
|
38
|
+
if (existsSync(localPath)) {
|
|
39
|
+
return localPath;
|
|
40
|
+
}
|
|
41
|
+
// 3. Check if tsx is available in PATH (globally installed)
|
|
42
|
+
try {
|
|
43
|
+
// Use 'which' on Unix-like systems, 'where' on Windows
|
|
44
|
+
const command = process.platform === "win32" ? "where tsx" : "which tsx";
|
|
45
|
+
const tsxPath = execSync(command, { encoding: "utf-8", stdio: "pipe" })
|
|
46
|
+
.trim()
|
|
47
|
+
.split("\n")[0];
|
|
48
|
+
if (tsxPath && existsSync(tsxPath)) {
|
|
49
|
+
return tsxPath;
|
|
50
|
+
}
|
|
51
|
+
}
|
|
52
|
+
catch {
|
|
53
|
+
// tsx not found in PATH, continue to next check
|
|
54
|
+
}
|
|
55
|
+
// 4. Try to use 'tsx' directly (might work if it's in PATH and spawn can find it)
|
|
56
|
+
// We'll test this by trying to spawn it
|
|
57
|
+
try {
|
|
58
|
+
const testResult = spawnSync("tsx", ["--version"], {
|
|
59
|
+
encoding: "utf-8",
|
|
60
|
+
stdio: "pipe",
|
|
61
|
+
});
|
|
62
|
+
if (testResult.status === 0) {
|
|
63
|
+
return "tsx"; // Return the command name if it works
|
|
31
64
|
}
|
|
32
65
|
}
|
|
66
|
+
catch {
|
|
67
|
+
// tsx command not available
|
|
68
|
+
}
|
|
69
|
+
return null;
|
|
70
|
+
}
|
|
71
|
+
/**
|
|
72
|
+
* Load a TypeScript config file by spawning tsx
|
|
73
|
+
*/
|
|
74
|
+
function loadTypeScriptConfig(filePath) {
|
|
75
|
+
// Find tsx binary in multiple locations
|
|
76
|
+
const tsxPath = findTsxBinary();
|
|
33
77
|
if (!tsxPath) {
|
|
34
78
|
throw new Error("TypeScript config files require tsx to be installed.\n" +
|
|
35
79
|
"Please use a JavaScript config file (ai-context.config.js) instead,\n" +
|
|
@@ -72,6 +116,66 @@ async function loadJavaScriptConfig(filePath) {
|
|
|
72
116
|
const module = await import(fileUrl);
|
|
73
117
|
return module.default || module;
|
|
74
118
|
}
|
|
119
|
+
/**
|
|
120
|
+
* Replace environment variable placeholders in a string
|
|
121
|
+
* Placeholders are in the format [ENV_VAR_NAME]
|
|
122
|
+
*/
|
|
123
|
+
function substituteEnvVars(value) {
|
|
124
|
+
return value.replace(/\[([A-Z_][A-Z0-9_]*)\]/g, (match, envVarName) => {
|
|
125
|
+
const envValue = process.env[envVarName];
|
|
126
|
+
if (envValue === undefined) {
|
|
127
|
+
throw new Error(`Environment variable '${envVarName}' is not set (referenced as ${match} in config)`);
|
|
128
|
+
}
|
|
129
|
+
return envValue;
|
|
130
|
+
});
|
|
131
|
+
}
|
|
132
|
+
/**
|
|
133
|
+
* Recursively process an object and substitute environment variables in string values
|
|
134
|
+
*/
|
|
135
|
+
function processEnvVars(obj) {
|
|
136
|
+
if (typeof obj === "string") {
|
|
137
|
+
return substituteEnvVars(obj);
|
|
138
|
+
}
|
|
139
|
+
if (Array.isArray(obj)) {
|
|
140
|
+
return obj.map((item) => processEnvVars(item));
|
|
141
|
+
}
|
|
142
|
+
if (obj !== null && typeof obj === "object") {
|
|
143
|
+
const result = {};
|
|
144
|
+
for (const [key, value] of Object.entries(obj)) {
|
|
145
|
+
result[key] = processEnvVars(value);
|
|
146
|
+
}
|
|
147
|
+
return result;
|
|
148
|
+
}
|
|
149
|
+
return obj;
|
|
150
|
+
}
|
|
151
|
+
/**
|
|
152
|
+
* Load a JSON config file
|
|
153
|
+
* Supports environment variable substitution using [ENV_VAR_NAME] syntax
|
|
154
|
+
*/
|
|
155
|
+
function loadJsonConfig(filePath) {
|
|
156
|
+
try {
|
|
157
|
+
const content = readFileSync(filePath, "utf-8");
|
|
158
|
+
const parsed = JSON.parse(content);
|
|
159
|
+
// Validate that parsed JSON is an object (not null, array, or primitive)
|
|
160
|
+
if (parsed === null ||
|
|
161
|
+
typeof parsed !== "object" ||
|
|
162
|
+
Array.isArray(parsed)) {
|
|
163
|
+
throw new Error("JSON config must be an object, not " +
|
|
164
|
+
(parsed === null
|
|
165
|
+
? "null"
|
|
166
|
+
: Array.isArray(parsed)
|
|
167
|
+
? "an array"
|
|
168
|
+
: typeof parsed));
|
|
169
|
+
}
|
|
170
|
+
return processEnvVars(parsed);
|
|
171
|
+
}
|
|
172
|
+
catch (error) {
|
|
173
|
+
if (error instanceof SyntaxError) {
|
|
174
|
+
throw new Error(`Invalid JSON in config file: ${error.message}`);
|
|
175
|
+
}
|
|
176
|
+
throw error;
|
|
177
|
+
}
|
|
178
|
+
}
|
|
75
179
|
/**
|
|
76
180
|
* Load and validate the configuration file
|
|
77
181
|
* @param configPath Path to the config file, or directory to search for config
|
|
@@ -93,7 +197,7 @@ export async function loadConfig(configPath) {
|
|
|
93
197
|
if (!foundPath) {
|
|
94
198
|
throw new Error(`No config file found. Please create one of:\n` +
|
|
95
199
|
CONFIG_FILE_NAMES.map((f) => ` - ${f}`).join("\n") +
|
|
96
|
-
`\n\nExample config:\n\n` +
|
|
200
|
+
`\n\nExample JS/TS config:\n\n` +
|
|
97
201
|
`export default {\n` +
|
|
98
202
|
` name: "my-project",\n` +
|
|
99
203
|
` embeddingConfig: {\n` +
|
|
@@ -103,7 +207,18 @@ export async function loadConfig(configPath) {
|
|
|
103
207
|
` vectorDatabaseConfig: {\n` +
|
|
104
208
|
` address: "localhost:19530",\n` +
|
|
105
209
|
` },\n` +
|
|
106
|
-
`}
|
|
210
|
+
`};\n\n` +
|
|
211
|
+
`Example JSON config (ai-context.config.json):\n\n` +
|
|
212
|
+
`{\n` +
|
|
213
|
+
` "name": "my-project",\n` +
|
|
214
|
+
` "embeddingConfig": {\n` +
|
|
215
|
+
` "apiKey": "[OPENAI_API_KEY]",\n` +
|
|
216
|
+
` "model": "text-embedding-3-small"\n` +
|
|
217
|
+
` },\n` +
|
|
218
|
+
` "vectorDatabaseConfig": {\n` +
|
|
219
|
+
` "address": "localhost:19530"\n` +
|
|
220
|
+
` }\n` +
|
|
221
|
+
`}`);
|
|
107
222
|
}
|
|
108
223
|
resolvedPath = foundPath;
|
|
109
224
|
}
|
|
@@ -113,6 +228,9 @@ export async function loadConfig(configPath) {
|
|
|
113
228
|
if (resolvedPath.endsWith(".ts") || resolvedPath.endsWith(".tsx")) {
|
|
114
229
|
config = loadTypeScriptConfig(resolvedPath);
|
|
115
230
|
}
|
|
231
|
+
else if (resolvedPath.endsWith(".json")) {
|
|
232
|
+
config = loadJsonConfig(resolvedPath);
|
|
233
|
+
}
|
|
116
234
|
else {
|
|
117
235
|
config = await loadJavaScriptConfig(resolvedPath);
|
|
118
236
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"config-loader.js","sourceRoot":"","sources":["../src/config-loader.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,IAAI,CAAC;
|
|
1
|
+
{"version":3,"file":"config-loader.js","sourceRoot":"","sources":["../src/config-loader.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,7 +1,24 @@
|
|
|
1
1
|
import { describe, it, expect, beforeEach, afterEach, vi } from "vitest";
|
|
2
|
-
import { existsSync, mkdirSync, writeFileSync, rmSync } from "fs";
|
|
2
|
+
import { existsSync, mkdirSync, writeFileSync, rmSync, } from "fs";
|
|
3
3
|
import { join } from "path";
|
|
4
|
-
import
|
|
4
|
+
import * as childProcess from "child_process";
|
|
5
|
+
import { findConfigFile, loadConfig, findTsxBinary } from "./config-loader.js";
|
|
6
|
+
// Mock fs and child_process modules
|
|
7
|
+
vi.mock("fs", async () => {
|
|
8
|
+
const actual = await vi.importActual("fs");
|
|
9
|
+
return {
|
|
10
|
+
...actual,
|
|
11
|
+
existsSync: vi.fn(actual.existsSync),
|
|
12
|
+
};
|
|
13
|
+
});
|
|
14
|
+
vi.mock("child_process", async () => {
|
|
15
|
+
const actual = await vi.importActual("child_process");
|
|
16
|
+
return {
|
|
17
|
+
...actual,
|
|
18
|
+
execSync: vi.fn(),
|
|
19
|
+
spawnSync: vi.fn(),
|
|
20
|
+
};
|
|
21
|
+
});
|
|
5
22
|
// Test directory for temporary files
|
|
6
23
|
const TEST_DIR = join(process.cwd(), ".test-temp");
|
|
7
24
|
// Counter for unique file names to avoid ESM import caching
|
|
@@ -23,6 +40,8 @@ describe("config-loader", () => {
|
|
|
23
40
|
rmSync(TEST_DIR, { recursive: true, force: true });
|
|
24
41
|
}
|
|
25
42
|
vi.restoreAllMocks();
|
|
43
|
+
// Restore original environment
|
|
44
|
+
delete process.env.AI_CONTEXT_CLI_ROOT;
|
|
26
45
|
});
|
|
27
46
|
describe("findConfigFile", () => {
|
|
28
47
|
it("should return null when no config file exists", () => {
|
|
@@ -49,6 +68,28 @@ describe("config-loader", () => {
|
|
|
49
68
|
const result = findConfigFile(TEST_DIR);
|
|
50
69
|
expect(result).toBe(tsConfigPath);
|
|
51
70
|
});
|
|
71
|
+
it("should find ai-context.config.json", () => {
|
|
72
|
+
const configPath = join(TEST_DIR, "ai-context.config.json");
|
|
73
|
+
writeFileSync(configPath, "{}");
|
|
74
|
+
const result = findConfigFile(TEST_DIR);
|
|
75
|
+
expect(result).toBe(configPath);
|
|
76
|
+
});
|
|
77
|
+
it("should prefer .ts over .json", () => {
|
|
78
|
+
const tsConfigPath = join(TEST_DIR, "ai-context.config.ts");
|
|
79
|
+
const jsonConfigPath = join(TEST_DIR, "ai-context.config.json");
|
|
80
|
+
writeFileSync(tsConfigPath, "export default {};");
|
|
81
|
+
writeFileSync(jsonConfigPath, "{}");
|
|
82
|
+
const result = findConfigFile(TEST_DIR);
|
|
83
|
+
expect(result).toBe(tsConfigPath);
|
|
84
|
+
});
|
|
85
|
+
it("should prefer .js over .json", () => {
|
|
86
|
+
const jsConfigPath = join(TEST_DIR, "ai-context.config.js");
|
|
87
|
+
const jsonConfigPath = join(TEST_DIR, "ai-context.config.json");
|
|
88
|
+
writeFileSync(jsConfigPath, "export default {};");
|
|
89
|
+
writeFileSync(jsonConfigPath, "{}");
|
|
90
|
+
const result = findConfigFile(TEST_DIR);
|
|
91
|
+
expect(result).toBe(jsConfigPath);
|
|
92
|
+
});
|
|
52
93
|
});
|
|
53
94
|
describe("loadConfig", () => {
|
|
54
95
|
it("should throw error when no config file found", async () => {
|
|
@@ -231,6 +272,335 @@ describe("config-loader", () => {
|
|
|
231
272
|
expect(config.customExtensions).toEqual([".vue"]);
|
|
232
273
|
expect(config.customIgnorePatterns).toEqual(["*.test.ts"]);
|
|
233
274
|
});
|
|
275
|
+
it("should load and validate a valid JSON config", async () => {
|
|
276
|
+
const configPath = getUniqueConfigPath("json");
|
|
277
|
+
const configContent = JSON.stringify({
|
|
278
|
+
name: "test-project",
|
|
279
|
+
embeddingConfig: {
|
|
280
|
+
apiKey: "test-key",
|
|
281
|
+
model: "text-embedding-3-small",
|
|
282
|
+
},
|
|
283
|
+
vectorDatabaseConfig: {
|
|
284
|
+
address: "localhost:19530",
|
|
285
|
+
},
|
|
286
|
+
});
|
|
287
|
+
writeFileSync(configPath, configContent);
|
|
288
|
+
const config = await loadConfig(configPath);
|
|
289
|
+
expect(config.name).toBe("test-project");
|
|
290
|
+
expect(config.embeddingConfig?.apiKey).toBe("test-key");
|
|
291
|
+
expect(config.embeddingConfig?.model).toBe("text-embedding-3-small");
|
|
292
|
+
expect(config.vectorDatabaseConfig?.address).toBe("localhost:19530");
|
|
293
|
+
});
|
|
294
|
+
it("should throw error for invalid JSON syntax", async () => {
|
|
295
|
+
const configPath = getUniqueConfigPath("json");
|
|
296
|
+
// Invalid JSON (trailing comma)
|
|
297
|
+
writeFileSync(configPath, '{ "name": "test", "embeddingConfig": { "apiKey": "key", } }');
|
|
298
|
+
await expect(loadConfig(configPath)).rejects.toThrow("Invalid JSON");
|
|
299
|
+
});
|
|
300
|
+
it("should throw error when JSON config contains null", async () => {
|
|
301
|
+
const configPath = getUniqueConfigPath("json");
|
|
302
|
+
writeFileSync(configPath, "null");
|
|
303
|
+
await expect(loadConfig(configPath)).rejects.toThrow("JSON config must be an object");
|
|
304
|
+
});
|
|
305
|
+
it("should throw error when JSON config contains an array", async () => {
|
|
306
|
+
const configPath = getUniqueConfigPath("json");
|
|
307
|
+
writeFileSync(configPath, "[]");
|
|
308
|
+
await expect(loadConfig(configPath)).rejects.toThrow("JSON config must be an object");
|
|
309
|
+
});
|
|
310
|
+
it("should throw error when JSON config contains a primitive", async () => {
|
|
311
|
+
const configPath = getUniqueConfigPath("json");
|
|
312
|
+
writeFileSync(configPath, '"just a string"');
|
|
313
|
+
await expect(loadConfig(configPath)).rejects.toThrow("JSON config must be an object");
|
|
314
|
+
});
|
|
315
|
+
it("should accept JSON config with all optional fields", async () => {
|
|
316
|
+
const configPath = getUniqueConfigPath("json");
|
|
317
|
+
const configContent = JSON.stringify({
|
|
318
|
+
name: "test-project",
|
|
319
|
+
embeddingConfig: {
|
|
320
|
+
apiKey: "test-key",
|
|
321
|
+
model: "text-embedding-3-small",
|
|
322
|
+
baseURL: "https://custom.api.com",
|
|
323
|
+
},
|
|
324
|
+
vectorDatabaseConfig: {
|
|
325
|
+
address: "localhost:19530",
|
|
326
|
+
ssl: true,
|
|
327
|
+
},
|
|
328
|
+
supportedExtensions: [".py", ".go"],
|
|
329
|
+
ignorePatterns: ["venv/**"],
|
|
330
|
+
customExtensions: [".rs"],
|
|
331
|
+
customIgnorePatterns: ["*.pyc"],
|
|
332
|
+
});
|
|
333
|
+
writeFileSync(configPath, configContent);
|
|
334
|
+
const config = await loadConfig(configPath);
|
|
335
|
+
expect(config.name).toBe("test-project");
|
|
336
|
+
expect(config.embeddingConfig?.baseURL).toBe("https://custom.api.com");
|
|
337
|
+
expect(config.vectorDatabaseConfig?.ssl).toBe(true);
|
|
338
|
+
expect(config.supportedExtensions).toEqual([".py", ".go"]);
|
|
339
|
+
expect(config.customExtensions).toEqual([".rs"]);
|
|
340
|
+
});
|
|
341
|
+
it("should substitute environment variables in JSON config", async () => {
|
|
342
|
+
const configPath = getUniqueConfigPath("json");
|
|
343
|
+
// Set environment variables for the test
|
|
344
|
+
process.env.TEST_API_KEY = "my-secret-api-key";
|
|
345
|
+
process.env.TEST_MILVUS_TOKEN = "my-milvus-token";
|
|
346
|
+
const configContent = JSON.stringify({
|
|
347
|
+
name: "test-project",
|
|
348
|
+
embeddingConfig: {
|
|
349
|
+
apiKey: "[TEST_API_KEY]",
|
|
350
|
+
model: "text-embedding-3-small",
|
|
351
|
+
},
|
|
352
|
+
vectorDatabaseConfig: {
|
|
353
|
+
token: "[TEST_MILVUS_TOKEN]",
|
|
354
|
+
address: "localhost:19530",
|
|
355
|
+
},
|
|
356
|
+
});
|
|
357
|
+
writeFileSync(configPath, configContent);
|
|
358
|
+
try {
|
|
359
|
+
const config = await loadConfig(configPath);
|
|
360
|
+
expect(config.embeddingConfig?.apiKey).toBe("my-secret-api-key");
|
|
361
|
+
expect(config.vectorDatabaseConfig?.token).toBe("my-milvus-token");
|
|
362
|
+
}
|
|
363
|
+
finally {
|
|
364
|
+
// Clean up environment variables
|
|
365
|
+
delete process.env.TEST_API_KEY;
|
|
366
|
+
delete process.env.TEST_MILVUS_TOKEN;
|
|
367
|
+
}
|
|
368
|
+
});
|
|
369
|
+
it("should throw error for missing environment variable in JSON config", async () => {
|
|
370
|
+
const configPath = getUniqueConfigPath("json");
|
|
371
|
+
// Make sure the env var is not set
|
|
372
|
+
delete process.env.NONEXISTENT_VAR;
|
|
373
|
+
const configContent = JSON.stringify({
|
|
374
|
+
name: "test-project",
|
|
375
|
+
embeddingConfig: {
|
|
376
|
+
apiKey: "[NONEXISTENT_VAR]",
|
|
377
|
+
model: "text-embedding-3-small",
|
|
378
|
+
},
|
|
379
|
+
vectorDatabaseConfig: {
|
|
380
|
+
address: "localhost:19530",
|
|
381
|
+
},
|
|
382
|
+
});
|
|
383
|
+
writeFileSync(configPath, configContent);
|
|
384
|
+
await expect(loadConfig(configPath)).rejects.toThrow("Environment variable 'NONEXISTENT_VAR' is not set");
|
|
385
|
+
});
|
|
386
|
+
it("should substitute multiple env vars in the same string", async () => {
|
|
387
|
+
const configPath = getUniqueConfigPath("json");
|
|
388
|
+
process.env.TEST_HOST = "api.example.com";
|
|
389
|
+
process.env.TEST_PORT = "8080";
|
|
390
|
+
const configContent = JSON.stringify({
|
|
391
|
+
embeddingConfig: {
|
|
392
|
+
apiKey: "test-key",
|
|
393
|
+
model: "text-embedding-3-small",
|
|
394
|
+
baseURL: "https://[TEST_HOST]:[TEST_PORT]/v1",
|
|
395
|
+
},
|
|
396
|
+
vectorDatabaseConfig: {
|
|
397
|
+
address: "localhost:19530",
|
|
398
|
+
},
|
|
399
|
+
});
|
|
400
|
+
writeFileSync(configPath, configContent);
|
|
401
|
+
try {
|
|
402
|
+
const config = await loadConfig(configPath);
|
|
403
|
+
expect(config.embeddingConfig?.baseURL).toBe("https://api.example.com:8080/v1");
|
|
404
|
+
}
|
|
405
|
+
finally {
|
|
406
|
+
delete process.env.TEST_HOST;
|
|
407
|
+
delete process.env.TEST_PORT;
|
|
408
|
+
}
|
|
409
|
+
});
|
|
410
|
+
it("should handle env vars in arrays", async () => {
|
|
411
|
+
const configPath = getUniqueConfigPath("json");
|
|
412
|
+
process.env.TEST_PATTERN = "secret/**";
|
|
413
|
+
const configContent = JSON.stringify({
|
|
414
|
+
embeddingConfig: {
|
|
415
|
+
apiKey: "test-key",
|
|
416
|
+
model: "text-embedding-3-small",
|
|
417
|
+
},
|
|
418
|
+
vectorDatabaseConfig: {
|
|
419
|
+
address: "localhost:19530",
|
|
420
|
+
},
|
|
421
|
+
ignorePatterns: ["node_modules/**", "[TEST_PATTERN]"],
|
|
422
|
+
});
|
|
423
|
+
writeFileSync(configPath, configContent);
|
|
424
|
+
try {
|
|
425
|
+
const config = await loadConfig(configPath);
|
|
426
|
+
expect(config.ignorePatterns).toEqual(["node_modules/**", "secret/**"]);
|
|
427
|
+
}
|
|
428
|
+
finally {
|
|
429
|
+
delete process.env.TEST_PATTERN;
|
|
430
|
+
}
|
|
431
|
+
});
|
|
432
|
+
});
|
|
433
|
+
describe("findTsxBinary", () => {
|
|
434
|
+
const originalEnv = process.env.AI_CONTEXT_CLI_ROOT;
|
|
435
|
+
const originalCwd = process.cwd();
|
|
436
|
+
beforeEach(() => {
|
|
437
|
+
vi.mocked(existsSync).mockImplementation((path) => {
|
|
438
|
+
const pathStr = String(path);
|
|
439
|
+
// Use actual existsSync for test directory operations
|
|
440
|
+
if (pathStr.includes(".test-temp")) {
|
|
441
|
+
return require("fs").existsSync(path);
|
|
442
|
+
}
|
|
443
|
+
return false;
|
|
444
|
+
});
|
|
445
|
+
vi.mocked(childProcess.execSync).mockClear();
|
|
446
|
+
vi.mocked(childProcess.spawnSync).mockClear();
|
|
447
|
+
delete process.env.AI_CONTEXT_CLI_ROOT;
|
|
448
|
+
});
|
|
449
|
+
afterEach(() => {
|
|
450
|
+
vi.restoreAllMocks();
|
|
451
|
+
if (originalEnv) {
|
|
452
|
+
process.env.AI_CONTEXT_CLI_ROOT = originalEnv;
|
|
453
|
+
}
|
|
454
|
+
process.chdir(originalCwd);
|
|
455
|
+
});
|
|
456
|
+
it("should find tsx in CLI package's node_modules", () => {
|
|
457
|
+
const cliRoot = "/fake/cli/root";
|
|
458
|
+
const tsxPath = join(cliRoot, "node_modules", ".bin", "tsx");
|
|
459
|
+
process.env.AI_CONTEXT_CLI_ROOT = cliRoot;
|
|
460
|
+
vi.mocked(existsSync).mockImplementation((path) => {
|
|
461
|
+
const pathStr = String(path);
|
|
462
|
+
if (pathStr.includes(".test-temp")) {
|
|
463
|
+
return require("fs").existsSync(path);
|
|
464
|
+
}
|
|
465
|
+
return pathStr === tsxPath;
|
|
466
|
+
});
|
|
467
|
+
const result = findTsxBinary();
|
|
468
|
+
expect(result).toBe(tsxPath);
|
|
469
|
+
});
|
|
470
|
+
it("should find tsx in current working directory's node_modules when CLI package doesn't have it", () => {
|
|
471
|
+
const cwd = TEST_DIR;
|
|
472
|
+
process.chdir(cwd);
|
|
473
|
+
// After chdir, the path will be constructed using process.cwd()
|
|
474
|
+
const expectedPath = join(process.cwd(), "node_modules", ".bin", "tsx");
|
|
475
|
+
vi.mocked(existsSync).mockImplementation((path) => {
|
|
476
|
+
const pathStr = String(path);
|
|
477
|
+
// Use actual existsSync for test directory operations
|
|
478
|
+
if (pathStr.includes(".test-temp")) {
|
|
479
|
+
const actualFs = require("fs");
|
|
480
|
+
// Only use actual for non-tsx paths
|
|
481
|
+
if (!pathStr.includes("node_modules/.bin/tsx")) {
|
|
482
|
+
return actualFs.existsSync(path);
|
|
483
|
+
}
|
|
484
|
+
}
|
|
485
|
+
// Match the exact path that will be checked
|
|
486
|
+
return pathStr === expectedPath;
|
|
487
|
+
});
|
|
488
|
+
const result = findTsxBinary();
|
|
489
|
+
expect(result).toBe(expectedPath);
|
|
490
|
+
});
|
|
491
|
+
it("should find tsx via which command when not in node_modules", () => {
|
|
492
|
+
const globalTsxPath = "/usr/local/bin/tsx";
|
|
493
|
+
vi.mocked(existsSync).mockImplementation((path) => {
|
|
494
|
+
const pathStr = String(path);
|
|
495
|
+
if (pathStr.includes(".test-temp")) {
|
|
496
|
+
return require("fs").existsSync(path);
|
|
497
|
+
}
|
|
498
|
+
return pathStr === globalTsxPath;
|
|
499
|
+
});
|
|
500
|
+
vi.mocked(childProcess.execSync).mockReturnValue(globalTsxPath + "\n");
|
|
501
|
+
const result = findTsxBinary();
|
|
502
|
+
expect(result).toBe(globalTsxPath);
|
|
503
|
+
});
|
|
504
|
+
it("should find tsx via direct spawn when available in PATH", () => {
|
|
505
|
+
vi.mocked(existsSync).mockImplementation((path) => {
|
|
506
|
+
const pathStr = String(path);
|
|
507
|
+
if (pathStr.includes(".test-temp")) {
|
|
508
|
+
return require("fs").existsSync(path);
|
|
509
|
+
}
|
|
510
|
+
return false;
|
|
511
|
+
});
|
|
512
|
+
vi.mocked(childProcess.execSync).mockImplementation(() => {
|
|
513
|
+
throw new Error("tsx not found");
|
|
514
|
+
});
|
|
515
|
+
vi.mocked(childProcess.spawnSync).mockReturnValue({
|
|
516
|
+
status: 0,
|
|
517
|
+
stdout: "",
|
|
518
|
+
stderr: "",
|
|
519
|
+
});
|
|
520
|
+
const result = findTsxBinary();
|
|
521
|
+
expect(result).toBe("tsx");
|
|
522
|
+
});
|
|
523
|
+
it("should return null when tsx is not found anywhere", () => {
|
|
524
|
+
vi.mocked(existsSync).mockImplementation((path) => {
|
|
525
|
+
const pathStr = String(path);
|
|
526
|
+
if (pathStr.includes(".test-temp")) {
|
|
527
|
+
return require("fs").existsSync(path);
|
|
528
|
+
}
|
|
529
|
+
return false;
|
|
530
|
+
});
|
|
531
|
+
vi.mocked(childProcess.execSync).mockImplementation(() => {
|
|
532
|
+
throw new Error("tsx not found");
|
|
533
|
+
});
|
|
534
|
+
vi.mocked(childProcess.spawnSync).mockReturnValue({
|
|
535
|
+
status: 1,
|
|
536
|
+
stdout: "",
|
|
537
|
+
stderr: "",
|
|
538
|
+
});
|
|
539
|
+
const result = findTsxBinary();
|
|
540
|
+
expect(result).toBeNull();
|
|
541
|
+
});
|
|
542
|
+
it("should prefer CLI package's tsx over local node_modules", () => {
|
|
543
|
+
const cliRoot = "/fake/cli/root";
|
|
544
|
+
const cliTsxPath = join(cliRoot, "node_modules", ".bin", "tsx");
|
|
545
|
+
const cwd = TEST_DIR;
|
|
546
|
+
const localTsxPath = join(cwd, "node_modules", ".bin", "tsx");
|
|
547
|
+
process.env.AI_CONTEXT_CLI_ROOT = cliRoot;
|
|
548
|
+
process.chdir(cwd);
|
|
549
|
+
vi.mocked(existsSync).mockImplementation((path) => {
|
|
550
|
+
const pathStr = String(path);
|
|
551
|
+
if (pathStr.includes(".test-temp")) {
|
|
552
|
+
return require("fs").existsSync(path);
|
|
553
|
+
}
|
|
554
|
+
return pathStr === cliTsxPath || pathStr === localTsxPath;
|
|
555
|
+
});
|
|
556
|
+
const result = findTsxBinary();
|
|
557
|
+
expect(result).toBe(cliTsxPath);
|
|
558
|
+
});
|
|
559
|
+
it("should prefer local node_modules over global tsx", () => {
|
|
560
|
+
const cwd = TEST_DIR;
|
|
561
|
+
process.chdir(cwd);
|
|
562
|
+
// After chdir, the path will be constructed using process.cwd()
|
|
563
|
+
const expectedLocalPath = join(process.cwd(), "node_modules", ".bin", "tsx");
|
|
564
|
+
const globalTsxPath = "/usr/local/bin/tsx";
|
|
565
|
+
vi.mocked(existsSync).mockImplementation((path) => {
|
|
566
|
+
const pathStr = String(path);
|
|
567
|
+
// Use actual existsSync for test directory operations
|
|
568
|
+
if (pathStr.includes(".test-temp")) {
|
|
569
|
+
const actualFs = require("fs");
|
|
570
|
+
// Only use actual for non-tsx paths
|
|
571
|
+
if (!pathStr.includes("node_modules/.bin/tsx")) {
|
|
572
|
+
return actualFs.existsSync(path);
|
|
573
|
+
}
|
|
574
|
+
}
|
|
575
|
+
// Match the exact paths that will be checked
|
|
576
|
+
return pathStr === expectedLocalPath || pathStr === globalTsxPath;
|
|
577
|
+
});
|
|
578
|
+
vi.mocked(childProcess.execSync).mockReturnValue(globalTsxPath + "\n");
|
|
579
|
+
const result = findTsxBinary();
|
|
580
|
+
expect(result).toBe(expectedLocalPath);
|
|
581
|
+
});
|
|
582
|
+
it("should handle Windows which command (where)", () => {
|
|
583
|
+
const originalPlatform = process.platform;
|
|
584
|
+
Object.defineProperty(process, "platform", {
|
|
585
|
+
value: "win32",
|
|
586
|
+
writable: true,
|
|
587
|
+
});
|
|
588
|
+
const globalTsxPath = "C:\\Program Files\\nodejs\\tsx.cmd";
|
|
589
|
+
vi.mocked(existsSync).mockImplementation((path) => {
|
|
590
|
+
const pathStr = String(path);
|
|
591
|
+
if (pathStr.includes(".test-temp")) {
|
|
592
|
+
return require("fs").existsSync(path);
|
|
593
|
+
}
|
|
594
|
+
return pathStr === globalTsxPath;
|
|
595
|
+
});
|
|
596
|
+
vi.mocked(childProcess.execSync).mockReturnValue(globalTsxPath + "\r\n");
|
|
597
|
+
const result = findTsxBinary();
|
|
598
|
+
expect(result).toBe(globalTsxPath);
|
|
599
|
+
Object.defineProperty(process, "platform", {
|
|
600
|
+
value: originalPlatform,
|
|
601
|
+
writable: true,
|
|
602
|
+
});
|
|
603
|
+
});
|
|
234
604
|
});
|
|
235
605
|
});
|
|
236
606
|
//# sourceMappingURL=config-loader.test.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"config-loader.test.js","sourceRoot":"","sources":["../src/config-loader.test.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"config-loader.test.js","sourceRoot":"","sources":["../src/config-loader.test.ts"],"names":[],"mappings":"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"}
|
package/dist/index.js
CHANGED
|
@@ -13,7 +13,7 @@ const program = new Command();
|
|
|
13
13
|
program
|
|
14
14
|
.name("ai-context-index")
|
|
15
15
|
.description("Index your codebase for AI-powered semantic search")
|
|
16
|
-
.version(VERSION)
|
|
16
|
+
.version(VERSION, "-v, --version", "Display version number")
|
|
17
17
|
.option("-c, --config <path>", "Path to config file (default: ai-context.config.ts/js)")
|
|
18
18
|
.option("-f, --force", "Force reindex even if collection already exists")
|
|
19
19
|
.action(async (options) => {
|
|
@@ -21,6 +21,7 @@ program
|
|
|
21
21
|
console.log("");
|
|
22
22
|
console.log("╔════════════════════════════════════════════════════════════╗");
|
|
23
23
|
console.log("║ AI Context CLI - Codebase Indexer ║");
|
|
24
|
+
console.log(`║ Version ${VERSION.padEnd(25)} ║`);
|
|
24
25
|
console.log("╚════════════════════════════════════════════════════════════╝");
|
|
25
26
|
console.log("");
|
|
26
27
|
// Load and validate config
|
|
@@ -55,5 +56,10 @@ process.on("unhandledRejection", (reason) => {
|
|
|
55
56
|
console.error("❌ Unhandled rejection:", reason);
|
|
56
57
|
process.exit(1);
|
|
57
58
|
});
|
|
59
|
+
// Show version if no arguments provided (just the command name)
|
|
60
|
+
if (process.argv.length === 2) {
|
|
61
|
+
console.log(`@mcampa/ai-context-cli version ${VERSION}`);
|
|
62
|
+
process.exit(0);
|
|
63
|
+
}
|
|
58
64
|
program.parse();
|
|
59
65
|
//# sourceMappingURL=index.js.map
|
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AACpC,OAAO,EAAE,YAAY,EAAE,MAAM,IAAI,CAAC;AAClC,OAAO,EAAE,aAAa,EAAE,MAAM,KAAK,CAAC;AACpC,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,MAAM,MAAM,CAAC;AACrC,OAAO,EAAE,UAAU,EAAE,MAAM,oBAAoB,CAAC;AAChD,OAAO,EAAE,QAAQ,EAAE,MAAM,cAAc,CAAC;AAYxC,oDAAoD;AACpD,MAAM,UAAU,GAAG,aAAa,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;AAClD,MAAM,SAAS,GAAG,OAAO,CAAC,UAAU,CAAC,CAAC;AACtC,MAAM,WAAW,GAAG,IAAI,CAAC,KAAK,CAC5B,YAAY,CAAC,IAAI,CAAC,SAAS,EAAE,IAAI,EAAE,cAAc,CAAC,EAAE,OAAO,CAAC,CAC7D,CAAC;AACF,MAAM,OAAO,GAAG,WAAW,CAAC,OAAO,CAAC;AAEpC,MAAM,OAAO,GAAG,IAAI,OAAO,EAAE,CAAC;AAE9B,OAAO;KACJ,IAAI,CAAC,kBAAkB,CAAC;KACxB,WAAW,CAAC,oDAAoD,CAAC;KACjE,OAAO,CAAC,OAAO,CAAC;
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@mcampa/ai-context-cli",
|
|
3
|
-
"version": "0.0.
|
|
3
|
+
"version": "0.0.2-beta.2250c7e",
|
|
4
4
|
"description": "CLI tool for indexing codebases with AI Context",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"main": "dist/index.js",
|
|
@@ -9,14 +9,15 @@
|
|
|
9
9
|
"ai-context-index": "./bin/ai-context-index.js"
|
|
10
10
|
},
|
|
11
11
|
"dependencies": {
|
|
12
|
-
"@mcampa/ai-context-core": "0.0.
|
|
12
|
+
"@mcampa/ai-context-core": "0.0.2-beta.2250c7e",
|
|
13
13
|
"commander": "^12.1.0",
|
|
14
14
|
"tsx": "^4.19.4"
|
|
15
15
|
},
|
|
16
16
|
"devDependencies": {
|
|
17
17
|
"@types/node": "^20.0.0",
|
|
18
|
+
"@vitest/coverage-v8": "^2.1.8",
|
|
18
19
|
"typescript": "^5.0.0",
|
|
19
|
-
"vitest": "^2.1.
|
|
20
|
+
"vitest": "^2.1.8"
|
|
20
21
|
},
|
|
21
22
|
"files": [
|
|
22
23
|
"dist",
|
|
@@ -41,7 +42,7 @@
|
|
|
41
42
|
"clean": "rimraf dist",
|
|
42
43
|
"lint": "eslint src",
|
|
43
44
|
"lint:fix": "eslint src --fix",
|
|
44
|
-
"typecheck": "tsc --noEmit",
|
|
45
|
+
"typecheck": "tsc --noEmit -p tsconfig.typecheck.json",
|
|
45
46
|
"test": "vitest run",
|
|
46
47
|
"test:watch": "vitest",
|
|
47
48
|
"test:coverage": "vitest run --coverage",
|