codexa 1.2.1 → 1.2.2
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 +9 -7
- package/dist/cli.js +1 -1
- package/dist/config/generator.js +1 -1
- package/dist/config.js +1 -1
- package/dist/ingest.js +8 -0
- package/package.json +1 -1
package/README.md
CHANGED
|
@@ -58,6 +58,8 @@
|
|
|
58
58
|
- ⚙️ **Highly Configurable**: Fine-tune chunking, retrieval, and model parameters
|
|
59
59
|
- 🚀 **Zero Setup**: Works out of the box with sensible defaults
|
|
60
60
|
|
|
61
|
+
> ⚠️ **Codebase Size Limitation**: Codexa is optimized for small to medium-sized codebases. It currently supports projects with up to **200 files** and **20,000 chunks**. For larger codebases, consider using more restrictive `includeGlobs` patterns to focus on specific directories or file types.
|
|
62
|
+
|
|
61
63
|
## Installation
|
|
62
64
|
|
|
63
65
|
### Prerequisites
|
|
@@ -165,15 +167,15 @@ Codexa defaults to using Groq when you run `codexa init`. If you need to manuall
|
|
|
165
167
|
```json
|
|
166
168
|
{
|
|
167
169
|
"modelProvider": "groq",
|
|
168
|
-
"model": "
|
|
170
|
+
"model": "openai/gpt-oss-120b",
|
|
169
171
|
"embeddingProvider": "local",
|
|
170
172
|
"embeddingModel": "Xenova/all-MiniLM-L6-v2"
|
|
171
173
|
}
|
|
172
174
|
```
|
|
173
175
|
|
|
174
|
-
**
|
|
175
|
-
- `
|
|
176
|
-
- `llama-3.1-70b-versatile`
|
|
176
|
+
**Models you can use:**
|
|
177
|
+
- `openai/gpt-oss-120b` (recommended, default)
|
|
178
|
+
- `llama-3.1-70b-versatile`
|
|
177
179
|
|
|
178
180
|
|
|
179
181
|
|
|
@@ -429,7 +431,7 @@ The LLM provider to use for generating answers.
|
|
|
429
431
|
|
|
430
432
|
**Type:** `string`
|
|
431
433
|
**Type:** `string`
|
|
432
|
-
**Default:** `"
|
|
434
|
+
**Default:** `"openai/gpt-oss-120b"`
|
|
433
435
|
|
|
434
436
|
The model identifier to use.
|
|
435
437
|
|
|
@@ -585,7 +587,7 @@ Whether to skip files exceeding `maxFileSize` during indexing. Set to `false` if
|
|
|
585
587
|
```json
|
|
586
588
|
{
|
|
587
589
|
"modelProvider": "groq",
|
|
588
|
-
"model": "
|
|
590
|
+
"model": "openai/gpt-oss-120b",
|
|
589
591
|
"embeddingProvider": "local",
|
|
590
592
|
"embeddingModel": "Xenova/all-MiniLM-L6-v2",
|
|
591
593
|
"maxChunkSize": 300,
|
|
@@ -607,7 +609,7 @@ codexa config set GROQ_API_KEY "your-api-key"
|
|
|
607
609
|
```json
|
|
608
610
|
{
|
|
609
611
|
"modelProvider": "groq",
|
|
610
|
-
"model": "
|
|
612
|
+
"model": "openai/gpt-oss-120b",
|
|
611
613
|
"maxChunkSize": 150,
|
|
612
614
|
"chunkOverlap": 15,
|
|
613
615
|
"topK": 6,
|
package/dist/cli.js
CHANGED
package/dist/config/generator.js
CHANGED
|
@@ -352,7 +352,7 @@ function generateConfig(analysis, baseConfig) {
|
|
|
352
352
|
// Start with base config or defaults
|
|
353
353
|
const config = {
|
|
354
354
|
modelProvider: 'groq',
|
|
355
|
-
model: '
|
|
355
|
+
model: 'openai/gpt-oss-120b',
|
|
356
356
|
embeddingProvider: 'local',
|
|
357
357
|
embeddingModel: 'Xenova/all-MiniLM-L6-v2',
|
|
358
358
|
maxChunkSize: 800,
|
package/dist/config.js
CHANGED
|
@@ -17,7 +17,7 @@ dotenv_1.default.config();
|
|
|
17
17
|
exports.CONFIG_FILENAME = '.codexarc.json';
|
|
18
18
|
const DEFAULT_CONFIG = {
|
|
19
19
|
modelProvider: 'groq',
|
|
20
|
-
model: '
|
|
20
|
+
model: 'openai/gpt-oss-120b', // can also use llama-3.3-70b-versatile for better perf
|
|
21
21
|
embeddingProvider: 'local',
|
|
22
22
|
embeddingModel: 'Xenova/all-MiniLM-L6-v2',
|
|
23
23
|
// localModelUrl: 'http://localhost:11434',
|
package/dist/ingest.js
CHANGED
|
@@ -92,6 +92,10 @@ async function ingestRepository({ cwd, config, force = false, }) {
|
|
|
92
92
|
spinnerFiles.fail('No matching files found.');
|
|
93
93
|
return;
|
|
94
94
|
}
|
|
95
|
+
if (allFiles.length > 200) {
|
|
96
|
+
spinnerFiles.stop();
|
|
97
|
+
throw new Error('Codebase is too large, cannot index it');
|
|
98
|
+
}
|
|
95
99
|
// Filter files: exclude binaries and large files
|
|
96
100
|
spinnerFiles.text = `Filtering files (found ${allFiles.length})...`;
|
|
97
101
|
const { included: files, excluded } = await (0, file_filter_1.filterFiles)(allFiles, {
|
|
@@ -124,6 +128,10 @@ async function ingestRepository({ cwd, config, force = false, }) {
|
|
|
124
128
|
}
|
|
125
129
|
await tick();
|
|
126
130
|
}
|
|
131
|
+
if (chunks.length > 20000) {
|
|
132
|
+
spinnerChunk.stop();
|
|
133
|
+
throw new Error('Chunk limit exceeded, unable to create embeddings!');
|
|
134
|
+
}
|
|
127
135
|
spinnerChunk.succeed(`Chunked files (${chunks.length} chunks)`);
|
|
128
136
|
const spinnerCompress = (0, ora_1.default)('Compressing chunks...').start();
|
|
129
137
|
chunks.forEach((c) => (c.compressed = compressText(c.content)));
|