micro-models-agent 2.17.2 → 2.18.1

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/CHANGELOG.md CHANGED
@@ -4,6 +4,30 @@ All notable changes to Micro Models Agent (MMA) will be documented in this file.
4
4
 
5
5
  The format is based on [Keep a Changelog](https://keepachangelog.com/), and this project adheres to [Semantic Versioning](https://semver.org/).
6
6
 
7
+ ## [2.18.1] - 2026-10-04
8
+
9
+ ### Changed
10
+
11
+ - **README rewritten in English** (`README.md`): fully translated from Russian, reorganized into scannable themes (agent loop / orchestration / tools / experience / safety), and given a sharper intro and feature framing. Content — commands, config, tools, architecture, testing, principles — preserved. Documentation only, no behavior change.
12
+
13
+ ## [2.18.0] - 2026-10-04
14
+
15
+ ### Added
16
+
17
+ - **Symbol-level project map** (`src/modules/indexer/symbols.ts`): extraction now carries a 1-based `line` and a `kind` (`function`/`class`/`interface`/`type`/`export`/…) alongside the name, for every supported language. `extractSymbols` (names only) stays for compatibility; `extractSymbolsDetailed` is the new source.
18
+ - **`project_map` actions `symbol` and `outline`** (`src/modules/indexer/module.ts`, `rank.ts`): `symbol` locates definition sites (`path:line name (kind)`, ranked exact→prefix→substring), `outline` returns a file's symbol table of contents by line. Both stay on the existing tool, so the tool count and context budget are unchanged.
19
+ - **Symbol signatures (no parser dependency)** (`src/modules/indexer/symbols.ts`): each symbol now carries the declaration text up to `{`/`;`/end-of-line, bracket-depth aware for multi-line parameters — e.g. `rankFiles (function) — export function rankFiles(files: IndexedFile[], query: string): RankedFile[]`. Coverage on this repo is ~83% of extracted symbols at no measurable index-time cost; shown in `symbol` and `outline` results so the model sees the API without reading bodies.
20
+ - **Definition-first, path-aware ranking for `find`** (`src/modules/indexer/rank.ts`): exact symbol name > prefix > substring > path, source > tests > docs, then shorter path and stable order. Measured on this repo: MRR 0.93→1.00, Hit@1 0.90→1.00 over 60 symbol queries (ambiguous queries such as `plugin` move from rank 7 to rank 1).
21
+ - **Incremental re-index by mtime** (`src/modules/indexer/walker.ts`, `cache.ts`): `IndexedFile` carries `size`/`mtimeMs`; `walk(prev)` reuses unchanged files (no read, no regex) and re-reads only changed ones. On a synthetic 3000-file tree, rebuilding after a one-file edit drops from ~302 ms to ~168 ms (1.8×). Cache schema bumped to v3.
22
+ - **Indexer config** (`config.indexer.maxFiles`, `config.indexer.respectGitignore`): the file cap is now configurable (default **1000 → 5000**) and surfaced in `/config` and Settings → Context → Project index; when the cap is hit the map shows an explicit truncation marker instead of silently listing a subset.
23
+ - **`.gitignore` / `.mmaignore` support** (`src/modules/indexer/gitignore.ts`): best-effort matcher (comments, `!` negation, `/` anchoring, `dir/`, `*`, `?`, `**`), fail-open. On this repo it filters 971 → 934 indexed files.
24
+ - **PageRank-ranked project map under a token budget** (`src/modules/indexer/graph.ts`, `rank.ts`, `module.ts`): a file→file reference graph is built from imports/require (local specifiers and path aliases resolved), PageRank scores architectural importance, and `selectByRank` fits the highest-ranked files into `indexer.mapTokenBudget` (default 1500 tokens) instead of a fixed 80-file list. On this repo the map shrinks 2444 → 1481 tokens (80 → 40 files) while surfacing hubs (types/registry modules).
25
+ - **LSP-backed symbol lookup** (`src/modules/lsp/symbols.ts`, `client.ts`, `module.ts`, `config.ts`; `IndexerModule.setSymbolProvider`): `project_map symbol` falls back to LSP `workspace/symbol` when the index finds no match, returning precise definitions (`workspace/symbol` is the correct LSP primitive for lookup by name; `textDocument/definition` needs a position). Wired in bootstrap so the language server is spawned only on a miss, never per query; disabled/erroring LSP degrades to the index silently.
26
+
27
+ ### Changed
28
+
29
+ - **Search latency trade-off**: ranked `find` costs ~1.6 ms per query vs ~0.4 ms for the old linear filter on an ~930-file index — still sub-2ms and independent of result count; symbol/outline give the model a direct path to definitions.
30
+
7
31
  ## [2.17.0] - 2026-10-02
8
32
 
9
33
  ### Added