{"file":"CHANGELOG.md","name":"Changelog","kind":"section","line":[1,1]}
{"file":"CHANGELOG.md","name":"Changelog/[0.2.0](https://github.com/montanetech/codeix/compare/v0.1.8...v0.2.0) (2026-02-06)","kind":"section","line":[3,3],"parent":"Changelog"}
{"file":"CHANGELOG.md","name":"Changelog/[0.2.0](https://github.com/montanetech/codeix/compare/v0.1.8...v0.2.0) (2026-02-06)/⚠ BREAKING CHANGES","kind":"section","line":[6,6],"parent":"Changelog/[0.2.0](https://github.com/montanetech/codeix/compare/v0.1.8...v0.2.0) (2026-02-06)"}
{"file":"CHANGELOG.md","name":"Changelog/[0.2.0](https://github.com/montanetech/codeix/compare/v0.1.8...v0.2.0) (2026-02-06)/Features","kind":"section","line":[10,10],"parent":"Changelog/[0.2.0](https://github.com/montanetech/codeix/compare/v0.1.8...v0.2.0) (2026-02-06)"}
{"file":"CHANGELOG.md","name":"Changelog/[0.2.0](https://github.com/montanetech/codeix/compare/v0.1.8...v0.2.0) (2026-02-06)/Performance Improvements","kind":"section","line":[20,20],"parent":"Changelog/[0.2.0](https://github.com/montanetech/codeix/compare/v0.1.8...v0.2.0) (2026-02-06)"}
{"file":"CHANGELOG.md","name":"Changelog/[0.1.8](https://github.com/montanetech/codeix/compare/v0.1.7...v0.1.8) (2026-02-06)","kind":"section","line":[24,24],"parent":"Changelog"}
{"file":"CHANGELOG.md","name":"Changelog/[0.1.8](https://github.com/montanetech/codeix/compare/v0.1.7...v0.1.8) (2026-02-06)/Features","kind":"section","line":[27,27],"parent":"Changelog/[0.1.8](https://github.com/montanetech/codeix/compare/v0.1.7...v0.1.8) (2026-02-06)"}
{"file":"CHANGELOG.md","name":"Changelog/[0.1.8](https://github.com/montanetech/codeix/compare/v0.1.7...v0.1.8) (2026-02-06)/Bug Fixes","kind":"section","line":[32,32],"parent":"Changelog/[0.1.8](https://github.com/montanetech/codeix/compare/v0.1.7...v0.1.8) (2026-02-06)"}
{"file":"CHANGELOG.md","name":"Changelog/[0.1.7](https://github.com/montanetech/codeix/compare/v0.1.6...v0.1.7) (2026-02-05)","kind":"section","line":[37,37],"parent":"Changelog"}
{"file":"CHANGELOG.md","name":"Changelog/[0.1.7](https://github.com/montanetech/codeix/compare/v0.1.6...v0.1.7) (2026-02-05)/Bug Fixes","kind":"section","line":[40,40],"parent":"Changelog/[0.1.7](https://github.com/montanetech/codeix/compare/v0.1.6...v0.1.7) (2026-02-05)"}
{"file":"CHANGELOG.md","name":"Changelog/[0.1.6](https://github.com/montanetech/codeix/compare/v0.1.5...v0.1.6) (2026-02-05)","kind":"section","line":[44,44],"parent":"Changelog"}
{"file":"CHANGELOG.md","name":"Changelog/[0.1.6](https://github.com/montanetech/codeix/compare/v0.1.5...v0.1.6) (2026-02-05)/Bug Fixes","kind":"section","line":[47,47],"parent":"Changelog/[0.1.6](https://github.com/montanetech/codeix/compare/v0.1.5...v0.1.6) (2026-02-05)"}
{"file":"CHANGELOG.md","name":"Changelog/[0.1.5](https://github.com/montanetech/codeix/compare/v0.1.4...v0.1.5) (2026-02-05)","kind":"section","line":[51,51],"parent":"Changelog"}
{"file":"CHANGELOG.md","name":"Changelog/[0.1.5](https://github.com/montanetech/codeix/compare/v0.1.4...v0.1.5) (2026-02-05)/Bug Fixes","kind":"section","line":[54,54],"parent":"Changelog/[0.1.5](https://github.com/montanetech/codeix/compare/v0.1.4...v0.1.5) (2026-02-05)"}
{"file":"CHANGELOG.md","name":"Changelog/[0.1.4](https://github.com/montanetech/codeix/compare/v0.1.3...v0.1.4) (2026-02-05)","kind":"section","line":[59,59],"parent":"Changelog"}
{"file":"CHANGELOG.md","name":"Changelog/[0.1.4](https://github.com/montanetech/codeix/compare/v0.1.3...v0.1.4) (2026-02-05)/Bug Fixes","kind":"section","line":[62,62],"parent":"Changelog/[0.1.4](https://github.com/montanetech/codeix/compare/v0.1.3...v0.1.4) (2026-02-05)"}
{"file":"CHANGELOG.md","name":"Changelog/[0.1.3](https://github.com/montanetech/codeix/compare/v0.1.2...v0.1.3) (2026-02-05)","kind":"section","line":[66,66],"parent":"Changelog"}
{"file":"CHANGELOG.md","name":"Changelog/[0.1.3](https://github.com/montanetech/codeix/compare/v0.1.2...v0.1.3) (2026-02-05)/Bug Fixes","kind":"section","line":[69,69],"parent":"Changelog/[0.1.3](https://github.com/montanetech/codeix/compare/v0.1.2...v0.1.3) (2026-02-05)"}
{"file":"CHANGELOG.md","name":"Changelog/[0.1.2](https://github.com/montanetech/codeix/compare/v0.1.1...v0.1.2) (2026-02-05)","kind":"section","line":[73,73],"parent":"Changelog"}
{"file":"CHANGELOG.md","name":"Changelog/[0.1.2](https://github.com/montanetech/codeix/compare/v0.1.1...v0.1.2) (2026-02-05)/Bug Fixes","kind":"section","line":[76,76],"parent":"Changelog/[0.1.2](https://github.com/montanetech/codeix/compare/v0.1.1...v0.1.2) (2026-02-05)"}
{"file":"CHANGELOG.md","name":"Changelog/[0.1.1](https://github.com/montanetech/codeix/compare/codeix-v0.1.0...codeix-v0.1.1) (2026-02-05)","kind":"section","line":[81,81],"parent":"Changelog"}
{"file":"CHANGELOG.md","name":"Changelog/[0.1.1](https://github.com/montanetech/codeix/compare/codeix-v0.1.0...codeix-v0.1.1) (2026-02-05)/Features","kind":"section","line":[84,84],"parent":"Changelog/[0.1.1](https://github.com/montanetech/codeix/compare/codeix-v0.1.0...codeix-v0.1.1) (2026-02-05)"}
{"file":"README.md","name":"codeix","kind":"section","line":[1,1]}
{"file":"README.md","name":"codeix/Why","kind":"section","line":[11,11],"parent":"codeix"}
{"file":"README.md","name":"codeix/Why/What existing tools get wrong","kind":"section","line":[17,17],"parent":"codeix/Why"}
{"file":"README.md","name":"codeix/Why/What codeix does differently","kind":"section","line":[27,27],"parent":"codeix/Why"}
{"file":"README.md","name":"codeix/The `.codeindex` format","kind":"section","line":[36,36],"parent":"codeix"}
{"file":"README.md","name":"codeix/Ship your index with your package","kind":"section","line":[58,58],"parent":"codeix"}
{"file":"README.md","name":"codeix/MCP tools","kind":"section","line":[64,64],"parent":"codeix"}
{"file":"README.md","name":"codeix/Project discovery","kind":"section","line":[78,78],"parent":"codeix"}
{"file":"README.md","name":"codeix/Languages","kind":"section","line":[84,84],"parent":"codeix"}
{"file":"README.md","name":"codeix/Languages/Markdown support","kind":"section","line":[102,102],"parent":"codeix/Languages"}
{"file":"README.md","name":"codeix/Languages/Embedded scripts","kind":"section","line":[108,108],"parent":"codeix/Languages"}
{"file":"README.md","name":"codeix/Install","kind":"section","line":[121,121],"parent":"codeix"}
{"file":"README.md","name":"codeix/Usage","kind":"section","line":[144,144],"parent":"codeix"}
{"file":"README.md","name":"codeix/Usage/MCP client configuration","kind":"section","line":[161,161],"parent":"codeix/Usage"}
{"file":"README.md","name":"codeix/Design principles","kind":"section","line":[175,175],"parent":"codeix"}
{"file":"README.md","name":"codeix/Architecture","kind":"section","line":[182,182],"parent":"codeix"}
{"file":"README.md","name":"codeix/License","kind":"section","line":[186,186],"parent":"codeix"}
{"file":"docs/architecture.md","name":"Codeindex — Architecture Decisions","kind":"section","line":[1,1]}
{"file":"docs/architecture.md","name":"Codeindex — Architecture Decisions/Problem Statement","kind":"section","line":[3,3],"parent":"Codeindex — Architecture Decisions"}
{"file":"docs/architecture.md","name":"Codeindex — Architecture Decisions/Vision","kind":"section","line":[11,11],"parent":"Codeindex — Architecture Decisions"}
{"file":"docs/architecture.md","name":"Codeindex — Architecture Decisions/ADR-001: Index format is text-based JSONL","kind":"section","line":[19,19],"parent":"Codeindex — Architecture Decisions"}
{"file":"docs/architecture.md","name":"Codeindex — Architecture Decisions/ADR-002: Index structure — 4 files","kind":"section","line":[38,38],"parent":"Codeindex — Architecture Decisions"}
{"file":"docs/architecture.md","name":"Codeindex — Architecture Decisions/ADR-002: Index structure — 4 files/`index.json` — manifest","kind":"section","line":[50,50],"parent":"Codeindex — Architecture Decisions/ADR-002: Index structure — 4 files"}
{"file":"docs/architecture.md","name":"Codeindex — Architecture Decisions/ADR-002: Index structure — 4 files/`files.jsonl` — file registry","kind":"section","line":[62,62],"parent":"Codeindex — Architecture Decisions/ADR-002: Index structure — 4 files"}
{"file":"docs/architecture.md","name":"Codeindex — Architecture Decisions/ADR-002: Index structure — 4 files/`symbols.jsonl` — symbol index (definitions + imports)","kind":"section","line":[70,70],"parent":"Codeindex — Architecture Decisions/ADR-002: Index structure — 4 files"}
{"file":"docs/architecture.md","name":"Codeindex — Architecture Decisions/ADR-002: Index structure — 4 files/`texts.jsonl` — comments, docstrings, string literals","kind":"section","line":[85,85],"parent":"Codeindex — Architecture Decisions/ADR-002: Index structure — 4 files"}
{"file":"docs/architecture.md","name":"Codeindex — Architecture Decisions/ADR-003: Index is self-contained, no dependency declarations","kind":"section","line":[107,107],"parent":"Codeindex — Architecture Decisions"}
{"file":"docs/architecture.md","name":"Codeindex — Architecture Decisions/ADR-004: Parsing via tree-sitter","kind":"section","line":[145,145],"parent":"Codeindex — Architecture Decisions"}
{"file":"docs/architecture.md","name":"Codeindex — Architecture Decisions/ADR-005: Three commands — build, serve, watch","kind":"section","line":[201,201],"parent":"Codeindex — Architecture Decisions"}
{"file":"docs/architecture.md","name":"Codeindex — Architecture Decisions/ADR-005: Three commands — build, serve, watch/`codeindex build`","kind":"section","line":[205,205],"parent":"Codeindex — Architecture Decisions/ADR-005: Three commands — build, serve, watch"}
{"file":"docs/architecture.md","name":"Codeindex — Architecture Decisions/ADR-005: Three commands — build, serve, watch/`codeindex serve`","kind":"section","line":[211,211],"parent":"Codeindex — Architecture Decisions/ADR-005: Three commands — build, serve, watch"}
{"file":"docs/architecture.md","name":"Codeindex — Architecture Decisions/ADR-005: Three commands — build, serve, watch/`codeindex serve --watch`","kind":"section","line":[216,216],"parent":"Codeindex — Architecture Decisions/ADR-005: Three commands — build, serve, watch"}
{"file":"docs/architecture.md","name":"Codeindex — Architecture Decisions/ADR-006: Deterministic, sorted output","kind":"section","line":[230,230],"parent":"Codeindex — Architecture Decisions"}
{"file":"docs/architecture.md","name":"Codeindex — Architecture Decisions/ADR-007: Index stays on disk via watch mode — committed like a lockfile","kind":"section","line":[246,246],"parent":"Codeindex — Architecture Decisions"}
{"file":"docs/architecture.md","name":"Codeindex — Architecture Decisions/ADR-008: Core is local only — no external services","kind":"section","line":[284,284],"parent":"Codeindex — Architecture Decisions"}
{"file":"docs/architecture.md","name":"Codeindex — Architecture Decisions/ADR-009: MCP tool surface — 7 tools, zero plumbing","kind":"section","line":[302,302],"parent":"Codeindex — Architecture Decisions"}
{"file":"docs/architecture.md","name":"Codeindex — Architecture Decisions/ADR-009: MCP tool surface — 7 tools, zero plumbing/Discovery tool","kind":"section","line":[308,308],"parent":"Codeindex — Architecture Decisions/ADR-009: MCP tool surface — 7 tools, zero plumbing"}
{"file":"docs/architecture.md","name":"Codeindex — Architecture Decisions/ADR-009: MCP tool surface — 7 tools, zero plumbing/Search tools (FTS5, BM25-ranked)","kind":"section","line":[314,314],"parent":"Codeindex — Architecture Decisions/ADR-009: MCP tool surface — 7 tools, zero plumbing"}
{"file":"docs/architecture.md","name":"Codeindex — Architecture Decisions/ADR-009: MCP tool surface — 7 tools, zero plumbing/Lookup tools (exact, structural)","kind":"section","line":[322,322],"parent":"Codeindex — Architecture Decisions/ADR-009: MCP tool surface — 7 tools, zero plumbing"}
{"file":"docs/architecture.md","name":"Codeindex — Architecture Decisions/ADR-010: Host language — Rust","kind":"section","line":[351,351],"parent":"Codeindex — Architecture Decisions"}
{"file":"docs/architecture.md","name":"Codeindex — Architecture Decisions/ADR-011: Project discovery — `.git/` boundaries","kind":"section","line":[413,413],"parent":"Codeindex — Architecture Decisions"}
{"file":"docs/architecture.md","name":"Codeindex — Architecture Decisions/Future Considerations","kind":"section","line":[505,505],"parent":"Codeindex — Architecture Decisions"}
{"file":"docs/architecture.md","name":"Codeindex — Architecture Decisions/Future Considerations/Project metadata tools","kind":"section","line":[507,507],"parent":"Codeindex — Architecture Decisions/Future Considerations"}
{"file":"docs/architecture.md","name":"Codeindex — Architecture Decisions/Future Considerations/External API documentation — two-tier model","kind":"section","line":[521,521],"parent":"Codeindex — Architecture Decisions/Future Considerations"}
{"file":"docs/architecture.md","name":"Codeindex — Architecture Decisions/Future Considerations/MCP resources","kind":"section","line":[551,551],"parent":"Codeindex — Architecture Decisions/Future Considerations"}
{"file":"docs/architecture.md","name":"Codeindex — Architecture Decisions/Future Considerations/Dependency index composition (ADR-003)","kind":"section","line":[572,572],"parent":"Codeindex — Architecture Decisions/Future Considerations"}
{"file":"docs/architecture.md","name":"Codeindex — Architecture Decisions/ADR-012: Cross-platform support","kind":"section","line":[582,582],"parent":"Codeindex — Architecture Decisions"}
{"file":"docs/architecture.md","name":"Codeindex — Architecture Decisions/Resolved Questions","kind":"section","line":[612,612],"parent":"Codeindex — Architecture Decisions"}
{"file":"npm/install.js","name":"https","kind":"variable","line":[7,7],"visibility":"private"}
{"file":"npm/install.js","name":"fs","kind":"variable","line":[8,8],"visibility":"private"}
{"file":"npm/install.js","name":"path","kind":"variable","line":[9,9],"visibility":"private"}
{"file":"npm/install.js","name":"zlib","kind":"variable","line":[11,11],"visibility":"private"}
{"file":"npm/install.js","name":"VERSION","kind":"constant","line":[13,13],"visibility":"private"}
{"file":"npm/install.js","name":"REPO","kind":"constant","line":[14,14],"visibility":"private"}
{"file":"npm/install.js","name":"PLATFORM_MAP","kind":"constant","line":[16,20],"visibility":"private"}
{"file":"npm/install.js","name":"getTarget","kind":"function","line":[22,31],"tokens":"Object process key target PLATFORM_MAP","visibility":"private"}
{"file":"npm/install.js","name":"key","kind":"variable","line":[23,23],"tokens":"process","visibility":"private"}
{"file":"npm/install.js","name":"target","kind":"variable","line":[24,24],"tokens":"key PLATFORM_MAP","visibility":"private"}
{"file":"npm/install.js","name":"getArchiveUrl","kind":"function","line":[33,36],"tokens":"REPO target process ext VERSION","visibility":"private"}
{"file":"npm/install.js","name":"ext","kind":"variable","line":[34,34],"tokens":"process","visibility":"private"}
{"file":"npm/install.js","name":"download","kind":"function","line":[38,54],"tokens":"resolve download Error https res chunks Promise chunk url Buffer reject","visibility":"private"}
{"file":"npm/install.js","name":"chunks","kind":"variable","line":[48,48],"visibility":"private"}
{"file":"npm/install.js","name":"extractTarGz","kind":"function","line":[56,62],"tokens":"buffer tmpFile path destDir fs execSync","visibility":"private"}
{"file":"npm/install.js","name":"tmpFile","kind":"variable","line":[58,58],"tokens":"path destDir","visibility":"private"}
{"file":"npm/install.js","name":"extractZip","kind":"function","line":[64,73],"tokens":"execSync path tmpFile fs buffer destDir","visibility":"private"}
{"file":"npm/install.js","name":"tmpFile","kind":"variable","line":[66,66],"tokens":"destDir path","visibility":"private"}
{"file":"npm/install.js","name":"main","kind":"function","line":[75,101],"tokens":"__dirname path target binDir process VERSION fs getTarget binName url buffer download getArchiveUrl binPath extractZip extractTarGz","visibility":"private"}
{"file":"npm/install.js","name":"target","kind":"variable","line":[76,76],"tokens":"getTarget","visibility":"private"}
{"file":"npm/install.js","name":"url","kind":"variable","line":[77,77],"tokens":"target getArchiveUrl","visibility":"private"}
{"file":"npm/install.js","name":"binDir","kind":"variable","line":[78,78],"tokens":"path __dirname","visibility":"private"}
{"file":"npm/install.js","name":"binName","kind":"variable","line":[81,81],"tokens":"process","visibility":"private"}
{"file":"npm/install.js","name":"binPath","kind":"variable","line":[82,82],"tokens":"path binDir binName","visibility":"private"}
{"file":"npm/install.js","name":"buffer","kind":"variable","line":[91,91],"tokens":"download url","visibility":"private"}
{"file":"npm/run.js","name":"path","kind":"variable","line":[5,5],"visibility":"private"}
{"file":"npm/run.js","name":"ext","kind":"variable","line":[7,7],"tokens":"process","visibility":"private"}
{"file":"npm/run.js","name":"bin","kind":"variable","line":[8,8],"tokens":"__dirname path ext","visibility":"private"}
{"file":"python/codeix/__init__.py","name":"os","kind":"import","line":[3,3],"visibility":"private"}
{"file":"python/codeix/__init__.py","name":"platform","kind":"import","line":[4,4],"visibility":"private"}
{"file":"python/codeix/__init__.py","name":"stat","kind":"import","line":[5,5],"visibility":"private"}
{"file":"python/codeix/__init__.py","name":"subprocess","kind":"import","line":[6,6],"visibility":"private"}
{"file":"python/codeix/__init__.py","name":"sys","kind":"import","line":[7,7],"visibility":"private"}
{"file":"python/codeix/__init__.py","name":"tarfile","kind":"import","line":[8,8],"visibility":"private"}
{"file":"python/codeix/__init__.py","name":"tempfile","kind":"import","line":[9,9],"visibility":"private"}
{"file":"python/codeix/__init__.py","name":"zipfile","kind":"import","line":[10,10],"visibility":"private"}
{"file":"python/codeix/__init__.py","name":"io.BytesIO","kind":"import","line":[11,11],"visibility":"private"}
{"file":"python/codeix/__init__.py","name":"pathlib.Path","kind":"import","line":[12,12],"visibility":"private"}
{"file":"python/codeix/__init__.py","name":"urllib.request.urlopen","kind":"import","line":[13,13],"visibility":"private"}
{"file":"python/codeix/__init__.py","name":"urllib.request.Request","kind":"import","line":[13,13],"visibility":"private"}
{"file":"python/codeix/__init__.py","name":"__version__","kind":"variable","line":[15,15],"visibility":"internal"}
{"file":"python/codeix/__init__.py","name":"REPO","kind":"constant","line":[17,17],"visibility":"public"}
{"file":"python/codeix/__init__.py","name":"PLATFORM_MAP","kind":"constant","line":[19,23],"visibility":"public"}
{"file":"python/codeix/__init__.py","name":"_cache_dir","kind":"function","line":[26,34],"tokens":"platform sys os Path get environ home base","visibility":"internal"}
{"file":"python/codeix/__init__.py","name":"_cache_dir.base","kind":"variable","line":[29,29],"parent":"_cache_dir","visibility":"public"}
{"file":"python/codeix/__init__.py","name":"_cache_dir.base","kind":"variable","line":[31,31],"parent":"_cache_dir","visibility":"public"}
{"file":"python/codeix/__init__.py","name":"_cache_dir.base","kind":"variable","line":[33,33],"parent":"_cache_dir","visibility":"public"}
{"file":"python/codeix/__init__.py","name":"_get_target","kind":"function","line":[37,44],"tokens":"system sys print stderr keys key platform machine exit PLATFORM_MAP get file target list","visibility":"internal"}
{"file":"python/codeix/__init__.py","name":"_get_target.key","kind":"variable","line":[38,38],"parent":"_get_target","visibility":"public"}
{"file":"python/codeix/__init__.py","name":"_get_target.target","kind":"variable","line":[39,39],"parent":"_get_target","visibility":"public"}
{"file":"python/codeix/__init__.py","name":"_download","kind":"function","line":[47,50],"tokens":"req __version__ headers urlopen Request resp url read","visibility":"internal"}
{"file":"python/codeix/__init__.py","name":"_download.req","kind":"variable","line":[48,48],"parent":"_download","visibility":"public"}
{"file":"python/codeix/__init__.py","name":"_ensure_binary","kind":"function","line":[53,95],"tokens":"cache sys st_mode read bin_path mkdir parents print __version__ platform archive_ext url _download zf member file extractfile exit stat BytesIO namelist tarfile getmembers zipfile S_IXGRP S_IXOTH data name _get_target fileobj mode target exists endswith write_bytes ZipFile open chmod ext S_IEXEC stderr REPO _cache_dir exist_ok tf","visibility":"internal"}
{"file":"python/codeix/__init__.py","name":"_ensure_binary.target","kind":"variable","line":[55,55],"parent":"_ensure_binary","visibility":"public"}
{"file":"python/codeix/__init__.py","name":"_ensure_binary.ext","kind":"variable","line":[56,56],"parent":"_ensure_binary","visibility":"public"}
{"file":"python/codeix/__init__.py","name":"_ensure_binary.cache","kind":"variable","line":[57,57],"parent":"_ensure_binary","visibility":"public"}
{"file":"python/codeix/__init__.py","name":"_ensure_binary.bin_path","kind":"variable","line":[58,58],"parent":"_ensure_binary","visibility":"public"}
{"file":"python/codeix/__init__.py","name":"_ensure_binary.archive_ext","kind":"variable","line":[63,63],"parent":"_ensure_binary","visibility":"public"}
{"file":"python/codeix/__init__.py","name":"_ensure_binary.url","kind":"variable","line":[64,64],"parent":"_ensure_binary","visibility":"public"}
{"file":"python/codeix/__init__.py","name":"_ensure_binary.data","kind":"variable","line":[67,67],"parent":"_ensure_binary","visibility":"public"}
{"file":"python/codeix/__init__.py","name":"_ensure_binary.f","kind":"variable","line":[81,81],"parent":"_ensure_binary","visibility":"public"}
{"file":"python/codeix/__init__.py","name":"main","kind":"function","line":[98,108],"tokens":"stderr sys subprocess exit str run result print file returncode __version__ argv bin_path Exception REPO _ensure_binary","visibility":"public"}
{"file":"python/codeix/__init__.py","name":"main.bin_path","kind":"variable","line":[101,101],"parent":"main","visibility":"public"}
{"file":"python/codeix/__init__.py","name":"main.result","kind":"variable","line":[107,107],"parent":"main","visibility":"public"}
{"file":"python/codeix/__main__.py","name":"codeix.main","kind":"import","line":[3,3],"visibility":"private"}
{"file":"scripts/bench.py","name":"bench.index_speed","kind":"import","line":[16,16],"visibility":"private"}
{"file":"scripts/bench.py","name":"bench.search_quality","kind":"import","line":[16,16],"visibility":"private"}
{"file":"scripts/bench.py","name":"bench.search_value","kind":"import","line":[16,16],"visibility":"private"}
{"file":"scripts/bench.py","name":"bench.__main__.main","kind":"import","line":[17,17],"visibility":"private"}
{"file":"scripts/bench/__init__.py","name":"..ab","kind":"import","line":[3,3],"visibility":"private"}
{"file":"scripts/bench/__init__.py","name":"..index_speed","kind":"import","line":[3,3],"visibility":"private"}
{"file":"scripts/bench/__init__.py","name":"..search_quality","kind":"import","line":[3,3],"visibility":"private"}
{"file":"scripts/bench/__init__.py","name":"..search_value","kind":"import","line":[3,3],"visibility":"private"}
{"file":"scripts/bench/__init__.py","name":".common.CACHE_DIR","kind":"import","line":[4,4],"visibility":"private"}
{"file":"scripts/bench/__init__.py","name":".common.REPOS","kind":"import","line":[4,4],"visibility":"private"}
{"file":"scripts/bench/__init__.py","name":".common.Repo","kind":"import","line":[4,4],"visibility":"private"}
{"file":"scripts/bench/__init__.py","name":"__all__","kind":"variable","line":[6,14],"visibility":"internal"}
{"file":"scripts/bench/__main__.py","name":"argparse","kind":"import","line":[3,3],"visibility":"private"}
{"file":"scripts/bench/__main__.py","name":"json","kind":"import","line":[4,4],"visibility":"private"}
{"file":"scripts/bench/__main__.py","name":"shutil","kind":"import","line":[5,5],"visibility":"private"}
{"file":"scripts/bench/__main__.py","name":"datetime.datetime","kind":"import","line":[6,6],"visibility":"private"}
{"file":"scripts/bench/__main__.py","name":"pathlib.Path","kind":"import","line":[7,7],"visibility":"private"}
{"file":"scripts/bench/__main__.py","name":"..index_speed","kind":"import","line":[9,9],"visibility":"private"}
{"file":"scripts/bench/__main__.py","name":"..search_quality","kind":"import","line":[9,9],"visibility":"private"}
{"file":"scripts/bench/__main__.py","name":"..search_value","kind":"import","line":[9,9],"visibility":"private"}
{"file":"scripts/bench/__main__.py","name":".ab.parse_judge_winner","kind":"import","line":[10,10],"visibility":"private"}
{"file":"scripts/bench/__main__.py","name":".common.RESPONSE_CACHE_DIR","kind":"import","line":[11,11],"visibility":"private"}
{"file":"scripts/bench/__main__.py","name":".common.log","kind":"import","line":[11,11],"visibility":"private"}
{"file":"scripts/bench/__main__.py","name":".common.log_success","kind":"import","line":[11,11],"visibility":"private"}
{"file":"scripts/bench/__main__.py","name":"export_results","kind":"function","line":[14,59],"tokens":"indent results write_text parse_judge_winner log_success get winner _extract_reason report now output config_name tests len Path summary log json dumps append datetime output_path isoformat","visibility":"public"}
{"file":"scripts/bench/__main__.py","name":"export_results.tests","kind":"variable","line":[20,20],"parent":"export_results","visibility":"public"}
{"file":"scripts/bench/__main__.py","name":"export_results.summary","kind":"variable","line":[21,21],"parent":"export_results","visibility":"public"}
{"file":"scripts/bench/__main__.py","name":"export_results.q","kind":"variable","line":[24,24],"parent":"export_results","visibility":"public"}
{"file":"scripts/bench/__main__.py","name":"export_results.winner","kind":"variable","line":[25,25],"parent":"export_results","visibility":"public"}
{"file":"scripts/bench/__main__.py","name":"export_results.report","kind":"variable","line":[50,55],"parent":"export_results","visibility":"public"}
{"file":"scripts/bench/__main__.py","name":"export_results.output","kind":"variable","line":[57,57],"parent":"export_results","visibility":"public"}
{"file":"scripts/bench/__main__.py","name":"_extract_reason","kind":"function","line":[62,85],"tokens":"structured judge isinstance result_text loads get json JSONDecodeError re dict match search group str","visibility":"internal"}
{"file":"scripts/bench/__main__.py","name":"_extract_reason.structured","kind":"variable","line":[67,67],"parent":"_extract_reason","visibility":"public"}
{"file":"scripts/bench/__main__.py","name":"_extract_reason.result_text","kind":"variable","line":[71,71],"parent":"_extract_reason","visibility":"public"}
{"file":"scripts/bench/__main__.py","name":"re","kind":"import","line":[81,81],"visibility":"private"}
{"file":"scripts/bench/__main__.py","name":"_extract_reason.match","kind":"variable","line":[82,82],"parent":"_extract_reason","visibility":"public"}
{"file":"scripts/bench/__main__.py","name":"main","kind":"function","line":[88,130],"tokens":"parser RawDescriptionHelpFormatter add_argument log formatter_class help description run search_quality shutil index_speed rmtree action question export export_results RESPONSE_CACHE_DIR choices metavar search_value ArgumentParser argparse command epilog log_success exists parse_args verbose results","visibility":"public"}
{"file":"scripts/bench/__main__.py","name":"main.parser","kind":"variable","line":[89,107],"parent":"main","visibility":"public"}
{"file":"scripts/bench/__main__.py","name":"main.args","kind":"variable","line":[113,113],"parent":"main","visibility":"public"}
{"file":"scripts/bench/__main__.py","name":"main.results","kind":"variable","line":[118,118],"parent":"main","visibility":"public"}
{"file":"scripts/bench/__main__.py","name":"main.results","kind":"variable","line":[122,122],"parent":"main","visibility":"public"}
{"file":"scripts/bench/ab.py","name":"asyncio","kind":"import","line":[3,3],"visibility":"private"}
{"file":"scripts/bench/ab.py","name":"atexit","kind":"import","line":[4,4],"visibility":"private"}
{"file":"scripts/bench/ab.py","name":"json","kind":"import","line":[5,5],"visibility":"private"}
{"file":"scripts/bench/ab.py","name":"os","kind":"import","line":[6,6],"visibility":"private"}
{"file":"scripts/bench/ab.py","name":"re","kind":"import","line":[7,7],"visibility":"private"}
{"file":"scripts/bench/ab.py","name":"shutil","kind":"import","line":[8,8],"visibility":"private"}
{"file":"scripts/bench/ab.py","name":"sys","kind":"import","line":[9,9],"visibility":"private"}
{"file":"scripts/bench/ab.py","name":"dataclasses.dataclass","kind":"import","line":[10,10],"visibility":"private"}
{"file":"scripts/bench/ab.py","name":"pathlib.Path","kind":"import","line":[11,11],"visibility":"private"}
{"file":"scripts/bench/ab.py","name":"typing.Callable","kind":"import","line":[12,12],"visibility":"private"}
{"file":"scripts/bench/ab.py","name":".common.CYAN","kind":"import","line":[14,26],"visibility":"private"}
{"file":"scripts/bench/ab.py","name":".common.NC","kind":"import","line":[14,26],"visibility":"private"}
{"file":"scripts/bench/ab.py","name":".common.RunContext","kind":"import","line":[14,26],"visibility":"private"}
{"file":"scripts/bench/ab.py","name":".common.create_run_context","kind":"import","line":[14,26],"visibility":"private"}
{"file":"scripts/bench/ab.py","name":".common.delete_cached_response","kind":"import","line":[14,26],"visibility":"private"}
{"file":"scripts/bench/ab.py","name":".common.get_cache_key_from_cmd","kind":"import","line":[14,26],"visibility":"private"}
{"file":"scripts/bench/ab.py","name":".common.get_cached_response","kind":"import","line":[14,26],"visibility":"private"}
{"file":"scripts/bench/ab.py","name":".common.log","kind":"import","line":[14,26],"visibility":"private"}
{"file":"scripts/bench/ab.py","name":".common.log_error","kind":"import","line":[14,26],"visibility":"private"}
{"file":"scripts/bench/ab.py","name":".common.log_success","kind":"import","line":[14,26],"visibility":"private"}
{"file":"scripts/bench/ab.py","name":".common.save_cached_response","kind":"import","line":[14,26],"visibility":"private"}
{"file":"scripts/bench/ab.py","name":"MAX_PARALLEL_QUESTIONS","kind":"constant","line":[29,29],"visibility":"public"}
{"file":"scripts/bench/ab.py","name":"build_codeix_cmd","kind":"function","line":[32,48],"tokens":"mcp_config prompt max_turns str","visibility":"public"}
{"file":"scripts/bench/ab.py","name":"build_claude_cmd","kind":"function","line":[51,61],"tokens":"str prompt max_turns","visibility":"public"}
{"file":"scripts/bench/ab.py","name":"build_mcp_config","kind":"function","line":[64,77],"tokens":"json dumps bin_path","visibility":"public"}
{"file":"scripts/bench/ab.py","name":"build_prompt","kind":"function","line":[80,82],"tokens":"question project","visibility":"public"}
{"file":"scripts/bench/ab.py","name":"ABConfig","kind":"class","line":[86,102],"tokens":"name extra_judge_fields RunContext setup_run label_b title tuple list setup_a bool str Callable setup_b label_a dict Path get_commands","visibility":"public"}
{"file":"scripts/bench/ab.py","name":"ABConfig.name","kind":"variable","line":[88,88],"parent":"ABConfig","visibility":"public"}
{"file":"scripts/bench/ab.py","name":"ABConfig.label_a","kind":"variable","line":[89,89],"parent":"ABConfig","visibility":"public"}
{"file":"scripts/bench/ab.py","name":"ABConfig.label_b","kind":"variable","line":[90,90],"parent":"ABConfig","visibility":"public"}
{"file":"scripts/bench/ab.py","name":"ABConfig.title","kind":"variable","line":[91,91],"parent":"ABConfig","visibility":"public"}
{"file":"scripts/bench/ab.py","name":"ABConfig.setup_run","kind":"variable","line":[94,94],"parent":"ABConfig","visibility":"public"}
{"file":"scripts/bench/ab.py","name":"ABConfig.get_commands","kind":"variable","line":[97,97],"parent":"ABConfig","visibility":"public"}
{"file":"scripts/bench/ab.py","name":"ABConfig.setup_a","kind":"variable","line":[99,99],"parent":"ABConfig","visibility":"public"}
{"file":"scripts/bench/ab.py","name":"ABConfig.setup_b","kind":"variable","line":[100,100],"parent":"ABConfig","visibility":"public"}
{"file":"scripts/bench/ab.py","name":"ABConfig.extra_judge_fields","kind":"variable","line":[102,102],"parent":"ABConfig","visibility":"public"}
{"file":"scripts/bench/ab.py","name":"parse_judge_winner","kind":"function","line":[105,135],"tokens":"loads IGNORECASE result_text json upper match dict str JSONDecodeError search re judge structured isinstance group get","visibility":"public"}
{"file":"scripts/bench/ab.py","name":"parse_judge_winner.structured","kind":"variable","line":[110,110],"parent":"parse_judge_winner","visibility":"public"}
{"file":"scripts/bench/ab.py","name":"parse_judge_winner.result_text","kind":"variable","line":[114,114],"parent":"parse_judge_winner","visibility":"public"}
{"file":"scripts/bench/ab.py","name":"parse_judge_winner.match","kind":"variable","line":[124,124],"parent":"parse_judge_winner","visibility":"public"}
{"file":"scripts/bench/ab.py","name":"parse_judge_winner.match","kind":"variable","line":[128,128],"parent":"parse_judge_winner","visibility":"public"}
{"file":"scripts/bench/ab.py","name":"parse_judge_winner.match","kind":"variable","line":[132,132],"parent":"parse_judge_winner","visibility":"public"}
{"file":"scripts/bench/ab.py","name":"run_subprocess","kind":"function","line":[138,172],"tokens":"copy stdout CancelledError os create_subprocess_exec loads decode Exception json proc stdin str get JSONDecodeError bin_dir stderr stdout_str communicate stderr_str DEVNULL cmd asyncio cwd start_new_session env environ subprocess PIPE terminate","visibility":"public"}
{"file":"scripts/bench/ab.py","name":"subprocess","kind":"import","line":[143,143],"visibility":"private"}
{"file":"scripts/bench/ab.py","name":"run_subprocess.env","kind":"variable","line":[146,146],"parent":"run_subprocess","visibility":"public"}
{"file":"scripts/bench/ab.py","name":"run_subprocess.proc","kind":"variable","line":[151,159],"parent":"run_subprocess","visibility":"public"}
{"file":"scripts/bench/ab.py","name":"run_subprocess.stdout_str","kind":"variable","line":[161,161],"parent":"run_subprocess","visibility":"public"}
{"file":"scripts/bench/ab.py","name":"run_subprocess.stderr_str","kind":"variable","line":[162,162],"parent":"run_subprocess","visibility":"public"}
{"file":"scripts/bench/ab.py","name":"run_question","kind":"function","line":[175,368],"tokens":"get_cache_key_from_cmd run_subprocess delete_cached_response judge_schema result_text idx dict gather cache_key_b cost_b result get_commands log cwd_a response save_cached_response label_b judge_cmd response_b response_a isinstance lower cmd_b append log_error response_b_text setup_a tasks label_a cached_a startswith result_file get resp indent cached_judge_flag judge_cache_key setup_b extra_judge_fields structured error_a results cached_b cmd_a error_b json config cost_a ctx results_dir judge_response error_text write_text judge_prompt cache_key_a cwd_b cost_info has_winner get_cached_response asyncio create_task has_error subtype str cached_judge response_a_text bin_dir dumps","visibility":"public"}
{"file":"scripts/bench/ab.py","name":"run_question.cache_key_a","kind":"variable","line":[192,192],"parent":"run_question","visibility":"public"}
{"file":"scripts/bench/ab.py","name":"run_question.cache_key_b","kind":"variable","line":[193,193],"parent":"run_question","visibility":"public"}
{"file":"scripts/bench/ab.py","name":"run_question.cached_a","kind":"variable","line":[195,195],"parent":"run_question","visibility":"public"}
{"file":"scripts/bench/ab.py","name":"run_question.cached_b","kind":"variable","line":[196,196],"parent":"run_question","visibility":"public"}
{"file":"scripts/bench/ab.py","name":"run_question.response_a","kind":"variable","line":[201,201],"parent":"run_question","visibility":"public"}
{"file":"scripts/bench/ab.py","name":"run_question.response_b","kind":"variable","line":[202,202],"parent":"run_question","visibility":"public"}
{"file":"scripts/bench/ab.py","name":"run_question.tasks","kind":"variable","line":[213,213],"parent":"run_question","visibility":"public"}
{"file":"scripts/bench/ab.py","name":"run_question.results","kind":"variable","line":[220,220],"parent":"run_question","visibility":"public"}
{"file":"scripts/bench/ab.py","name":"run_question.idx","kind":"variable","line":[221,221],"parent":"run_question","visibility":"public"}
{"file":"scripts/bench/ab.py","name":"run_question.response_a","kind":"variable","line":[223,223],"parent":"run_question","visibility":"public"}
{"file":"scripts/bench/ab.py","name":"run_question.response_a","kind":"variable","line":[226,226],"parent":"run_question","visibility":"public"}
{"file":"scripts/bench/ab.py","name":"run_question.response_b","kind":"variable","line":[228,228],"parent":"run_question","visibility":"public"}
{"file":"scripts/bench/ab.py","name":"run_question.response_b","kind":"variable","line":[230,230],"parent":"run_question","visibility":"public"}
{"file":"scripts/bench/ab.py","name":"run_question.response_a","kind":"variable","line":[232,232],"parent":"run_question","visibility":"public"}
{"file":"scripts/bench/ab.py","name":"run_question.response_b","kind":"variable","line":[233,233],"parent":"run_question","visibility":"public"}
{"file":"scripts/bench/ab.py","name":"run_question.has_error","kind":"method","line":[242,254],"parent":"run_question","tokens":"resp result subtype startswith str lower isinstance get","visibility":"public"}
{"file":"scripts/bench/ab.py","name":"run_question.has_error.subtype","kind":"variable","line":[244,244],"parent":"run_question.has_error","visibility":"public"}
{"file":"scripts/bench/ab.py","name":"run_question.has_error.result","kind":"variable","line":[248,248],"parent":"run_question.has_error","visibility":"public"}
{"file":"scripts/bench/ab.py","name":"run_question.error_a","kind":"variable","line":[257,257],"parent":"run_question","visibility":"public"}
{"file":"scripts/bench/ab.py","name":"run_question.error_b","kind":"variable","line":[258,258],"parent":"run_question","visibility":"public"}
{"file":"scripts/bench/ab.py","name":"run_question.result","kind":"variable","line":[266,278],"parent":"run_question","visibility":"public"}
{"file":"scripts/bench/ab.py","name":"run_question.result_file","kind":"variable","line":[279,279],"parent":"run_question","visibility":"public"}
{"file":"scripts/bench/ab.py","name":"run_question.response_a_text","kind":"variable","line":[286,286],"parent":"run_question","visibility":"public"}
{"file":"scripts/bench/ab.py","name":"run_question.response_b_text","kind":"variable","line":[287,287],"parent":"run_question","visibility":"public"}
{"file":"scripts/bench/ab.py","name":"run_question.cost_a","kind":"variable","line":[290,290],"parent":"run_question","visibility":"public"}
{"file":"scripts/bench/ab.py","name":"run_question.cost_b","kind":"variable","line":[291,291],"parent":"run_question","visibility":"public"}
{"file":"scripts/bench/ab.py","name":"run_question.cost_info","kind":"variable","line":[292,292],"parent":"run_question","visibility":"public"}
{"file":"scripts/bench/ab.py","name":"run_question.cost_info","kind":"variable","line":[294,294],"parent":"run_question","visibility":"public"}
{"file":"scripts/bench/ab.py","name":"run_question.judge_prompt","kind":"variable","line":[296,309],"parent":"run_question","visibility":"public"}
{"file":"scripts/bench/ab.py","name":"run_question.judge_schema","kind":"variable","line":[312,312],"parent":"run_question","visibility":"public"}
{"file":"scripts/bench/ab.py","name":"run_question.judge_cmd","kind":"variable","line":[313,319],"parent":"run_question","visibility":"public"}
{"file":"scripts/bench/ab.py","name":"run_question.judge_cache_key","kind":"variable","line":[320,320],"parent":"run_question","visibility":"public"}
{"file":"scripts/bench/ab.py","name":"run_question.cached_judge","kind":"variable","line":[321,321],"parent":"run_question","visibility":"public"}
{"file":"scripts/bench/ab.py","name":"run_question.response","kind":"variable","line":[325,325],"parent":"run_question","visibility":"public"}
{"file":"scripts/bench/ab.py","name":"run_question.structured","kind":"variable","line":[326,326],"parent":"run_question","visibility":"public"}
{"file":"scripts/bench/ab.py","name":"run_question.result_text","kind":"variable","line":[327,327],"parent":"run_question","visibility":"public"}
{"file":"scripts/bench/ab.py","name":"run_question.has_winner","kind":"variable","line":[329,329],"parent":"run_question","visibility":"public"}
{"file":"scripts/bench/ab.py","name":"run_question.cached_judge","kind":"variable","line":[332,332],"parent":"run_question","visibility":"public"}
{"file":"scripts/bench/ab.py","name":"run_question.judge_response","kind":"variable","line":[335,335],"parent":"run_question","visibility":"public"}
{"file":"scripts/bench/ab.py","name":"run_question.cached_judge_flag","kind":"variable","line":[336,336],"parent":"run_question","visibility":"public"}
{"file":"scripts/bench/ab.py","name":"run_question.judge_response","kind":"variable","line":[339,339],"parent":"run_question","visibility":"public"}
{"file":"scripts/bench/ab.py","name":"run_question.structured","kind":"variable","line":[341,341],"parent":"run_question","visibility":"public"}
{"file":"scripts/bench/ab.py","name":"run_question.error_text","kind":"variable","line":[346,346],"parent":"run_question","visibility":"public"}
{"file":"scripts/bench/ab.py","name":"run_question.cached_judge_flag","kind":"variable","line":[348,348],"parent":"run_question","visibility":"public"}
{"file":"scripts/bench/ab.py","name":"run_question.result","kind":"variable","line":[350,362],"parent":"run_question","visibility":"public"}
{"file":"scripts/bench/ab.py","name":"run_question.result_file","kind":"variable","line":[364,364],"parent":"run_question","visibility":"public"}
{"file":"scripts/bench/ab.py","name":"run_async","kind":"function","line":[371,494],"tokens":"bin_a join len rmtree cost_b cache_hits_a append create_task parse_judge_winner results cancel exists NC run_with_sem json loads cost_a_str a_wins ignore_errors title dict tasks get question_id read_text Path __file__ label_a create_run_context MAX_PARALLEL_QUESTIONS total_cost_a cache_hits_judge error_parts exit asyncio run_dir log task config overall b_wins Semaphore run_question sem errors questions cost_b_str parent cleanup label_b wins ctx setup_run wins_summary sum name register winner total_cost_b error_info log_error sys shutil atexit CancelledError cost_a bin_b gather CYAN print questions_file cache_hits_b","visibility":"public"}
{"file":"scripts/bench/ab.py","name":"run_async.questions_file","kind":"variable","line":[376,376],"parent":"run_async","visibility":"public"}
{"file":"scripts/bench/ab.py","name":"run_async.questions","kind":"variable","line":[382,382],"parent":"run_async","visibility":"public"}
{"file":"scripts/bench/ab.py","name":"run_async.questions","kind":"variable","line":[384,384],"parent":"run_async","visibility":"public"}
{"file":"scripts/bench/ab.py","name":"run_async.ctx","kind":"variable","line":[390,390],"parent":"run_async","visibility":"public"}
{"file":"scripts/bench/ab.py","name":"run_async.cleanup","kind":"method","line":[392,393],"parent":"run_async","tokens":"shutil run_dir rmtree ctx ignore_errors","visibility":"public"}
{"file":"scripts/bench/ab.py","name":"run_async.sem","kind":"variable","line":[407,407],"parent":"run_async","visibility":"public"}
{"file":"scripts/bench/ab.py","name":"run_async.run_with_sem","kind":"method","line":[409,411],"parent":"run_async","tokens":"config sem ctx run_question","visibility":"public"}
{"file":"scripts/bench/ab.py","name":"run_async.tasks","kind":"variable","line":[414,414],"parent":"run_async","visibility":"public"}
{"file":"scripts/bench/ab.py","name":"run_async.results","kind":"variable","line":[417,417],"parent":"run_async","visibility":"public"}
{"file":"scripts/bench/ab.py","name":"run_async.results","kind":"variable","line":[418,418],"parent":"run_async","visibility":"public"}
{"file":"scripts/bench/ab.py","name":"run_async.wins","kind":"variable","line":[440,440],"parent":"run_async","visibility":"public"}
{"file":"scripts/bench/ab.py","name":"run_async.total_cost_a","kind":"variable","line":[441,441],"parent":"run_async","visibility":"public"}
{"file":"scripts/bench/ab.py","name":"run_async.total_cost_b","kind":"variable","line":[442,442],"parent":"run_async","visibility":"public"}
{"file":"scripts/bench/ab.py","name":"run_async.errors","kind":"variable","line":[443,443],"parent":"run_async","visibility":"public"}
{"file":"scripts/bench/ab.py","name":"run_async.winner","kind":"variable","line":[445,445],"parent":"run_async","visibility":"public"}
{"file":"scripts/bench/ab.py","name":"run_async.cost_a","kind":"variable","line":[453,453],"parent":"run_async","visibility":"public"}
{"file":"scripts/bench/ab.py","name":"run_async.cost_b","kind":"variable","line":[454,454],"parent":"run_async","visibility":"public"}
{"file":"scripts/bench/ab.py","name":"run_async.error_info","kind":"variable","line":[457,457],"parent":"run_async","visibility":"public"}
{"file":"scripts/bench/ab.py","name":"run_async.error_parts","kind":"variable","line":[460,460],"parent":"run_async","visibility":"public"}
{"file":"scripts/bench/ab.py","name":"run_async.error_info","kind":"variable","line":[465,465],"parent":"run_async","visibility":"public"}
{"file":"scripts/bench/ab.py","name":"run_async.a_wins","kind":"variable","line":[471,471],"parent":"run_async","visibility":"public"}
{"file":"scripts/bench/ab.py","name":"run_async.b_wins","kind":"variable","line":[472,472],"parent":"run_async","visibility":"public"}
{"file":"scripts/bench/ab.py","name":"run_async.wins_summary","kind":"variable","line":[473,473],"parent":"run_async","visibility":"public"}
{"file":"scripts/bench/ab.py","name":"run_async.cost_a_str","kind":"variable","line":[474,474],"parent":"run_async","visibility":"public"}
{"file":"scripts/bench/ab.py","name":"run_async.cost_b_str","kind":"variable","line":[475,475],"parent":"run_async","visibility":"public"}
{"file":"scripts/bench/ab.py","name":"run_async.overall","kind":"variable","line":[480,480],"parent":"run_async","visibility":"public"}
{"file":"scripts/bench/ab.py","name":"run_async.overall","kind":"variable","line":[482,482],"parent":"run_async","visibility":"public"}
{"file":"scripts/bench/ab.py","name":"run_async.overall","kind":"variable","line":[484,484],"parent":"run_async","visibility":"public"}
{"file":"scripts/bench/ab.py","name":"run_async.cache_hits_a","kind":"variable","line":[488,488],"parent":"run_async","visibility":"public"}
{"file":"scripts/bench/ab.py","name":"run_async.cache_hits_b","kind":"variable","line":[489,489],"parent":"run_async","visibility":"public"}
{"file":"scripts/bench/ab.py","name":"run_async.cache_hits_judge","kind":"variable","line":[490,490],"parent":"run_async","visibility":"public"}
{"file":"scripts/bench/ab.py","name":"run","kind":"function","line":[497,506],"tokens":"run_async question_id config KeyboardInterrupt print asyncio exit run sys","visibility":"public"}
{"file":"scripts/bench/common.py","name":"hashlib","kind":"import","line":[3,3],"visibility":"private"}
{"file":"scripts/bench/common.py","name":"json","kind":"import","line":[4,4],"visibility":"private"}
{"file":"scripts/bench/common.py","name":"os","kind":"import","line":[5,5],"visibility":"private"}
{"file":"scripts/bench/common.py","name":"shutil","kind":"import","line":[6,6],"visibility":"private"}
{"file":"scripts/bench/common.py","name":"subprocess","kind":"import","line":[7,7],"visibility":"private"}
{"file":"scripts/bench/common.py","name":"tempfile","kind":"import","line":[8,8],"visibility":"private"}
{"file":"scripts/bench/common.py","name":"dataclasses.dataclass","kind":"import","line":[9,9],"visibility":"private"}
{"file":"scripts/bench/common.py","name":"pathlib.Path","kind":"import","line":[10,10],"visibility":"private"}
{"file":"scripts/bench/common.py","name":"PROJECT_ROOT","kind":"constant","line":[13,13],"visibility":"public"}
{"file":"scripts/bench/common.py","name":"CACHE_DIR","kind":"constant","line":[17,17],"visibility":"public"}
{"file":"scripts/bench/common.py","name":"RESPONSE_CACHE_DIR","kind":"constant","line":[18,18],"visibility":"public"}
{"file":"scripts/bench/common.py","name":"RunContext","kind":"class","line":[22,29],"tokens":"repos Path repos_a run_dir results_dir bin_dir repos_b","visibility":"public"}
{"file":"scripts/bench/common.py","name":"RunContext.run_dir","kind":"variable","line":[24,24],"parent":"RunContext","visibility":"public"}
{"file":"scripts/bench/common.py","name":"RunContext.bin_dir","kind":"variable","line":[25,25],"parent":"RunContext","visibility":"public"}
{"file":"scripts/bench/common.py","name":"RunContext.repos","kind":"variable","line":[26,26],"parent":"RunContext","visibility":"public"}
{"file":"scripts/bench/common.py","name":"RunContext.repos_a","kind":"variable","line":[27,27],"parent":"RunContext","visibility":"public"}
{"file":"scripts/bench/common.py","name":"RunContext.repos_b","kind":"variable","line":[28,28],"parent":"RunContext","visibility":"public"}
{"file":"scripts/bench/common.py","name":"RunContext.results_dir","kind":"variable","line":[29,29],"parent":"RunContext","visibility":"public"}
{"file":"scripts/bench/common.py","name":"create_run_context","kind":"function","line":[32,48],"tokens":"repos bin_dir repos_b ctx Path prefix mkdir results_dir RunContext repos_a mkdtemp run_dir tempfile parents","visibility":"public"}
{"file":"scripts/bench/common.py","name":"create_run_context.run_dir","kind":"variable","line":[34,34],"parent":"create_run_context","visibility":"public"}
{"file":"scripts/bench/common.py","name":"create_run_context.ctx","kind":"variable","line":[35,42],"parent":"create_run_context","visibility":"public"}
{"file":"scripts/bench/common.py","name":"Repo","kind":"class","line":[52,57],"tokens":"str size notes url name lang","visibility":"public"}
{"file":"scripts/bench/common.py","name":"Repo.url","kind":"variable","line":[54,54],"parent":"Repo","visibility":"public"}
{"file":"scripts/bench/common.py","name":"Repo.lang","kind":"variable","line":[55,55],"parent":"Repo","visibility":"public"}
{"file":"scripts/bench/common.py","name":"Repo.size","kind":"variable","line":[56,56],"parent":"Repo","visibility":"public"}
{"file":"scripts/bench/common.py","name":"Repo.notes","kind":"variable","line":[57,57],"parent":"Repo","visibility":"public"}
{"file":"scripts/bench/common.py","name":"REPOS","kind":"constant","line":[60,74],"visibility":"public"}
{"file":"scripts/bench/common.py","name":"CYAN","kind":"constant","line":[77,77],"visibility":"public"}
{"file":"scripts/bench/common.py","name":"GREEN","kind":"constant","line":[78,78],"visibility":"public"}
{"file":"scripts/bench/common.py","name":"YELLOW","kind":"constant","line":[79,79],"visibility":"public"}
{"file":"scripts/bench/common.py","name":"RED","kind":"constant","line":[80,80],"visibility":"public"}
{"file":"scripts/bench/common.py","name":"BLUE","kind":"constant","line":[81,81],"visibility":"public"}
{"file":"scripts/bench/common.py","name":"NC","kind":"constant","line":[82,82],"visibility":"public"}
{"file":"scripts/bench/common.py","name":"log","kind":"function","line":[85,86],"tokens":"BLUE NC msg print","visibility":"public"}
{"file":"scripts/bench/common.py","name":"log_success","kind":"function","line":[89,90],"tokens":"print GREEN NC msg","visibility":"public"}
{"file":"scripts/bench/common.py","name":"log_error","kind":"function","line":[93,94],"tokens":"print RED msg NC","visibility":"public"}
{"file":"scripts/bench/common.py","name":"get_local_codeix","kind":"function","line":[97,102],"tokens":"PROJECT_ROOT exists str local_build","visibility":"public"}
{"file":"scripts/bench/common.py","name":"get_local_codeix.local_build","kind":"variable","line":[99,99],"parent":"get_local_codeix","visibility":"public"}
{"file":"scripts/bench/common.py","name":"get_codeix_bin","kind":"function","line":[105,110],"tokens":"get os environ from_env get_local_codeix","visibility":"public"}
{"file":"scripts/bench/common.py","name":"get_codeix_bin.from_env","kind":"variable","line":[107,107],"parent":"get_codeix_bin","visibility":"public"}
{"file":"scripts/bench/common.py","name":"get_short_path","kind":"function","line":[113,127],"tokens":"name ValueError str Path relative_to cwd path PROJECT_ROOT","visibility":"public"}
{"file":"scripts/bench/common.py","name":"get_short_path.p","kind":"variable","line":[115,115],"parent":"get_short_path","visibility":"public"}
{"file":"scripts/bench/common.py","name":"build_index","kind":"function","line":[130,150],"tokens":"index_file exists name log_error stderr log str run returncode repo_path codeix_bin capture_output subprocess result text cmd","visibility":"public"}
{"file":"scripts/bench/common.py","name":"build_index.index_file","kind":"variable","line":[135,135],"parent":"build_index","visibility":"public"}
{"file":"scripts/bench/common.py","name":"build_index.cmd","kind":"variable","line":[141,141],"parent":"build_index","visibility":"public"}
{"file":"scripts/bench/common.py","name":"build_index.cmd","kind":"variable","line":[143,143],"parent":"build_index","visibility":"public"}
{"file":"scripts/bench/common.py","name":"build_index.result","kind":"variable","line":[146,146],"parent":"build_index","visibility":"public"}
{"file":"scripts/bench/common.py","name":"clone_repo_to","kind":"function","line":[153,184],"tokens":"cwd result run str returncode parents subprocess log_error branch name repo extend parent capture_output gitmodules mkdir exist_ok log dest url exists cmd","visibility":"public"}
{"file":"scripts/bench/common.py","name":"clone_repo_to.cmd","kind":"variable","line":[162,162],"parent":"clone_repo_to","visibility":"public"}
{"file":"scripts/bench/common.py","name":"clone_repo_to.result","kind":"variable","line":[167,167],"parent":"clone_repo_to","visibility":"public"}
{"file":"scripts/bench/common.py","name":"clone_repo_to.gitmodules","kind":"variable","line":[175,175],"parent":"clone_repo_to","visibility":"public"}
{"file":"scripts/bench/common.py","name":"get_repo_by_name","kind":"function","line":[187,192],"tokens":"name repo REPOS","visibility":"public"}
{"file":"scripts/bench/common.py","name":"count_files","kind":"function","line":[195,202],"tokens":"parts ex exclude path rglob count is_file any","visibility":"public"}
{"file":"scripts/bench/common.py","name":"count_files.exclude","kind":"variable","line":[197,197],"parent":"count_files","visibility":"public"}
{"file":"scripts/bench/common.py","name":"count_files.count","kind":"variable","line":[198,198],"parent":"count_files","visibility":"public"}
{"file":"scripts/bench/common.py","name":"count_lines","kind":"function","line":[205,216],"tokens":"is_file extensions path parts read_text Exception splitlines ex any exclude total len suffix errors rglob","visibility":"public"}
{"file":"scripts/bench/common.py","name":"count_lines.extensions","kind":"variable","line":[207,207],"parent":"count_lines","visibility":"public"}
{"file":"scripts/bench/common.py","name":"count_lines.exclude","kind":"variable","line":[208,208],"parent":"count_lines","visibility":"public"}
{"file":"scripts/bench/common.py","name":"count_lines.total","kind":"variable","line":[209,209],"parent":"count_lines","visibility":"public"}
{"file":"scripts/bench/common.py","name":"get_binary_version","kind":"function","line":[223,227],"tokens":"hashlib is_file hexdigest bin_path sha256 read_bytes exists","visibility":"public"}
{"file":"scripts/bench/common.py","name":"get_npm_codeix_version","kind":"function","line":[230,243],"tokens":"capture_output returncode result strip text Exception timeout run stdout subprocess","visibility":"public"}
{"file":"scripts/bench/common.py","name":"get_npm_codeix_version.result","kind":"variable","line":[233,238],"parent":"get_npm_codeix_version","visibility":"public"}
{"file":"scripts/bench/common.py","name":"get_claude_version","kind":"function","line":[246,259],"tokens":"subprocess result run returncode capture_output stdout text Exception timeout strip","visibility":"public"}
{"file":"scripts/bench/common.py","name":"get_claude_version.result","kind":"variable","line":[249,254],"parent":"get_claude_version","visibility":"public"}
{"file":"scripts/bench/common.py","name":"get_cache_key_from_cmd","kind":"function","line":[262,271],"tokens":"hashlib cmd_str cmd encode hexdigest join sha256","visibility":"public"}
{"file":"scripts/bench/common.py","name":"get_cache_key_from_cmd.cmd_str","kind":"variable","line":[270,270],"parent":"get_cache_key_from_cmd","visibility":"public"}
{"file":"scripts/bench/common.py","name":"get_cached_response","kind":"function","line":[274,291],"tokens":"cache_file cache_key OSError read_text RESPONSE_CACHE_DIR unlink JSONDecodeError json loads data exists","visibility":"public"}
{"file":"scripts/bench/common.py","name":"get_cached_response.cache_file","kind":"variable","line":[280,280],"parent":"get_cached_response","visibility":"public"}
{"file":"scripts/bench/common.py","name":"get_cached_response.data","kind":"variable","line":[283,283],"parent":"get_cached_response","visibility":"public"}
{"file":"scripts/bench/common.py","name":"delete_cached_response","kind":"function","line":[294,298],"tokens":"unlink cache_file RESPONSE_CACHE_DIR cache_key exists","visibility":"public"}
{"file":"scripts/bench/common.py","name":"delete_cached_response.cache_file","kind":"variable","line":[296,296],"parent":"delete_cached_response","visibility":"public"}
{"file":"scripts/bench/common.py","name":"save_cached_response","kind":"function","line":[301,308],"tokens":"json mkdir response data parents cache_file dumps cache_key exist_ok metadata RESPONSE_CACHE_DIR write_text indent","visibility":"public"}
{"file":"scripts/bench/common.py","name":"save_cached_response.cache_file","kind":"variable","line":[304,304],"parent":"save_cached_response","visibility":"public"}
{"file":"scripts/bench/common.py","name":"save_cached_response.data","kind":"variable","line":[305,305],"parent":"save_cached_response","visibility":"public"}
{"file":"scripts/bench/index_speed.py","name":"atexit","kind":"import","line":[3,3],"visibility":"private"}
{"file":"scripts/bench/index_speed.py","name":"shutil","kind":"import","line":[4,4],"visibility":"private"}
{"file":"scripts/bench/index_speed.py","name":"subprocess","kind":"import","line":[5,5],"visibility":"private"}
{"file":"scripts/bench/index_speed.py","name":"sys","kind":"import","line":[6,6],"visibility":"private"}
{"file":"scripts/bench/index_speed.py","name":"time","kind":"import","line":[7,7],"visibility":"private"}
{"file":"scripts/bench/index_speed.py","name":".common.CYAN","kind":"import","line":[9,23],"visibility":"private"}
{"file":"scripts/bench/index_speed.py","name":".common.NC","kind":"import","line":[9,23],"visibility":"private"}
{"file":"scripts/bench/index_speed.py","name":".common.REPOS","kind":"import","line":[9,23],"visibility":"private"}
{"file":"scripts/bench/index_speed.py","name":".common.RunContext","kind":"import","line":[9,23],"visibility":"private"}
{"file":"scripts/bench/index_speed.py","name":".common.clone_repo_to","kind":"import","line":[9,23],"visibility":"private"}
{"file":"scripts/bench/index_speed.py","name":".common.count_files","kind":"import","line":[9,23],"visibility":"private"}
{"file":"scripts/bench/index_speed.py","name":".common.count_lines","kind":"import","line":[9,23],"visibility":"private"}
{"file":"scripts/bench/index_speed.py","name":".common.create_run_context","kind":"import","line":[9,23],"visibility":"private"}
{"file":"scripts/bench/index_speed.py","name":".common.get_codeix_bin","kind":"import","line":[9,23],"visibility":"private"}
{"file":"scripts/bench/index_speed.py","name":".common.get_repo_by_name","kind":"import","line":[9,23],"visibility":"private"}
{"file":"scripts/bench/index_speed.py","name":".common.log","kind":"import","line":[9,23],"visibility":"private"}
{"file":"scripts/bench/index_speed.py","name":".common.log_error","kind":"import","line":[9,23],"visibility":"private"}
{"file":"scripts/bench/index_speed.py","name":".common.log_success","kind":"import","line":[9,23],"visibility":"private"}
{"file":"scripts/bench/index_speed.py","name":"benchmark_repo","kind":"function","line":[26,64],"tokens":"ctx codeix_bin shutil path time rmtree name returncode str log_error exists files_per_sec size perf_counter repo repos count_lines lang result lines int count_files subprocess duration start verbose notes index_dir capture_output run files","visibility":"public"}
{"file":"scripts/bench/index_speed.py","name":"benchmark_repo.path","kind":"variable","line":[28,28],"parent":"benchmark_repo","visibility":"public"}
{"file":"scripts/bench/index_speed.py","name":"benchmark_repo.files","kind":"variable","line":[33,33],"parent":"benchmark_repo","visibility":"public"}
{"file":"scripts/bench/index_speed.py","name":"benchmark_repo.lines","kind":"variable","line":[34,34],"parent":"benchmark_repo","visibility":"public"}
{"file":"scripts/bench/index_speed.py","name":"benchmark_repo.index_dir","kind":"variable","line":[37,37],"parent":"benchmark_repo","visibility":"public"}
{"file":"scripts/bench/index_speed.py","name":"benchmark_repo.start","kind":"variable","line":[42,42],"parent":"benchmark_repo","visibility":"public"}
{"file":"scripts/bench/index_speed.py","name":"benchmark_repo.result","kind":"variable","line":[43,46],"parent":"benchmark_repo","visibility":"public"}
{"file":"scripts/bench/index_speed.py","name":"benchmark_repo.duration","kind":"variable","line":[47,47],"parent":"benchmark_repo","visibility":"public"}
{"file":"scripts/bench/index_speed.py","name":"benchmark_repo.files_per_sec","kind":"variable","line":[53,53],"parent":"benchmark_repo","visibility":"public"}
{"file":"scripts/bench/index_speed.py","name":"run","kind":"function","line":[67,135],"tokens":"name atexit copy2 perf_counter codeix_bin cleanup shutil bin_dir verbose repos create_run_context results REPOS NC clone_duration repo result notes get_codeix_bin bin_path register rmtree ignore_errors exit CYAN clone_repo_to size print sys log_success time lang start log_error ctx run_dir log append str benchmark_repo chmod","visibility":"public"}
{"file":"scripts/bench/index_speed.py","name":"run.codeix_bin","kind":"variable","line":[76,76],"parent":"run","visibility":"public"}
{"file":"scripts/bench/index_speed.py","name":"run.ctx","kind":"variable","line":[83,83],"parent":"run","visibility":"public"}
{"file":"scripts/bench/index_speed.py","name":"run.cleanup","kind":"method","line":[86,87],"parent":"run","tokens":"rmtree ignore_errors shutil ctx run_dir","visibility":"public"}
{"file":"scripts/bench/index_speed.py","name":"run.bin_path","kind":"variable","line":[91,91],"parent":"run","visibility":"public"}
{"file":"scripts/bench/index_speed.py","name":"run.codeix_bin","kind":"variable","line":[94,94],"parent":"run","visibility":"public"}
{"file":"scripts/bench/index_speed.py","name":"run.start","kind":"variable","line":[101,101],"parent":"run","visibility":"public"}
{"file":"scripts/bench/index_speed.py","name":"run.clone_duration","kind":"variable","line":[104,104],"parent":"run","visibility":"public"}
{"file":"scripts/bench/index_speed.py","name":"run.results","kind":"variable","line":[117,117],"parent":"run","visibility":"public"}
{"file":"scripts/bench/index_speed.py","name":"run.result","kind":"variable","line":[119,119],"parent":"run","visibility":"public"}
{"file":"scripts/bench/search_quality.py","name":"shutil","kind":"import","line":[3,3],"visibility":"private"}
{"file":"scripts/bench/search_quality.py","name":"pathlib.Path","kind":"import","line":[4,4],"visibility":"private"}
{"file":"scripts/bench/search_quality.py","name":".ab.ABConfig","kind":"import","line":[6,12],"visibility":"private"}
{"file":"scripts/bench/search_quality.py","name":".ab.build_codeix_cmd","kind":"import","line":[6,12],"visibility":"private"}
{"file":"scripts/bench/search_quality.py","name":".ab.build_mcp_config","kind":"import","line":[6,12],"visibility":"private"}
{"file":"scripts/bench/search_quality.py","name":".ab.build_prompt","kind":"import","line":[6,12],"visibility":"private"}
{"file":"scripts/bench/search_quality.py","name":".ab.run","kind":"import","line":[6,12],"alias":"run_ab","visibility":"private"}
{"file":"scripts/bench/search_quality.py","name":".common.RunContext","kind":"import","line":[13,21],"visibility":"private"}
{"file":"scripts/bench/search_quality.py","name":".common.clone_repo_to","kind":"import","line":[13,21],"visibility":"private"}
{"file":"scripts/bench/search_quality.py","name":".common.build_index","kind":"import","line":[13,21],"visibility":"private"}
{"file":"scripts/bench/search_quality.py","name":".common.get_binary_version","kind":"import","line":[13,21],"visibility":"private"}
{"file":"scripts/bench/search_quality.py","name":".common.get_codeix_bin","kind":"import","line":[13,21],"visibility":"private"}
{"file":"scripts/bench/search_quality.py","name":".common.get_npm_codeix_version","kind":"import","line":[13,21],"visibility":"private"}
{"file":"scripts/bench/search_quality.py","name":".common.get_repo_by_name","kind":"import","line":[13,21],"visibility":"private"}
{"file":"scripts/bench/search_quality.py","name":"run","kind":"function","line":[24,112],"tokens":"cmd_b label_a title run_ab question_id write_text repo list get_repo_by_name tuple build_prompt bin_dir RuntimeError version_b bool build_index cwd_a build_codeix_cmd config setup_b setup_a version_a label_b dest get_binary_version ctx get_npm_codeix_version name chmod ABConfig shutil setup_run RunContext copy2 get_codeix_bin dev_src repos_a repos_b get_commands bin_name_a bin_name_b str next cwd_b dict prompt build_mcp_config Path bin_b clone_repo_to bin_a glob cmd_a","visibility":"public"}
{"file":"scripts/bench/search_quality.py","name":"run.setup_run","kind":"method","line":[27,49],"parent":"run","tokens":"get_codeix_bin bin_dir shutil get_npm_codeix_version bin_b chmod ctx dev_src get_binary_version str Path version_b version_a bin_a copy2 RuntimeError write_text","visibility":"public"}
{"file":"scripts/bench/search_quality.py","name":"run.setup_run.dev_src","kind":"variable","line":[35,35],"parent":"run.setup_run","visibility":"public"}
{"file":"scripts/bench/search_quality.py","name":"run.setup_run.version_a","kind":"variable","line":[38,38],"parent":"run.setup_run","visibility":"public"}
{"file":"scripts/bench/search_quality.py","name":"run.setup_run.bin_a","kind":"variable","line":[39,39],"parent":"run.setup_run","visibility":"public"}
{"file":"scripts/bench/search_quality.py","name":"run.setup_run.version_b","kind":"variable","line":[44,44],"parent":"run.setup_run","visibility":"public"}
{"file":"scripts/bench/search_quality.py","name":"run.setup_run.bin_b","kind":"variable","line":[45,45],"parent":"run.setup_run","visibility":"public"}
{"file":"scripts/bench/search_quality.py","name":"run.setup_a","kind":"method","line":[51,61],"parent":"run","tokens":"dest get_repo_by_name repo ctx clone_repo_to str bin_dir next glob bin_a build_index repos_a","visibility":"public"}
{"file":"scripts/bench/search_quality.py","name":"run.setup_a.repo","kind":"variable","line":[53,53],"parent":"run.setup_a","visibility":"public"}
{"file":"scripts/bench/search_quality.py","name":"run.setup_a.dest","kind":"variable","line":[56,56],"parent":"run.setup_a","visibility":"public"}
{"file":"scripts/bench/search_quality.py","name":"run.setup_a.bin_a","kind":"variable","line":[60,60],"parent":"run.setup_a","visibility":"public"}
{"file":"scripts/bench/search_quality.py","name":"run.setup_b","kind":"method","line":[63,74],"parent":"run","tokens":"bin_b ctx dest bin_dir repo get_repo_by_name build_index repos_b clone_repo_to version_b str get_npm_codeix_version","visibility":"public"}
{"file":"scripts/bench/search_quality.py","name":"run.setup_b.repo","kind":"variable","line":[65,65],"parent":"run.setup_b","visibility":"public"}
{"file":"scripts/bench/search_quality.py","name":"run.setup_b.dest","kind":"variable","line":[68,68],"parent":"run.setup_b","visibility":"public"}
{"file":"scripts/bench/search_quality.py","name":"run.setup_b.version_b","kind":"variable","line":[72,72],"parent":"run.setup_b","visibility":"public"}
{"file":"scripts/bench/search_quality.py","name":"run.setup_b.bin_b","kind":"variable","line":[73,73],"parent":"run.setup_b","visibility":"public"}
{"file":"scripts/bench/search_quality.py","name":"run.get_commands","kind":"method","line":[76,100],"parent":"run","tokens":"bin_name_b build_mcp_config version_a cmd_b get_binary_version prompt build_codeix_cmd ctx version_b repos_a Path get_npm_codeix_version get_codeix_bin build_prompt cwd_a dev_src bin_name_a cwd_b cmd_a repos_b","visibility":"public"}
{"file":"scripts/bench/search_quality.py","name":"run.get_commands.dev_src","kind":"variable","line":[84,84],"parent":"run.get_commands","visibility":"public"}
{"file":"scripts/bench/search_quality.py","name":"run.get_commands.version_a","kind":"variable","line":[85,85],"parent":"run.get_commands","visibility":"public"}
{"file":"scripts/bench/search_quality.py","name":"run.get_commands.version_b","kind":"variable","line":[86,86],"parent":"run.get_commands","visibility":"public"}
{"file":"scripts/bench/search_quality.py","name":"run.get_commands.bin_name_a","kind":"variable","line":[89,89],"parent":"run.get_commands","visibility":"public"}
{"file":"scripts/bench/search_quality.py","name":"run.get_commands.bin_name_b","kind":"variable","line":[90,90],"parent":"run.get_commands","visibility":"public"}
{"file":"scripts/bench/search_quality.py","name":"run.get_commands.cwd_a","kind":"variable","line":[92,92],"parent":"run.get_commands","visibility":"public"}
{"file":"scripts/bench/search_quality.py","name":"run.get_commands.cwd_b","kind":"variable","line":[93,93],"parent":"run.get_commands","visibility":"public"}
{"file":"scripts/bench/search_quality.py","name":"run.get_commands.prompt","kind":"variable","line":[95,95],"parent":"run.get_commands","visibility":"public"}
{"file":"scripts/bench/search_quality.py","name":"run.get_commands.cmd_a","kind":"variable","line":[97,97],"parent":"run.get_commands","visibility":"public"}
{"file":"scripts/bench/search_quality.py","name":"run.get_commands.cmd_b","kind":"variable","line":[98,98],"parent":"run.get_commands","visibility":"public"}
{"file":"scripts/bench/search_quality.py","name":"run.config","kind":"variable","line":[102,111],"parent":"run","visibility":"public"}
{"file":"scripts/bench/search_value.py","name":"shutil","kind":"import","line":[3,3],"visibility":"private"}
{"file":"scripts/bench/search_value.py","name":"pathlib.Path","kind":"import","line":[4,4],"visibility":"private"}
{"file":"scripts/bench/search_value.py","name":".ab.ABConfig","kind":"import","line":[6,13],"visibility":"private"}
{"file":"scripts/bench/search_value.py","name":".ab.build_claude_cmd","kind":"import","line":[6,13],"visibility":"private"}
{"file":"scripts/bench/search_value.py","name":".ab.build_codeix_cmd","kind":"import","line":[6,13],"visibility":"private"}
{"file":"scripts/bench/search_value.py","name":".ab.build_mcp_config","kind":"import","line":[6,13],"visibility":"private"}
{"file":"scripts/bench/search_value.py","name":".ab.build_prompt","kind":"import","line":[6,13],"visibility":"private"}
{"file":"scripts/bench/search_value.py","name":".ab.run","kind":"import","line":[6,13],"alias":"run_ab","visibility":"private"}
{"file":"scripts/bench/search_value.py","name":".common.RunContext","kind":"import","line":[14,22],"visibility":"private"}
{"file":"scripts/bench/search_value.py","name":".common.clone_repo_to","kind":"import","line":[14,22],"visibility":"private"}
{"file":"scripts/bench/search_value.py","name":".common.build_index","kind":"import","line":[14,22],"visibility":"private"}
{"file":"scripts/bench/search_value.py","name":".common.get_binary_version","kind":"import","line":[14,22],"visibility":"private"}
{"file":"scripts/bench/search_value.py","name":".common.get_codeix_bin","kind":"import","line":[14,22],"visibility":"private"}
{"file":"scripts/bench/search_value.py","name":".common.get_claude_version","kind":"import","line":[14,22],"visibility":"private"}
{"file":"scripts/bench/search_value.py","name":".common.get_repo_by_name","kind":"import","line":[14,22],"visibility":"private"}
{"file":"scripts/bench/search_value.py","name":"run","kind":"function","line":[25,108],"tokens":"version_a bin_a shutil get_commands prompt_b build_mcp_config ctx build_prompt chmod dict copy2 dev_src bin_name_a get_claude_version get_binary_version cmd_b prompt name repos_b build_codeix_cmd build_index build_claude_cmd cwd_a RunContext clone_repo_to bin_b get_repo_by_name label_a run_ab setup_run ABConfig str cmd_a tuple dest cwd_b get_codeix_bin repos_a question_id bin_dir list title repo version_b bool extra_judge_fields RuntimeError setup_b Path setup_a config label_b","visibility":"public"}
{"file":"scripts/bench/search_value.py","name":"run.setup_run","kind":"method","line":[28,47],"parent":"run","tokens":"bin_a version_a get_binary_version ctx shutil bin_b get_codeix_bin RuntimeError bin_dir copy2 Path str chmod dev_src","visibility":"public"}
{"file":"scripts/bench/search_value.py","name":"run.setup_run.dev_src","kind":"variable","line":[36,36],"parent":"run.setup_run","visibility":"public"}
{"file":"scripts/bench/search_value.py","name":"run.setup_run.version_a","kind":"variable","line":[39,39],"parent":"run.setup_run","visibility":"public"}
{"file":"scripts/bench/search_value.py","name":"run.setup_run.bin_a","kind":"variable","line":[40,40],"parent":"run.setup_run","visibility":"public"}
{"file":"scripts/bench/search_value.py","name":"run.setup_run.bin_b","kind":"variable","line":[45,45],"parent":"run.setup_run","visibility":"public"}
{"file":"scripts/bench/search_value.py","name":"run.setup_a","kind":"method","line":[49,61],"parent":"run","tokens":"ctx bin_a version_a dest bin_dir str Path dev_src clone_repo_to get_codeix_bin get_binary_version repos_a build_index repo get_repo_by_name","visibility":"public"}
{"file":"scripts/bench/search_value.py","name":"run.setup_a.repo","kind":"variable","line":[51,51],"parent":"run.setup_a","visibility":"public"}
{"file":"scripts/bench/search_value.py","name":"run.setup_a.dest","kind":"variable","line":[54,54],"parent":"run.setup_a","visibility":"public"}
{"file":"scripts/bench/search_value.py","name":"run.setup_a.dev_src","kind":"variable","line":[58,58],"parent":"run.setup_a","visibility":"public"}
{"file":"scripts/bench/search_value.py","name":"run.setup_a.version_a","kind":"variable","line":[59,59],"parent":"run.setup_a","visibility":"public"}
{"file":"scripts/bench/search_value.py","name":"run.setup_a.bin_a","kind":"variable","line":[60,60],"parent":"run.setup_a","visibility":"public"}
{"file":"scripts/bench/search_value.py","name":"run.setup_b","kind":"method","line":[63,69],"parent":"run","tokens":"get_repo_by_name clone_repo_to repos_b dest repo ctx","visibility":"public"}
{"file":"scripts/bench/search_value.py","name":"run.setup_b.repo","kind":"variable","line":[65,65],"parent":"run.setup_b","visibility":"public"}
{"file":"scripts/bench/search_value.py","name":"run.setup_b.dest","kind":"variable","line":[68,68],"parent":"run.setup_b","visibility":"public"}
{"file":"scripts/bench/search_value.py","name":"run.get_commands","kind":"method","line":[71,95],"parent":"run","tokens":"get_codeix_bin prompt get_claude_version get_binary_version build_prompt cmd_a repos_a prompt_b dev_src version_a build_codeix_cmd build_mcp_config build_claude_cmd cwd_a cmd_b Path version_b bin_name_a ctx repos_b cwd_b","visibility":"public"}
{"file":"scripts/bench/search_value.py","name":"run.get_commands.dev_src","kind":"variable","line":[78,78],"parent":"run.get_commands","visibility":"public"}
{"file":"scripts/bench/search_value.py","name":"run.get_commands.version_a","kind":"variable","line":[79,79],"parent":"run.get_commands","visibility":"public"}
{"file":"scripts/bench/search_value.py","name":"run.get_commands.version_b","kind":"variable","line":[80,80],"parent":"run.get_commands","visibility":"public"}
{"file":"scripts/bench/search_value.py","name":"run.get_commands.bin_name_a","kind":"variable","line":[83,83],"parent":"run.get_commands","visibility":"public"}
{"file":"scripts/bench/search_value.py","name":"run.get_commands.cwd_a","kind":"variable","line":[85,85],"parent":"run.get_commands","visibility":"public"}
{"file":"scripts/bench/search_value.py","name":"run.get_commands.cwd_b","kind":"variable","line":[86,86],"parent":"run.get_commands","visibility":"public"}
{"file":"scripts/bench/search_value.py","name":"run.get_commands.prompt","kind":"variable","line":[88,88],"parent":"run.get_commands","visibility":"public"}
{"file":"scripts/bench/search_value.py","name":"run.get_commands.cmd_a","kind":"variable","line":[90,90],"parent":"run.get_commands","visibility":"public"}
{"file":"scripts/bench/search_value.py","name":"run.get_commands.prompt_b","kind":"variable","line":[92,92],"parent":"run.get_commands","visibility":"public"}
{"file":"scripts/bench/search_value.py","name":"run.get_commands.cmd_b","kind":"variable","line":[93,93],"parent":"run.get_commands","visibility":"public"}
{"file":"scripts/bench/search_value.py","name":"run.config","kind":"variable","line":[97,107],"parent":"run","visibility":"public"}
{"file":"site/templates/index.html","name":"observer","kind":"variable","line":[1249,1256],"tokens":"observer entries entry IntersectionObserver","visibility":"private"}
{"file":"site/templates/index.html","name":"header","kind":"variable","line":[1263,1263],"visibility":"private"}
{"file":"site/templates/index.html","name":"hero","kind":"variable","line":[1264,1264],"visibility":"private"}
{"file":"site/templates/index.html","name":"heroObserver","kind":"variable","line":[1265,1273],"tokens":"entries entry IntersectionObserver header","visibility":"private"}
{"file":"site/templates/spec.html","name":"links","kind":"variable","line":[471,471],"visibility":"private"}
{"file":"site/templates/spec.html","name":"sections","kind":"variable","line":[472,472],"visibility":"private"}
{"file":"site/templates/spec.html","name":"id","kind":"variable","line":[474,474],"tokens":"link","visibility":"private"}
{"file":"site/templates/spec.html","name":"el","kind":"variable","line":[475,475],"tokens":"id","visibility":"private"}
{"file":"site/templates/spec.html","name":"observer","kind":"variable","line":[481,489],"tokens":"IntersectionObserver entry match links sections entries","visibility":"private"}
{"file":"site/templates/spec.html","name":"match","kind":"variable","line":[485,485],"tokens":"sections entry","visibility":"private"}
{"file":"spec/codeindex.md","name":"`.codeindex` Format Specification","kind":"section","line":[6,6]}
{"file":"spec/codeindex.md","name":"`.codeindex` Format Specification/Overview","kind":"section","line":[10,10],"parent":"`.codeindex` Format Specification"}
{"file":"spec/codeindex.md","name":"`.codeindex` Format Specification/Directory layout","kind":"section","line":[16,16],"parent":"`.codeindex` Format Specification"}
{"file":"spec/codeindex.md","name":"`.codeindex` Format Specification/File format conventions","kind":"section","line":[30,30],"parent":"`.codeindex` Format Specification"}
{"file":"spec/codeindex.md","name":"`.codeindex` Format Specification/`index.json` — manifest","kind":"section","line":[38,38],"parent":"`.codeindex` Format Specification"}
{"file":"spec/codeindex.md","name":"`.codeindex` Format Specification/`files.jsonl` — file registry","kind":"section","line":[60,60],"parent":"`.codeindex` Format Specification"}
{"file":"spec/codeindex.md","name":"`.codeindex` Format Specification/`files.jsonl` — file registry/Language identifiers","kind":"section","line":[81,81],"parent":"`.codeindex` Format Specification/`files.jsonl` — file registry"}
{"file":"spec/codeindex.md","name":"`.codeindex` Format Specification/`symbols.jsonl` — symbol index","kind":"section","line":[91,91],"parent":"`.codeindex` Format Specification"}
{"file":"spec/codeindex.md","name":"`.codeindex` Format Specification/`symbols.jsonl` — symbol index/Symbol kinds","kind":"section","line":[118,118],"parent":"`.codeindex` Format Specification/`symbols.jsonl` — symbol index"}
{"file":"spec/codeindex.md","name":"`.codeindex` Format Specification/`symbols.jsonl` — symbol index/Nesting","kind":"section","line":[141,141],"parent":"`.codeindex` Format Specification/`symbols.jsonl` — symbol index"}
{"file":"spec/codeindex.md","name":"`.codeindex` Format Specification/`symbols.jsonl` — symbol index/Visibility","kind":"section","line":[154,154],"parent":"`.codeindex` Format Specification/`symbols.jsonl` — symbol index"}
{"file":"spec/codeindex.md","name":"`.codeindex` Format Specification/`texts.jsonl` — text content index","kind":"section","line":[174,174],"parent":"`.codeindex` Format Specification"}
{"file":"spec/codeindex.md","name":"`.codeindex` Format Specification/`texts.jsonl` — text content index/Filtering","kind":"section","line":[196,196],"parent":"`.codeindex` Format Specification/`texts.jsonl` — text content index"}
{"file":"spec/codeindex.md","name":"`.codeindex` Format Specification/Hashing","kind":"section","line":[206,206],"parent":"`.codeindex` Format Specification"}
{"file":"spec/codeindex.md","name":"`.codeindex` Format Specification/Sorting and determinism","kind":"section","line":[214,214],"parent":"`.codeindex` Format Specification"}
{"file":"spec/codeindex.md","name":"`.codeindex` Format Specification/Line numbers","kind":"section","line":[228,228],"parent":"`.codeindex` Format Specification"}
{"file":"spec/codeindex.md","name":"`.codeindex` Format Specification/Path conventions","kind":"section","line":[232,232],"parent":"`.codeindex` Format Specification"}
{"file":"spec/codeindex.md","name":"`.codeindex` Format Specification/Versioning","kind":"section","line":[241,241],"parent":"`.codeindex` Format Specification"}
{"file":"spec/codeindex.md","name":"`.codeindex` Format Specification/Distribution","kind":"section","line":[250,250],"parent":"`.codeindex` Format Specification"}
{"file":"spec/codeindex.md","name":"`.codeindex` Format Specification/Distribution/Git repository (primary)","kind":"section","line":[254,254],"parent":"`.codeindex` Format Specification/Distribution"}
{"file":"spec/codeindex.md","name":"`.codeindex` Format Specification/Distribution/Published packages","kind":"section","line":[268,268],"parent":"`.codeindex` Format Specification/Distribution"}
{"file":"spec/codeindex.md","name":"`.codeindex` Format Specification/Distribution/HTTP discovery (future)","kind":"section","line":[280,280],"parent":"`.codeindex` Format Specification/Distribution"}
{"file":"spec/codeindex.md","name":"`.codeindex` Format Specification/Scope and visibility","kind":"section","line":[298,298],"parent":"`.codeindex` Format Specification"}
{"file":"spec/codeindex.md","name":"`.codeindex` Format Specification/Scope and visibility/Remote APIs (future)","kind":"section","line":[310,310],"parent":"`.codeindex` Format Specification/Scope and visibility"}
{"file":"src/cli/build.rs","name":"std::path::Path","kind":"import","line":[1,1],"visibility":"private"}
{"file":"src/cli/build.rs","name":"std::sync::mpsc::Sender","kind":"import","line":[2,2],"visibility":"private"}
{"file":"src/cli/build.rs","name":"std::sync::{Arc, Mutex}","kind":"import","line":[3,3],"visibility":"private"}
{"file":"src/cli/build.rs","name":"anyhow::{Context, Result}","kind":"import","line":[5,5],"visibility":"private"}
{"file":"src/cli/build.rs","name":"tracing::info","kind":"import","line":[6,6],"visibility":"private"}
{"file":"src/cli/build.rs","name":"crate::mount::{MountTable, MountedEvent}","kind":"import","line":[8,8],"visibility":"private"}
{"file":"src/cli/build.rs","name":"crate::server::db::SearchDb","kind":"import","line":[9,9],"visibility":"private"}
{"file":"src/cli/build.rs","name":"crate::watcher::handler::{flush_mount_to_disk, on_project_discovery}","kind":"import","line":[10,10],"visibility":"private"}
{"file":"src/cli/build.rs","name":"BuildResult","kind":"type_alias","line":[13,13],"visibility":"public"}
{"file":"src/cli/build.rs","name":"build_index_to_db","kind":"function","line":[30,55],"tokens":"format new_no_fts Arc SearchDb path mount_table on_project_discovery info load_from_cache db root Mutex display MountTable enable_fts","visibility":"public"}
{"file":"src/cli/build.rs","name":"build_index","kind":"function","line":[62,115],"tokens":"mount display build_index_to_db total_symbols format total_files flush_mount_to_disk root project_str db_guard total_texts files symbols texts _refs mount_table db name mt anyhow path info len","visibility":"public"}
{"file":"src/cli/build.rs","name":"run","kind":"function","line":[119,121],"tokens":"build_index path","visibility":"public"}
{"file":"src/cli/mod.rs","name":"build","kind":"module","line":[1,1],"visibility":"public"}
{"file":"src/cli/mod.rs","name":"serve","kind":"module","line":[2,2],"visibility":"public"}
{"file":"src/cli/serve.rs","name":"std::path::Path","kind":"import","line":[1,1],"visibility":"private"}
{"file":"src/cli/serve.rs","name":"std::sync::Arc","kind":"import","line":[2,2],"visibility":"private"}
{"file":"src/cli/serve.rs","name":"std::sync::mpsc","kind":"import","line":[3,3],"visibility":"private"}
{"file":"src/cli/serve.rs","name":"anyhow::{Context, Result}","kind":"import","line":[5,5],"visibility":"private"}
{"file":"src/cli/serve.rs","name":"crate::cli::build::build_index_to_db","kind":"import","line":[7,7],"visibility":"private"}
{"file":"src/cli/serve.rs","name":"crate::mount::MountedEvent","kind":"import","line":[8,8],"visibility":"private"}
{"file":"src/cli/serve.rs","name":"crate::server::mcp::start_server","kind":"import","line":[9,9],"visibility":"private"}
{"file":"src/cli/serve.rs","name":"crate::watcher::handler::{flush_mount_to_disk, run_event_loop}","kind":"import","line":[10,10],"visibility":"private"}
{"file":"src/cli/serve.rs","name":"run","kind":"function","line":[14,70],"tokens":"channel mt thread build_index_to_db run_event_loop runtime error flush_mount_to_disk rt mount_table Arc db_clone mount mpsc anyhow path display info start_server watch tokio _root clone Runtime db format mount_table_clone tracing mount_root spawn","visibility":"public"}
{"file":"src/index/format.rs","name":"serde::{Deserialize, Serialize}","kind":"import","line":[1,1],"visibility":"private"}
{"file":"src/index/format.rs","name":"IndexManifest","kind":"struct","line":[5,10],"visibility":"public"}
{"file":"src/index/format.rs","name":"FileEntry","kind":"struct","line":[14,27],"visibility":"public"}
{"file":"src/index/format.rs","name":"SymbolEntry","kind":"struct","line":[31,46],"visibility":"public"}
{"file":"src/index/format.rs","name":"TextEntry","kind":"struct","line":[50,59],"visibility":"public"}
{"file":"src/index/format.rs","name":"ReferenceEntry","kind":"struct","line":[63,78],"visibility":"public"}
{"file":"src/index/mod.rs","name":"format","kind":"module","line":[1,1],"visibility":"public"}
{"file":"src/index/mod.rs","name":"reader","kind":"module","line":[2,2],"visibility":"public"}
{"file":"src/index/mod.rs","name":"writer","kind":"module","line":[3,3],"visibility":"public"}
{"file":"src/index/reader.rs","name":"std::fs","kind":"import","line":[1,1],"visibility":"private"}
{"file":"src/index/reader.rs","name":"std::io::{BufRead, BufReader}","kind":"import","line":[2,2],"visibility":"private"}
{"file":"src/index/reader.rs","name":"std::path::Path","kind":"import","line":[3,3],"visibility":"private"}
{"file":"src/index/reader.rs","name":"anyhow::{Context, Result}","kind":"import","line":[5,5],"visibility":"private"}
{"file":"src/index/reader.rs","name":"super::format::{FileEntry, IndexManifest, ReferenceEntry, SymbolEntry, TextEntry}","kind":"import","line":[7,7],"visibility":"private"}
{"file":"src/index/reader.rs","name":"IndexData","kind":"type_alias","line":[10,16],"visibility":"public"}
{"file":"src/index/reader.rs","name":"read_index","kind":"function","line":[20,38],"tokens":"path read_to_string Vec read_jsonl data symbols fs manifest files texts references serde_json from_str","visibility":"public"}
{"file":"src/index/reader.rs","name":"read_jsonl","kind":"function","line":[41,57],"tokens":"BufReader display Vec line item File path fs reader open items from_str format serde_json file","visibility":"private"}
{"file":"src/index/writer.rs","name":"std::fs","kind":"import","line":[1,1],"visibility":"private"}
{"file":"src/index/writer.rs","name":"std::io::{BufWriter, Write}","kind":"import","line":[2,2],"visibility":"private"}
{"file":"src/index/writer.rs","name":"std::path::Path","kind":"import","line":[3,3],"visibility":"private"}
{"file":"src/index/writer.rs","name":"anyhow::Result","kind":"import","line":[5,5],"visibility":"private"}
{"file":"src/index/writer.rs","name":"super::format::{FileEntry, IndexManifest, ReferenceEntry, SymbolEntry, TextEntry}","kind":"import","line":[7,7],"visibility":"private"}
{"file":"src/index/writer.rs","name":"write_index","kind":"function","line":[14,37],"tokens":"symbols serde_json index_path texts fs write create_dir_all references write_jsonl files output_dir to_string_pretty manifest json","visibility":"public"}
{"file":"src/index/writer.rs","name":"write_jsonl","kind":"function","line":[40,51],"tokens":"fs path file BufWriter items writer item serde_json create to_writer File","visibility":"private"}
{"file":"src/lib.rs","name":"cli","kind":"module","line":[1,1],"visibility":"public"}
{"file":"src/lib.rs","name":"index","kind":"module","line":[2,2],"visibility":"public"}
{"file":"src/lib.rs","name":"mount","kind":"module","line":[3,3],"visibility":"public"}
{"file":"src/lib.rs","name":"parser","kind":"module","line":[4,4],"visibility":"public"}
{"file":"src/lib.rs","name":"server","kind":"module","line":[5,5],"visibility":"public"}
{"file":"src/lib.rs","name":"utils","kind":"module","line":[6,6],"visibility":"public"}
{"file":"src/lib.rs","name":"watcher","kind":"module","line":[7,7],"visibility":"public"}
{"file":"src/lib.rs","name":"gitignore_tests","kind":"module","line":[10,36],"visibility":"private"}
{"file":"src/lib.rs","name":"ignore::gitignore::GitignoreBuilder","kind":"import","line":[11,11],"visibility":"private"}
{"file":"src/lib.rs","name":"std::path::Path","kind":"import","line":[12,12],"visibility":"private"}
{"file":"src/lib.rs","name":"test_target_ignored","kind":"function","line":[15,35],"tokens":"println is_ignore rel_path gi m2 Path m1 builder GitignoreBuilder root","visibility":"private"}
{"file":"src/main.rs","name":"std::io::IsTerminal","kind":"import","line":[1,1],"visibility":"private"}
{"file":"src/main.rs","name":"std::path::Path","kind":"import","line":[2,2],"visibility":"private"}
{"file":"src/main.rs","name":"anyhow::Result","kind":"import","line":[4,4],"visibility":"private"}
{"file":"src/main.rs","name":"clap::{Parser, Subcommand}","kind":"import","line":[5,5],"visibility":"private"}
{"file":"src/main.rs","name":"Cli","kind":"struct","line":[12,15],"visibility":"private"}
{"file":"src/main.rs","name":"Commands","kind":"enum","line":[18,34],"visibility":"private"}
{"file":"src/main.rs","name":"main","kind":"function","line":[36,67],"tokens":"fmt run build stdin parse path from_default_env tracing_subscriber cli unreachable parse_from Commands codeix Cli no_watch command serve Path EnvFilter","visibility":"private"}
{"file":"src/mount/mod.rs","name":"std::collections::{HashMap, HashSet}","kind":"import","line":[1,1],"visibility":"private"}
{"file":"src/mount/mod.rs","name":"std::fs::File","kind":"import","line":[2,2],"visibility":"private"}
{"file":"src/mount/mod.rs","name":"std::path::{Path, PathBuf}","kind":"import","line":[3,3],"visibility":"private"}
{"file":"src/mount/mod.rs","name":"std::sync::mpsc::Sender","kind":"import","line":[4,4],"visibility":"private"}
{"file":"src/mount/mod.rs","name":"anyhow::{Context, Result}","kind":"import","line":[6,6],"visibility":"private"}
{"file":"src/mount/mod.rs","name":"fs2::FileExt","kind":"import","line":[7,7],"visibility":"private"}
{"file":"src/mount/mod.rs","name":"ignore::gitignore::{Gitignore, GitignoreBuilder}","kind":"import","line":[8,8],"visibility":"private"}
{"file":"src/mount/mod.rs","name":"notify::event::{CreateKind, EventKind, RemoveKind}","kind":"import","line":[9,9],"visibility":"private"}
{"file":"src/mount/mod.rs","name":"notify::{Config, Event, RecommendedWatcher, RecursiveMode, Watcher}","kind":"import","line":[10,10],"visibility":"private"}
{"file":"src/mount/mod.rs","name":"walkdir::WalkDir","kind":"import","line":[11,11],"visibility":"private"}
{"file":"src/mount/mod.rs","name":"BUILTIN_GITIGNORE","kind":"constant","line":[15,28],"visibility":"private"}
{"file":"src/mount/mod.rs","name":"MountMode","kind":"enum","line":[32,37],"visibility":"public"}
{"file":"src/mount/mod.rs","name":"is_removal_event","kind":"function","line":[41,46],"tokens":"RemoveKind EventKind kind File Remove matches Folder","visibility":"public"}
{"file":"src/mount/mod.rs","name":"FsEvent","kind":"enum","line":[51,71],"visibility":"public"}
{"file":"src/mount/mod.rs","name":"MountedEvent","kind":"type_alias","line":[74,74],"visibility":"public"}
{"file":"src/mount/mod.rs","name":"Mount","kind":"struct","line":[77,95],"visibility":"public"}
{"file":"src/mount/mod.rs","name":"Mount","kind":"trait_impl","line":[97,106],"visibility":"private"}
{"file":"src/mount/mod.rs","name":"Mount.fmt","kind":"method","line":[98,105],"parent":"Mount","visibility":"private"}
{"file":"src/mount/mod.rs","name":"Mount","kind":"impl","line":[108,492],"visibility":"private"}
{"file":"src/mount/mod.rs","name":"Mount.new_ro","kind":"method","line":[110,123],"parent":"Mount","tokens":"root Vec MountMode mount ReadOnly HashSet","visibility":"private"}
{"file":"src/mount/mod.rs","name":"Mount.new_rw","kind":"method","line":[127,163],"parent":"Mount","tokens":"codeindex_dir mount format File ReadWrite lock_path create_dir_all MountMode root fs lock_file options Vec HashSet","visibility":"private"}
{"file":"src/mount/mod.rs","name":"Mount.init_gitignore","kind":"method","line":[166,182],"parent":"Mount","tokens":"root_gitignore exclude_path","visibility":"private"}
{"file":"src/mount/mod.rs","name":"Mount.build_gitignore","kind":"method","line":[185,205],"parent":"Mount","tokens":"file root pattern GitignoreBuilder BUILTIN_GITIGNORE format builder","visibility":"private"}
{"file":"src/mount/mod.rs","name":"Mount.on_fs_event","kind":"method","line":[218,233],"parent":"Mount","tokens":"kind RemoveKind File abs_path Modify EventKind Remove Folder Create CreateKind","visibility":"public"}
{"file":"src/mount/mod.rs","name":"Mount.on_dir_added","kind":"method","line":[235,271],"parent":"Mount","tokens":"dir_gitignore FsEvent root name abs_path","visibility":"private"}
{"file":"src/mount/mod.rs","name":"Mount.on_dir_removed","kind":"method","line":[273,276],"parent":"Mount","tokens":"abs_path","visibility":"private"}
{"file":"src/mount/mod.rs","name":"Mount.on_file_added","kind":"method","line":[278,309],"parent":"Mount","tokens":"abs_path FsEvent rel_path name","visibility":"private"}
{"file":"src/mount/mod.rs","name":"Mount.on_file_removed","kind":"method","line":[311,331],"parent":"Mount","tokens":"FsEvent name abs_path rel_path","visibility":"private"}
{"file":"src/mount/mod.rs","name":"Mount.add_gitignore","kind":"method","line":[334,341],"parent":"Mount","tokens":"gitignore_path","visibility":"private"}
{"file":"src/mount/mod.rs","name":"Mount.remove_watch","kind":"method","line":[344,350],"parent":"Mount","tokens":"path watcher","visibility":"private"}
{"file":"src/mount/mod.rs","name":"Mount.walk","kind":"method","line":[358,416],"parent":"Mount","tokens":"CreateKind parent entry Create abs_path Folder display File tracing WalkDir path debug event EventKind root on_event kind","visibility":"public"}
{"file":"src/mount/mod.rs","name":"Mount.init_notify","kind":"method","line":[425,445],"parent":"Mount","tokens":"RecommendedWatcher res ReadOnly Config config MountMode mount_root watcher","visibility":"public"}
{"file":"src/mount/mod.rs","name":"Mount.watch_dir","kind":"method","line":[448,458],"parent":"Mount","tokens":"RecursiveMode watcher format display path NonRecursive","visibility":"public"}
{"file":"src/mount/mod.rs","name":"Mount.watched_count","kind":"method","line":[462,464],"parent":"Mount","visibility":"public"}
{"file":"src/mount/mod.rs","name":"Mount.is_ignored","kind":"method","line":[469,476],"parent":"Mount","tokens":"path gi is_dir","visibility":"public"}
{"file":"src/mount/mod.rs","name":"Mount.gitignore","kind":"method","line":[479,481],"parent":"Mount","visibility":"public"}
{"file":"src/mount/mod.rs","name":"Mount.mark_dirty","kind":"method","line":[484,486],"parent":"Mount","visibility":"public"}
{"file":"src/mount/mod.rs","name":"Mount.clear_dirty","kind":"method","line":[489,491],"parent":"Mount","visibility":"public"}
{"file":"src/mount/mod.rs","name":"Mount","kind":"trait_impl","line":[494,501],"visibility":"private"}
{"file":"src/mount/mod.rs","name":"Mount.drop","kind":"method","line":[495,500],"parent":"Mount","tokens":"lock","visibility":"private"}
{"file":"src/mount/mod.rs","name":"MountTable","kind":"struct","line":[505,509],"visibility":"public"}
{"file":"src/mount/mod.rs","name":"MountTable","kind":"impl","line":[511,708],"visibility":"private"}
{"file":"src/mount/mod.rs","name":"MountTable.new","kind":"method","line":[513,518],"parent":"MountTable","tokens":"HashMap workspace_root","visibility":"public"}
{"file":"src/mount/mod.rs","name":"MountTable.workspace_root","kind":"method","line":[521,523],"parent":"MountTable","visibility":"public"}
{"file":"src/mount/mod.rs","name":"MountTable.relative_project","kind":"method","line":[527,532],"parent":"MountTable","tokens":"project_root","visibility":"public"}
{"file":"src/mount/mod.rs","name":"MountTable.project_root","kind":"method","line":[536,549],"parent":"MountTable","tokens":"abs_path relative_path canonical","visibility":"public"}
{"file":"src/mount/mod.rs","name":"MountTable.is_mounted","kind":"method","line":[552,554],"parent":"MountTable","tokens":"path","visibility":"public"}
{"file":"src/mount/mod.rs","name":"MountTable.mount","kind":"method","line":[559,589],"parent":"MountTable","tokens":"mount tracing anyhow new_ro as_ref format Mount info new_rw display root bail","visibility":"public"}
{"file":"src/mount/mod.rs","name":"MountTable.mount_rw","kind":"method","line":[592,605],"parent":"MountTable","tokens":"bail root format as_ref anyhow mount Mount new_rw","visibility":"public"}
{"file":"src/mount/mod.rs","name":"MountTable.mount_ro","kind":"method","line":[608,621],"parent":"MountTable","tokens":"format root bail mount Mount as_ref anyhow new_ro","visibility":"public"}
{"file":"src/mount/mod.rs","name":"MountTable.find_mount","kind":"method","line":[625,628],"parent":"MountTable","tokens":"path","visibility":"public"}
{"file":"src/mount/mod.rs","name":"MountTable.find_mount_canonical","kind":"method","line":[633,639],"parent":"MountTable","tokens":"root path mount","visibility":"public"}
{"file":"src/mount/mod.rs","name":"MountTable.find_mount_mut","kind":"method","line":[643,649],"parent":"MountTable","tokens":"path","visibility":"public"}
{"file":"src/mount/mod.rs","name":"MountTable.find_mount_mut_canonical","kind":"method","line":[654,664],"parent":"MountTable","tokens":"key root path","visibility":"public"}
{"file":"src/mount/mod.rs","name":"MountTable.unmount","kind":"method","line":[667,677],"parent":"MountTable","tokens":"root as_ref anyhow bail format","visibility":"public"}
{"file":"src/mount/mod.rs","name":"MountTable.iter","kind":"method","line":[680,682],"parent":"MountTable","visibility":"public"}
{"file":"src/mount/mod.rs","name":"MountTable.iter_mut","kind":"method","line":[685,687],"parent":"MountTable","visibility":"public"}
{"file":"src/mount/mod.rs","name":"MountTable.mark_dirty","kind":"method","line":[690,697],"parent":"MountTable","tokens":"mount path","visibility":"public"}
{"file":"src/mount/mod.rs","name":"MountTable.mark_dirty_canonical","kind":"method","line":[700,707],"parent":"MountTable","tokens":"mount path","visibility":"public"}
{"file":"src/mount/mod.rs","name":"tests","kind":"module","line":[711,1001],"visibility":"private"}
{"file":"src/mount/mod.rs","name":"super::*","kind":"import","line":[712,712],"visibility":"private"}
{"file":"src/mount/mod.rs","name":"std::fs","kind":"import","line":[713,713],"visibility":"private"}
{"file":"src/mount/mod.rs","name":"tempfile::TempDir","kind":"import","line":[714,714],"visibility":"private"}
{"file":"src/mount/mod.rs","name":"test_mount_rw","kind":"function","line":[717,727],"tokens":"table MountTable dirty path mount ReadWrite MountMode TempDir exists join mode","visibility":"private"}
{"file":"src/mount/mod.rs","name":"test_mount_ro","kind":"function","line":[730,737],"tokens":"TempDir table mode mount ReadOnly MountMode MountTable dirty","visibility":"private"}
{"file":"src/mount/mod.rs","name":"test_find_mount_longest_prefix","kind":"function","line":[740,768],"tokens":"mount MountTable path file_in_sub unwrap create_dir table subdir TempDir fs root write file_in_root canonicalize","visibility":"private"}
{"file":"src/mount/mod.rs","name":"test_unmount","kind":"function","line":[771,780],"tokens":"MountTable is_some is_none find_mount table path TempDir","visibility":"private"}
{"file":"src/mount/mod.rs","name":"test_double_mount_fails","kind":"function","line":[783,789],"tokens":"TempDir mount_rw MountTable table path is_err","visibility":"private"}
{"file":"src/mount/mod.rs","name":"test_mark_dirty","kind":"function","line":[792,804],"tokens":"file TempDir MountTable mount dirty table fs write mark_dirty","visibility":"private"}
{"file":"src/mount/mod.rs","name":"test_gitignore_respected","kind":"function","line":[807,842],"tokens":"iter MountTable event table to_string ends_with fs write TempDir FsEvent files contains any path mount Vec create_dir","visibility":"private"}
{"file":"src/mount/mod.rs","name":"test_symlinks_not_followed","kind":"function","line":[845,892],"tokens":"cfg unix symlink mount Vec table MountTable filter fs contains event create_dir write FsEvent path files iter TempDir os to_string count","visibility":"private"}
{"file":"src/mount/mod.rs","name":"std::os::unix::fs::symlink","kind":"import","line":[857,857],"visibility":"private"}
{"file":"src/mount/mod.rs","name":"test_walk_adds_watches_internally","kind":"function","line":[895,931],"tokens":"event tmp_path create_dir_all mount channel file_count fs watched_count TempDir _rx MountTable FsEvent mpsc write sync table","visibility":"private"}
{"file":"src/mount/mod.rs","name":"test_gitignore_built_on_mount","kind":"function","line":[934,956],"tokens":"is_ignored MountTable join gitignore write tmp_path mount is_some table create_dir fs TempDir","visibility":"private"}
{"file":"src/mount/mod.rs","name":"test_nested_gitignore_files","kind":"function","line":[959,1000],"tokens":"fs iter create_dir_all ends_with files FsEvent TempDir path create_dir mount to_string event table write MountTable Vec any contains","visibility":"private"}
{"file":"src/parser/c_lang.rs","name":"tree_sitter::{Node, Tree}","kind":"import","line":[3,3],"visibility":"private"}
{"file":"src/parser/c_lang.rs","name":"crate::index::format::{SymbolEntry, TextEntry}","kind":"import","line":[5,5],"visibility":"private"}
{"file":"src/parser/c_lang.rs","name":"crate::parser::helpers::*","kind":"import","line":[6,6],"visibility":"private"}
{"file":"src/parser/c_lang.rs","name":"crate::parser::treesitter::MAX_DEPTH","kind":"import","line":[7,7],"visibility":"private"}
{"file":"src/parser/c_lang.rs","name":"C_STOPWORDS","kind":"constant","line":[10,46],"visibility":"private"}
{"file":"src/parser/c_lang.rs","name":"filter_c_tokens","kind":"function","line":[49,63],"tokens":"tokens tok filtered C_STOPWORDS","visibility":"private"}
{"file":"src/parser/c_lang.rs","name":"extract","kind":"function","line":[65,74],"tokens":"file_path texts source symbols walk_node tree root","visibility":"public"}
{"file":"src/parser/c_lang.rs","name":"walk_node","kind":"function","line":[76,147],"tokens":"kind node extract_struct_or_union extract_declaration extract_enum extract_function child source extract_typedef extract_comment file_path cursor walk_node extract_string depth extract_macro extract_include symbols MAX_DEPTH texts parent_ctx","visibility":"private"}
{"file":"src/parser/c_lang.rs","name":"extract_function","kind":"function","line":[149,183],"tokens":"node name find_child_by_field source visibility _sig tokens node_line_range body line is_static filter_c_tokens symbols has_storage_class push_symbol extract_signature_to_brace file_path declarator extract_declarator_name extract_tokens","visibility":"private"}
{"file":"src/parser/c_lang.rs","name":"extract_declaration","kind":"function","line":[185,273],"tokens":"node has_storage_class _is_extern node_line_range child source visibility name _sig push_symbol symbols parent_ctx find_child_by_field line node_text collapse_whitespace extract_declarator_name cursor decl file_path is_static kind","visibility":"private"}
{"file":"src/parser/c_lang.rs","name":"extract_struct_or_union","kind":"function","line":[275,342],"tokens":"find_child_by_field kind node_text name child symbols cursor file_path field_cursor field_name texts parent_ctx extract_comment node body push_symbol source format field_line line field_child node_line_range","visibility":"private"}
{"file":"src/parser/c_lang.rs","name":"extract_enum","kind":"function","line":[344,396],"tokens":"node_line_range name_node const_name const_line file_path child node format line parent_ctx symbols cursor name find_child_by_field source node_text body push_symbol","visibility":"private"}
{"file":"src/parser/c_lang.rs","name":"extract_typedef","kind":"function","line":[398,419],"tokens":"file_path node node_text push_symbol child cursor name line symbols node_line_range source","visibility":"private"}
{"file":"src/parser/c_lang.rs","name":"extract_include","kind":"function","line":[421,443],"tokens":"symbols file_path path node path_node find_child_by_field node_line_range source line node_text push_symbol","visibility":"private"}
{"file":"src/parser/c_lang.rs","name":"extract_macro","kind":"function","line":[445,469],"tokens":"find_child_by_field name node_text node_line_range line symbols push_symbol source file_path node kind","visibility":"private"}
{"file":"src/parser/c_lang.rs","name":"extract_declarator_name","kind":"function","line":[471,500],"tokens":"source node_text child name cursor String find_child_by_field node extract_declarator_name","visibility":"private"}
{"file":"src/parser/c_lang.rs","name":"has_storage_class","kind":"function","line":[502,513],"tokens":"source cursor text child node_text node","visibility":"private"}
{"file":"src/parser/c_lang.rs","name":"tests","kind":"module","line":[516,682],"visibility":"private"}
{"file":"src/parser/c_lang.rs","name":"super::*","kind":"import","line":[517,517],"visibility":"private"}
{"file":"src/parser/c_lang.rs","name":"crate::parser::treesitter::parse_file","kind":"import","line":[518,518],"visibility":"private"}
{"file":"src/parser/c_lang.rs","name":"find_sym","kind":"function","line":[520,525],"tokens":"symbols name panic","visibility":"private"}
{"file":"src/parser/c_lang.rs","name":"test_c_functions","kind":"function","line":[528,545],"tokens":"parse_file _texts source add symbols find_sym _refs kind visibility as_deref helper","visibility":"private"}
{"file":"src/parser/c_lang.rs","name":"test_c_struct","kind":"function","line":[548,564],"tokens":"find_sym point parse_file symbols _refs source kind parent _texts as_deref","visibility":"private"}
{"file":"src/parser/c_lang.rs","name":"test_c_enum","kind":"function","line":[567,584],"tokens":"find_sym source ok _refs status _texts parse_file kind as_deref symbols error parent","visibility":"private"}
{"file":"src/parser/c_lang.rs","name":"test_c_typedef","kind":"function","line":[587,598],"tokens":"add _texts source find_sym _refs parse_file symbols kind","visibility":"private"}
{"file":"src/parser/c_lang.rs","name":"test_c_variables","kind":"function","line":[601,618],"tokens":"_texts visibility find_sym file_scoped parse_file _refs symbols global source as_deref max_size kind","visibility":"private"}
{"file":"src/parser/c_lang.rs","name":"test_c_includes","kind":"function","line":[621,631],"tokens":"_texts symbols _refs source parse_file kind stdio myheader","visibility":"private"}
{"file":"src/parser/c_lang.rs","name":"test_c_macros","kind":"function","line":[634,644],"tokens":"source find_sym _refs symbols parse_file kind _texts pi max","visibility":"private"}
{"file":"src/parser/c_lang.rs","name":"test_c_union","kind":"function","line":[647,660],"tokens":"data symbols kind _texts parse_file source find_sym _refs","visibility":"private"}
{"file":"src/parser/c_lang.rs","name":"test_c_comments","kind":"function","line":[663,669],"tokens":"_symbols texts any parse_file iter kind source _refs","visibility":"private"}
{"file":"src/parser/c_lang.rs","name":"test_c_function_prototype","kind":"function","line":[672,681],"tokens":"kind _texts _refs source symbols find_sym is_none add tokens parse_file","visibility":"private"}
{"file":"src/parser/cpp.rs","name":"tree_sitter::{Node, Tree}","kind":"import","line":[5,5],"visibility":"private"}
{"file":"src/parser/cpp.rs","name":"crate::index::format::{SymbolEntry, TextEntry}","kind":"import","line":[7,7],"visibility":"private"}
{"file":"src/parser/cpp.rs","name":"crate::parser::helpers::*","kind":"import","line":[8,8],"visibility":"private"}
{"file":"src/parser/cpp.rs","name":"crate::parser::treesitter::MAX_DEPTH","kind":"import","line":[9,9],"visibility":"private"}
{"file":"src/parser/cpp.rs","name":"CPP_STOPWORDS","kind":"constant","line":[12,76],"visibility":"private"}
{"file":"src/parser/cpp.rs","name":"filter_cpp_tokens","kind":"function","line":[79,93],"tokens":"tokens tok filtered CPP_STOPWORDS","visibility":"private"}
{"file":"src/parser/cpp.rs","name":"extract","kind":"function","line":[95,104],"tokens":"root symbols walk_node texts file_path tree source","visibility":"public"}
{"file":"src/parser/cpp.rs","name":"walk_node","kind":"function","line":[107,215],"tokens":"node parent_ctx MAX_DEPTH texts extract_function child extract_comment source symbols extract_enum extract_namespace depth extract_using_alias extract_class walk_node file_path extract_typedef cursor extract_include extract_string access kind extract_macro extract_using extract_declaration","visibility":"private"}
{"file":"src/parser/cpp.rs","name":"extract_function","kind":"function","line":[217,276],"tokens":"tokens find_child_by_field source extract_tokens full_name format kind node line extract_signature_to_brace node_line_range parent_ctx is_static declarator push_symbol symbols file_path extract_declarator_name name body _sig visibility access has_storage_class filter_cpp_tokens parent","visibility":"private"}
{"file":"src/parser/cpp.rs","name":"extract_declaration","kind":"function","line":[278,394],"tokens":"line has_storage_class symbols kind cursor parent_ctx file_path extract_declarator_name source push_symbol child node node_text format find_child_by_field collapse_whitespace access node_line_range is_static full_name parent visibility _sig decl name","visibility":"private"}
{"file":"src/parser/cpp.rs","name":"extract_class","kind":"function","line":[397,477],"tokens":"default_access cursor file_path body text node_text name source walk_node texts kind specifier_kind node_line_range find_child_by_field parent node format push_symbol current_access depth symbols full_name parent_ctx child line","visibility":"private"}
{"file":"src/parser/cpp.rs","name":"extract_enum","kind":"function","line":[479,537],"tokens":"find_child_by_field parent name child symbols full_name parent_ctx source line file_path cursor const_name body name_node push_symbol node const_line format node_text node_line_range","visibility":"private"}
{"file":"src/parser/cpp.rs","name":"extract_namespace","kind":"function","line":[539,606],"tokens":"source file_path find_child_by_field body name depth node symbols child line parent node_line_range walk_node format texts push_symbol full_name node_text cursor parent_ctx","visibility":"private"}
{"file":"src/parser/cpp.rs","name":"extract_typedef","kind":"function","line":[608,638],"tokens":"full_name format parent_ctx name node_line_range symbols parent line file_path node_text cursor node source push_symbol child","visibility":"private"}
{"file":"src/parser/cpp.rs","name":"extract_using_alias","kind":"function","line":[640,670],"tokens":"name node_line_range parent_ctx find_child_by_field symbols full_name source line node parent file_path node_text push_symbol format","visibility":"private"}
{"file":"src/parser/cpp.rs","name":"extract_using","kind":"function","line":[672,698],"tokens":"source node_text text push_symbol symbols node_line_range file_path line node name","visibility":"private"}
{"file":"src/parser/cpp.rs","name":"extract_include","kind":"function","line":[700,720],"tokens":"node_text push_symbol path source file_path path_node line find_child_by_field symbols node node_line_range","visibility":"private"}
{"file":"src/parser/cpp.rs","name":"extract_macro","kind":"function","line":[722,746],"tokens":"source name node_text node_line_range push_symbol node symbols find_child_by_field line file_path kind","visibility":"private"}
{"file":"src/parser/cpp.rs","name":"extract_declarator_name","kind":"function","line":[748,780],"tokens":"source node_text String name find_child_by_field node child extract_declarator_name cursor","visibility":"private"}
{"file":"src/parser/cpp.rs","name":"has_storage_class","kind":"function","line":[782,793],"tokens":"node node_text source cursor child text","visibility":"private"}
{"file":"src/parser/cpp.rs","name":"tests","kind":"module","line":[796,1010],"visibility":"private"}
{"file":"src/parser/cpp.rs","name":"super::*","kind":"import","line":[797,797],"visibility":"private"}
{"file":"src/parser/cpp.rs","name":"crate::parser::treesitter::parse_file","kind":"import","line":[798,798],"visibility":"private"}
{"file":"src/parser/cpp.rs","name":"find_sym","kind":"function","line":[800,805],"tokens":"panic symbols name","visibility":"private"}
{"file":"src/parser/cpp.rs","name":"test_cpp_functions","kind":"function","line":[808,825],"tokens":"as_deref helper symbols add source _refs _texts find_sym parse_file kind visibility","visibility":"private"}
{"file":"src/parser/cpp.rs","name":"test_cpp_class","kind":"function","line":[828,857],"tokens":"find_sym _texts kind visibility get_name symbols _refs helper source as_deref person parse_file","visibility":"private"}
{"file":"src/parser/cpp.rs","name":"test_cpp_struct","kind":"function","line":[860,878],"tokens":"visibility find_sym as_deref _texts hidden _refs source set_x parse_file symbols point kind","visibility":"private"}
{"file":"src/parser/cpp.rs","name":"test_cpp_namespace","kind":"function","line":[881,903],"tokens":"_texts tool find_sym _refs as_deref parent kind helper symbols parse_file utils source run","visibility":"private"}
{"file":"src/parser/cpp.rs","name":"test_cpp_enum","kind":"function","line":[906,927],"tokens":"symbols _texts parse_file kind source red find_sym _refs color status","visibility":"private"}
{"file":"src/parser/cpp.rs","name":"test_cpp_template","kind":"function","line":[930,951],"tokens":"symbols parse_file max _refs source container add find_sym kind _texts","visibility":"private"}
{"file":"src/parser/cpp.rs","name":"test_cpp_using","kind":"function","line":[954,971],"tokens":"string _texts parse_file find_sym _refs source myint kind symbols ns","visibility":"private"}
{"file":"src/parser/cpp.rs","name":"test_cpp_includes","kind":"function","line":[974,984],"tokens":"parse_file symbols _refs source _texts iostream kind myheader","visibility":"private"}
{"file":"src/parser/cpp.rs","name":"test_cpp_anonymous_namespace","kind":"function","line":[987,1000],"tokens":"helper ns parse_file find_sym kind symbols _texts _refs source","visibility":"private"}
{"file":"src/parser/cpp.rs","name":"test_cpp_comments","kind":"function","line":[1003,1009],"tokens":"texts parse_file _refs source any kind _symbols iter","visibility":"private"}
{"file":"src/parser/csharp.rs","name":"tree_sitter::{Node, Tree}","kind":"import","line":[3,3],"visibility":"private"}
{"file":"src/parser/csharp.rs","name":"crate::index::format::{SymbolEntry, TextEntry}","kind":"import","line":[5,5],"visibility":"private"}
{"file":"src/parser/csharp.rs","name":"crate::parser::helpers::*","kind":"import","line":[6,6],"visibility":"private"}
{"file":"src/parser/csharp.rs","name":"crate::parser::treesitter::MAX_DEPTH","kind":"import","line":[7,7],"visibility":"private"}
{"file":"src/parser/csharp.rs","name":"CSHARP_STOPWORDS","kind":"constant","line":[10,98],"visibility":"private"}
{"file":"src/parser/csharp.rs","name":"filter_csharp_tokens","kind":"function","line":[101,115],"tokens":"tok CSHARP_STOPWORDS filtered tokens","visibility":"private"}
{"file":"src/parser/csharp.rs","name":"extract","kind":"function","line":[117,126],"tokens":"root walk_node file_path texts tree source symbols","visibility":"public"}
{"file":"src/parser/csharp.rs","name":"walk_node","kind":"function","line":[128,228],"tokens":"extract_enum node extract_constructor extract_type_decl source parent_ctx extract_field extract_delegate extract_using extract_string walk_node texts depth file_path extract_namespace extract_method extract_property extract_csharp_comment cursor child MAX_DEPTH kind symbols","visibility":"private"}
{"file":"src/parser/csharp.rs","name":"extract_type_decl","kind":"function","line":[231,300],"tokens":"full_name line symbols child node_line_range extract_csharp_visibility walk_node type_params bases format cursor texts push_symbol _sig parent kind node_text name file_path visibility find_child_by_field tokens body filter_csharp_tokens node depth parent_ctx extract_tokens source","visibility":"private"}
{"file":"src/parser/csharp.rs","name":"extract_enum","kind":"function","line":[302,358],"tokens":"parent_ctx file_path name_node node_text push_symbol name node visibility line format extract_csharp_visibility parent cursor child member_name node_line_range body full_name source symbols find_child_by_field member_line","visibility":"private"}
{"file":"src/parser/csharp.rs","name":"extract_namespace","kind":"function","line":[360,435],"tokens":"child full_name file_path cursor find_child_by_field line parent_ctx walk_node source found_ns node_text texts node_line_range push_symbol name node format symbols depth parent body","visibility":"private"}
{"file":"src/parser/csharp.rs","name":"extract_method","kind":"function","line":[437,474],"tokens":"node_text source visibility extract_tokens format parent push_symbol name file_path parent_ctx filter_csharp_tokens _sig full_name body node find_child_by_field extract_signature_to_brace symbols line extract_csharp_visibility tokens node_line_range","visibility":"private"}
{"file":"src/parser/csharp.rs","name":"extract_constructor","kind":"function","line":[476,513],"tokens":"filter_csharp_tokens symbols file_path push_symbol body full_name name node_text line _sig parent_ctx format node_line_range extract_signature_to_brace extract_tokens node source visibility parent find_child_by_field extract_csharp_visibility tokens","visibility":"private"}
{"file":"src/parser/csharp.rs","name":"extract_property","kind":"function","line":[515,547],"tokens":"parent_ctx push_symbol format node source symbols extract_csharp_visibility parent full_name node_text file_path name find_child_by_field visibility line node_line_range","visibility":"private"}
{"file":"src/parser/csharp.rs","name":"extract_field","kind":"function","line":[549,604],"tokens":"push_symbol child cursor node decl_child source is_const file_path find_child_by_field name is_readonly parent_ctx node_line_range kind decl_cursor node_text line symbols extract_csharp_visibility has_csharp_modifier format full_name parent visibility is_static name_node","visibility":"private"}
{"file":"src/parser/csharp.rs","name":"extract_delegate","kind":"function","line":[606,639],"tokens":"node source node_text visibility node_line_range parent collapse_whitespace parent_ctx find_child_by_field push_symbol name _sig full_name extract_csharp_visibility line format file_path symbols","visibility":"private"}
{"file":"src/parser/csharp.rs","name":"extract_using","kind":"function","line":[641,689],"tokens":"cursor node node_line_range node_text source symbols push_symbol child line type_name alias name find_child_by_field file_path","visibility":"private"}
{"file":"src/parser/csharp.rs","name":"extract_csharp_comment","kind":"function","line":[691,739],"tokens":"kind node text raw String is_trivial_text strip_block_comment cleaned line file_path source node_text parent_ctx node_line_range texts from","visibility":"private"}
{"file":"src/parser/csharp.rs","name":"extract_csharp_visibility","kind":"function","line":[741,766],"tokens":"text full_text node_text child node cursor source","visibility":"private"}
{"file":"src/parser/csharp.rs","name":"has_csharp_modifier","kind":"function","line":[768,781],"tokens":"child text cursor node format node_text source modifier","visibility":"private"}
{"file":"src/parser/csharp.rs","name":"tests","kind":"module","line":[784,1010],"visibility":"private"}
{"file":"src/parser/csharp.rs","name":"super::*","kind":"import","line":[785,785],"visibility":"private"}
{"file":"src/parser/csharp.rs","name":"crate::parser::treesitter::parse_file","kind":"import","line":[786,786],"visibility":"private"}
{"file":"src/parser/csharp.rs","name":"find_sym","kind":"function","line":[788,793],"tokens":"symbols name panic","visibility":"private"}
{"file":"src/parser/csharp.rs","name":"test_csharp_class","kind":"function","line":[796,831],"tokens":"person helper parse_file _texts symbols visibility kind name get_name as_deref _refs find_sym source","visibility":"private"}
{"file":"src/parser/csharp.rs","name":"test_csharp_interface","kind":"function","line":[834,845],"tokens":"kind _texts visibility parse_file _refs find_sym as_deref runnable symbols source","visibility":"private"}
{"file":"src/parser/csharp.rs","name":"test_csharp_struct","kind":"function","line":[848,862],"tokens":"find_sym parse_file visibility kind as_deref point _texts _refs source symbols","visibility":"private"}
{"file":"src/parser/csharp.rs","name":"test_csharp_enum","kind":"function","line":[865,880],"tokens":"_texts _refs parse_file find_sym kind parent as_deref active status symbols source","visibility":"private"}
{"file":"src/parser/csharp.rs","name":"test_csharp_namespace","kind":"function","line":[883,902],"tokens":"_refs symbols parent utils run helper kind source _texts find_sym parse_file as_deref","visibility":"private"}
{"file":"src/parser/csharp.rs","name":"test_csharp_properties","kind":"function","line":[905,920],"tokens":"parse_file as_deref source _refs version name _texts find_sym symbols kind visibility","visibility":"private"}
{"file":"src/parser/csharp.rs","name":"test_csharp_constants","kind":"function","line":[923,938],"tokens":"max symbols parse_file _refs kind visibility _texts source find_sym as_deref version","visibility":"private"}
{"file":"src/parser/csharp.rs","name":"test_csharp_using","kind":"function","line":[941,958],"tokens":"system symbols kind linq parse_file _texts _refs source generic","visibility":"private"}
{"file":"src/parser/csharp.rs","name":"test_csharp_delegate","kind":"function","line":[961,968],"tokens":"as_deref _refs source handler _texts parse_file symbols find_sym kind visibility","visibility":"private"}
{"file":"src/parser/csharp.rs","name":"test_csharp_visibility","kind":"function","line":[971,992],"tokens":"parse_file internal symbols visibility as_deref source find_sym _refs _texts","visibility":"private"}
{"file":"src/parser/csharp.rs","name":"test_csharp_comments","kind":"function","line":[995,1009],"tokens":"_refs parse_file _symbols texts source any iter kind","visibility":"private"}
{"file":"src/parser/go.rs","name":"tree_sitter::{Node, Tree}","kind":"import","line":[3,3],"visibility":"private"}
{"file":"src/parser/go.rs","name":"crate::index::format::{SymbolEntry, TextEntry}","kind":"import","line":[5,5],"visibility":"private"}
{"file":"src/parser/go.rs","name":"crate::parser::helpers::*","kind":"import","line":[6,6],"visibility":"private"}
{"file":"src/parser/go.rs","name":"crate::parser::treesitter::MAX_DEPTH","kind":"import","line":[7,7],"visibility":"private"}
{"file":"src/parser/go.rs","name":"extract","kind":"function","line":[9,18],"tokens":"file_path tree walk_node symbols texts source root","visibility":"public"}
{"file":"src/parser/go.rs","name":"walk_node","kind":"function","line":[20,84],"tokens":"extract_go_comment MAX_DEPTH extract_string extract_package kind extract_function child depth node file_path symbols extract_type_decl texts source extract_var_const cursor extract_type_spec extract_method parent_ctx walk_node extract_imports","visibility":"private"}
{"file":"src/parser/go.rs","name":"extract_function","kind":"function","line":[86,111],"tokens":"symbols push_symbol source node_text node_line_range node body find_child_by_field go_visibility extract_tokens filter_go_tokens tokens line visibility name file_path","visibility":"private"}
{"file":"src/parser/go.rs","name":"extract_method","kind":"function","line":[113,166],"tokens":"go_visibility node node_text node_line_range visibility name recv format extract_tokens parent push_symbol symbols filter_go_tokens find_child_by_field receiver file_path source line text body full_name tokens","visibility":"private"}
{"file":"src/parser/go.rs","name":"extract_type_decl","kind":"function","line":[168,182],"tokens":"child cursor file_path extract_type_spec symbols texts node source","visibility":"private"}
{"file":"src/parser/go.rs","name":"extract_type_spec","kind":"function","line":[184,284],"tokens":"visibility cursor method_line name node_text extract_go_comment format field_name node source field_list file_path find_child_by_field field_line method_vis node_line_range go_visibility push_symbol symbols line field_name_node method_sig type_n collapse_whitespace parent_ctx type_node field_vis method_name child method_name_node texts kind","visibility":"private"}
{"file":"src/parser/go.rs","name":"extract_var_const","kind":"function","line":[286,345],"tokens":"parent_ctx extra_name line go_visibility symbols node file_path spec_child find_child_by_field spec_cursor kind source node_text visibility name cursor name_node child push_symbol node_line_range extra_line is_const extra_vis","visibility":"private"}
{"file":"src/parser/go.rs","name":"extract_imports","kind":"function","line":[347,402],"tokens":"line node_text push_symbol node cursor name_node path_node child symbols strip_string_quotes spec spec_line alias file_path list_cursor source path node_line_range find_child_by_field","visibility":"private"}
{"file":"src/parser/go.rs","name":"extract_package","kind":"function","line":[404,423],"tokens":"push_symbol cursor line name node_text symbols node node_line_range child source file_path","visibility":"private"}
{"file":"src/parser/go.rs","name":"extract_go_comment","kind":"function","line":[425,433],"tokens":"extract_comment source parent_ctx node texts file_path","visibility":"private"}
{"file":"src/parser/go.rs","name":"go_visibility","kind":"function","line":[435,441],"tokens":"name","visibility":"private"}
{"file":"src/parser/go.rs","name":"GO_STOPWORDS","kind":"constant","line":[444,483],"visibility":"private"}
{"file":"src/parser/go.rs","name":"filter_go_tokens","kind":"function","line":[486,492],"tokens":"GO_STOPWORDS tokens","visibility":"private"}
{"file":"src/parser/go.rs","name":"tests","kind":"module","line":[495,678],"visibility":"private"}
{"file":"src/parser/go.rs","name":"super::*","kind":"import","line":[496,496],"visibility":"private"}
{"file":"src/parser/go.rs","name":"crate::parser::treesitter::parse_file","kind":"import","line":[497,497],"visibility":"private"}
{"file":"src/parser/go.rs","name":"find_sym","kind":"function","line":[499,504],"tokens":"symbols name panic","visibility":"private"}
{"file":"src/parser/go.rs","name":"test_go_functions","kind":"function","line":[507,527],"tokens":"source _texts helper hello visibility kind as_deref find_sym _refs parse_file symbols","visibility":"private"}
{"file":"src/parser/go.rs","name":"test_go_methods","kind":"function","line":[530,554],"tokens":"person parse_file _refs greet _texts find_sym as_deref visibility source symbols priv_method parent kind","visibility":"private"}
{"file":"src/parser/go.rs","name":"test_go_structs","kind":"function","line":[557,576],"tokens":"kind _refs visibility find_sym as_deref _texts symbols source parse_file point","visibility":"private"}
{"file":"src/parser/go.rs","name":"test_go_interfaces","kind":"function","line":[579,595],"tokens":"visibility source symbols parse_file reader find_sym kind as_deref _refs _texts len","visibility":"private"}
{"file":"src/parser/go.rs","name":"test_go_variables","kind":"function","line":[598,618],"tokens":"kind parse_file visibility source symbols max as_deref global find_sym _texts _refs min","visibility":"private"}
{"file":"src/parser/go.rs","name":"test_go_imports","kind":"function","line":[621,639],"tokens":"fmt alias symbols kind _texts source parse_file os as_deref _refs","visibility":"private"}
{"file":"src/parser/go.rs","name":"test_go_type_alias","kind":"function","line":[642,654],"tokens":"user_id handler find_sym _texts kind symbols parse_file _refs source","visibility":"private"}
{"file":"src/parser/go.rs","name":"test_go_package","kind":"function","line":[657,665],"tokens":"parse_file pkg symbols _texts source name _refs","visibility":"private"}
{"file":"src/parser/go.rs","name":"test_go_comments","kind":"function","line":[668,677],"tokens":"any kind _symbols parse_file iter _refs source texts","visibility":"private"}
{"file":"src/parser/helpers.rs","name":"std::collections::HashSet","kind":"import","line":[3,3],"visibility":"private"}
{"file":"src/parser/helpers.rs","name":"tree_sitter::Node","kind":"import","line":[4,4],"visibility":"private"}
{"file":"src/parser/helpers.rs","name":"crate::index::format::{SymbolEntry, TextEntry}","kind":"import","line":[6,6],"visibility":"private"}
{"file":"src/parser/helpers.rs","name":"STOPWORDS","kind":"constant","line":[12,60],"visibility":"private"}
{"file":"src/parser/helpers.rs","name":"node_text","kind":"function","line":[63,67],"tokens":"end node start String source from_utf8_lossy","visibility":"public"}
{"file":"src/parser/helpers.rs","name":"node_line_range","kind":"function","line":[70,81],"tokens":"start end node end_pos","visibility":"public"}
{"file":"src/parser/helpers.rs","name":"find_child_by_field","kind":"function","line":[84,86],"tokens":"node field","visibility":"public"}
{"file":"src/parser/helpers.rs","name":"is_trivial_text","kind":"function","line":[89,104],"tokens":"trimmed text","visibility":"public"}
{"file":"src/parser/helpers.rs","name":"collapse_whitespace","kind":"function","line":[107,122],"tokens":"result with_capacity prev_ws String","visibility":"public"}
{"file":"src/parser/helpers.rs","name":"strip_doc_comment_prefix","kind":"function","line":[125,141],"tokens":"raw rest line trimmed","visibility":"public"}
{"file":"src/parser/helpers.rs","name":"strip_block_comment","kind":"function","line":[144,164],"tokens":"raw line trimmed","visibility":"public"}
{"file":"src/parser/helpers.rs","name":"strip_string_quotes","kind":"function","line":[167,199],"tokens":"strip_simple_quotes raw","visibility":"public"}
{"file":"src/parser/helpers.rs","name":"strip_simple_quotes","kind":"function","line":[201,209],"visibility":"private"}
{"file":"src/parser/helpers.rs","name":"extract_comment","kind":"function","line":[212,256],"tokens":"raw node file_path String texts line node_line_range text parent_ctx cleaned source is_trivial_text strip_block_comment strip_doc_comment_prefix kind node_text from","visibility":"public"}
{"file":"src/parser/helpers.rs","name":"extract_string","kind":"function","line":[259,282],"tokens":"texts node_text node raw parent_ctx node_line_range file_path strip_string_quotes text is_trivial_text String line from source","visibility":"public"}
{"file":"src/parser/helpers.rs","name":"push_symbol","kind":"function","line":[286,308],"tokens":"line String from tokens visibility kind alias parent symbols name file_path","visibility":"public"}
{"file":"src/parser/helpers.rs","name":"extract_signature_to_brace","kind":"function","line":[312,327],"tokens":"sig semi_pos node String collapse_whitespace end from_utf8_lossy source start text brace_pos","visibility":"public"}
{"file":"src/parser/helpers.rs","name":"extract_tokens","kind":"function","line":[336,362],"tokens":"tokens HashSet source node filtered STOPWORDS collect_identifiers","visibility":"public"}
{"file":"src/parser/helpers.rs","name":"collect_identifiers","kind":"function","line":[365,382],"tokens":"tokens collect_identifiers depth text node_text cursor child source node","visibility":"private"}
{"file":"src/parser/java.rs","name":"tree_sitter::{Node, Tree}","kind":"import","line":[3,3],"visibility":"private"}
{"file":"src/parser/java.rs","name":"crate::index::format::{SymbolEntry, TextEntry}","kind":"import","line":[5,5],"visibility":"private"}
{"file":"src/parser/java.rs","name":"crate::parser::helpers::*","kind":"import","line":[6,6],"visibility":"private"}
{"file":"src/parser/java.rs","name":"crate::parser::treesitter::MAX_DEPTH","kind":"import","line":[7,7],"visibility":"private"}
{"file":"src/parser/java.rs","name":"JAVA_STOPWORDS","kind":"constant","line":[10,59],"visibility":"private"}
{"file":"src/parser/java.rs","name":"filter_java_tokens","kind":"function","line":[62,76],"tokens":"filtered tokens tok JAVA_STOPWORDS","visibility":"private"}
{"file":"src/parser/java.rs","name":"extract","kind":"function","line":[78,87],"tokens":"file_path symbols source root tree walk_node texts","visibility":"public"}
{"file":"src/parser/java.rs","name":"walk_node","kind":"function","line":[89,189],"tokens":"extract_method texts kind parent_ctx cursor symbols extract_java_comment source extract_constructor child file_path MAX_DEPTH node depth extract_field extract_class extract_import extract_package extract_string walk_node","visibility":"private"}
{"file":"src/parser/java.rs","name":"extract_class","kind":"function","line":[192,250],"tokens":"line _sig kind visibility format body walk_node depth node_text parent_ctx extract_tokens node find_child_by_field texts child symbols push_symbol build_class_signature name source parent extract_java_visibility file_path cursor full_name filter_java_tokens node_line_range tokens","visibility":"private"}
{"file":"src/parser/java.rs","name":"extract_method","kind":"function","line":[252,289],"tokens":"file_path parent_ctx extract_java_visibility source _sig find_child_by_field format full_name body parent filter_java_tokens node_text node name extract_signature_to_brace node_line_range line tokens extract_tokens push_symbol visibility symbols","visibility":"private"}
{"file":"src/parser/java.rs","name":"extract_constructor","kind":"function","line":[291,328],"tokens":"visibility body filter_java_tokens node_text tokens parent_ctx source _sig node_line_range extract_tokens push_symbol extract_signature_to_brace symbols file_path parent full_name line extract_java_visibility name find_child_by_field node format","visibility":"private"}
{"file":"src/parser/java.rs","name":"extract_field","kind":"function","line":[330,377],"tokens":"extract_java_visibility name node_text symbols node line file_path has_modifier is_final node_line_range parent source cursor parent_ctx push_symbol visibility find_child_by_field child kind is_static name_node full_name format","visibility":"private"}
{"file":"src/parser/java.rs","name":"extract_import","kind":"function","line":[379,400],"tokens":"node symbols node_line_range source file_path cursor node_text line push_symbol child name","visibility":"private"}
{"file":"src/parser/java.rs","name":"extract_package","kind":"function","line":[402,421],"tokens":"node_line_range child node symbols file_path push_symbol line cursor name node_text source","visibility":"private"}
{"file":"src/parser/java.rs","name":"extract_java_comment","kind":"function","line":[423,431],"tokens":"file_path parent_ctx node extract_comment source texts","visibility":"private"}
{"file":"src/parser/java.rs","name":"extract_java_visibility","kind":"function","line":[433,452],"tokens":"child text node_text source cursor node","visibility":"private"}
{"file":"src/parser/java.rs","name":"has_modifier","kind":"function","line":[454,463],"tokens":"modifier child cursor node text node_text source","visibility":"private"}
{"file":"src/parser/java.rs","name":"build_class_signature","kind":"function","line":[465,479],"tokens":"implements extends type_params node node_text find_child_by_field source format","visibility":"private"}
{"file":"src/parser/java.rs","name":"tests","kind":"module","line":[482,658],"visibility":"private"}
{"file":"src/parser/java.rs","name":"super::*","kind":"import","line":[483,483],"visibility":"private"}
{"file":"src/parser/java.rs","name":"crate::parser::treesitter::parse_file","kind":"import","line":[484,484],"visibility":"private"}
{"file":"src/parser/java.rs","name":"find_sym","kind":"function","line":[486,491],"tokens":"name symbols panic","visibility":"private"}
{"file":"src/parser/java.rs","name":"test_java_class","kind":"function","line":[494,529],"tokens":"symbols kind source _refs find_sym visibility get_name as_deref helper constructor _texts parse_file person name","visibility":"private"}
{"file":"src/parser/java.rs","name":"test_java_interface","kind":"function","line":[532,542],"tokens":"_texts source symbols parse_file find_sym _refs kind visibility as_deref runnable","visibility":"private"}
{"file":"src/parser/java.rs","name":"test_java_enum","kind":"function","line":[545,556],"tokens":"as_deref _texts status visibility find_sym parse_file kind source _refs symbols","visibility":"private"}
{"file":"src/parser/java.rs","name":"test_java_fields","kind":"function","line":[559,577],"tokens":"source as_deref name symbols max_size _texts parse_file kind value visibility find_sym _refs","visibility":"private"}
{"file":"src/parser/java.rs","name":"test_java_methods","kind":"function","line":[580,603],"tokens":"parse_file log as_deref source visibility add _texts symbols find_sym divide _refs kind","visibility":"private"}
{"file":"src/parser/java.rs","name":"test_java_imports","kind":"function","line":[606,621],"tokens":"parse_file has_util source imports symbols _refs _texts is_empty","visibility":"private"}
{"file":"src/parser/java.rs","name":"test_java_package","kind":"function","line":[624,632],"tokens":"_refs parse_file pkg source name _texts symbols","visibility":"private"}
{"file":"src/parser/java.rs","name":"test_java_visibility_default","kind":"function","line":[635,646],"tokens":"_refs symbols find_sym visibility _texts parse_file as_deref source method","visibility":"private"}
{"file":"src/parser/java.rs","name":"test_java_comments","kind":"function","line":[649,657],"tokens":"parse_file kind iter _symbols _refs source texts any","visibility":"private"}
{"file":"src/parser/javascript.rs","name":"tree_sitter::{Node, Tree}","kind":"import","line":[3,3],"visibility":"private"}
{"file":"src/parser/javascript.rs","name":"crate::index::format::{SymbolEntry, TextEntry}","kind":"import","line":[5,5],"visibility":"private"}
{"file":"src/parser/javascript.rs","name":"crate::parser::helpers::*","kind":"import","line":[6,6],"visibility":"private"}
{"file":"src/parser/javascript.rs","name":"crate::parser::treesitter::MAX_DEPTH","kind":"import","line":[7,7],"visibility":"private"}
{"file":"src/parser/javascript.rs","name":"JS_STOPWORDS","kind":"constant","line":[10,41],"visibility":"private"}
{"file":"src/parser/javascript.rs","name":"filter_js_tokens","kind":"function","line":[44,56],"tokens":"filtered tokens tok JS_STOPWORDS","visibility":"private"}
{"file":"src/parser/javascript.rs","name":"extract","kind":"function","line":[58,67],"tokens":"file_path texts source walk_node symbols root tree","visibility":"public"}
{"file":"src/parser/javascript.rs","name":"walk_node","kind":"function","line":[69,145],"tokens":"kind extract_class extract_js_comment extract_function_decl file_path child symbols extract_variable_decl MAX_DEPTH depth extract_method texts node source extract_string cursor parent_ctx walk_node extract_import","visibility":"private"}
{"file":"src/parser/javascript.rs","name":"extract_function_decl","kind":"function","line":[147,199],"tokens":"parent source parent_ctx tokens line filter_js_tokens find_child_by_field node_line_range visibility push_symbol build_function_signature _sig node_text is_exported extract_tokens body full_name format name symbols kind file_path node","visibility":"private"}
{"file":"src/parser/javascript.rs","name":"extract_class","kind":"function","line":[201,267],"tokens":"node node_line_range format symbols child source texts visibility find_child_by_field full_name parent name _sig filter_js_tokens parent_ctx node_text walk_node body depth build_class_signature push_symbol line is_exported file_path tokens extract_tokens cursor","visibility":"private"}
{"file":"src/parser/javascript.rs","name":"extract_method","kind":"function","line":[269,359],"tokens":"name parent_ctx _sig parent file_path format is_async full_name kind String body is_setter params source is_getter tokens join find_child_by_field child extract_tokens node_line_range prefix sig_parts visibility symbols node is_static node_text line push_symbol filter_js_tokens Vec cursor","visibility":"private"}
{"file":"src/parser/javascript.rs","name":"extract_variable_decl","kind":"function","line":[361,448],"tokens":"child source node_line_range visibility matches name format extract_tokens line node_text cursor filter_js_tokens is_const node symbols is_exported find_child_by_field file_path name_node push_symbol parent is_func kind value_node full_name parent_ctx tokens","visibility":"private"}
{"file":"src/parser/javascript.rs","name":"extract_import","kind":"function","line":[450,539],"tokens":"name strip_string_quotes child raw node_text node_line_range source clause_child spec file_path find_child_by_field named_cursor alias line cursor symbols imported_name node source_module imp_name push_symbol full_name format clause_cursor","visibility":"private"}
{"file":"src/parser/javascript.rs","name":"extract_js_comment","kind":"function","line":[541,577],"tokens":"from node_text parent_ctx String node_line_range line raw node file_path cleaned kind strip_block_comment text is_trivial_text texts source","visibility":"private"}
{"file":"src/parser/javascript.rs","name":"build_function_signature","kind":"function","line":[579,596],"tokens":"find_child_by_field node is_async source is_generator prefix params format node_text","visibility":"private"}
{"file":"src/parser/javascript.rs","name":"build_class_signature","kind":"function","line":[598,613],"tokens":"extends cursor node find_child_by_field node_text text source format","visibility":"private"}
{"file":"src/parser/javascript.rs","name":"tests","kind":"module","line":[616,789],"visibility":"private"}
{"file":"src/parser/javascript.rs","name":"super::*","kind":"import","line":[617,617],"visibility":"private"}
{"file":"src/parser/javascript.rs","name":"crate::parser::treesitter::parse_file","kind":"import","line":[618,618],"visibility":"private"}
{"file":"src/parser/javascript.rs","name":"find_sym","kind":"function","line":[620,625],"tokens":"name symbols panic","visibility":"private"}
{"file":"src/parser/javascript.rs","name":"test_js_functions","kind":"function","line":[628,653],"tokens":"as_deref parse_file symbols _refs source _texts fetch generator visibility len kind hello find_sym","visibility":"private"}
{"file":"src/parser/javascript.rs","name":"test_js_classes","kind":"function","line":[656,689],"tokens":"kind parse_file parent symbols _refs _texts visibility find_sym getter person source as_deref greet create","visibility":"private"}
{"file":"src/parser/javascript.rs","name":"test_js_variables","kind":"function","line":[692,717],"tokens":"as_deref api async_fn parse_file find_sym debug _refs visibility kind _texts max source symbols add","visibility":"private"}
{"file":"src/parser/javascript.rs","name":"test_js_imports","kind":"function","line":[720,742],"tokens":"react source alias _texts as_deref kind utils parse_file _refs render use_state symbols","visibility":"private"}
{"file":"src/parser/javascript.rs","name":"test_js_visibility","kind":"function","line":[745,772],"tokens":"source parse_file visibility _texts symbols _refs as_deref internal","visibility":"private"}
{"file":"src/parser/javascript.rs","name":"test_js_comments","kind":"function","line":[775,788],"tokens":"_refs _symbols texts kind any source iter parse_file","visibility":"private"}
{"file":"src/parser/languages.rs","name":"anyhow::Result","kind":"import","line":[1,1],"visibility":"private"}
{"file":"src/parser/languages.rs","name":"tree_sitter::Language","kind":"import","line":[2,2],"visibility":"private"}
{"file":"src/parser/languages.rs","name":"get_language","kind":"function","line":[8,50],"tokens":"tree_sitter_md LANGUAGE tree_sitter_go anyhow tree_sitter_typescript tree_sitter_java tree_sitter_rust tree_sitter_ruby tree_sitter_c tree_sitter_python name LANGUAGE_TYPESCRIPT LANGUAGE_TSX tree_sitter_cpp bail tree_sitter_javascript feature tree_sitter_c_sharp cfg","visibility":"public"}
{"file":"src/parser/languages.rs","name":"detect_language","kind":"function","line":[53,73],"tokens":"extension","visibility":"public"}
{"file":"src/parser/markdown.rs","name":"anyhow::Result","kind":"import","line":[10,10],"visibility":"private"}
{"file":"src/parser/markdown.rs","name":"tree_sitter::Node","kind":"import","line":[11,11],"visibility":"private"}
{"file":"src/parser/markdown.rs","name":"tree_sitter_md::MarkdownParser","kind":"import","line":[12,12],"visibility":"private"}
{"file":"src/parser/markdown.rs","name":"crate::index::format::{SymbolEntry, TextEntry}","kind":"import","line":[14,14],"visibility":"private"}
{"file":"src/parser/markdown.rs","name":"crate::parser::helpers::{node_line_range, node_text, push_symbol}","kind":"import","line":[15,15],"visibility":"private"}
{"file":"src/parser/markdown.rs","name":"parse_and_extract","kind":"function","line":[18,47],"tokens":"root heading_stack walk_blocks md_tree anyhow MarkdownParser source texts file_path block_tree symbols Vec parser","visibility":"public"}
{"file":"src/parser/markdown.rs","name":"walk_blocks","kind":"function","line":[50,76],"tokens":"child heading_stack node extract_atx_heading file_path texts walk_blocks extract_code_block symbols extract_setext_heading source cursor","visibility":"private"}
{"file":"src/parser/markdown.rs","name":"extract_atx_heading","kind":"function","line":[79,107],"tokens":"compute_qualified_name line_range source symbols file_path qualified_name get_heading_text text heading_stack level node node_line_range push_symbol parent count_atx_level","visibility":"private"}
{"file":"src/parser/markdown.rs","name":"extract_setext_heading","kind":"function","line":[110,138],"tokens":"level source text get_heading_text symbols heading_stack compute_qualified_name line_range push_symbol qualified_name node_line_range get_setext_level file_path node parent","visibility":"private"}
{"file":"src/parser/markdown.rs","name":"extract_code_block","kind":"function","line":[141,192],"tokens":"node_text texts line_range name text file_path cursor raw content node_line_range source node child parent String heading_stack extract_code_content","visibility":"private"}
{"file":"src/parser/markdown.rs","name":"extract_code_content","kind":"function","line":[196,220],"tokens":"lines end_idx line raw trimmed first content","visibility":"private"}
{"file":"src/parser/markdown.rs","name":"get_heading_text","kind":"function","line":[226,248],"tokens":"source strip_heading_markers text node_text node child strip_optional_closing_hashes cursor raw","visibility":"private"}
{"file":"src/parser/markdown.rs","name":"strip_optional_closing_hashes","kind":"function","line":[252,268],"tokens":"after_space trimmed text last_space_idx","visibility":"private"}
{"file":"src/parser/markdown.rs","name":"strip_heading_markers","kind":"function","line":[271,291],"tokens":"trimmed text raw first_line after_hashes","visibility":"private"}
{"file":"src/parser/markdown.rs","name":"count_atx_level","kind":"function","line":[294,313],"tokens":"kind text node cursor count level_char source child level node_text","visibility":"private"}
{"file":"src/parser/markdown.rs","name":"get_setext_level","kind":"function","line":[316,338],"tokens":"trimmed node_text node child text source cursor last_line","visibility":"private"}
{"file":"src/parser/markdown.rs","name":"compute_qualified_name","kind":"function","line":[349,376],"tokens":"qname name qualified_name parent format top_level level parent_name heading_stack","visibility":"private"}
{"file":"src/parser/markdown.rs","name":"tests","kind":"module","line":[379,553],"visibility":"private"}
{"file":"src/parser/markdown.rs","name":"super::*","kind":"import","line":[380,380],"visibility":"private"}
{"file":"src/parser/markdown.rs","name":"test_atx_headings_basic","kind":"function","line":[383,396],"tokens":"kind symbols parse_and_extract parent to_string len source name","visibility":"private"}
{"file":"src/parser/markdown.rs","name":"test_atx_headings_hierarchy","kind":"function","line":[399,429],"tokens":"symbols source parse_and_extract len name to_string parent","visibility":"private"}
{"file":"src/parser/markdown.rs","name":"test_setext_headings","kind":"function","line":[432,443],"tokens":"parent parse_and_extract symbols name len kind source to_string","visibility":"private"}
{"file":"src/parser/markdown.rs","name":"test_code_blocks","kind":"function","line":[446,457],"tokens":"source is_empty parent name parse_and_extract len to_string symbols texts text kind contains","visibility":"private"}
{"file":"src/parser/markdown.rs","name":"test_mixed_heading_styles","kind":"function","line":[460,468],"tokens":"source symbols name len to_string parent parse_and_extract","visibility":"private"}
{"file":"src/parser/markdown.rs","name":"test_heading_with_trailing_hashes","kind":"function","line":[471,480],"tokens":"symbols source parse_and_extract len name","visibility":"private"}
{"file":"src/parser/markdown.rs","name":"test_heading_with_only_closing_hashes","kind":"function","line":[483,490],"tokens":"source symbols len name parse_and_extract","visibility":"private"}
{"file":"src/parser/markdown.rs","name":"test_empty_heading_skipped","kind":"function","line":[493,500],"tokens":"all is_empty name symbols any parse_and_extract iter source","visibility":"private"}
{"file":"src/parser/markdown.rs","name":"test_code_block_without_heading","kind":"function","line":[503,511],"tokens":"source symbols parse_and_extract is_empty kind parent texts","visibility":"private"}
{"file":"src/parser/markdown.rs","name":"test_deeply_nested_headings","kind":"function","line":[514,521],"tokens":"len parse_and_extract source name parent to_string symbols","visibility":"private"}
{"file":"src/parser/markdown.rs","name":"test_duplicate_heading_names","kind":"function","line":[524,536],"tokens":"len parse_and_extract symbols name source","visibility":"private"}
{"file":"src/parser/markdown.rs","name":"test_code_block_with_qualified_parent","kind":"function","line":[539,552],"tokens":"symbols texts kind to_string len parent source parse_and_extract name","visibility":"private"}
{"file":"src/parser/metadata.rs","name":"tree_sitter::{Parser, Tree}","kind":"import","line":[15,15],"visibility":"private"}
{"file":"src/parser/metadata.rs","name":"crate::parser::helpers::{node_text, strip_string_quotes}","kind":"import","line":[17,17],"visibility":"private"}
{"file":"src/parser/metadata.rs","name":"crate::parser::languages::get_language","kind":"import","line":[18,18],"visibility":"private"}
{"file":"src/parser/metadata.rs","name":"FileMetadata","kind":"struct","line":[22,25],"visibility":"public"}
{"file":"src/parser/metadata.rs","name":"FileMetadata","kind":"impl","line":[27,35],"visibility":"private"}
{"file":"src/parser/metadata.rs","name":"FileMetadata.new","kind":"method","line":[28,30],"parent":"FileMetadata","tokens":"title description","visibility":"public"}
{"file":"src/parser/metadata.rs","name":"FileMetadata.is_empty","kind":"method","line":[32,34],"parent":"FileMetadata","visibility":"public"}
{"file":"src/parser/metadata.rs","name":"extract_file_metadata","kind":"function","line":[41,84],"tokens":"extract_c_metadata truncate_to_line extract_java_metadata cfg result extract_with_tree extract_python_metadata extract_rust_metadata extract_go_metadata extract_ruby_metadata source extract_markdown_metadata truncate_to_sentence FileMetadata feature language extract_csharp_metadata extract_js_metadata","visibility":"public"}
{"file":"src/parser/metadata.rs","name":"extract_with_tree","kind":"function","line":[87,105],"tokens":"tree lang get_language source FileMetadata parser extractor Parser language","visibility":"private"}
{"file":"src/parser/metadata.rs","name":"truncate_to_line","kind":"function","line":[108,114],"tokens":"idx text trimmed","visibility":"private"}
{"file":"src/parser/metadata.rs","name":"truncate_to_sentence","kind":"function","line":[117,138],"tokens":"truncate_to_line trimmed next_char next_idx text","visibility":"private"}
{"file":"src/parser/metadata.rs","name":"extract_markdown_metadata","kind":"function","line":[145,199],"tokens":"FileMetadata trimmed extract_yaml_frontmatter heading_text title str source line meta from_utf8 in_code_block text description","visibility":"private"}
{"file":"src/parser/metadata.rs","name":"extract_yaml_frontmatter","kind":"function","line":[202,232],"tokens":"value end_idx line FileMetadata title yaml_content content text description trimmed","visibility":"private"}
{"file":"src/parser/metadata.rs","name":"extract_python_metadata","kind":"function","line":[239,267],"tokens":"node_text text string_node root tree strip_string_quotes split_docstring FileMetadata source raw cursor child","visibility":"private"}
{"file":"src/parser/metadata.rs","name":"extract_rust_metadata","kind":"function","line":[274,315],"tokens":"cleaned FileMetadata doc_lines tree source root cursor node_text doc split_docstring child clean_block_comment combined content text Vec","visibility":"private"}
{"file":"src/parser/metadata.rs","name":"extract_js_metadata","kind":"function","line":[322,349],"tokens":"node_text root clean_jsdoc_comment tree FileMetadata split_docstring content child source text cleaned cursor","visibility":"private"}
{"file":"src/parser/metadata.rs","name":"extract_go_metadata","kind":"function","line":[356,393],"tokens":"cursor root child line node_text source combined content cleaned clean_block_comment FileMetadata text split_docstring doc_lines Vec tree","visibility":"private"}
{"file":"src/parser/metadata.rs","name":"extract_java_metadata","kind":"function","line":[400,426],"tokens":"text clean_jsdoc_comment content FileMetadata node_text child cursor source tree cleaned split_docstring root","visibility":"private"}
{"file":"src/parser/metadata.rs","name":"extract_c_metadata","kind":"function","line":[433,472],"tokens":"is_copyright_only tree clean_block_comment combined child doc_lines Vec source root cleaned line cursor content node_text text split_docstring FileMetadata","visibility":"private"}
{"file":"src/parser/metadata.rs","name":"extract_ruby_metadata","kind":"function","line":[479,505],"tokens":"tree FileMetadata doc_lines line cursor root text node_text split_docstring child source combined Vec","visibility":"private"}
{"file":"src/parser/metadata.rs","name":"extract_csharp_metadata","kind":"function","line":[512,544],"tokens":"tree text root cursor Vec doc doc_lines split_docstring child node_text combined extract_xml_summary FileMetadata summary source","visibility":"private"}
{"file":"src/parser/metadata.rs","name":"extract_xml_summary","kind":"function","line":[547,567],"tokens":"start text content end cleaned","visibility":"private"}
{"file":"src/parser/metadata.rs","name":"split_docstring","kind":"function","line":[574,605],"tokens":"title desc lines description FileMetadata trimmed text desc_lines is_decoration_line","visibility":"private"}
{"file":"src/parser/metadata.rs","name":"is_decoration_line","kind":"function","line":[608,616],"tokens":"first_char matches line","visibility":"private"}
{"file":"src/parser/metadata.rs","name":"clean_block_comment","kind":"function","line":[619,629],"tokens":"text trimmed line","visibility":"private"}
{"file":"src/parser/metadata.rs","name":"clean_jsdoc_comment","kind":"function","line":[632,663],"tokens":"Vec content trimmed desc rest lines line text","visibility":"private"}
{"file":"src/parser/metadata.rs","name":"is_copyright_only","kind":"function","line":[666,673],"tokens":"text lower","visibility":"private"}
{"file":"src/parser/metadata.rs","name":"tests","kind":"module","line":[676,733],"visibility":"private"}
{"file":"src/parser/metadata.rs","name":"super::*","kind":"import","line":[677,677],"visibility":"private"}
{"file":"src/parser/metadata.rs","name":"test_truncate_to_sentence","kind":"function","line":[680,690],"tokens":"truncate_to_sentence","visibility":"private"}
{"file":"src/parser/metadata.rs","name":"test_truncate_to_line","kind":"function","line":[693,696],"tokens":"truncate_to_line","visibility":"private"}
{"file":"src/parser/metadata.rs","name":"test_split_docstring","kind":"function","line":[699,707],"tokens":"title to_string split_docstring description meta","visibility":"private"}
{"file":"src/parser/metadata.rs","name":"test_clean_block_comment","kind":"function","line":[710,714],"tokens":"clean_block_comment result input","visibility":"private"}
{"file":"src/parser/metadata.rs","name":"test_yaml_frontmatter","kind":"function","line":[718,723],"tokens":"description text to_string extract_yaml_frontmatter title meta","visibility":"private"}
{"file":"src/parser/metadata.rs","name":"test_markdown_heading_fallback","kind":"function","line":[727,732],"tokens":"description to_string source extract_markdown_metadata meta title","visibility":"private"}
{"file":"src/parser/mod.rs","name":"helpers","kind":"module","line":[1,1],"visibility":"public"}
{"file":"src/parser/mod.rs","name":"languages","kind":"module","line":[2,2],"visibility":"public"}
{"file":"src/parser/mod.rs","name":"metadata","kind":"module","line":[3,3],"visibility":"public"}
{"file":"src/parser/mod.rs","name":"sfc","kind":"module","line":[4,4],"visibility":"public"}
{"file":"src/parser/mod.rs","name":"treesitter","kind":"module","line":[5,5],"visibility":"public"}
{"file":"src/parser/mod.rs","name":"rust_lang","kind":"module","line":[9,9],"visibility":"public"}
{"file":"src/parser/mod.rs","name":"python","kind":"module","line":[12,12],"visibility":"public"}
{"file":"src/parser/mod.rs","name":"javascript","kind":"module","line":[15,15],"visibility":"public"}
{"file":"src/parser/mod.rs","name":"typescript","kind":"module","line":[18,18],"visibility":"public"}
{"file":"src/parser/mod.rs","name":"go","kind":"module","line":[21,21],"visibility":"public"}
{"file":"src/parser/mod.rs","name":"java","kind":"module","line":[24,24],"visibility":"public"}
{"file":"src/parser/mod.rs","name":"c_lang","kind":"module","line":[27,27],"visibility":"public"}
{"file":"src/parser/mod.rs","name":"cpp","kind":"module","line":[30,30],"visibility":"public"}
{"file":"src/parser/mod.rs","name":"ruby","kind":"module","line":[33,33],"visibility":"public"}
{"file":"src/parser/mod.rs","name":"csharp","kind":"module","line":[36,36],"visibility":"public"}
{"file":"src/parser/mod.rs","name":"markdown","kind":"module","line":[39,39],"visibility":"public"}
{"file":"src/parser/python.rs","name":"tree_sitter::{Node, Tree}","kind":"import","line":[3,3],"visibility":"private"}
{"file":"src/parser/python.rs","name":"crate::index::format::{ReferenceEntry, SymbolEntry, TextEntry}","kind":"import","line":[5,5],"visibility":"private"}
{"file":"src/parser/python.rs","name":"crate::parser::helpers::*","kind":"import","line":[6,6],"visibility":"private"}
{"file":"src/parser/python.rs","name":"crate::parser::treesitter::MAX_DEPTH","kind":"import","line":[7,7],"visibility":"private"}
{"file":"src/parser/python.rs","name":"extract","kind":"function","line":[9,19],"tokens":"tree symbols texts walk_node root source file_path references","visibility":"public"}
{"file":"src/parser/python.rs","name":"walk_node","kind":"function","line":[22,118],"tokens":"source symbols extract_assignment extract_python_comment cursor walk_node extract_import extract_string file_path extract_class texts extract_import_from kind extract_function parent_ctx MAX_DEPTH references depth child extract_docstring extract_call node","visibility":"private"}
{"file":"src/parser/python.rs","name":"extract_function","kind":"function","line":[121,201],"tokens":"full_name parent_ctx child symbols node_line_range filter_python_tokens node name extract_tokens first parent line cursor extract_docstring str_node source detect_python_visibility references walk_node kind tokens body depth node_text push_symbol visibility find_child_by_field format file_path texts","visibility":"private"}
{"file":"src/parser/python.rs","name":"extract_class","kind":"function","line":[204,273],"tokens":"full_name find_child_by_field depth detect_python_visibility filter_python_tokens format walk_node push_symbol symbols body source node str_node tokens line name child extract_tokens parent texts node_text parent_ctx visibility first references cursor file_path extract_docstring node_line_range","visibility":"private"}
{"file":"src/parser/python.rs","name":"extract_import","kind":"function","line":[275,342],"tokens":"name node node_text child file_path source symbols push_symbol node_line_range alias_node line String find_child_by_field alias references name_node cursor","visibility":"private"}
{"file":"src/parser/python.rs","name":"extract_import_from","kind":"function","line":[344,460],"tokens":"source alias imported references child file_path String full_import line name_node push_symbol node format alias_node find_child_by_field module node_line_range node_text cursor symbols","visibility":"private"}
{"file":"src/parser/python.rs","name":"extract_assignment","kind":"function","line":[462,508],"tokens":"parent_ctx symbols source line visibility parent format node_text name node_line_range left file_path find_child_by_field node full_name detect_python_visibility kind push_symbol","visibility":"private"}
{"file":"src/parser/python.rs","name":"extract_call","kind":"function","line":[512,557],"tokens":"String find_child_by_field parent_ctx node_line_range file_path references func from is_builtin_call source name line node_text node","visibility":"private"}
{"file":"src/parser/python.rs","name":"is_builtin_call","kind":"function","line":[560,610],"tokens":"base name matches","visibility":"private"}
{"file":"src/parser/python.rs","name":"extract_docstring","kind":"function","line":[612,635],"tokens":"String from text texts file_path is_trivial_text parent_ctx node_text node_line_range source line raw node strip_string_quotes","visibility":"private"}
{"file":"src/parser/python.rs","name":"extract_python_comment","kind":"function","line":[637,645],"tokens":"source node parent_ctx texts extract_comment file_path","visibility":"private"}
{"file":"src/parser/python.rs","name":"detect_python_visibility","kind":"function","line":[647,655],"tokens":"name","visibility":"private"}
{"file":"src/parser/python.rs","name":"PYTHON_STOPWORDS","kind":"constant","line":[658,660],"visibility":"private"}
{"file":"src/parser/python.rs","name":"filter_python_tokens","kind":"function","line":[663,669],"tokens":"PYTHON_STOPWORDS tokens","visibility":"private"}
{"file":"src/parser/python.rs","name":"tests","kind":"module","line":[672,867],"visibility":"private"}
{"file":"src/parser/python.rs","name":"super::*","kind":"import","line":[673,673],"visibility":"private"}
{"file":"src/parser/python.rs","name":"crate::parser::treesitter::parse_file","kind":"import","line":[674,674],"visibility":"private"}
{"file":"src/parser/python.rs","name":"find_sym","kind":"function","line":[676,681],"tokens":"symbols panic name","visibility":"private"}
{"file":"src/parser/python.rs","name":"test_python_functions","kind":"function","line":[684,710],"tokens":"source symbols _texts parse_file kind tokens len async_fn hello _refs priv_fn find_sym visibility as_deref is_none","visibility":"private"}
{"file":"src/parser/python.rs","name":"test_python_classes","kind":"function","line":[713,742],"tokens":"_refs _texts symbols as_deref parent greet person visibility kind init source priv_class find_sym parse_file","visibility":"private"}
{"file":"src/parser/python.rs","name":"test_python_imports","kind":"function","line":[745,771],"tokens":"as_deref path find_sym os dict name _texts kind source refs sys any iter symbols parse_file alias","visibility":"private"}
{"file":"src/parser/python.rs","name":"test_python_variables","kind":"function","line":[774,791],"tokens":"config source _refs _texts max_size find_sym kind parse_file symbols debug","visibility":"private"}
{"file":"src/parser/python.rs","name":"test_python_visibility","kind":"function","line":[794,821],"tokens":"as_deref _refs visibility source find_sym parse_file symbols internal _texts special","visibility":"private"}
{"file":"src/parser/python.rs","name":"test_python_docstrings","kind":"function","line":[824,836],"tokens":"source iter any _refs texts _symbols parse_file kind","visibility":"private"}
{"file":"src/parser/python.rs","name":"test_python_call_references","kind":"function","line":[839,866],"tokens":"any parse_file call_refs name caller iter refs source as_deref _symbols _texts","visibility":"private"}
{"file":"src/parser/ruby.rs","name":"tree_sitter::{Node, Tree}","kind":"import","line":[3,3],"visibility":"private"}
{"file":"src/parser/ruby.rs","name":"crate::index::format::{SymbolEntry, TextEntry}","kind":"import","line":[5,5],"visibility":"private"}
{"file":"src/parser/ruby.rs","name":"crate::parser::helpers::*","kind":"import","line":[6,6],"visibility":"private"}
{"file":"src/parser/ruby.rs","name":"crate::parser::treesitter::MAX_DEPTH","kind":"import","line":[7,7],"visibility":"private"}
{"file":"src/parser/ruby.rs","name":"RUBY_STOPWORDS","kind":"constant","line":[10,76],"visibility":"private"}
{"file":"src/parser/ruby.rs","name":"filter_ruby_tokens","kind":"function","line":[79,93],"tokens":"filtered tok RUBY_STOPWORDS tokens","visibility":"private"}
{"file":"src/parser/ruby.rs","name":"extract","kind":"function","line":[95,104],"tokens":"source symbols walk_node tree texts root file_path","visibility":"public"}
{"file":"src/parser/ruby.rs","name":"walk_node","kind":"function","line":[106,172],"tokens":"cursor extract_singleton_method child walk_node extract_method depth MAX_DEPTH symbols parent_ctx extract_call extract_string file_path extract_class source kind extract_module extract_ruby_comment node extract_assignment texts","visibility":"private"}
{"file":"src/parser/ruby.rs","name":"extract_method","kind":"function","line":[174,250],"tokens":"child file_path walk_node filter_ruby_tokens extract_tokens parent_ctx line parent node_text full_name body ctx node name texts tokens depth symbols visibility cursor source push_symbol _sig params kind format find_child_by_field ruby_visibility node_line_range","visibility":"private"}
{"file":"src/parser/ruby.rs","name":"extract_singleton_method","kind":"function","line":[252,321],"tokens":"params body depth walk_node extract_tokens format node_text file_path find_child_by_field node full_name push_symbol _sig tokens node_line_range ctx texts parent name symbols filter_ruby_tokens cursor line parent_ctx child source","visibility":"private"}
{"file":"src/parser/ruby.rs","name":"extract_class","kind":"function","line":[323,383],"tokens":"parent_ctx node_line_range superclass symbols body push_symbol file_path cursor node_text full_name tokens texts filter_ruby_tokens name depth source child walk_node _sig parent extract_tokens format find_child_by_field node line","visibility":"private"}
{"file":"src/parser/ruby.rs","name":"extract_module","kind":"function","line":[385,433],"tokens":"symbols line format node parent cursor body full_name source name node_text push_symbol file_path parent_ctx child walk_node texts depth find_child_by_field node_line_range","visibility":"private"}
{"file":"src/parser/ruby.rs","name":"extract_assignment","kind":"function","line":[435,514],"tokens":"format left visibility node_line_range ruby_visibility symbols node source file_path parent full_name parent_ctx find_child_by_field name line node_text push_symbol","visibility":"private"}
{"file":"src/parser/ruby.rs","name":"extract_call","kind":"function","line":[516,557],"tokens":"node_line_range file_path find_child_by_field source push_symbol args cursor path node_text node strip_string_quotes child line symbols method","visibility":"private"}
{"file":"src/parser/ruby.rs","name":"extract_ruby_comment","kind":"function","line":[559,567],"tokens":"texts node extract_comment source file_path parent_ctx","visibility":"private"}
{"file":"src/parser/ruby.rs","name":"ruby_visibility","kind":"function","line":[569,575],"tokens":"name","visibility":"private"}
{"file":"src/parser/ruby.rs","name":"tests","kind":"module","line":[578,775],"visibility":"private"}
{"file":"src/parser/ruby.rs","name":"super::*","kind":"import","line":[579,579],"visibility":"private"}
{"file":"src/parser/ruby.rs","name":"crate::parser::treesitter::parse_file","kind":"import","line":[580,580],"visibility":"private"}
{"file":"src/parser/ruby.rs","name":"find_sym","kind":"function","line":[582,587],"tokens":"symbols panic name","visibility":"private"}
{"file":"src/parser/ruby.rs","name":"test_ruby_methods","kind":"function","line":[590,608],"tokens":"symbols parse_file kind hello find_sym source _texts _refs as_deref helper visibility","visibility":"private"}
{"file":"src/parser/ruby.rs","name":"test_ruby_classes","kind":"function","line":[611,636],"tokens":"init kind create as_deref find_sym parent parse_file _texts source symbols person _refs","visibility":"private"}
{"file":"src/parser/ruby.rs","name":"test_ruby_modules","kind":"function","line":[639,664],"tokens":"utils source parent kind _texts logger writer _refs helper parse_file as_deref find_sym symbols","visibility":"private"}
{"file":"src/parser/ruby.rs","name":"test_ruby_constants","kind":"function","line":[667,682],"tokens":"_refs source _texts kind as_deref max find_sym version symbols parent parse_file","visibility":"private"}
{"file":"src/parser/ruby.rs","name":"test_ruby_variables","kind":"function","line":[685,699],"tokens":"_refs parse_file kind as_deref visibility instance class_var find_sym symbols _texts source","visibility":"private"}
{"file":"src/parser/ruby.rs","name":"test_ruby_require","kind":"function","line":[702,713],"tokens":"kind source parse_file json symbols config _texts _refs","visibility":"private"}
{"file":"src/parser/ruby.rs","name":"test_ruby_inheritance","kind":"function","line":[716,732],"tokens":"kind _texts dog find_sym _refs source symbols parse_file bark","visibility":"private"}
{"file":"src/parser/ruby.rs","name":"test_ruby_singleton_methods","kind":"function","line":[735,745],"tokens":"_texts source parse_file _refs symbols kind format find_sym","visibility":"private"}
{"file":"src/parser/ruby.rs","name":"test_ruby_comments","kind":"function","line":[748,758],"tokens":"iter parse_file texts source _symbols any kind _refs","visibility":"private"}
{"file":"src/parser/ruby.rs","name":"test_ruby_visibility_markers","kind":"function","line":[761,774],"tokens":"visibility _refs symbols source internal _texts find_sym parse_file as_deref","visibility":"private"}
{"file":"src/parser/rust_lang.rs","name":"tree_sitter::{Node, Tree}","kind":"import","line":[3,3],"visibility":"private"}
{"file":"src/parser/rust_lang.rs","name":"crate::index::format::{SymbolEntry, TextEntry}","kind":"import","line":[5,5],"visibility":"private"}
{"file":"src/parser/rust_lang.rs","name":"crate::parser::helpers::*","kind":"import","line":[6,6],"visibility":"private"}
{"file":"src/parser/rust_lang.rs","name":"crate::parser::treesitter::MAX_DEPTH","kind":"import","line":[7,7],"visibility":"private"}
{"file":"src/parser/rust_lang.rs","name":"extract","kind":"function","line":[9,18],"tokens":"tree source symbols texts file_path root walk_node","visibility":"public"}
{"file":"src/parser/rust_lang.rs","name":"walk_node","kind":"function","line":[20,92],"tokens":"parent_ctx walk_node symbols extract_string MAX_DEPTH extract_use extract_named_symbol extract_function depth texts file_path kind node source extract_rust_comment cursor child extract_impl","visibility":"private"}
{"file":"src/parser/rust_lang.rs","name":"extract_function","kind":"function","line":[94,137],"tokens":"body extract_visibility node_line_range tokens file_path format kind source parent_ctx node extract_tokens find_child_by_field push_symbol line full_name visibility name node_text filter_rust_tokens parent symbols","visibility":"private"}
{"file":"src/parser/rust_lang.rs","name":"extract_named_symbol","kind":"function","line":[139,166],"tokens":"file_path line name parent_ctx symbols find_child_by_field extract_visibility node_line_range node node_text source kind visibility push_symbol","visibility":"private"}
{"file":"src/parser/rust_lang.rs","name":"extract_impl","kind":"function","line":[168,243],"tokens":"trait_name walk_node extract_impl_type_name extract_named_symbol visibility extract_function node body node_text child find_child_by_field file_path node_line_range kind depth symbols texts line impl_type_name extract_visibility source push_symbol cursor","visibility":"private"}
{"file":"src/parser/rust_lang.rs","name":"extract_impl_type_name","kind":"function","line":[245,250],"tokens":"find_child_by_field node source node_text type_node","visibility":"private"}
{"file":"src/parser/rust_lang.rs","name":"extract_use","kind":"function","line":[252,259],"tokens":"node_line_range symbols find_child_by_field line visibility source extract_use_paths file_path node extract_visibility arg","visibility":"private"}
{"file":"src/parser/rust_lang.rs","name":"extract_use_paths","kind":"function","line":[261,328],"tokens":"path_node child node source line name extract_use_paths alias file_path symbols find_child_by_field node_text cursor push_symbol visibility","visibility":"private"}
{"file":"src/parser/rust_lang.rs","name":"extract_visibility","kind":"function","line":[330,343],"tokens":"cursor node text node_text source child","visibility":"private"}
{"file":"src/parser/rust_lang.rs","name":"RUST_STOPWORDS","kind":"constant","line":[346,353],"visibility":"private"}
{"file":"src/parser/rust_lang.rs","name":"filter_rust_tokens","kind":"function","line":[356,362],"tokens":"tokens RUST_STOPWORDS","visibility":"private"}
{"file":"src/parser/rust_lang.rs","name":"extract_rust_comment","kind":"function","line":[365,373],"tokens":"extract_comment file_path source parent_ctx texts node","visibility":"private"}
{"file":"src/parser/rust_lang.rs","name":"tests","kind":"module","line":[376,554],"visibility":"private"}
{"file":"src/parser/rust_lang.rs","name":"super::*","kind":"import","line":[377,377],"visibility":"private"}
{"file":"src/parser/rust_lang.rs","name":"crate::parser::treesitter::parse_file","kind":"import","line":[378,378],"visibility":"private"}
{"file":"src/parser/rust_lang.rs","name":"find_sym","kind":"function","line":[380,385],"tokens":"symbols name panic","visibility":"private"}
{"file":"src/parser/rust_lang.rs","name":"test_rust_functions","kind":"function","line":[388,408],"tokens":"source helper symbols parse_file _texts as_deref kind len visibility hello _refs find_sym","visibility":"private"}
{"file":"src/parser/rust_lang.rs","name":"test_rust_struct","kind":"function","line":[411,428],"tokens":"_texts len parse_file kind as_deref find_sym priv_struct _refs source visibility symbols point","visibility":"private"}
{"file":"src/parser/rust_lang.rs","name":"test_rust_impl","kind":"function","line":[431,457],"tokens":"parse_file find_sym kind symbols _impl_entry _refs parent _impl_sym as_deref source len visibility _texts priv_method","visibility":"private"}
{"file":"src/parser/rust_lang.rs","name":"test_rust_trait","kind":"function","line":[460,481],"tokens":"trait_impl source as_deref _texts symbols _refs parse_file tokens trait_sym visibility is_none","visibility":"private"}
{"file":"src/parser/rust_lang.rs","name":"test_rust_use","kind":"function","line":[484,500],"tokens":"source _refs hashmap kind visibility symbols as_deref _texts debug parse_file","visibility":"private"}
{"file":"src/parser/rust_lang.rs","name":"test_rust_enum","kind":"function","line":[503,512],"tokens":"as_deref symbols _texts kind parse_file source result visibility find_sym _refs","visibility":"private"}
{"file":"src/parser/rust_lang.rs","name":"test_rust_mod","kind":"function","line":[515,526],"tokens":"as_deref symbols _texts source _refs utils kind parse_file priv_mod find_sym visibility","visibility":"private"}
{"file":"src/parser/rust_lang.rs","name":"test_rust_const","kind":"function","line":[529,541],"tokens":"kind parse_file find_sym visibility as_deref global _texts source symbols max _refs","visibility":"private"}
{"file":"src/parser/rust_lang.rs","name":"test_rust_comments","kind":"function","line":[544,553],"tokens":"kind iter _symbols texts source _refs any parse_file","visibility":"private"}
{"file":"src/parser/sfc.rs","name":"ScriptBlock","kind":"struct","line":[9,16],"visibility":"public"}
{"file":"src/parser/sfc.rs","name":"extract_script_blocks","kind":"function","line":[22,30],"tokens":"extract_vue_scripts extension source Vec extract_html_script_tags extract_svelte_scripts extract_astro_scripts","visibility":"public"}
{"file":"src/parser/sfc.rs","name":"extract_vue_scripts","kind":"function","line":[36,38],"tokens":"source extract_html_script_tags","visibility":"private"}
{"file":"src/parser/sfc.rs","name":"extract_svelte_scripts","kind":"function","line":[44,46],"tokens":"extract_html_script_tags source","visibility":"private"}
{"file":"src/parser/sfc.rs","name":"extract_astro_scripts","kind":"function","line":[52,90],"tokens":"first from_utf8_lossy text frontmatter blocks second String Vec count_newlines_in extract_html_script_tags fm_start after_first fm_end start_line source","visibility":"private"}
{"file":"src/parser/sfc.rs","name":"extract_html_script_tags","kind":"function","line":[99,178],"tokens":"open_tag blocks default_lang text start_line content pos count_newlines_in lang search_from after_script Vec content_end content_start source from_utf8_lossy text_lower tag_close String tag_start next_char detect_script_lang","visibility":"private"}
{"file":"src/parser/sfc.rs","name":"detect_script_lang","kind":"function","line":[184,207],"tokens":"lower after_eq default_lang pos rest open_tag","visibility":"private"}
{"file":"src/parser/sfc.rs","name":"count_newlines_in","kind":"function","line":[210,212],"visibility":"private"}
{"file":"src/parser/sfc.rs","name":"tests","kind":"module","line":[215,319],"visibility":"private"}
{"file":"src/parser/sfc.rs","name":"super::*","kind":"import","line":[216,216],"visibility":"private"}
{"file":"src/parser/sfc.rs","name":"test_vue_basic","kind":"function","line":[219,228],"tokens":"content lang source extract_script_blocks from_utf8_lossy contains start_line len String blocks","visibility":"private"}
{"file":"src/parser/sfc.rs","name":"test_vue_two_scripts","kind":"function","line":[231,239],"tokens":"lang blocks extract_script_blocks len source start_line","visibility":"private"}
{"file":"src/parser/sfc.rs","name":"test_vue_no_script","kind":"function","line":[242,246],"tokens":"blocks extract_script_blocks is_empty source","visibility":"private"}
{"file":"src/parser/sfc.rs","name":"test_astro_frontmatter","kind":"function","line":[249,257],"tokens":"String blocks contains extract_script_blocks start_line from_utf8_lossy source len lang content","visibility":"private"}
{"file":"src/parser/sfc.rs","name":"test_svelte_basic","kind":"function","line":[260,266],"tokens":"blocks len source extract_script_blocks lang start_line","visibility":"private"}
{"file":"src/parser/sfc.rs","name":"test_html_script_extraction","kind":"function","line":[269,277],"tokens":"start_line source lang content String extract_script_blocks blocks len from_utf8_lossy contains","visibility":"private"}
{"file":"src/parser/sfc.rs","name":"test_html_no_script","kind":"function","line":[280,284],"tokens":"extract_script_blocks source is_empty blocks","visibility":"private"}
{"file":"src/parser/sfc.rs","name":"test_html_typescript_script","kind":"function","line":[287,292],"tokens":"extract_script_blocks blocks len source lang","visibility":"private"}
{"file":"src/parser/sfc.rs","name":"test_detect_lang_ts","kind":"function","line":[295,308],"tokens":"detect_script_lang","visibility":"private"}
{"file":"src/parser/sfc.rs","name":"test_detect_lang_default","kind":"function","line":[311,318],"tokens":"detect_script_lang","visibility":"private"}
{"file":"src/parser/treesitter.rs","name":"anyhow::Result","kind":"import","line":[1,1],"visibility":"private"}
{"file":"src/parser/treesitter.rs","name":"tree_sitter::{Parser, Tree}","kind":"import","line":[2,2],"visibility":"private"}
{"file":"src/parser/treesitter.rs","name":"crate::index::format::{ReferenceEntry, SymbolEntry, TextEntry}","kind":"import","line":[4,4],"visibility":"private"}
{"file":"src/parser/treesitter.rs","name":"crate::parser::helpers::*","kind":"import","line":[5,5],"visibility":"private"}
{"file":"src/parser/treesitter.rs","name":"crate::parser::languages::get_language","kind":"import","line":[6,6],"visibility":"private"}
{"file":"src/parser/treesitter.rs","name":"crate::parser::sfc","kind":"import","line":[7,7],"visibility":"private"}
{"file":"src/parser/treesitter.rs","name":"MAX_DEPTH","kind":"constant","line":[10,10],"visibility":"public"}
{"file":"src/parser/treesitter.rs","name":"parse_file","kind":"function","line":[13,106],"tokens":"rust_lang typescript Vec ext javascript python extract_texts_generic source anyhow Parser extract parse_sfc parse_and_extract parser merge_consecutive_texts sfc_ext language markdown cpp texts get_language csharp references cfg go c_lang tree java file_path feature symbols lang ruby","visibility":"public"}
{"file":"src/parser/treesitter.rs","name":"extract_texts_generic","kind":"function","line":[112,158],"tokens":"node_line_range source tree file_path strip_string_quotes stack kind text texts vec node node_text String child cursor root_node raw children is_trivial_text","visibility":"private"}
{"file":"src/parser/treesitter.rs","name":"merge_consecutive_texts","kind":"function","line":[165,190],"tokens":"last entry with_capacity Vec texts merged should_merge","visibility":"private"}
{"file":"src/parser/treesitter.rs","name":"parse_sfc","kind":"function","line":[198,253],"tokens":"extract_script_blocks parse_file Vec sfc all_refs block refs blocks file_path warn extension result all_texts texts source symbols offset all_symbols sym tracing txt lang","visibility":"private"}
{"file":"src/parser/typescript.rs","name":"tree_sitter::{Node, Tree}","kind":"import","line":[7,7],"visibility":"private"}
{"file":"src/parser/typescript.rs","name":"crate::index::format::{SymbolEntry, TextEntry}","kind":"import","line":[9,9],"visibility":"private"}
{"file":"src/parser/typescript.rs","name":"crate::parser::helpers::*","kind":"import","line":[10,10],"visibility":"private"}
{"file":"src/parser/typescript.rs","name":"crate::parser::treesitter::MAX_DEPTH","kind":"import","line":[11,11],"visibility":"private"}
{"file":"src/parser/typescript.rs","name":"TS_STOPWORDS","kind":"constant","line":[14,70],"visibility":"private"}
{"file":"src/parser/typescript.rs","name":"filter_ts_tokens","kind":"function","line":[73,85],"tokens":"TS_STOPWORDS tok tokens filtered","visibility":"private"}
{"file":"src/parser/typescript.rs","name":"extract","kind":"function","line":[87,96],"tokens":"root file_path walk_node texts symbols tree source","visibility":"public"}
{"file":"src/parser/typescript.rs","name":"walk_node","kind":"function","line":[98,193],"tokens":"symbols depth cursor file_path walk_node node MAX_DEPTH extract_import extract_namespace extract_enum extract_ts_comment extract_string texts parent_ctx extract_function_decl extract_class extract_variable_decl child source extract_method kind extract_interface extract_type_alias","visibility":"private"}
{"file":"src/parser/typescript.rs","name":"extract_function_decl","kind":"function","line":[197,245],"tokens":"parent_ctx node file_path full_name find_child_by_field name node_text parent is_exported format tokens push_symbol _sig visibility node_line_range body filter_ts_tokens build_function_signature source symbols extract_tokens line kind","visibility":"private"}
{"file":"src/parser/typescript.rs","name":"extract_class","kind":"function","line":[247,307],"tokens":"line full_name parent_ctx walk_node texts _sig build_class_signature node_text file_path visibility find_child_by_field format body push_symbol node tokens symbols cursor name depth is_exported source child parent filter_ts_tokens is_abstract node_line_range extract_tokens","visibility":"private"}
{"file":"src/parser/typescript.rs","name":"extract_method","kind":"function","line":[309,405],"tokens":"sig_parts node_line_range is_getter Vec node_text tokens node source format params extract_tokens find_child_by_field parent child kind is_async visibility is_static is_setter access_modifier cursor _sig full_name join name String push_symbol symbols file_path filter_ts_tokens line parent_ctx prefix body return_type","visibility":"private"}
{"file":"src/parser/typescript.rs","name":"extract_variable_decl","kind":"function","line":[407,486],"tokens":"name extract_tokens child format line visibility filter_ts_tokens node_text node_line_range matches cursor parent full_name name_node push_symbol tokens value_node symbols source is_const is_exported parent_ctx find_child_by_field file_path node is_func kind","visibility":"private"}
{"file":"src/parser/typescript.rs","name":"extract_import","kind":"function","line":[488,570],"tokens":"source_module line named_cursor imp_name clause_cursor alias format child node_text file_path raw clause_child node source name strip_string_quotes symbols find_child_by_field push_symbol spec full node_line_range cursor","visibility":"private"}
{"file":"src/parser/typescript.rs","name":"extract_interface","kind":"function","line":[574,668],"tokens":"_sig symbols texts extract_ts_comment is_exported filter_ts_tokens parent_ctx name format node_text node_line_range find_child_by_field line extends parent body source tokens extract_tokens node file_path member_name member_kind type_params push_symbol child full_name cursor member_line visibility","visibility":"private"}
{"file":"src/parser/typescript.rs","name":"extract_type_alias","kind":"function","line":[670,716],"tokens":"name push_symbol type_params visibility find_child_by_field node_line_range node_text tokens _sig parent_ctx extract_tokens symbols file_path is_exported filter_ts_tokens parent source line full_name format node","visibility":"private"}
{"file":"src/parser/typescript.rs","name":"extract_enum","kind":"function","line":[718,754],"tokens":"source line node symbols node_line_range format node_text parent_ctx visibility full_name name find_child_by_field file_path push_symbol parent is_exported","visibility":"private"}
{"file":"src/parser/typescript.rs","name":"extract_namespace","kind":"function","line":[756,810],"tokens":"find_child_by_field parent name texts node_line_range line depth file_path format symbols cursor source is_exported child full_name push_symbol node node_text visibility parent_ctx body walk_node","visibility":"private"}
{"file":"src/parser/typescript.rs","name":"extract_ts_comment","kind":"function","line":[814,849],"tokens":"String node_line_range parent_ctx text kind node strip_block_comment node_text line from raw source texts is_trivial_text file_path cleaned","visibility":"private"}
{"file":"src/parser/typescript.rs","name":"build_function_signature","kind":"function","line":[851,873],"tokens":"type_params node_text prefix return_type params node format find_child_by_field source is_async","visibility":"private"}
{"file":"src/parser/typescript.rs","name":"build_class_signature","kind":"function","line":[875,896],"tokens":"node_text node format is_abstract find_child_by_field extends type_params prefix source cursor","visibility":"private"}
{"file":"src/parser/typescript.rs","name":"tests","kind":"module","line":[899,1084],"visibility":"private"}
{"file":"src/parser/typescript.rs","name":"super::*","kind":"import","line":[900,900],"visibility":"private"}
{"file":"src/parser/typescript.rs","name":"crate::parser::treesitter::parse_file","kind":"import","line":[901,901],"visibility":"private"}
{"file":"src/parser/typescript.rs","name":"find_sym","kind":"function","line":[903,908],"tokens":"symbols name panic","visibility":"private"}
{"file":"src/parser/typescript.rs","name":"test_ts_functions","kind":"function","line":[911,928],"tokens":"kind find_sym fetch_fn _texts len greet symbols source _refs parse_file","visibility":"private"}
{"file":"src/parser/typescript.rs","name":"test_ts_interfaces","kind":"function","line":[931,953],"tokens":"_texts user visibility as_deref priv_iface _refs get_email source parent find_sym symbols kind parse_file","visibility":"private"}
{"file":"src/parser/typescript.rs","name":"test_ts_type_alias","kind":"function","line":[956,968],"tokens":"_refs symbols result parse_file source kind visibility as_deref id _texts find_sym","visibility":"private"}
{"file":"src/parser/typescript.rs","name":"test_ts_enum","kind":"function","line":[971,982],"tokens":"as_deref _refs source parse_file status kind find_sym visibility _texts symbols","visibility":"private"}
{"file":"src/parser/typescript.rs","name":"test_ts_classes","kind":"function","line":[985,1019],"tokens":"_refs do_work find_sym source visibility worker as_deref kind parse_file symbols _texts run base","visibility":"private"}
{"file":"src/parser/typescript.rs","name":"test_ts_namespace","kind":"function","line":[1022,1034],"tokens":"source _refs utils _texts parent symbols as_deref parse_file find_sym kind visibility helper","visibility":"private"}
{"file":"src/parser/typescript.rs","name":"test_ts_imports","kind":"function","line":[1037,1055],"tokens":"parse_file source _texts _refs symbols utils component react alias as_deref kind","visibility":"private"}
{"file":"src/parser/typescript.rs","name":"test_ts_visibility","kind":"function","line":[1058,1083],"tokens":"visibility as_deref source symbols _refs _texts parse_file","visibility":"private"}
{"file":"src/server/db.rs","name":"anyhow::{Context, Result}","kind":"import","line":[1,1],"visibility":"private"}
{"file":"src/server/db.rs","name":"rusqlite::Connection","kind":"import","line":[2,2],"visibility":"private"}
{"file":"src/server/db.rs","name":"crate::index::format::{FileEntry, ReferenceEntry, SymbolEntry, TextEntry}","kind":"import","line":[4,4],"visibility":"private"}
{"file":"src/server/db.rs","name":"SearchDb","kind":"struct","line":[8,12],"visibility":"public"}
{"file":"src/server/db.rs","name":"SearchDb","kind":"impl","line":[14,1118],"visibility":"private"}
{"file":"src/server/db.rs","name":"SearchDb.new","kind":"method","line":[16,18],"parent":"SearchDb","tokens":"new_internal","visibility":"public"}
{"file":"src/server/db.rs","name":"SearchDb.new_no_fts","kind":"method","line":[22,24],"parent":"SearchDb","tokens":"new_internal","visibility":"public"}
{"file":"src/server/db.rs","name":"SearchDb.new_internal","kind":"method","line":[27,143],"parent":"SearchDb","tokens":"open_in_memory fts_enabled conn Connection","visibility":"private"}
{"file":"src/server/db.rs","name":"SearchDb.load","kind":"method","line":[146,236],"parent":"SearchDb","tokens":"tokens lang files params path kind title text stmt file symbols visibility project description texts line hash lines references caller name alias parent rusqlite","visibility":"public"}
{"file":"src/server/db.rs","name":"SearchDb.search_symbols","kind":"method","line":[244,264],"parent":"SearchDb","tokens":"file query kind limit offset project file_has_glob","visibility":"public"}
{"file":"src/server/db.rs","name":"SearchDb.search_symbols_fts","kind":"method","line":[267,318],"parent":"SearchDb","tokens":"file format fts_parts limit Vec offset query stmt project row results vec kind rows rusqlite fts_query fts5_quote params","visibility":"private"}
{"file":"src/server/db.rs","name":"SearchDb.list_symbols","kind":"method","line":[323,404],"parent":"SearchDb","tokens":"file where_clause String stmt params_from_iter params join offset format param_refs rusqlite sql rows Box results Vec project conditions row limit query kind","visibility":"private"}
{"file":"src/server/db.rs","name":"SearchDb.search_text","kind":"method","line":[407,451],"parent":"SearchDb","tokens":"fts_parts fts5_quote row fts_query rows kind vec results project stmt query Vec format file","visibility":"public"}
{"file":"src/server/db.rs","name":"SearchDb.search_files","kind":"method","line":[454,501],"parent":"SearchDb","tokens":"lang stmt Vec rows results format fts_query query fts_parts vec project row fts5_quote","visibility":"public"}
{"file":"src/server/db.rs","name":"SearchDb.get_file_symbols","kind":"method","line":[504,531],"parent":"SearchDb","tokens":"rows stmt file row results Vec","visibility":"public"}
{"file":"src/server/db.rs","name":"SearchDb.get_symbol_children","kind":"method","line":[534,561],"parent":"SearchDb","tokens":"Vec rusqlite rows row parent stmt params results file","visibility":"public"}
{"file":"src/server/db.rs","name":"SearchDb.get_imports","kind":"method","line":[564,591],"parent":"SearchDb","tokens":"file Vec row rows stmt results","visibility":"public"}
{"file":"src/server/db.rs","name":"SearchDb.get_callers","kind":"method","line":[595,640],"parent":"SearchDb","tokens":"kind format stmt params params_from_iter results rows row Vec vec param_refs to_string rusqlite sql project join conditions name Box","visibility":"public"}
{"file":"src/server/db.rs","name":"SearchDb.get_callees","kind":"method","line":[644,689],"parent":"SearchDb","tokens":"params sql param_refs params_from_iter row format rows results join to_string rusqlite stmt kind conditions project vec caller Vec Box","visibility":"public"}
{"file":"src/server/db.rs","name":"SearchDb.search_references","kind":"method","line":[692,738],"parent":"SearchDb","tokens":"limit fts5_quote project results Vec vec offset fts_parts rusqlite format rows kind stmt row query fts_query params file","visibility":"public"}
{"file":"src/server/db.rs","name":"SearchDb.get_file_hash","kind":"method","line":[741,751],"parent":"SearchDb","tokens":"rusqlite row path params project rows stmt","visibility":"public"}
{"file":"src/server/db.rs","name":"SearchDb.remove_file","kind":"method","line":[755,777],"parent":"SearchDb","tokens":"params project path rusqlite","visibility":"public"}
{"file":"src/server/db.rs","name":"SearchDb.upsert_file","kind":"method","line":[782,866],"parent":"SearchDb","tokens":"symbols params hash stmt path visibility texts references line rusqlite description project caller parent tokens lang kind text name alias title file lines","visibility":"public"}
{"file":"src/server/db.rs","name":"SearchDb.rebuild_fts","kind":"method","line":[871,884],"parent":"SearchDb","tokens":"","visibility":"public"}
{"file":"src/server/db.rs","name":"SearchDb.export_all","kind":"method","line":[888,992],"parent":"SearchDb","tokens":"texts row symbols Vec stmt rows references files","visibility":"public"}
{"file":"src/server/db.rs","name":"SearchDb.export_for_project","kind":"method","line":[996,1104],"parent":"SearchDb","tokens":"stmt rows symbols Vec texts row files project references","visibility":"public"}
{"file":"src/server/db.rs","name":"SearchDb.list_projects","kind":"method","line":[1107,1117],"parent":"SearchDb","tokens":"rows results row Vec stmt","visibility":"public"}
{"file":"src/server/db.rs","name":"fts5_quote","kind":"function","line":[1122,1124],"tokens":"format replace","visibility":"private"}
{"file":"src/server/mcp.rs","name":"std::sync::{Arc, Mutex}","kind":"import","line":[1,1],"visibility":"private"}
{"file":"src/server/mcp.rs","name":"anyhow::Result","kind":"import","line":[3,3],"visibility":"private"}
{"file":"src/server/mcp.rs","name":"rmcp::{\n ErrorData as McpError, ServerHandler, ServiceExt,\n handler::server::{tool::ToolRouter, wrapper::Parameters},\n model::{CallToolResult, Content, ServerCapabilities, ServerInfo},\n schemars,\n schemars::JsonSchema,\n tool, tool_handler, tool_router,\n transport::stdio,\n}","kind":"import","line":[4,12],"visibility":"private"}
{"file":"src/server/mcp.rs","name":"serde::{Deserialize, Serialize}","kind":"import","line":[13,13],"visibility":"private"}
{"file":"src/server/mcp.rs","name":"super::db::SearchDb","kind":"import","line":[15,15],"visibility":"private"}
{"file":"src/server/mcp.rs","name":"super::snippet::SnippetExtractor","kind":"import","line":[16,16],"visibility":"private"}
{"file":"src/server/mcp.rs","name":"crate::index::format::SymbolEntry","kind":"import","line":[17,17],"visibility":"private"}
{"file":"src/server/mcp.rs","name":"crate::mount::MountTable","kind":"import","line":[18,18],"visibility":"private"}
{"file":"src/server/mcp.rs","name":"crate::utils::manifest::{self, ProjectMetadata}","kind":"import","line":[19,19],"visibility":"private"}
{"file":"src/server/mcp.rs","name":"SearchSymbolsParams","kind":"struct","line":[23,38],"visibility":"public"}
{"file":"src/server/mcp.rs","name":"SearchFilesParams","kind":"struct","line":[41,48],"visibility":"public"}
{"file":"src/server/mcp.rs","name":"SearchTextsParams","kind":"struct","line":[51,60],"visibility":"public"}
{"file":"src/server/mcp.rs","name":"GetFileSymbolsParams","kind":"struct","line":[63,68],"visibility":"public"}
{"file":"src/server/mcp.rs","name":"GetSymbolChildrenParams","kind":"struct","line":[71,78],"visibility":"public"}
{"file":"src/server/mcp.rs","name":"GetImportsParams","kind":"struct","line":[81,84],"visibility":"public"}
{"file":"src/server/mcp.rs","name":"GetCallersParams","kind":"struct","line":[87,94],"visibility":"public"}
{"file":"src/server/mcp.rs","name":"GetCalleesParams","kind":"struct","line":[97,104],"visibility":"public"}
{"file":"src/server/mcp.rs","name":"SearchReferencesParams","kind":"struct","line":[107,120],"visibility":"public"}
{"file":"src/server/mcp.rs","name":"SymbolWithSnippet","kind":"struct","line":[124,129],"visibility":"private"}
{"file":"src/server/mcp.rs","name":"CodeIndexServer","kind":"struct","line":[136,141],"visibility":"public"}
{"file":"src/server/mcp.rs","name":"CodeIndexServer","kind":"impl","line":[143,187],"visibility":"private"}
{"file":"src/server/mcp.rs","name":"CodeIndexServer.new","kind":"method","line":[144,157],"parent":"CodeIndexServer","tokens":"mount_table tool_router db workspace_root SnippetExtractor","visibility":"public"}
{"file":"src/server/mcp.rs","name":"CodeIndexServer.enrich_with_snippets","kind":"method","line":[160,186],"parent":"CodeIndexServer","tokens":"snippet_lines snippet symbols symbol","visibility":"private"}
{"file":"src/server/mcp.rs","name":"CodeIndexServer","kind":"impl","line":[190,492],"visibility":"private"}
{"file":"src/server/mcp.rs","name":"CodeIndexServer.search_symbols","kind":"method","line":[195,225],"parent":"CodeIndexServer","tokens":"json format snippet_lines success enriched McpError limit CallToolResult serde_json vec params to_string_pretty offset internal_error Content text results db","visibility":"private"}
{"file":"src/server/mcp.rs","name":"CodeIndexServer.search_files","kind":"method","line":[229,249],"parent":"CodeIndexServer","tokens":"McpError params vec success internal_error Content db text json CallToolResult results to_string_pretty format serde_json","visibility":"private"}
{"file":"src/server/mcp.rs","name":"CodeIndexServer.search_texts","kind":"method","line":[255,276],"parent":"CodeIndexServer","tokens":"format internal_error results db to_string_pretty vec CallToolResult params json serde_json success text Content McpError","visibility":"private"}
{"file":"src/server/mcp.rs","name":"CodeIndexServer.get_file_symbols","kind":"method","line":[282,303],"parent":"CodeIndexServer","tokens":"CallToolResult serde_json results success db snippet_lines McpError internal_error params enriched vec text Content json format to_string_pretty","visibility":"private"}
{"file":"src/server/mcp.rs","name":"CodeIndexServer.get_symbol_children","kind":"method","line":[309,332],"parent":"CodeIndexServer","tokens":"json snippet_lines to_string_pretty Content internal_error results CallToolResult enriched serde_json vec text success params McpError db format","visibility":"private"}
{"file":"src/server/mcp.rs","name":"CodeIndexServer.get_imports","kind":"method","line":[336,352],"parent":"CodeIndexServer","tokens":"format success vec to_string_pretty db CallToolResult McpError json Content results text internal_error serde_json params","visibility":"private"}
{"file":"src/server/mcp.rs","name":"CodeIndexServer.list_projects","kind":"method","line":[358,406],"parent":"CodeIndexServer","tokens":"project_paths serde_json db success internal_error to_string_pretty CallToolResult project_root json Vec path extract_metadata Content text metadata results manifest name vec format mt McpError","visibility":"private"}
{"file":"src/server/mcp.rs","name":"CodeIndexServer.get_callers","kind":"method","line":[412,432],"parent":"CodeIndexServer","tokens":"serde_json json params McpError text db results Content CallToolResult format vec success internal_error to_string_pretty","visibility":"private"}
{"file":"src/server/mcp.rs","name":"CodeIndexServer.get_callees","kind":"method","line":[438,458],"parent":"CodeIndexServer","tokens":"internal_error results json serde_json success format vec text McpError db params CallToolResult to_string_pretty Content","visibility":"private"}
{"file":"src/server/mcp.rs","name":"CodeIndexServer.search_references","kind":"method","line":[464,491],"parent":"CodeIndexServer","tokens":"McpError format text vec internal_error success results to_string_pretty CallToolResult Content limit serde_json json params db offset","visibility":"private"}
{"file":"src/server/mcp.rs","name":"ProjectInfo","kind":"struct","line":[496,502],"visibility":"private"}
{"file":"src/server/mcp.rs","name":"CodeIndexServer","kind":"trait_impl","line":[505,521],"visibility":"private"}
{"file":"src/server/mcp.rs","name":"CodeIndexServer.get_info","kind":"method","line":[506,520],"parent":"CodeIndexServer","tokens":"builder ServerCapabilities","visibility":"private"}
{"file":"src/server/mcp.rs","name":"start_server","kind":"function","line":[524,538],"tokens":"mount_table db server stdio anyhow CodeIndexServer service","visibility":"public"}
{"file":"src/server/mod.rs","name":"db","kind":"module","line":[1,1],"visibility":"public"}
{"file":"src/server/mod.rs","name":"mcp","kind":"module","line":[2,2],"visibility":"public"}
{"file":"src/server/mod.rs","name":"snippet","kind":"module","line":[3,3],"visibility":"public"}
{"file":"src/server/snippet.rs","name":"std::fs","kind":"import","line":[1,1],"visibility":"private"}
{"file":"src/server/snippet.rs","name":"std::path::PathBuf","kind":"import","line":[2,2],"visibility":"private"}
{"file":"src/server/snippet.rs","name":"SnippetExtractor","kind":"struct","line":[9,11],"visibility":"public"}
{"file":"src/server/snippet.rs","name":"SnippetExtractor","kind":"impl","line":[13,103],"visibility":"private"}
{"file":"src/server/snippet.rs","name":"SnippetExtractor.new","kind":"method","line":[15,17],"parent":"SnippetExtractor","tokens":"workspace_root","visibility":"public"}
{"file":"src/server/snippet.rs","name":"SnippetExtractor.resolve_file_path","kind":"method","line":[20,26],"parent":"SnippetExtractor","tokens":"file project","visibility":"private"}
{"file":"src/server/snippet.rs","name":"SnippetExtractor.extract_snippet","kind":"method","line":[42,97],"parent":"SnippetExtractor","tokens":"truncated non_blank_lines fs file read_to_string line_end snippet_lines project file_path lines line final_lines result end_idx range_lines limit content line_start all_lines start_idx","visibility":"public"}
{"file":"src/server/snippet.rs","name":"SnippetExtractor.file_exists","kind":"method","line":[100,102],"parent":"SnippetExtractor","tokens":"project file","visibility":"public"}
{"file":"src/server/snippet.rs","name":"tests","kind":"module","line":[106,214],"visibility":"private"}
{"file":"src/server/snippet.rs","name":"super::*","kind":"import","line":[107,107],"visibility":"private"}
{"file":"src/server/snippet.rs","name":"std::fs","kind":"import","line":[108,108],"visibility":"private"}
{"file":"src/server/snippet.rs","name":"tempfile::TempDir","kind":"import","line":[109,109],"visibility":"private"}
{"file":"src/server/snippet.rs","name":"create_test_file","kind":"function","line":[111,115],"tokens":"name content write file_path dir fs","visibility":"private"}
{"file":"src/server/snippet.rs","name":"test_extract_snippet_basic","kind":"function","line":[118,133],"tokens":"extractor TempDir SnippetExtractor create_test_file snippet to_string","visibility":"private"}
{"file":"src/server/snippet.rs","name":"test_extract_snippet_limit_lines","kind":"function","line":[136,144],"tokens":"snippet to_string create_test_file TempDir extractor SnippetExtractor","visibility":"private"}
{"file":"src/server/snippet.rs","name":"test_extract_snippet_skip_blank_lines","kind":"function","line":[147,155],"tokens":"snippet to_string extractor TempDir SnippetExtractor create_test_file","visibility":"private"}
{"file":"src/server/snippet.rs","name":"test_extract_snippet_disabled","kind":"function","line":[158,166],"tokens":"extractor create_test_file SnippetExtractor snippet TempDir","visibility":"private"}
{"file":"src/server/snippet.rs","name":"test_extract_snippet_file_not_found","kind":"function","line":[169,175],"tokens":"snippet TempDir extractor SnippetExtractor","visibility":"private"}
{"file":"src/server/snippet.rs","name":"test_extract_snippet_with_project","kind":"function","line":[178,188],"tokens":"extractor SnippetExtractor write TempDir to_string fs create_dir project_dir snippet","visibility":"private"}
{"file":"src/server/snippet.rs","name":"test_file_exists","kind":"function","line":[191,199],"tokens":"file_exists extractor SnippetExtractor TempDir create_test_file","visibility":"private"}
{"file":"src/server/snippet.rs","name":"test_file_exists_with_project","kind":"function","line":[202,213],"tokens":"file_exists fs create_dir SnippetExtractor TempDir project_dir write extractor","visibility":"private"}
{"file":"src/utils/hasher.rs","name":"std::path::Path","kind":"import","line":[1,1],"visibility":"private"}
{"file":"src/utils/hasher.rs","name":"anyhow::Result","kind":"import","line":[3,3],"visibility":"private"}
{"file":"src/utils/hasher.rs","name":"hash_file","kind":"function","line":[7,10],"tokens":"read hash_bytes path contents fs","visibility":"public"}
{"file":"src/utils/hasher.rs","name":"hash_bytes","kind":"function","line":[14,25],"tokens":"hash content bytes with_capacity blake3 String fmt Write write","visibility":"public"}
{"file":"src/utils/hasher.rs","name":"std::fmt::Write","kind":"import","line":[21,21],"visibility":"private"}
{"file":"src/utils/manifest.rs","name":"std::fs","kind":"import","line":[6,6],"visibility":"private"}
{"file":"src/utils/manifest.rs","name":"std::path::Path","kind":"import","line":[7,7],"visibility":"private"}
{"file":"src/utils/manifest.rs","name":"serde::Serialize","kind":"import","line":[9,9],"visibility":"private"}
{"file":"src/utils/manifest.rs","name":"ProjectMetadata","kind":"struct","line":[13,20],"visibility":"public"}
{"file":"src/utils/manifest.rs","name":"extract_metadata","kind":"function","line":[26,104],"tokens":"try_pom_xml project_root gemspec_file name description Vec manifest_files try_gemspec try_pyproject_toml try_package_json try_cargo_toml try_go_mod","visibility":"public"}
{"file":"src/utils/manifest.rs","name":"try_package_json","kind":"function","line":[108,137],"tokens":"from from_str path read_to_string json name Value description root String fs content Bool serde_json","visibility":"private"}
{"file":"src/utils/manifest.rs","name":"try_cargo_toml","kind":"function","line":[141,168],"tokens":"package root content path fs String name from toml from_str toml_value description read_to_string","visibility":"private"}
{"file":"src/utils/manifest.rs","name":"try_pyproject_toml","kind":"function","line":[171,200],"tokens":"toml root from_str poetry fs content String path from project read_to_string description tool name toml_value","visibility":"private"}
{"file":"src/utils/manifest.rs","name":"try_go_mod","kind":"function","line":[204,225],"tokens":"line root path fs content module_path read_to_string","visibility":"private"}
{"file":"src/utils/manifest.rs","name":"try_pom_xml","kind":"function","line":[229,241],"tokens":"name root description content fs path read_to_string extract_xml_element","visibility":"private"}
{"file":"src/utils/manifest.rs","name":"extract_xml_element","kind":"function","line":[245,259],"tokens":"open_tag content tag close_tag format start end value","visibility":"private"}
{"file":"src/utils/manifest.rs","name":"try_gemspec","kind":"function","line":[263,281],"tokens":"read_dir fs content extract_ruby_string_assignment filename ext read_to_string description name root gemspec_file","visibility":"private"}
{"file":"src/utils/manifest.rs","name":"extract_ruby_string_assignment","kind":"function","line":[284,304],"tokens":"extract_quoted_string field_pattern rest pos field value format line content","visibility":"private"}
{"file":"src/utils/manifest.rs","name":"extract_quoted_string","kind":"function","line":[307,318],"tokens":"rest end","visibility":"private"}
{"file":"src/utils/manifest.rs","name":"tests","kind":"module","line":[321,603],"visibility":"private"}
{"file":"src/utils/manifest.rs","name":"super::*","kind":"import","line":[322,322],"visibility":"private"}
{"file":"src/utils/manifest.rs","name":"tempfile::TempDir","kind":"import","line":[323,323],"visibility":"private"}
{"file":"src/utils/manifest.rs","name":"test_package_json_parsing","kind":"function","line":[326,338],"tokens":"name into description to_string write fs extract_metadata manifest_files meta TempDir contains","visibility":"private"}
{"file":"src/utils/manifest.rs","name":"test_cargo_toml_parsing","kind":"function","line":[341,358],"tokens":"fs description to_string TempDir write contains extract_metadata name meta manifest_files into","visibility":"private"}
{"file":"src/utils/manifest.rs","name":"test_pyproject_toml_pep621","kind":"function","line":[361,378],"tokens":"meta name to_string into contains TempDir extract_metadata fs description write manifest_files","visibility":"private"}
{"file":"src/utils/manifest.rs","name":"test_pyproject_toml_poetry","kind":"function","line":[381,397],"tokens":"fs name meta description extract_metadata into write TempDir","visibility":"private"}
{"file":"src/utils/manifest.rs","name":"test_go_mod_parsing","kind":"function","line":[400,412],"tokens":"contains manifest_files write extract_metadata meta fs name to_string TempDir description","visibility":"private"}
{"file":"src/utils/manifest.rs","name":"test_fallback_to_directory_name","kind":"function","line":[415,424],"tokens":"name extract_metadata is_empty manifest_files TempDir meta description","visibility":"private"}
{"file":"src/utils/manifest.rs","name":"test_multiple_manifests","kind":"function","line":[427,451],"tokens":"contains into name write description TempDir fs meta extract_metadata to_string manifest_files","visibility":"private"}
{"file":"src/utils/manifest.rs","name":"test_first_description_wins","kind":"function","line":[454,472],"tokens":"name description extract_metadata write TempDir into fs meta","visibility":"private"}
{"file":"src/utils/manifest.rs","name":"test_pom_xml_parsing","kind":"function","line":[475,496],"tokens":"contains to_string into meta write extract_metadata name TempDir description manifest_files fs","visibility":"private"}
{"file":"src/utils/manifest.rs","name":"test_pom_xml_without_name","kind":"function","line":[499,518],"tokens":"write description extract_metadata to_string contains name meta TempDir manifest_files fs","visibility":"private"}
{"file":"src/utils/manifest.rs","name":"test_gemspec_parsing","kind":"function","line":[521,541],"tokens":"TempDir to_string contains into write meta fs name description manifest_files extract_metadata","visibility":"private"}
{"file":"src/utils/manifest.rs","name":"test_gemspec_single_quotes","kind":"function","line":[544,562],"tokens":"name write TempDir extract_metadata into to_string manifest_files meta description contains fs","visibility":"private"}
{"file":"src/utils/manifest.rs","name":"test_cargo_workspace_toml","kind":"function","line":[565,584],"tokens":"write extract_metadata workspace_dir TempDir name create_dir contains description manifest_files to_string fs meta","visibility":"private"}
{"file":"src/utils/manifest.rs","name":"test_package_json_monorepo","kind":"function","line":[587,602],"tokens":"extract_metadata fs name description manifest_files to_string meta TempDir create_dir write monorepo_dir contains","visibility":"private"}
{"file":"src/utils/mod.rs","name":"hasher","kind":"module","line":[1,1],"visibility":"public"}
{"file":"src/utils/mod.rs","name":"manifest","kind":"module","line":[2,2],"visibility":"public"}
{"file":"src/watcher/handler.rs","name":"std::collections::{BTreeSet, HashMap}","kind":"import","line":[1,1],"visibility":"private"}
{"file":"src/watcher/handler.rs","name":"std::path::{Path, PathBuf}","kind":"import","line":[2,2],"visibility":"private"}
{"file":"src/watcher/handler.rs","name":"std::sync::mpsc::{Receiver, Sender}","kind":"import","line":[3,3],"visibility":"private"}
{"file":"src/watcher/handler.rs","name":"std::sync::{Arc, Mutex}","kind":"import","line":[4,4],"visibility":"private"}
{"file":"src/watcher/handler.rs","name":"std::time::{Duration, Instant}","kind":"import","line":[5,5],"visibility":"private"}
{"file":"src/watcher/handler.rs","name":"anyhow::{Context, Result}","kind":"import","line":[7,7],"visibility":"private"}
{"file":"src/watcher/handler.rs","name":"notify::event::EventKind","kind":"import","line":[8,8],"visibility":"private"}
{"file":"src/watcher/handler.rs","name":"crate::index::format::{FileEntry, IndexManifest}","kind":"import","line":[10,10],"visibility":"private"}
{"file":"src/watcher/handler.rs","name":"crate::index::reader::read_index","kind":"import","line":[11,11],"visibility":"private"}
{"file":"src/watcher/handler.rs","name":"crate::index::writer::write_index","kind":"import","line":[12,12],"visibility":"private"}
{"file":"src/watcher/handler.rs","name":"crate::mount::{is_removal_event, FsEvent, MountMode, MountTable, MountedEvent}","kind":"import","line":[13,13],"visibility":"private"}
{"file":"src/watcher/handler.rs","name":"crate::parser::languages::detect_language","kind":"import","line":[14,14],"visibility":"private"}
{"file":"src/watcher/handler.rs","name":"crate::parser::metadata::extract_file_metadata","kind":"import","line":[15,15],"visibility":"private"}
{"file":"src/watcher/handler.rs","name":"crate::parser::treesitter::parse_file","kind":"import","line":[16,16],"visibility":"private"}
{"file":"src/watcher/handler.rs","name":"crate::server::db::SearchDb","kind":"import","line":[17,17],"visibility":"private"}
{"file":"src/watcher/handler.rs","name":"crate::utils::hasher::hash_bytes","kind":"import","line":[18,18],"visibility":"private"}
{"file":"src/watcher/handler.rs","name":"DEBOUNCE_DELAY","kind":"constant","line":[20,20],"visibility":"private"}
{"file":"src/watcher/handler.rs","name":"FLUSH_DELAY","kind":"constant","line":[21,21],"visibility":"private"}
{"file":"src/watcher/handler.rs","name":"run_event_loop","kind":"function","line":[28,98],"tokens":"mount_table from_millis mount_root mt HashMap pending error ready mpsc Instant total_watched time FLUSH_DELAY anyhow sync Disconnected RecvTimeoutError DEBOUNCE_DELAY now flush_dirty_mounts warn Duration last_flush Timeout kind db tracing info path event handle_events","visibility":"public"}
{"file":"src/watcher/handler.rs","name":"on_project_discovery","kind":"function","line":[113,211],"tokens":"load_from_cache project_root idx_files db_guard read_index idx_texts idx_refs name len index_dir anyhow tracing warn canonical manifest MountMode mode_str mount info mount_table project_name mt is_read_only db walk_project idx_symbols format ReadOnly project_str","visibility":"public"}
{"file":"src/watcher/handler.rs","name":"walk_project","kind":"function","line":[219,315],"tokens":"anyhow project_str mount FsEvent Vec info path root mount_table file_count project_root on_project_discovery files event abs_path tracing process_file_change db mt db_guard warn subprojects load_from_cache display len rel_path","visibility":"private"}
{"file":"src/watcher/handler.rs","name":"handle_events","kind":"function","line":[323,436],"tokens":"tracing warn mount_table anyhow kind mount process_file_change is_removal_event db_guard path FsEvent db on_project_discovery mt mount_root Vec canonical root event events mount_events debug len abs_path project_str","visibility":"private"}
{"file":"src/watcher/handler.rs","name":"process_file_change","kind":"function","line":[439,523],"tokens":"content parse_file metadata lang_name hash_bytes texts fs trace ext Vec description warn file_entry db_guard file_symbols line_count detect_language read info project symbols lang references db String format count_lines rel_path title file_refs extract_file_metadata new_hash old_hash file_texts abs_path tracing from anyhow","visibility":"public"}
{"file":"src/watcher/handler.rs","name":"flush_dirty_mounts","kind":"function","line":[526,553],"tokens":"mount_table flush_mount_to_disk display mt mount db ReadWrite dirty_mounts root error MountMode anyhow tracing","visibility":"private"}
{"file":"src/watcher/handler.rs","name":"flush_mount_to_disk","kind":"function","line":[556,625],"tokens":"symbols display String write_index db_guard debug name manifest languages BTreeSet anyhow refs tracing mount_root len lang mount_table files output_dir project_str texts db","visibility":"public"}
{"file":"src/watcher/handler.rs","name":"flush_index_to_disk","kind":"function","line":[629,670],"tokens":"symbols files write_index BTreeSet name db manifest texts output_dir root tracing refs db_guard anyhow len debug lang languages","visibility":"public"}
{"file":"src/watcher/handler.rs","name":"count_lines","kind":"function","line":[673,684],"tokens":"count content","visibility":"private"}
{"file":"src/watcher/handler.rs","name":"tests","kind":"module","line":[687,1001],"visibility":"private"}
{"file":"src/watcher/handler.rs","name":"super::*","kind":"import","line":[688,688],"visibility":"private"}
{"file":"src/watcher/handler.rs","name":"std::fs","kind":"import","line":[689,689],"visibility":"private"}
{"file":"src/watcher/handler.rs","name":"tempfile::TempDir","kind":"import","line":[690,690],"visibility":"private"}
{"file":"src/watcher/handler.rs","name":"create_git_marker","kind":"function","line":[693,695],"tokens":"create_dir_all path fs","visibility":"private"}
{"file":"src/watcher/handler.rs","name":"create_source_file","kind":"function","line":[698,703],"tokens":"create_dir_all content write path fs parent","visibility":"private"}
{"file":"src/watcher/handler.rs","name":"test_single_project_indexing","kind":"function","line":[706,753],"tokens":"create_source_file Mutex TempDir projects db_guard MountTable create_git_marker any Arc kind on_project_discovery len mount_table db symbols SearchDb iter name root","visibility":"private"}
{"file":"src/watcher/handler.rs","name":"test_subproject_discovery","kind":"function","line":[756,796],"tokens":"root create_git_marker SearchDb db TempDir Arc mount_table projects contains to_string project MountTable len symbols create_source_file subproject on_project_discovery Mutex db_guard","visibility":"private"}
{"file":"src/watcher/handler.rs","name":"test_nested_subprojects","kind":"function","line":[799,851],"tokens":"on_project_discovery create_source_file db_guard Mutex project core_syms nested_syms SearchDb MountTable len root create_git_marker TempDir nested projects Arc mount_table root_syms db","visibility":"private"}
{"file":"src/watcher/handler.rs","name":"test_files_not_duplicated_across_projects","kind":"function","line":[854,892],"tokens":"create_git_marker TempDir all_symbols create_source_file MountTable sub db_guard root_fn_count mount_table db sub_fn_count sub_fn root_fn project SearchDb on_project_discovery Arc Mutex root","visibility":"private"}
{"file":"src/watcher/handler.rs","name":"test_mount_table_tracks_all_projects","kind":"function","line":[895,927],"tokens":"root create_source_file on_project_discovery TempDir Arc len is_mounted db MountTable Mutex mt mount_table create_git_marker SearchDb lib_a lib_b mounts","visibility":"private"}
{"file":"src/watcher/handler.rs","name":"test_project_filter_in_search","kind":"function","line":[930,969],"tokens":"TempDir project SearchDb create_source_file len mount_table create_git_marker Arc root db sub_helpers on_project_discovery Mutex sub_only MountTable sub all db_guard root_helpers","visibility":"private"}
{"file":"src/watcher/handler.rs","name":"test_relative_project_paths","kind":"function","line":[972,1000],"tokens":"on_project_discovery db SearchDb TempDir db_guard mount_table projects deep MountTable root create_git_marker Arc to_string create_source_file Mutex symbols contains project","visibility":"private"}
{"file":"src/watcher/mod.rs","name":"handler","kind":"module","line":[1,1],"visibility":"public"}