grepmax 0.26.9 → 0.26.10

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.
@@ -10,7 +10,7 @@
10
10
  "name": "grepmax",
11
11
  "source": "./plugins/grepmax",
12
12
  "description": "Semantic code search for Claude Code. Automatically indexes your project and provides intelligent search capabilities.",
13
- "version": "0.26.9",
13
+ "version": "0.26.10",
14
14
  "author": {
15
15
  "name": "Robert Owens",
16
16
  "email": "robowens@me.com"
@@ -261,9 +261,12 @@ exports.doctor = new commander_1.Command("doctor")
261
261
  const bloatRatio = logicalSize > 0 ? diskSize / logicalSize : 0;
262
262
  if (bloatRatio > 2.0)
263
263
  needsOptimize = true;
264
- if (numSmallFragments > 10)
264
+ // Track the compactor's own threshold. Warning (and worse, --fix forcing a
265
+ // full optimize) at a lower count than the compactor uses would re-trigger
266
+ // the whole-table rewrite that raising the threshold exists to avoid.
267
+ if (numSmallFragments > config_1.FRAGMENT_COMPACT_THRESHOLD)
265
268
  needsOptimize = true;
266
- if (versions.length > 50)
269
+ if (versions.length > config_1.VERSION_PRUNE_THRESHOLD)
267
270
  needsOptimize = true;
268
271
  // Disk space check
269
272
  let availBytes = 0;
@@ -384,14 +387,14 @@ exports.doctor = new commander_1.Command("doctor")
384
387
  console.log(`ok Storage: ${totalChunks.toLocaleString()} rows, ${formatSize(logicalSize)} logical, ${formatSize(diskSize)} disk`);
385
388
  }
386
389
  // Fragments
387
- if (numSmallFragments > 10) {
390
+ if (numSmallFragments > config_1.FRAGMENT_COMPACT_THRESHOLD) {
388
391
  console.log(`WARN Fragments: ${numFragments} total, ${numSmallFragments} small — needs compaction`);
389
392
  }
390
393
  else {
391
394
  console.log(`ok Fragments: ${numFragments} total, ${numSmallFragments} small`);
392
395
  }
393
396
  // Versions
394
- if (versions.length > 50) {
397
+ if (versions.length > config_1.VERSION_PRUNE_THRESHOLD) {
395
398
  console.log(`WARN Versions: ${versions.length} — pruning recommended`);
396
399
  }
397
400
  else {
package/dist/config.js CHANGED
@@ -33,7 +33,7 @@ var __importStar = (this && this.__importStar) || (function () {
33
33
  };
34
34
  })();
35
35
  Object.defineProperty(exports, "__esModule", { value: true });
36
- exports.INDEXABLE_EXTENSIONS = exports.FRAGMENT_COMPACT_THRESHOLD = exports.DISK_LOW_BYTES = exports.DISK_CRITICAL_BYTES = exports.MAX_FILE_SIZE_BYTES = exports.PATHS = exports.MAX_WORKER_MEMORY_MB = exports.WORKER_BOOT_TIMEOUT_MS = exports.WORKER_TIMEOUT_MS = exports.REBUILD_COMMAND = exports.CHUNKER_VERSION_HISTORY = exports.CONFIG = exports.MODEL_IDS = exports.DEFAULT_MODEL_TIER = exports.MODEL_TIERS = void 0;
36
+ exports.INDEXABLE_EXTENSIONS = exports.VERSION_PRUNE_THRESHOLD = exports.FRAGMENT_COMPACT_THRESHOLD = exports.DISK_LOW_BYTES = exports.DISK_CRITICAL_BYTES = exports.MAX_FILE_SIZE_BYTES = exports.PATHS = exports.MAX_WORKER_MEMORY_MB = exports.WORKER_BOOT_TIMEOUT_MS = exports.WORKER_TIMEOUT_MS = exports.REBUILD_COMMAND = exports.CHUNKER_VERSION_HISTORY = exports.CONFIG = exports.MODEL_IDS = exports.DEFAULT_MODEL_TIER = exports.MODEL_TIERS = void 0;
37
37
  exports.describeChunkerGap = describeChunkerGap;
38
38
  exports.describeEmbeddingGap = describeEmbeddingGap;
39
39
  exports.describeSchemaDimGap = describeSchemaDimGap;
@@ -273,6 +273,14 @@ exports.DISK_LOW_BYTES = (() => {
273
273
  // Caveat: measured on the no-ANN path — revisit if GMAX_ANN=1 becomes default,
274
274
  // since an ANN index partitions independently of fragments.
275
275
  exports.FRAGMENT_COMPACT_THRESHOLD = 400;
276
+ // Version count that counts as anomalous rather than normal accumulation.
277
+ // Versions pile up with writes and are pruned by compaction, so this has to
278
+ // track FRAGMENT_COMPACT_THRESHOLD: historically ~160 versions accumulated per
279
+ // 52 fragments (~3 per fragment), so 400 fragments implies ~1200 versions
280
+ // between compactions as ordinary steady state. A threshold below that would
281
+ // fire on every healthy store — and make `doctor --fix` force the whole-table
282
+ // rewrite that the fragment threshold exists to avoid.
283
+ exports.VERSION_PRUNE_THRESHOLD = 2000;
276
284
  // Extensions we consider for indexing to avoid binary noise and improve relevance.
277
285
  exports.INDEXABLE_EXTENSIONS = new Set([
278
286
  ".ts",
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "grepmax",
3
- "version": "0.26.9",
3
+ "version": "0.26.10",
4
4
  "author": "Robert Owens <78518764+reowens@users.noreply.github.com>",
5
5
  "homepage": "https://github.com/reowens/grepmax",
6
6
  "bugs": {
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "grepmax",
3
- "version": "0.26.9",
3
+ "version": "0.26.10",
4
4
  "description": "Semantic code search for Claude Code. Automatically indexes your project and provides intelligent search capabilities.",
5
5
  "author": {
6
6
  "name": "Robert Owens",