mirror of
https://github.com/Gitlawb/openclaude.git
synced 2026-08-24 10:14:19 -05:00
* feat: add Codebase Intelligence — repo map with PageRank-ranked structural summaries
Adds a new module that builds a structural map of the repository by parsing
source files with tree-sitter, building a cross-file reference graph weighted
by IDF, ranking files with PageRank, and rendering a token-budgeted summary
of the most important files and their signatures.
Surface:
- RepoMap tool the model can call on-demand, with focus_files / focus_symbols
- /repomap slash command with --tokens, --focus, --stats, --invalidate
- Auto-injection into session system context, gated by REPO_MAP=1 env var
(compile-time feature('REPO_MAP') flag stays off in scripts/build.ts)
How it works:
git ls-files → tree-sitter WASM parse → extract defs/refs →
IDF-weighted directed graph → PageRank → render top files until token budget
Files imported by many others rank highest. Common symbol names (get, set,
map, value) are down-weighted via IDF. Results cached to disk keyed by
(path, mtime, size) — only changed files are re-parsed.
Supported languages: TypeScript, JavaScript, Python.
Tree-sitter tag queries are inlined as string constants in queries.ts so
they ship inside dist/cli.mjs and work after npm install — the .scm source
files are kept for readability/Aider attribution but are not required at
runtime. A drift-guard test (queries.test.ts) asserts byte-equality between
the inlined strings and the .scm source files.
Dependencies added: web-tree-sitter, tree-sitter-wasms, graphology,
graphology-pagerank, graphology-operators, js-tiktoken.
* fix(repomap): invalidate rendered cache on file edits + Windows test fix
- computeMapHash now folds per-file mtime+size into the cache key so a
source edit (without changing the file list) no longer returns the
prior rendered map. Adds a regression test that edits a file and
confirms the second build reflects the new symbol without manual
invalidateCache().
- queries.test.ts byte-for-byte drift guard normalizes CRLF -> LF when
reading the .scm source so Windows checkouts pass. .gitattributes
also pins *.scm to LF on future checkouts.
- Externals: declare web-tree-sitter, tree-sitter-wasms, graphology*,
and js-tiktoken in scripts/externals.ts so build validation passes.
* fix(repomap): expand directory focus paths
* fix(repomap): satisfy deadcode check
* Fix repo map review findings
* Resolve remaining repo map review findings
* fix(repomap): address review findings
* fix(repomap): address review findings
* fix(repomap): resolve smoke and review follow-ups
* fix(repomap): preserve cached tag order
* fix(repomap): resolve review follow-ups
* fix(repomap): satisfy query promise lint
* Fix repo map context timeout cleanup
* fix: address repo map review findings
* fix: cancel timed-out repo map context builds
* fix(repomap): preserve git file path whitespace
* fix(repomap): handle graph and parsing edge cases
* fix(repomap): preserve shell token positions
* fix(repomap): respect configured cache home
* fix(repomap): address review findings
- Add explicit 10000ms timeout to the feature-flag-off context test to avoid cold-import flakes.
- Add --focus-symbols flag to /repomap and forward it to buildRepoMap, matching the RepoMap tool.
- Add parsing/command tests and docs coverage for --focus-symbols.
---------
Co-authored-by: gnanam1990 <gnanasekaran.sekareee@gmail.com>
126 lines
1.7 KiB
Plaintext
126 lines
1.7 KiB
Plaintext
# Normalize line endings for all text files
|
|
* text=auto
|
|
|
|
# Source code
|
|
*.py text diff=python
|
|
*.js text
|
|
*.ts text
|
|
*.jsx text
|
|
*.tsx text
|
|
*.json text
|
|
*.yaml text
|
|
*.yml text
|
|
*.toml text
|
|
*.ini text
|
|
*.cfg text
|
|
|
|
# Shell scripts (must use LF)
|
|
*.sh text eol=lf
|
|
quickstart.sh text eol=lf
|
|
|
|
# PowerShell scripts (Windows-friendly)
|
|
*.ps1 text eol=lf
|
|
*.psm1 text eol=lf
|
|
|
|
# Windows batch files (must use CRLF)
|
|
*.bat text eol=crlf
|
|
*.cmd text eol=crlf
|
|
|
|
# Documentation
|
|
*.md text
|
|
*.txt text
|
|
*.rst text
|
|
*.tex text
|
|
|
|
# Configuration files
|
|
.gitignore text
|
|
.gitattributes text
|
|
.editorconfig text
|
|
Dockerfile text
|
|
docker-compose.yml text
|
|
requirements*.txt text
|
|
pyproject.toml text
|
|
setup.py text
|
|
setup.cfg text
|
|
MANIFEST.in text
|
|
LICENSE text
|
|
README* text
|
|
CHANGELOG* text
|
|
CONTRIBUTING* text
|
|
CODE_OF_CONDUCT* text
|
|
|
|
# Web files
|
|
*.html text
|
|
*.css text
|
|
*.scss text
|
|
*.sass text
|
|
|
|
# Data files
|
|
*.xml text
|
|
*.csv text
|
|
*.sql text
|
|
*.scm text eol=lf
|
|
|
|
# Graphics (binary)
|
|
*.png binary
|
|
*.jpg binary
|
|
*.jpeg binary
|
|
*.gif binary
|
|
*.ico binary
|
|
*.svg text
|
|
*.eps binary
|
|
*.bmp binary
|
|
*.tif binary
|
|
*.tiff binary
|
|
|
|
# Archives (binary)
|
|
*.zip binary
|
|
*.tar binary
|
|
*.gz binary
|
|
*.bz2 binary
|
|
*.7z binary
|
|
*.rar binary
|
|
|
|
# Python compiled (binary)
|
|
*.pyc binary
|
|
*.pyo binary
|
|
*.pyd binary
|
|
*.whl binary
|
|
*.egg binary
|
|
|
|
# System libraries (binary)
|
|
*.so binary
|
|
*.dll binary
|
|
*.dylib binary
|
|
*.lib binary
|
|
*.a binary
|
|
|
|
# Documents (binary)
|
|
*.pdf binary
|
|
*.doc binary
|
|
*.docx binary
|
|
*.ppt binary
|
|
*.pptx binary
|
|
*.xls binary
|
|
*.xlsx binary
|
|
|
|
# Fonts (binary)
|
|
*.ttf binary
|
|
*.otf binary
|
|
*.woff binary
|
|
*.woff2 binary
|
|
*.eot binary
|
|
|
|
# Audio/Video (binary)
|
|
*.mp3 binary
|
|
*.mp4 binary
|
|
*.wav binary
|
|
*.avi binary
|
|
*.mov binary
|
|
*.flv binary
|
|
|
|
# Database files (binary)
|
|
*.db binary
|
|
*.sqlite binary
|
|
*.sqlite3 binary
|