grepmax 0.26.26 → 0.26.28

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.
Files changed (36) hide show
  1. package/.claude-plugin/marketplace.json +1 -1
  2. package/README.md +40 -0
  3. package/dist/commands/audit.js +28 -260
  4. package/dist/commands/context.js +42 -26
  5. package/dist/commands/dead.js +37 -35
  6. package/dist/commands/doctor.js +280 -10
  7. package/dist/commands/extract.js +79 -49
  8. package/dist/commands/impact.js +74 -20
  9. package/dist/commands/log.js +25 -25
  10. package/dist/commands/mcp.js +622 -474
  11. package/dist/commands/peek.js +49 -47
  12. package/dist/commands/project.js +29 -107
  13. package/dist/commands/related.js +43 -52
  14. package/dist/commands/search-run.js +23 -8
  15. package/dist/commands/search.js +7 -2
  16. package/dist/commands/similar.js +50 -76
  17. package/dist/commands/skeleton.js +137 -83
  18. package/dist/commands/status.js +90 -25
  19. package/dist/commands/surprises.js +73 -16
  20. package/dist/commands/symbols.js +58 -77
  21. package/dist/commands/test-find.js +51 -17
  22. package/dist/commands/trace.js +26 -11
  23. package/dist/lib/daemon/daemon.js +26 -0
  24. package/dist/lib/daemon/graph-handler.js +853 -0
  25. package/dist/lib/daemon/ipc-handler.js +19 -2
  26. package/dist/lib/daemon/read-verbs.js +105 -0
  27. package/dist/lib/daemon/rows-handler.js +665 -0
  28. package/dist/lib/daemon/vector-handler.js +199 -0
  29. package/dist/lib/store/vector-db.js +1 -1
  30. package/dist/lib/utils/daemon-client.js +11 -0
  31. package/dist/lib/utils/store-access.js +381 -0
  32. package/dist/lib/utils/tests-footer.js +19 -2
  33. package/dist/lib/utils/watcher-launcher.js +10 -0
  34. package/package.json +2 -2
  35. package/plugins/grepmax/.claude-plugin/plugin.json +1 -1
  36. package/scripts/postinstall.js +0 -69
@@ -20,6 +20,7 @@ const autostart_1 = require("./autostart");
20
20
  const daemon_client_1 = require("./daemon-client");
21
21
  const daemon_launcher_1 = require("./daemon-launcher");
22
22
  const project_registry_1 = require("./project-registry");
23
+ const store_access_1 = require("./store-access");
23
24
  const watcher_store_1 = require("./watcher-store");
