@levnikolaevich/hex-line-mcp 1.27.0 → 1.28.0

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
@@ -42,7 +42,7 @@ Advanced / occasional:
42
42
  | `changes` | Compare file against git ref, shows added/removed/modified symbols | AST-level semantic diff with risk/provenance preview |
43
43
  | `bulk_replace` | Search-and-replace across multiple files inside an explicit root path | Compact summary (default) or capped diffs via `format`, dry_run, max_files |
44
44
 
45
- ### Hooks (SessionStart + PreToolUse + PostToolUse)
45
+ ### Hooks (SessionStart + PreToolUse + PostToolUse + ConfigChange + PermissionDenied)
46
46
 
47
47
  | Event | Trigger | Action |
48
48
  |-------|---------|--------|
@@ -106,6 +106,8 @@ The diagnostics run reports graph payload overhead and auto-refresh telemetry. R
106
106
 
107
107
  Comparative built-in vs hex-line benchmarks are maintained outside this package. External-baseline comparisons must reuse the same scenario suite and correctness contract before making broader claims.
108
108
 
109
+ When `--repo` points at a repository outside `hex-line-mcp`, the scenario runner uses a generic external-repo suite instead of package-specific fixtures. The report labels the mode explicitly.
110
+
109
111
  ### Optional Graph Enrichment
110
112
 
111
113
  If a project already has `.hex-skills/codegraph/index.db`, `hex-line` automatically adds lightweight graph hints to `read_file`, `outline`, `grep_search`, `edit_file`, and `changes`.
@@ -289,7 +291,7 @@ Search file contents using ripgrep. Default mode is `summary` for discovery. Use
289
291
  | `edit_ready` | boolean | no | Preserve hash/checksum search hunks in `content` mode |
290
292
  | `allow_large_output` | boolean | no | Bypass the default `content`-mode block/char caps when you intentionally need a larger payload |
291
293
 
292
- `summary` mode returns counts, top files, and a few plain snippets. `content` mode returns canonical `search_hunk` blocks with per-hunk checksums enabling direct `replace_lines` from grep results without intermediate `read_file`.
294
+ `summary` mode returns counts and top files without canonical hunks. `content` mode returns canonical `search_hunk` blocks with per-hunk checksums enabling direct `replace_lines` from grep results without intermediate `read_file`.
293
295
 
294
296
  - Default `content` mode is intentionally capped to keep discovery cheap. When truncation happens, the diagnostic block includes `shown_matches`, `file_count`, `truncated`, `next_action`, and `suggested_refine_call`.
295
297
  - Treat `allow_large_output: true` as an explicit override for review/debug workflows, not as the normal discovery path.
@@ -404,7 +406,7 @@ Logs when Claude denies a tool call after the hook delivered a redirect hint. Re
404
406
  ```
405
407
  hex-line-mcp/
406
408
  server.mjs MCP server (stdio transport, 9 tools)
407
- hook.mjs Unified hook (PreToolUse + PostToolUse + SessionStart)
409
+ hook.mjs Unified hook (SessionStart + PreToolUse + PostToolUse + ConfigChange + PermissionDenied)
408
410
  package.json
409
411
  lib/
410
412
  hook-policy.mjs Shared hook policy: redirects, thresholds, danger patterns
package/dist/server.mjs CHANGED
@@ -3308,7 +3308,7 @@ async function summaryMode(pattern, target, opts, totalLimit) {
3308
3308
  if (killed) return "GREP_OUTPUT_TRUNCATED: exceeded 10MB. Use specific glob/path.";
3309
3309
  if (code === 1) return "No matches found.";
3310
3310
  if (code !== 0 && code !== null) throw new Error(`GREP_ERROR: rg exit ${code} \u2014 ${stderr.trim() || "unknown error"}`);
3311
- const rawLines = stdout.trimEnd().split("\n").filter(Boolean);
3311
+ const rawLines = stdout.trimEnd().split(/\r?\n/).filter(Boolean);
3312
3312
  const visible = totalLimit > 0 ? rawLines.slice(0, totalLimit) : rawLines;
3313
3313
  const fileHits = /* @__PURE__ */ new Map();
3314
3314
  const snippets = [];
@@ -4967,7 +4967,7 @@ function errorResult(code, message, recovery, { large = false, extra = null } =
4967
4967
  }
4968
4968
 
4969
4969
  // server.mjs
4970
- var version = true ? "1.27.0" : (await null).createRequire(import.meta.url)("./package.json").version;
4970
+ var version = true ? "1.28.0" : (await null).createRequire(import.meta.url)("./package.json").version;
4971
4971
  var STATUS_ENUM = z2.enum(STATUS_VALUES);
4972
4972
  var ERROR_SHAPE = z2.object({ code: z2.string(), message: z2.string(), recovery: z2.string() }).optional();
4973
4973
  var LINE_REPORT_KEYS = /* @__PURE__ */ new Set([
package/output-style.md CHANGED
@@ -72,6 +72,7 @@ Use `hex-graph` only for semantic code questions:
72
72
  - `find_references` and `trace_paths` for usage and blast radius
73
73
  - `analyze_changes`, `audit_workspace`, and `analyze_architecture` for review and audit work
74
74
  - Always include `path` for `hex-graph` queries, using the active project root by default.
75
+ - For `audit_workspace`, start bounded: `verbosity="minimal"`, add `scope` when known, and increase `limit` or `clone_member_limit` only for intentional deeper review.
75
76
 
76
77
  # Response Style
77
78
 
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@levnikolaevich/hex-line-mcp",
3
- "version": "1.27.0",
3
+ "version": "1.28.0",
4
4
  "mcpName": "io.github.levnikolaevich/hex-line-mcp",
5
5
  "type": "module",
6
6
  "description": "Hash-verified file editing MCP + token efficiency hook for AI coding agents. 9 tools: inspect_path, read, edit, write, grep, outline, verify, changes, bulk_replace.",