Implement bounded repository navigation with repo-lens
CI / build (debug, map[compiler:appleclang os:macos-latest]) (push) Canceled after 0s
CI / build (debug, map[compiler:clang os:ubuntu-latest]) (push) Canceled after 0s
CI / build (debug, map[compiler:gcc os:ubuntu-latest]) (push) Canceled after 0s
CI / build (debug, map[compiler:msvc os:windows-latest]) (push) Canceled after 0s
CI / build (release, map[compiler:appleclang os:macos-latest]) (push) Canceled after 0s
CI / build (release, map[compiler:clang os:ubuntu-latest]) (push) Canceled after 0s
CI / build (release, map[compiler:gcc os:ubuntu-latest]) (push) Canceled after 0s
CI / build (release, map[compiler:msvc os:windows-latest]) (push) Canceled after 0s
CI / build (sanitizers, map[compiler:appleclang os:macos-latest]) (push) Canceled after 0s
CI / build (sanitizers, map[compiler:clang os:ubuntu-latest]) (push) Canceled after 0s
CI / build (sanitizers, map[compiler:gcc os:ubuntu-latest]) (push) Canceled after 0s
CI / build (sanitizers, map[compiler:msvc os:windows-latest]) (push) Canceled after 0s

- Add map, find, and around commands with repository root discovery
- Stream literal ripgrep searches with match counts and result limits
- Add direct subprocess execution and explicit error returns
- Disable C++ exceptions and add navigation tests
- Support CMake installation and document builds and deployment
- Add a reusable agent skill and document skill discovery
This commit is contained in:
wilmc committed 2026-10-09 13:15:00 +02:00
1 parent 70c43b6a68
commit a0fbb9f50e
22 files changed
+1185 -112

No files matched your search

+16 -9
View File
@@ -2,28 +2,35 @@
This is a routing table: **where should an agent look?** It is not an architecture manual. Start here, then inspect only the source or documentation relevant to the task.
The repository contains a C++ CLI skeleton, native compiler presets, and a sample test. Navigation implementations remain TODOs. The bookmarks below route to existing build invariants, not implemented navigation features.
The repository contains a functional C++ CLI with bounded `map`, `find`, and `around` commands, native compiler presets, and navigation tests. The bookmarks below route to existing build invariants, not implemented navigation features.
## Current routes
### Purpose and direction
Path: `README.md`
Entry: project purpose, scope, illustrative CLI, and measurement goals.
Entry: project purpose, scope, implemented CLI, and measurement goals.
Related: `AGENTS.md` for agent operating instructions.
### CLI parsing and dispatch skeleton
### CLI parsing and dispatch
Path: `src/main.cpp`
Entry: `main`
Important symbols: `print_usage`, `extract_tool_name`, `extract_tool_arguments`
Flow: placeholder parsing -> `find`/`map` dispatch -> tool `execute`; parsing and usage remain TODOs.
Related: `src/CMakeLists.txt` lists all executable sources. `around` has a stub but is not dispatched yet.
Important symbols: `print_usage`
Flow: argv views -> `find`/`map`/`around` dispatch -> tool `execute`.
Related: `src/CMakeLists.txt` lists all executable sources.
### Tool interface and implementations
Path: `include/repo_tool_*.hpp`, `src/repo_tool_*.cpp`
Entry: `include/repo_tool_interface.hpp`
Important symbols: `rl::IRepoLensTool`, `rl::exit_code`, `rl::RepoLensToolFind`, `rl::RepoLensToolMap`, `rl::RepoLensToolAround`
Related: `AGENTS.md` for trailing return types and the `[[nodiscard]]`/`noexcept` execution contract. Tool bodies remain TODOs.
Tests: no navigation behavior tests yet.
Related: `AGENTS.md` for trailing return types and the `[[nodiscard]]`/`noexcept` execution contract.
Tests: `test/navigation_test.cpp` covers parsing, ranges, map ranking/limits, and subprocess/search behavior.
### Repository navigation and subprocess support
Path: `include/navigation.hpp`, `src/navigation.cpp`, `include/process.hpp`, `src/process.cpp`
Entry: `rl::repository_root`, `rl::parse_location`, `rl::map_sections`, `rl::run_process`
Flow: discover nearest `.git` ancestor -> query root-relative map/source or stream ripgrep output.
Related: `src/repo_tool_find.cpp` limits occurrence locations; `src/repo_tool_around.cpp` reads the requested window; `src/repo_tool_map.cpp` queries map sections.
Tests: `test/navigation_test.cpp` uses temporary repositories and a subprocess fixture in `test/test_main.cpp`.
### Native build and compiler settings
Path: `CMakeLists.txt`, `CMakePresets.json`, `cmake/`, `src/CMakeLists.txt`
@@ -35,7 +42,7 @@ Ignore normally: generated `build/` and `.build/` trees; build helpers unless th
### Test dependencies and validation
Path: `test/`, `cmake/gtest.cmake`
Entry: `test/CMakeLists.txt`; `test/test_main.cpp` is only a sample assertion.
Entry: `test/CMakeLists.txt`; `test/navigation_test.cpp` contains navigation tests; `test/test_main.cpp` supplies the test runner and subprocess fixture.
Flow: `ENABLE_TESTS` -> FetchContent GoogleTest -> `repo-lens-test` -> CTest discovery.
Bookmarks: `MSVC_SANITIZER_ANNOTATION_ALIGNMENT` in `test/CMakeLists.txt` keeps STL annotations consistent across the instrumented test and its dependencies.
Related: `<compiler>-sanitizers` presets; `README.md` for local dependency overrides and build instructions.