24
25
  function launchWatcher(projectRoot) {
25
26
  return __awaiter(this, void 0, void 0, function* () {
@@ -56,6 +57,15 @@ function launchWatcher(projectRoot) {
56
57
  if (notice) {
57
58
  return { ok: false, reason: "autostart-disabled", message: notice };
58
59
  }
60
+ // A spawned daemon (or per-project watcher) inherits this process's sandbox
61
+ // for its whole life. If ~/.gmax is read-only here it will be read-only
62
+ // there, and the child dies on its own lock mkdir — so probe once and say so
63
+ // instead of leaving a crash in daemon.log.
64
+ const sandboxed = (0, store_access_1.storeWriteDeniedNotice)();
65
+ if (sandboxed) {
66
+ (0, store_access_1.warnStoreWriteDeniedOnce)(sandboxed);
67
+ return { ok: false, reason: "sandboxed", message: sandboxed };
68
+ }
59
69
  const error = resp.error;
60
70
  if (error === "ENOENT" || error === "ECONNREFUSED") {
61
71
  const daemonPid = yield (0, daemon_launcher_1.spawnDaemon)();
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "grepmax",
3
- "version": "0.26.26",
3
+ "version": "0.26.28",
4
4
  "author": "Robert Owens <78518764+reowens@users.noreply.github.com>",
5
5
  "homepage": "https://github.com/reowens/grepmax",
6
6
  "bugs": {
@@ -79,7 +79,7 @@
79
79
  "dependencies": {
80
80
  "@clack/prompts": "^1.7.0",
81
81
  "@huggingface/transformers": "^4.2.0",
82
- "@lancedb/lancedb": "0.38.0-beta.3",
82
+ "@lancedb/lancedb": "0.38.0",
83
83
  "@modelcontextprotocol/sdk": "^1.30.0",
84
84
  "@parcel/watcher": "^2.6.0",
85
85
  "apache-arrow": "^18.1.0",
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "grepmax",
3
- "version": "0.26.26",
3
+ "version": "0.26.28",
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",
@@ -5,77 +5,8 @@
5
5
  *
6
6
  * gmax plugin add
7
7
  * gmax plugin update
8
- *
9
- * It does one other thing: overlay a vendored @lancedb/lancedb build if one
10
- * is present under ~/.gmax/vendor/. The npm-published 0.38 line stopped at
11
- * 0.38.0-beta.3 (lance 11.0.0-beta.16), which predates the FTS incremental-
12
- * merge fix (lance-format/lance#8312, lance 11.0.0-beta.22). lancedb's
13
- * Node publish has been failing since 2026-08-22 (lancedb/lancedb#3036), so
14
- * the fix-bearing 0.38.0-beta.10 darwin-arm64 build was taken from lancedb's
15
- * own CI artifact and lives at:
16
- *
17
- * ~/.gmax/vendor/lancedb-0.38.0-beta.10/{dist/, lancedb.darwin-arm64.node}
18
- *
19
- * lancedb's dist/native.js requires ./lancedb.darwin-arm64.node before the
20
- * platform package, so copying the whole dist/ plus the binary into the
21
- * installed package is a complete swap. No vendor dir → no-op.
22
8
  */
23
- const fs = require("node:fs");
24
- const os = require("node:os");
25
- const path = require("node:path");
26
-
27
- const VENDOR_DIR = path.join(
28
- process.env.GMAX_HOME || path.join(os.homedir(), ".gmax"),
29
- "vendor",
30
- "lancedb-0.38.0-beta.10",
31
- );
32
- const NATIVE = "lancedb.darwin-arm64.node";
33
-
34
- function overlayLancedb() {
35
- if (process.env.GMAX_NO_VENDOR_LANCEDB === "1") return null;
36
- if (process.platform !== "darwin" || process.arch !== "arm64") return null;
37
- const srcDist = path.join(VENDOR_DIR, "dist");
38
- const srcNative = path.join(VENDOR_DIR, NATIVE);
39
- if (!fs.existsSync(srcDist) || !fs.existsSync(srcNative)) return null;
40
-
41
- // package.json is not in lancedb's `exports`, so resolve the main entry
42
- // and walk up to the package root.
43
- let target;
44
- try {
45
- let dir = path.dirname(
46
- require.resolve("@lancedb/lancedb", { paths: [path.join(__dirname, "..")] }),
47
- );
48
- while (!fs.existsSync(path.join(dir, "package.json"))) {
49
- const parent = path.dirname(dir);
50
- if (parent === dir) return null;
51
- dir = parent;
52
- }
53
- target = fs.realpathSync(dir);
54
- } catch {
55
- return null;
56
- }
57
- const dstDist = path.join(target, "dist");
58
- fs.rmSync(dstDist, { recursive: true, force: true });
59
- fs.cpSync(srcDist, dstDist, { recursive: true });
60
- fs.copyFileSync(srcNative, path.join(dstDist, NATIVE));
61
- fs.writeFileSync(
62
- path.join(target, ".gmax-vendored"),
63
- "0.38.0-beta.10 darwin-arm64 (lance 11.0.0-beta.22) from ~/.gmax/vendor\n",
64
- );
65
- return target;
66
- }
67
-
68
- let overlaid = null;
69
- try {
70
- overlaid = overlayLancedb();
71
- } catch (err) {
72
- console.warn(`gmax: lancedb vendor overlay failed: ${err.message}`);
73
- }
74
-
75
9
  if (process.env.GMAX_POSTINSTALL_QUIET !== "1") {
76
- if (overlaid) {
77
- console.log(`gmax: vendored lancedb 0.38.0-beta.10 (FTS merge fix) -> ${overlaid}`);
78
- }
79
10
  console.log(
80
11
  "gmax installed. To install or update editor plugins, run: gmax plugin update",
81
12
  );