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 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": "llama-3.1-8b-instant",
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
- **Available Groq Models:**
175
- - `llama-3.1-8b-instant` - Fast responses (recommended, default)
176
- - `llama-3.1-70b-versatile` - Higher quality, slower
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:** `"llama-3.1-8b-instant"`
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": "llama-3.1-8b-instant",
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": "llama-3.1-8b-instant",
612
+ "model": "openai/gpt-oss-120b",
611
613
  "maxChunkSize": 150,
612
614
  "chunkOverlap": 15,
613
615
  "topK": 6,
package/dist/cli.js CHANGED
@@ -74,7 +74,7 @@ const program = new commander_1.Command();
74
74
  program
75
75
  .name('codexa')
76
76
  .description('Ask questions about any local repository from the command line.')
77
- .version('1.2.1')
77
+ .version('1.2.2')
78
78
  .action(() => {
79
79
  showBanner();
80
80
  });
@@ -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: 'llama-3.1-8b-instant',
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: 'llama-3.1-8b-instant', // can also use llama-3.3-70b-versatile for better perf
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)));
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "codexa",
3
- "version": "1.2.1",
3
+ "version": "1.2.2",
4
4
  "description": "CLI agent that indexes local repos and answers questions with hosted or local LLMs.",
5
5
  "bin": {
6
6
  "codexa": "bin/codexa.js"