Skip to content

v0 — Initial Release: Web App Architecture

Choose a tag to compare

@sharwariakre sharwariakre released this 22 May 22:53
· 32 commits to main since this release
275bb25

v0 — Initial Release: Web App Architecture

CodeNarrator as a full-stack web application — FastAPI backend + React/TypeScript (Vite) frontend — with a complete autonomous codebase analysis pipeline.

What's fully working

  • End-to-end pipeline: ingest → snapshot → agentic loop (SSE streaming) → interpret → report
  • Git repo cloning via GitPython with GitHub size pre-check and private repo PAT support
  • Deterministic analysis core: file scanning, per-language import extraction (Python via ast + regex fallback; JS/TS/Java/Go/Rust/C++ via regex), internal import resolution, dependency graph computation with cluster detection
  • Agentic exploration loop: Qwen2.5-Coder 7B via Ollama with 5 tools (read_file, follow_import, search_for_pattern, mark_architecture_insight, stop_analysis), anti-stall machinery, minimum-files enforcement, content-fallback tool parsing
  • AI architecture interpretation via Ollama with hallucination stripping (invented file references removed)
  • Self-contained HTML report with interactive D3.js force-directed dependency graph
  • JSON state persistence with git HEAD staleness check and analysis history
  • React frontend with live SSE "currently exploring" indicator, depth selector (Quick/Standard/Deep), and history view
  • Path traversal guard on report serving

Known technical debt

To be addressed in next phase — library refactor:

  • Pipeline orchestrated by App.tsx over HTTP; not usable as a standalone Python library
  • Ollama hardcoded; no pluggable LLM backends
  • Two inconsistent Ollama integration styles (ollama.chat vs raw urllib)
  • _compute_dependency_graph_summary recomputed three times per run (loop, interpret, report)
  • Legacy heuristic loop (run_analysis_loop, advance_analysis_state, _select_next_candidate) superseded by agentic loop but not removed
  • ast/ subpackage scaffolded but not wired in (extract_ast raises NotImplementedError); language_registry advertises tree-sitter backends that don't exist yet
  • logging_config.py and tests/test_health.py are empty files
  • analysis_state is a raw mutable dict, no clean result object