@openez-graph/cli 1.3.0 → 1.4.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
@@ -86,6 +86,7 @@ Valid config keys: `embedding.provider`, `embedding.openai_api_key`, `embedding.
86
86
  | Tool | Description |
87
87
  | ----------------- | --------------------------------------------------------------------------------------------------- |
88
88
  | `list_workspaces` | List all registered workspaces |
89
+ | `code_outline` | Inspect file AST structure, functions, classes, and exported symbols with line numbers (~50 tokens) |
89
90
  | `code_query` | Hybrid FTS/vector search + graph expansion over indexed code and docs |
90
91
  | `code_context` | Get budgeted symbol context with callers, callees, and related files (limit: 50/workspace, max 200) |
91
92
  | `graph_neighbors` | Traverse graph edges from a node or label |
package/dist/CHANGELOG.md CHANGED
@@ -5,6 +5,35 @@ 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.4.0] - 2026-08-19
9
+
10
+ ### Added
11
+
12
+ - **`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.
13
+ - **`code_outline` in agent setup instructions** — `openez setup codex/claude/opencode/windsurf/devin` now injects guidance to use `code_outline` before reading full files.
14
+
15
+ ### Changed
16
+
17
+ - **`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.
18
+ - **`getFileOutline` async realpath** — replaced `fs.realpathSync` with `fs.promises.realpath` to avoid blocking the MCP event loop on absolute-path cache misses.
19
+ - **AGENTS.md MCP Expectations** — `code_outline` classified as a single-workspace tool alongside `memory_write`, `index_workspace`, and `remove_workspace`.
20
+
21
+ ### Fixed
22
+
23
+ - **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.
24
+ - **`getFileOutline` suffix disambiguation** — returns `null` when multiple files share the same basename suffix, preventing ambiguous outline lookups.
25
+ - **`getFileOutline` LIKE wildcard safety** — escapes `%` and `_` in suffix queries so wildcard characters in filenames don't cause false matches.
26
+ - **`outlineText` size formatting** — uses `String(sizeBytes)` instead of `toLocaleString()` to avoid locale-dependent formatting in the outline header.
27
+ - **Indexer `normalizeRelativePath`** — normalizes paths on document insert so Windows backslash paths are stored consistently.
28
+
29
+ ## [1.3.1] - 2026-08-16
30
+
31
+ ### Fixed
32
+
33
+ - **Reindex and DB open performance on large workspaces** — `openez status` and `openez reindex` on a 92K-chunk workspace (e.g. Zed) went from >8 minutes (100% CPU, never completing) to ~0.15s (status) and ~25s (reindex). Two root causes fixed:
34
+ - **FTS repair scan on every DB open** — `initializeWorkspaceSchema` ran an O(n²) `LEFT JOIN chunks_fts` (chunk_id is UNINDEXED in FTS5) plus an orphan-cleanup `DELETE ... NOT IN` on every open, even when FTS was fully in sync. Now skips the expensive repair when a count + shape check confirms FTS is in sync, and only runs the full repair when counts diverge or orphaned rows are detected.
35
+ - **FTS trigger storm during full reindex** — `resetIndexArtifacts` deleted 92K chunks with FTS triggers active, firing 92K triggered `DELETE FROM chunks_fts WHERE chunk_id = old.id` (each a full FTS shadow-table scan). Now drops FTS triggers and the FTS table before deleting chunks, then recreates an empty FTS table for the reindex to populate via `bulkInsertFts`.
36
+
8
37
  ## [1.3.0] - 2026-08-15
9
38
 
10
39
  ### Added
@@ -299,6 +328,8 @@ Remediation release — index/graph correctness, data protection, and web flow f
299
328
  - Error handling and validation for import path extraction
300
329
  - CLI npm packaging
301
330
 
331
+ [1.4.0]: https://github.com/asta-nguyen/openez-graph/compare/v1.3.1...v1.4.0
332
+ [1.3.1]: https://github.com/asta-nguyen/openez-graph/compare/v1.3.0...v1.3.1
302
333
  [1.2.0]: https://github.com/asta-nguyen/openez-graph/compare/v1.1.0...v1.2.0
303
334
  [1.3.0]: https://github.com/asta-nguyen/openez-graph/compare/v1.2.0...v1.3.0
304
335
  [1.1.0]: https://github.com/asta-nguyen/openez-graph/compare/v1.0.3...v1.1.0