@openez-graph/cli 1.3.1 → 1.5.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
@@ -19,7 +19,7 @@ OpenEZ Graph indexes your codebase into a local SQLite database, builds a code g
19
19
  - **SQLite-first** — all data stored locally in `.openez/` per workspace, no Postgres/Redis
20
20
  - **FTS5 full-text search** — SQLite FTS5 with BM25 ranking and porter tokenizer
21
21
  - **Vector search** — optional OpenAI/Ollama/local embeddings with cosine similarity
22
- - **MCP-first** — exposes `code_query`, `code_context`, `graph_neighbors`, `memory_recall`, `memory_write`, `index_workspace`, `list_workspaces` tools
22
+ - **MCP-first** — exposes `code_query`, `code_outline`, `code_context`, `graph_neighbors`, `memory_recall`, `memory_write`, `index_workspace`, `list_workspaces` tools
23
23
  - **Multi-workspace** — register and query across multiple codebases
24
24
  - **Code graph** — symbols, files, chunks, and edges (calls, imports, contains)
25
25
  - **Web dashboard** — built-in graph explorer and workspace management UI
@@ -68,6 +68,7 @@ openez serve --mcp # start MCP server (auto-index; auto-sync opt-in
68
68
  openez serve --web # start web dashboard (default port 17881)
69
69
  openez serve --web --port 8080 # start web dashboard on custom port
70
70
  openez status [path] # show workspace status
71
+ openez diff [ref] # review git diff with affected AST symbols & callers (--staged, --json)
71
72
  openez list # list registered workspaces
72
73
  openez setup claude # wire up Claude Code
73
74
  openez setup codex # wire up Codex
@@ -79,6 +80,23 @@ openez config set <key> <value> # set embedding config value
79
80
  openez config list # list all DB-stored config overrides
80
81
  ```
81
82
 
83
+ ### Diff scopes
84
+
85
+ ```bash
86
+ openez diff # tracked staged + unstaged changes
87
+ git diff HEAD # equivalent Git default: tracked staged + unstaged changes
88
+ openez diff --staged # staged changes only
89
+ openez diff HEAD~1 # diff against the supplied Git ref
90
+ ```
91
+
92
+ For the `diff_context` MCP tool, `path`/`paths` select registered workspace
93
+ roots, not changed files. Untracked files are not included in this Git-diff
94
+ phase. When a blob parser is provided, `diff_context` also returns
95
+ `oldSymbols` and `deletedSymbols` for modified and deleted files. Old source
96
+ is loaded with `git show <rev>:<path>` and parsed in memory — historical blobs
97
+ are never written to the workspace DB. Caller/callee edges for historical
98
+ symbols use the current graph only (a historical graph is not reconstructed).
99
+
82
100
  Valid config keys: `embedding.provider`, `embedding.openai_api_key`, `embedding.openai_base_url`, `embedding.openai_model`, `embedding.ollama_base_url`, `embedding.ollama_model`, `embedding.local_model`. API keys are encrypted at rest with AES-256-GCM.
83
101
 
84
102
  ## MCP Tools
@@ -86,8 +104,10 @@ Valid config keys: `embedding.provider`, `embedding.openai_api_key`, `embedding.
86
104
  | Tool | Description |
87
105
  | ----------------- | --------------------------------------------------------------------------------------------------- |
88
106
  | `list_workspaces` | List all registered workspaces |
107
+ | `code_outline` | Inspect file AST structure, functions, classes, and exported symbols with line numbers (~50 tokens) |
89
108
  | `code_query` | Hybrid FTS/vector search + graph expansion over indexed code and docs |
90
109
  | `code_context` | Get budgeted symbol context with callers, callees, and related files (limit: 50/workspace, max 200) |
110
+ | `diff_context` | Analyze git diff changes and retrieve affected AST symbols & caller/callee dependencies |
91
111
  | `graph_neighbors` | Traverse graph edges from a node or label |
92
112
  | `memory_recall` | Recall active memory entries and technical decisions |
93
113
  | `memory_write` | Write a memory entry (notes, decisions, patterns) |
package/dist/CHANGELOG.md CHANGED
@@ -5,6 +5,42 @@ All notable changes to OpenEZ Graph are documented in this file.
5
5
  The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.1.0/),
