grepmax 0.26.58 → 0.26.59

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.58",
13
+ "version": "0.26.59",
14
14
  "author": {
15
15
  "name": "Robert Owens",
16
16
  "email": "robowens@me.com"
package/README.md CHANGED
@@ -474,7 +474,7 @@ gmax watch restart # Restart daemon
474
474
 
475
475
  `gmax doctor` and `gmax status` report persistent safety stops and daemon startup quarantine. `doctor` exits with code 2 when startup is blocked; `status --json` includes `daemon.startupBlockedReason`. Installing an update preserves these stops. macOS kernel-zone probes use `zprint -L` to omit the wired-memory report and kernel symbolication while retaining the same zone counters and pressure thresholds.
476
476
 
477
- When heavy work is paused, the daemon keeps metadata, bounded symbol/file lookups, stored skeletons by exact file path, and keyword search available. Search uses the existing FTS index and excludes unindexed rows, loads no embedding model, returns at most 20 results, and reports keyword-only scores and retained-index freshness. Native queries have a two-second deadline and run one at a time with 48 MiB of combined Lance cache capacity. Indexing, watchers, vector/graph scans, and model launches remain paused. Missing FTS indexes return an error; paused search never rebuilds an index or falls back to a corpus scan.
477
+ When heavy work is paused, the daemon keeps metadata, bounded symbol/file lookups, stored skeletons by exact file path, and keyword search available. Search uses the existing FTS index and excludes unindexed rows, loads no embedding model, returns at most 20 results, and reports keyword-only scores and retained-index freshness. CLI agent output preserves the keyword-only warning, and daemon reads skip client-side model setup. Native queries have a two-second deadline and run one at a time with 48 MiB of combined Lance cache capacity. Indexing, watchers, vector/graph scans, and model launches remain paused. Missing FTS indexes return an error; paused search never rebuilds an index or falls back to a corpus scan.
478
478
 
479
479
  To serve bounded reads under an existing startup quarantine, run `gmax watch --daemon --read-only -b`. This preserves the safety markers. `status --json` reports `daemon.service.mode` and its reason; `doctor` reports paused availability and skips native corpus diagnostics. Pausing is sticky for that daemon process. Full service requires a deliberate restart after host recovery and quarantine review. Known critical OS or kernel pressure still stops even the read-only service.
480
480
 
@@ -358,16 +358,6 @@ exports.doctor = new commander_1.Command("doctor")
358
358
  }
359
359
  if (!opts.agent)
360
360
  console.log("gmax Doctor\n");
361
- const startupBlockedReason = (0, autostart_1.daemonStartDeniedReason)();
362
- if (startupBlockedReason !== null) {
363
- const reason = startupBlockedReason.replace(/[\r\n\t]/g, " ");
364
- console.log(opts.agent
365
- ? `daemon_startup\tblocked=true\treason=${reason}`
366
- : `FAIL Daemon startup blocked: ${reason}`);
367
- // Inspect the retained index, but do not report a healthy installation
368
- // while the persistent host stop or autostart quarantine prevents use.
369
- process.exitCode = 2;
370
- }
371
361
  // Metadata-only diagnostics while paused: never open a second native
372
362
  // reader or scan the retained corpus on a pressured host.
373
363
  const { sendDaemonCommand } = yield Promise.resolve().then(() => __importStar(require("../lib/utils/daemon-client")));
@@ -384,6 +374,16 @@ exports.doctor = new commander_1.Command("doctor")
384
374
  process.exitCode = 2;
385
375
  return;
386
376
  }
377
+ const startupBlockedReason = (0, autostart_1.daemonStartDeniedReason)();
378
+ if (startupBlockedReason !== null) {
379
+ const reason = startupBlockedReason.replace(/[\r\n\t]/g, " ");
380
+ console.log(opts.agent
381
+ ? `daemon_startup\tblocked=true\treason=${reason}`
382
+ : `FAIL Daemon startup blocked: ${reason}`);
383
+ // Inspect the retained index, but do not report a healthy installation
384
+ // while the persistent host stop or autostart quarantine prevents use.
385
+ process.exitCode = 2;
386
+ }
387
387
  const root = config_1.PATHS.globalRoot;
388
388
  const models = config_1.PATHS.models;
389
389
  const grammars = config_1.PATHS.grammars;
@@ -210,9 +210,11 @@ function renderSearchOutput(params) {
210
210
  var _a, _b, _c;
211
211
  var _d, _e, _f, _g, _h, _j;
212
212
  const { searchResult, options, minScore, crossProject, pattern, effectiveRoot, projectRoot, vectorDb, precomputedSkeletons, precomputedGraph, indexState, } = params;
213
- if (!options.agent && ((_a = searchResult.warnings) === null || _a === void 0 ? void 0 : _a.length)) {
213
+ if ((_a = searchResult.warnings) === null || _a === void 0 ? void 0 : _a.length) {
214
214
  for (const w of searchResult.warnings) {
215
- console.warn(`Warning: ${w}`);
215
+ console.warn(options.agent
216
+ ? `warn\t${w.replace(/[\r\n\t]/g, " ")}`
217
+ : `Warning: ${w}`);
216
218
  }
217
219
  }
218
220
  // Partial-index signal (Phase 6): when the index is mid-catchup, results
@@ -53,6 +53,7 @@ const sync_helpers_1 = require("../lib/index/sync-helpers");
53
53
  const syncer_1 = require("../lib/index/syncer");
54
54
  const per_file_1 = require("../lib/search/per-file");
55
55
  const searcher_1 = require("../lib/search/searcher");
56
+ const setup_helpers_1 = require("../lib/setup/setup-helpers");
56
57
  const vector_db_1 = require("../lib/store/vector-db");
57
58
  const lock_1 = require("../lib/utils/lock");
58
59
  const project_registry_1 = require("../lib/utils/project-registry");
@@ -160,6 +161,8 @@ function runSearch(params) {
160
161
  // In-process fallback: open VectorDB, ensure index, run Searcher.
161
162
  // Only entered when the daemon path didn't produce results.
162
163
  if (!searchResult) {
164
+ // A daemon read needs no client-side model download or loading.
165
+ yield (0, setup_helpers_1.ensureSetup)();
163
166
  const vectorDb = new vector_db_1.VectorDB(paths.lancedbDir);
164
167
  openedDb = vectorDb;
165
168
  // Check for active indexing lock and warn if present
@@ -46,7 +46,6 @@ exports.search = void 0;
46
46
  const path = __importStar(require("node:path"));
47
47
  const commander_1 = require("commander");
48
48
  const per_file_1 = require("../lib/search/per-file");
49
- const setup_helpers_1 = require("../lib/setup/setup-helpers");
50
49
  const cross_project_1 = require("../lib/utils/cross-project");
51
50
  const exit_1 = require("../lib/utils/exit");
52
51
  const path_containment_1 = require("../lib/utils/path-containment");
@@ -238,7 +237,6 @@ Examples:
238
237
  return;
239
238
  }
240
239
  try {
241
- yield (0, setup_helpers_1.ensureSetup)();
242
240
  let checkRoot = cwdProjectRoot;
243
241
  if (options.root) {
244
242
  const resolved = resolvedOptionRoot !== undefined
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "grepmax",
3
- "version": "0.26.58",
3
+ "version": "0.26.59",
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.58",
3
+ "version": "0.26.59",
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",