Version: codebase-memory-mcp 0.10.4 (macOS arm64, native install)
Summary: index_repository reports parse_partial for any bash file containing a heredoc whose body is a foreign language (e.g. Python) piped directly into a while read loop. The construct is valid bash and executes fine; tree-sitter-bash appears unable to model the heredoc-into-pipeline shape, so the flagged range covers the whole construct.
Minimal repro (self-contained, verified against 0.10.4 — indexing a repo containing only this file yields parse_partial_count: 1, error_ranges: "1-9"):
#!/usr/bin/env bash
# generic: heredoc with foreign-language body, piped into a while loop
python3 <<PY | while IFS='|' read -r name value; do
for i in range(3):
print(f"item{i}|{i}")
PY
echo "got: $name = $value"
done
Observed: parse_partial with the full construct's line range flagged; constructs inside the range absent from the graph.
Expected: best-effort recovery — ideally the pipeline/loop shell constructs are still indexed with the heredoc body treated as an opaque literal.
Impact: low (best-effort signal works as documented); filing per the tool's own indexing-gap prompt.
Version: codebase-memory-mcp 0.10.4 (macOS arm64, native install)
Summary:
index_repositoryreportsparse_partialfor any bash file containing a heredoc whose body is a foreign language (e.g. Python) piped directly into awhile readloop. The construct is valid bash and executes fine; tree-sitter-bash appears unable to model the heredoc-into-pipeline shape, so the flagged range covers the whole construct.Minimal repro (self-contained, verified against 0.10.4 — indexing a repo containing only this file yields
parse_partial_count: 1,error_ranges: "1-9"):Observed:
parse_partialwith the full construct's line range flagged; constructs inside the range absent from the graph.Expected: best-effort recovery — ideally the pipeline/loop shell constructs are still indexed with the heredoc body treated as an opaque literal.
Impact: low (best-effort signal works as documented); filing per the tool's own indexing-gap prompt.