6
6
  and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html).
7
7
 
8
+ ## [1.5.0] - 2026-08-26
9
+
10
+ ### Added
11
+
12
+ - **CLI and MCP diff context** — `openez diff` and `diff_context` now report affected symbols, callers, callees, historical symbols, and deleted symbols across staged changes and Git refs.
13
+
14
+ ### Changed
15
+
16
+ - **Diff scope and workspace contracts** — supports default tracked staged + unstaged changes, staged-only changes, Git refs/ranges, workspace selectors, structured multi-workspace responses, and token-bounded MCP output.
17
+
18
+ ### Fixed
19
+
20
+ - **Diff correctness and readiness** — normalizes staged hunk coordinates, reads staged symbols from Git index blobs, avoids leaking working-tree dependency context, validates Git refs, preserves deleted-symbol counts, and surfaces structured historical-blob warnings.
21
+
22
+ ## [1.4.0] - 2026-08-19
23
+
24
+ ### Added
25
+
26
+ - **`code_outline` MCP tool** — retrieves a compact AST symbol hierarchy (functions, classes, methods, types) with line numbers and export flags for a single file, reducing token consumption by ~95% compared to full file reads. Supports TypeScript (oxc-parser), Python/Go/Rust/Ruby (tree-sitter), and fallback section chunking for Markdown/YAML/JSON/TOML. Resolves files by relative path, absolute path, dot-slash prefix, or unambiguous suffix match.
27
+ - **`code_outline` in agent setup instructions** — `openez setup codex/claude/opencode/windsurf/devin` now injects guidance to use `code_outline` before reading full files.
28
+
29
+ ### Changed
30
+
31
+ - **Git diff scope contract** — documented `openez diff` staged/ref behavior, clarified that MCP `path`/`paths` select registered workspace roots, and noted that untracked files are excluded from this Git-diff phase.
32
+ - **`getFileOutline` path resolution** — uses `path.isAbsolute()` instead of `startsWith("/")` so Windows absolute paths (`C:\foo\bar.ts`) receive the same symlink realpath fallback as Unix absolute paths.
33
+ - **`getFileOutline` async realpath** — replaced `fs.realpathSync` with `fs.promises.realpath` to avoid blocking the MCP event loop on absolute-path cache misses.
34
+ - **AGENTS.md MCP Expectations** — `code_outline` classified as a single-workspace tool alongside `memory_write`, `index_workspace`, and `remove_workspace`.
35
+
36
+ ### Fixed
37
+
38
+ - **Umami analytics ID** — reverted an unrelated `data-website-id` change introduced by the `code_outline` branch; main's Umami PRs (#27, #31) take precedence at merge time.
39
+ - **`getFileOutline` suffix disambiguation** — returns `null` when multiple files share the same basename suffix, preventing ambiguous outline lookups.
40
+ - **`getFileOutline` LIKE wildcard safety** — escapes `%` and `_` in suffix queries so wildcard characters in filenames don't cause false matches.
41
+ - **`outlineText` size formatting** — uses `String(sizeBytes)` instead of `toLocaleString()` to avoid locale-dependent formatting in the outline header.
42
+ - **Indexer `normalizeRelativePath`** — normalizes paths on document insert so Windows backslash paths are stored consistently.
43
+
8
44
  ## [1.3.1] - 2026-08-16
9
45
 
10
46
  ### Fixed
@@ -307,6 +343,8 @@ Remediation release — index/graph correctness, data protection, and web flow f
307
343
  - Error handling and validation for import path extraction
308
344
  - CLI npm packaging
309
345
 
346
+ [1.5.0]: https://github.com/asta-nguyen/openez-graph/compare/v1.4.0...v1.5.0
347
+ [1.4.0]: https://github.com/asta-nguyen/openez-graph/compare/v1.3.1...v1.4.0
310
348
  [1.3.1]: https://github.com/asta-nguyen/openez-graph/compare/v1.3.0...v1.3.1
311
349
  [1.2.0]: https://github.com/asta-nguyen/openez-graph/compare/v1.1.0...v1.2.0
312
350
  [1.3.0]: https://github.com/asta-nguyen/openez-graph/compare/v1.2.0...v1.3.0