{"id":48085204,"url":"https://github.com/proofofwork-agency/reporecall","last_synced_at":"2026-04-10T13:02:14.706Z","repository":{"id":344915499,"uuid":"1183731457","full_name":"proofofwork-agency/reporecall","owner":"proofofwork-agency","description":"Local codebase memory for Claude Code and MCP - AST indexing, call graphs, hybrid search. 0 tool calls, 3-8x fewer tokens.","archived":false,"fork":false,"pushed_at":"2026-04-02T08:49:48.000Z","size":1319,"stargazers_count":18,"open_issues_count":0,"forks_count":3,"subscribers_count":1,"default_branch":"main","last_synced_at":"2026-04-02T11:07:18.054Z","etag":null,"topics":["ai-coding","ast","call-graph","claude-code","code-intelligence","code-navigation","code-search","codebase-search","developer-tools","mcp","model-context-protocol","rag","retrieval-augmented-generation","semantic-search","tree-sitter"],"latest_commit_sha":null,"homepage":"","language":"TypeScript","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/proofofwork-agency.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null,"notice":null,"maintainers":null,"copyright":null,"agents":null,"dco":null,"cla":null}},"created_at":"2026-03-16T22:39:45.000Z","updated_at":"2026-04-02T08:49:51.000Z","dependencies_parsed_at":null,"dependency_job_id":null,"html_url":"https://github.com/proofofwork-agency/reporecall","commit_stats":null,"previous_names":["proofofwork-agency/reporecall"],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/proofofwork-agency/reporecall","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/proofofwork-agency%2Freporecall","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/proofofwork-agency%2Freporecall/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/proofofwork-agency%2Freporecall/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/proofofwork-agency%2Freporecall/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/proofofwork-agency","download_url":"https://codeload.github.com/proofofwork-agency/reporecall/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/proofofwork-agency%2Freporecall/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":31643431,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-04-10T07:40:12.752Z","status":"ssl_error","status_checked_at":"2026-04-10T07:40:11.664Z","response_time":98,"last_error":"SSL_read: unexpected eof while reading","robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":false,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["ai-coding","ast","call-graph","claude-code","code-intelligence","code-navigation","code-search","codebase-search","developer-tools","mcp","model-context-protocol","rag","retrieval-augmented-generation","semantic-search","tree-sitter"],"created_at":"2026-04-04T15:14:13.314Z","updated_at":"2026-04-10T13:02:14.696Z","avatar_url":"https://github.com/proofofwork-agency.png","language":"TypeScript","readme":"# Reporecall\n\n```text\n██████╗ ███████╗██████╗  ██████╗ ██████╗ ███████╗ ██████╗ █████╗ ██╗     ██╗\n██╔══██╗██╔════╝██╔══██╗██╔═══██╗██╔══██╗██╔════╝██╔════╝██╔══██╗██║     ██║\n██████╔╝█████╗  ██████╔╝██║   ██║██████╔╝█████╗  ██║     ███████║██║     ██║\n██╔══██╗██╔══╝  ██╔═══╝ ██║   ██║██╔══██╗██╔══╝  ██║     ██╔══██║██║     ██║\n██║  ██║███████╗██║     ╚██████╔╝██║  ██║███████╗╚██████╗██║  ██║███████╗███████╗\n╚═╝  ╚═╝╚══════╝╚═╝      ╚═════╝ ╚═╝  ╚═╝╚══════╝ ╚═════╝╚═╝  ╚═╝╚══════╝╚══════╝\n```\n\nLocal codebase memory, auto-generated wiki, and an interactive architecture dashboard — for Claude Code and MCP.\n\nReporecall indexes your repository locally, classifies each query by intent, and injects focused code context, **auto-generated wiki pages**, and persistent memory before Claude answers. Then it gives you a **self-contained HTML dashboard** to see the whole picture at a glance. No cloud, no embeddings API, everything stays on your machine.\n\n---\n\n## Quick Start\n\n```bash\nnpm install -g @proofofwork-agency/reporecall\n\nreporecall init          # Create .memory/, hooks, MCP config\nreporecall index         # Index the codebase (builds topology + wiki)\nreporecall serve         # Start daemon + file watcher\nreporecall lens --serve  # Open the architecture dashboard\n```\n\nThat's it. Context is injected automatically into every Claude Code prompt via hooks, wiki pages regenerate as the code changes, and the lens dashboard is always one command away.\n\n---\n\n### Lens — interactive architecture dashboard\n\nOne command, one HTML file, your whole codebase at a glance:\n\n```bash\nreporecall lens --serve --open\n```\n\nA five-tab dark-themed dashboard built from your pre-computed index:\n\n- **Overview** — project stats, a D3 chord diagram of inter-community call flows, top hubs, top surprises\n- **Communities** — expandable Louvain cluster cards with member tables, cohesion scores, cross-community bar charts\n- **Hubs** — the structural load-bearing walls of your codebase, each with caller/callee lists and wiki mentions\n- **Surprises** — a sortable table of unexpected cross-boundary connections with reasons and investigation questions\n- **Wiki** — a full browser for auto-generated wiki pages with interlinks, backlinks, and related symbols\n\nEvery tab includes an inline legend explaining how to read it. The HTML is fully self-contained (inline CSS, inline JSON data, D3 from CDN) — email it, host it on S3, drop it in a PR comment, or serve it locally with `--serve` for a clickable localhost URL.\n\n### Wiki — a living, auto-generated knowledge base\n\nInspired by [Andrej Karpathy's LLM Wiki](https://www.mindstudio.ai/blog/andrej-karpathy-llm-wiki-knowledge-base-claude-code) concept — but built for you, from your code, automatically.\n\n- **Zero authoring required.** Wiki pages are generated from topology: one page per community, one per hub, one per surprise cluster, plus flow traces.\n- **Always fresh.** Pages regenerate on every index, on daemon startup, and on `reporecall lens`. A `sourceCommit` guard skips unchanged pages so regeneration is cheap.\n- **Injected, not searched.** Relevant wiki pages are injected directly into Claude Code prompts within a configurable token budget — no manual `wiki_read` needed.\n- **Linked and navigable.** Pages reference each other with `[[slug]]` interlinks; backlinks are tracked automatically. Browse them in the lens Wiki tab or via the `wiki_*` MCP tools.\n- **Measured.** On a 1,140-file production codebase, wiki injection shows **100% precision** with 50% hit rate — when it fires, it's right.\n\n### Intent-routed retrieval\n\nEvery prompt is classified locally into one of six modes — `lookup`, `trace`, `bug`, `architecture`, `change`, or `skip` — and routed to a tailored retrieval strategy. No LLM cost, no latency, no cloud calls.\n\n---\n\n## What else is in the box\n\n- **Multi-signal search** — FTS keywords, vector similarity, AST metadata, semantic features, imports, call graphs\n- **Topology analysis** — Louvain community detection, hub identification, surprise scoring, investigation suggestions\n- **Bug localization** — dedicated pipeline with subject profiling, contradiction pruning, graph expansion\n- **Persistent memory** — rules, facts, episodes, and working context across sessions\n- **Delivery modes** — `code_context` (focused chunks) or `summary_only` (structured fallback when confidence is low)\n- **Hook guidance** — context strength, execution surface, missing evidence, recommended next reads\n- **Streaming indexer** — bounded file windows, adaptive embedding batches, lower peak heap\n- **SQLite ABI self-repair** — detects native module mismatch and attempts automatic rebuild\n- **MCP server** — 26 tools for code search, call graphs, topology, memory, and wiki\n\n---\n\n## How It Works\n\nEvery user prompt flows through a three-layer pipeline: code retrieval, wiki knowledge, and project memory.\n\n```mermaid\nflowchart TB\n  User[\"User Prompt\"]\n  Hook[\"Prompt Hook\"]\n  Daemon[\"Local Daemon\"]\n  Intent[\"Intent Classifier\"]\n\n  subgraph Retrieval[\"Retrieval Pipeline\"]\n    Decompose[\"Query Decomposition\"]\n    Resolve[\"Target Resolution\"]\n    FTS[\"FTS Search\"]\n    Vector[\"Vector Search\"]\n    Semantic[\"Semantic Feature Search\"]\n    Graph[\"Caller / Neighbor Expansion\"]\n    Prune[\"Contradiction Pruning\"]\n    Select[\"Bundle Selection\"]\n  end\n\n  subgraph Storage[\"Local Storage\"]\n    Index[\"Chunk / Target / Feature Indexes\"]\n    Topology[\"Topology Store (Communities, Hubs, Surprises)\"]\n    Memory[\"Memory Store\"]\n    Wiki[\"Wiki Store (Auto-generated Pages)\"]\n  end\n\n  User --\u003e Hook\n  Hook --\u003e Daemon\n  Daemon --\u003e Intent\n  Intent --\u003e Decompose\n  Decompose --\u003e Resolve\n  Resolve --\u003e FTS\n  Resolve --\u003e Vector\n  Resolve --\u003e Semantic\n  FTS --\u003e Graph\n  Vector --\u003e Graph\n  Semantic --\u003e Graph\n  Graph --\u003e Prune\n  Prune --\u003e Select\n  Select --\u003e Hook\n  Index --\u003e Resolve\n  Index --\u003e FTS\n  Index --\u003e Vector\n  Index --\u003e Semantic\n  Memory --\u003e Daemon\n  Wiki --\u003e Hook\n```\n\n### Intent classification\n\nQueries are classified locally (no LLM) into one of six modes that determine retrieval strategy:\n\n| Mode           | Purpose                                                               |\n| -------------- | --------------------------------------------------------------------- |\n| `lookup`       | Exact symbol, file, endpoint, or module lookup                        |\n| `trace`        | Implementation path - \"how does X work\", \"what calls Y\"               |\n| `bug`          | Causal debugging - symptom descriptions, \"why does this fail\"         |\n| `architecture` | Broad inventory - \"which files implement...\", \"full flow from A to B\" |\n| `change`       | Cross-cutting edits - \"add logging across the auth flow\"              |\n| `skip`         | Meta/chat/non-code prompts                                            |\n\n```mermaid\nflowchart LR\n  Old[\"Old: R0 / R1 / R2\"] --\u003e Problem1[\"Prompt shape chosen too early\"]\n  Old --\u003e Problem2[\"Broad prompts over-injected\"]\n  Old --\u003e Problem3[\"Bug reports drifted into lexical noise\"]\n  Problem1 --\u003e New[\"New: Intent-Based Retrieval\"]\n  Problem2 --\u003e New\n  Problem3 --\u003e New\n  New --\u003e Lookup[\"lookup\"]\n  New --\u003e Trace[\"trace\"]\n  New --\u003e Bug[\"bug\"]\n  New --\u003e Architecture[\"architecture\"]\n  New --\u003e Change[\"change\"]\n  Bug --\u003e Evidence[\"Evidence-chain scoring\"]\n  Architecture --\u003e Summary[\"summary_only when weak\"]\n  Trace --\u003e Path[\"seed + graph path reconstruction\"]\n```\n\n### Memory layer\n\nPersistent project memory across sessions. Stores feedback rules, project decisions, user preferences, and reference pointers. Memory search uses FTS5 with RRF scoring, recency decay, access frequency penalties, and type-based boosts.\n\n### `reporecall lens` flags\n\n| Flag | Default | Description |\n|------|---------|-------------|\n| `--project \u003cpath\u003e` | auto-detect | Project root path |\n| `--open` | - | Open generated HTML in default browser (or the served URL when combined with `--serve`) |\n| `--serve` | - | Serve the dashboard over HTTP on localhost |\n| `--port \u003cn\u003e` | `7878` | Port for `--serve` |\n| `--output \u003cpath\u003e` | `.memory/lens.html` | Custom output path |\n| `--json` | - | Output raw `DashboardData` JSON instead of HTML |\n| `--max-communities \u003cn\u003e` | `20` | Max communities to include |\n| `--max-hubs \u003cn\u003e` | `15` | Max hub nodes to include |\n| `--max-surprises \u003cn\u003e` | `20` | Max surprises to include |\n\n---\n\n## CLI\n\n```bash\nreporecall init          # Create .memory/, hooks, MCP config\nreporecall index         # Index the codebase\nreporecall serve         # Start daemon + file watcher\nreporecall lens          # Generate interactive architecture dashboard\nreporecall explain       # Inspect retrieval for a query\nreporecall mcp           # Run as MCP server (stdio)\nreporecall doctor        # Health checks\nreporecall search        # Direct search\nreporecall stats         # Index statistics\nreporecall graph         # Call graph queries\nreporecall conventions   # Detected conventions\n```\n\n---\n\n## MCP Tools\n\n### Code search \u0026 navigation\n\n| Tool | Description |\n|------|-------------|\n| `search_code` | Multi-signal code search across the indexed codebase |\n| `find_callers` | Find all callers of a function |\n| `find_callees` | Find all functions called by a function |\n| `get_symbol` | Get full source of a symbol by name |\n| `get_imports` | Get import/dependency graph for a file |\n| `explain_flow` | Trace execution path: callers -\u003e seed -\u003e callees |\n| `build_stack_tree` | Full call hierarchy tree (configurable depth) |\n| `resolve_seed` | Resolve a query to the best matching symbol |\n\n### Topology \u0026 architecture\n\n| Tool | Description |\n|------|-------------|\n| `get_communities` | Module clusters with cohesion scores and auto-generated labels |\n| `get_hub_nodes` | Most-connected nodes (architectural hubs) in the call graph |\n| `get_surprises` | Unexpected cross-boundary connections ranked by surprise score |\n| `suggest_investigations` | Auto-generated investigation questions about weak spots |\n\n### Wiki\n\n| Tool | Description |\n|------|-------------|\n| `wiki_query` | Search wiki pages by topic |\n| `wiki_read` | Read a specific wiki page |\n| `wiki_write` | Create or update a wiki page |\n| `wiki_check_staleness` | Find wiki pages that may be outdated |\n\n### Memory\n\n| Tool | Description |\n|------|-------------|\n| `recall_memories` | Retrieve memories relevant to a query |\n| `store_memory` | Save a new memory |\n| `forget_memory` | Remove a memory |\n| `list_memories` | List all stored memories |\n| `explain_memory` | Explain why a memory was returned |\n| `compact_memories` | Merge redundant memories |\n| `clear_working_memory` | Clear ephemeral working memories |\n\n### Index management\n\n| Tool | Description |\n|------|-------------|\n| `index_codebase` | Trigger a full or incremental re-index |\n| `get_stats` | Index statistics (files, symbols, chunks) |\n| `clear_index` | Reset the index |\n\n---\n\n## Configuration\n\nConfiguration lives in `.memory/config.json` in your project root.\n\n| Key | Default | Description |\n|-----|---------|-------------|\n| `wikiBudget` | `400` | Max tokens for wiki injection per prompt |\n| `wikiMaxPages` | `3` | Max wiki pages injected per prompt |\n| `memoryBudget` | `500` | Max tokens for memory injection per prompt |\n| `shutdownTimeoutMs` | `10000` | Graceful shutdown timeout (1000-60000) |\n| `embeddingProvider` | `\"keyword\"` | Embedding backend (`keyword` for FTS-only) |\n\n---\n\n## Showcase\n\nReal output from a 1,140-file production codebase.\n\n\u003cdetails\u003e\n\u003csummary\u003e\u003ccode\u003eget_communities\u003c/code\u003e - Module clusters with cohesion scores\u003c/summary\u003e\n\n```json\n[\n  {\n    \"id\": \"c_0\",\n    \"nodeCount\": 305,\n    \"cohesion\": 0.01,\n    \"label\": \"api: json, getCorsHeaders\"\n  },\n  {\n    \"id\": \"c_1\",\n    \"nodeCount\": 283,\n    \"cohesion\": 0.01,\n    \"label\": \"components: updateNode, runFromNode\"\n  },\n  {\n    \"id\": \"c_2\",\n    \"nodeCount\": 252,\n    \"cohesion\": 0.01,\n    \"label\": \"components: observe, disconnect\"\n  },\n  {\n    \"id\": \"c_3\",\n    \"nodeCount\": 227,\n    \"cohesion\": 0.02,\n    \"label\": \"components+hooks: success, useAuth\"\n  },\n  {\n    \"id\": \"c_4\",\n    \"nodeCount\": 220,\n    \"cohesion\": 0.02,\n    \"label\": \"lib: isArray, updateNodeRun\"\n  },\n  {\n    \"id\": \"c_5\",\n    \"nodeCount\": 153,\n    \"cohesion\": 0.02,\n    \"label\": \"api: assertEquals, sanitizePrompt\"\n  },\n  {\n    \"id\": \"c_6\",\n    \"nodeCount\": 132,\n    \"cohesion\": 0.02,\n    \"label\": \"lib: warn, FloatingActionBar\"\n  },\n  {\n    \"id\": \"c_7\",\n    \"nodeCount\": 121,\n    \"cohesion\": 0.02,\n    \"label\": \"components: render, useTheme\"\n  }\n]\n```\n\nAutomatically detects tightly-coupled module clusters using Louvain community detection on the call graph.\n\n\u003c/details\u003e\n\n\u003cdetails\u003e\n\u003csummary\u003e\u003ccode\u003eget_hub_nodes\u003c/code\u003e - Architectural hubs (most-connected functions)\u003c/summary\u003e\n\n```\n #  Name              File                                            Edges  Community\n 1  json              api/gateway/index.ts                               135  api\n 2  updateNode        lib/execution/workflow/WorkflowStore.ts            127  components\n 3  isArray           lib/flow/typeGuards.ts                              94  lib\n 4  success           lib/events/eventBus.ts                              70  hooks\n 5  render            components/ErrorBoundary.tsx                        62  components\n 6  asNumber          lib/editor/effects/registry.ts                      55  editor\n 7  runFromNode       lib/execution/workflow/starter.ts                   52  components\n 8  getCorsHeaders    api/_shared/cors.ts                                 50  api\n 9  sanitizePrompt    api/_shared/prompt-sanitizer.ts                     46  api\n10  processStep       lib/flow/graphBuilder/core/router.ts                44  graphBuilder\n```\n\nIdentifies functions that would cause the most disruption if changed - the structural load-bearing walls of your codebase.\n\n\u003c/details\u003e\n\n\u003cdetails\u003e\n\u003csummary\u003e\u003ccode\u003eget_surprises\u003c/code\u003e - Unexpected cross-boundary connections\u003c/summary\u003e\n\n```\nScore  Source → Target                                           Why\n  7    saveToLibrary → ExtensionCard                             weakly-resolved, crosses backend ↔ UI,\n       (job-completion.ts → card.tsx)                            crosses execution surfaces\n\n  6    transcribe → TranscriptionPanel                           weakly-resolved, crosses services ↔ components\n       (transcription-service.ts → transcription-panel.tsx)\n\n  6    useToast → Toaster                                        crosses hooks ↔ components,\n       (use-toast.ts → toaster.tsx)                              peripheral node reaches hub\n\n  6    getExecutionPathNodeIds → getDownstreamNodeIds            bridges communities 11 → 1,\n       (useWorkflowCost.ts → graphTraversal.ts)                 crosses state ↔ shared execution surfaces\n\n  6    compileSystemPrompt → memo_handler                        weakly-resolved, crosses lib ↔ components\n       (promptTemplates.ts → PromptNode.tsx)\n```\n\nSurfaces connections that shouldn't exist or deserve closer inspection - potential coupling violations, false positives in the graph, or legitimate but non-obvious architectural bridges.\n\n\u003c/details\u003e\n\n\u003cdetails\u003e\n\u003csummary\u003e\u003ccode\u003esuggest_investigations\u003c/code\u003e - Auto-generated investigation questions\u003c/summary\u003e\n\n```\nType              Question\nweak_resolution   What is the exact relationship between RecoveryPollingQueue\n                  and useRecovery? (alias_path across services ↔ hooks)\n\nweak_resolution   What is the exact relationship between useTemplates and\n                  EditorSidebar? (alias_path across hooks ↔ components)\n\nbridge_node       Why does `cn` connect 8 structurally distant communities?\n                  (High betweenness centrality)\n\nbridge_node       Why does `updateNode` connect Inspector, ActionBar,\n                  isArray, and useAuth? (Bridges distant modules)\n\nverify_inferred   Are the 18 weakly-resolved relationships involving `error`\n                  actually correct? (Hub node with alias-resolved edges)\n\nisolated_nodes    What connects defineConfig_handler, SitemapEntry,\n                  generateSitemapXml to the rest of the system?\n                  (5 weakly-connected nodes - possible documentation gaps)\n```\n\nTells you where to look next - no prompt engineering required.\n\n\u003c/details\u003e\n\n\u003cdetails\u003e\n\u003csummary\u003e\u003ccode\u003eexplain_flow\u003c/code\u003e - Trace execution across files\u003c/summary\u003e\n\nQuery: `handleRetryAction`\n\n```\nCallers (who invokes this):\n  ← handleBatchExecution           (batchProcessor.ts)\n  ← triggerDownstreamNodes         (downstreamTrigger.ts)\n  ← executeNode                    (nodeExecutor.ts)\n\nSeed:\n  ► handleRetryAction              (retryManager.ts:126-196)\n    Extracts retry action, clears downstream execution state,\n    resets node statuses, re-executes from target node\n\nCallees (what this invokes):\n  → getDownstreamNodeIds           (graphTraversal.ts:15-32)\n  → addLog                         (workflowStore.ts:134-139)\n```\n\nReturns the full function source of the seed plus caller/callee code - one MCP call, 899 tokens, 6 files traced.\n\n\u003c/details\u003e\n\n\u003cdetails\u003e\n\u003csummary\u003e\u003ccode\u003ebuild_stack_tree\u003c/code\u003e - Full call hierarchy\u003c/summary\u003e\n\nQuery: `runWorkflow` (depth: 2, direction: both)\n\n```\n                 StartNode.tsx (memo_handler)\n                 InpaintNode.tsx (useCallback_handler)\n                 ActionBar.tsx\n                        │\n                        ▼\n              ► runWorkflow (starter.ts)\n                        │\n            ┌───────────┼───────────┐\n            ▼           ▼           ▼\n     ensureFlowSaved  addLog   workflowStarted\n     (ensureFlowSaved.ts) (workflowStore.ts) (activityLogger.ts)\n            │                       │\n       ┌────┴────┐                  ▼\n       ▼         ▼              info (logger.ts)\n serializeFlow  saveToDatabase\n (serialization.ts) (dataService.ts)\n```\n\n10 nodes, 9 edges, 2 levels deep. Pure static analysis - zero LLM cost.\n\n\u003c/details\u003e\n\n---\n\n## Changelog\n\n### v0.6.2 - Lens Architecture Dashboard\n\nThis release adds `reporecall lens`, an interactive architecture dashboard that visualizes your codebase structure as a self-contained HTML file, and promotes the wiki layer into a first-class selling point alongside it.\n\n**Lens dashboard.** Five-tab HTML dashboard generated from existing index data: Overview (stats + D3 chord diagram), Communities (expandable Louvain cluster cards), Hubs (caller/callee cards), Surprises (sortable table + investigation questions), Wiki (browsable auto-generated pages). Every tab includes a legend explaining what the data means. No external server needed — one HTML file with inline CSS, JS, and D3.js.\n\n**Lens `--serve` mode.** New `--serve` / `--port \u003cn\u003e` flags spin up a minimal local HTTP server (default `http://localhost:7878`) so you can open the dashboard as a URL rather than a `file://` path. Combines with `--open` to launch it straight into your browser. Cross-platform (macOS/Linux/Windows), graceful Ctrl+C shutdown, no caching so reruns show fresh data.\n\n**Wiki generation on lens.** `reporecall lens` auto-generates wiki pages from topology before building the dashboard, so wiki content is always fresh without needing `reporecall index`.\n\n**Community membership fix.** Fixed a bug where wiki community pages were never generated because `getCommunityForChunk` was called with symbol names instead of chunk IDs.\n\n**Reranker removal.** Removed the local cross-encoder reranker. The retrieval pipeline now uses hydration only. The `rerank` config option is deprecated and ignored.\n\n**Search intent expansion.** New regex patterns improve query routing for workflow lifecycle, bot systems, billing/generation cross-domain, and job orchestration queries.\n\n**Concept family expansion.** New \"workflow\" and \"bot\" concept families. Expanded \"billing\" (credits) and \"queue\" (poll, status) families.\n\n**Hybrid search tuning.** Broader trace-aware prepend for bot/webhook/queue/workflow queries. New seed scoring penalty for generic resolved file targets.\n\n\u003cdetails\u003e\n\u003csummary\u003ev0.6.1 - Wiki Startup Generation \u0026 Version Sync\u003c/summary\u003e\n\n**Wiki startup generation.** Wiki pages now auto-generate on MCP server and daemon startup, not just during `index_codebase`. Ensures wiki context is always available without requiring a full re-index.\n\n**Wiki generator freshness guard.** `writePage` now checks `sourceCommit` from disk to skip unchanged pages. Fixed `surprisesPage` flag not being set on the generation result.\n\n**Version sync.** `package-lock.json` synced to match `package.json`.\n\n\u003c/details\u003e\n\n\u003cdetails\u003e\n\u003csummary\u003ev0.6.0 - Wiki Layer \u0026 Memory Precision\u003c/summary\u003e\n\nThis release adds an **always-on wiki layer** for persistent codebase knowledge and fixes three memory retrieval bugs that caused noisy or missing context injection.\n\n**Wiki layer.** Auto-generated wiki pages from codebase topology are indexed alongside code and injected into every prompt context within a configurable token budget.\n\n**5 new MCP tools** for wiki management: `wiki_query`, `wiki_read`, `wiki_write`, `wiki_check_staleness`.\n\n**FTS5 phrase query fix.** Stop words (\"how\", \"does\", \"work\") were included in phrase queries, causing FTS5 to match only exact phrases and short-circuit before AND/OR fallback. Queries like \"how does image generation work\" now correctly find wiki pages matching \"image generation\".\n\n**Memory type isolation.** Wiki pages (type `wiki`) no longer leak into memory search results. The memory search pipeline now explicitly filters to `user`, `feedback`, `project`, and `reference` types.\n\n**Access count penalty.** Over-accessed memories are now penalized: \u003e15 accesses -\u003e 0.5x score, \u003e8 accesses -\u003e 0.75x. Prevents generic feedback rules from drowning out topic-specific results.\n\n**Tighter relevance threshold.** Raised from 0.70 to 0.85, filtering out low-relevance tail results.\n\nBenchmark results (1,140-file production codebase, 30 queries):\n\n| Layer  | Precision | Hit Rate | Notes                                  |\n| ------ | --------- | -------- | -------------------------------------- |\n| Code   | 57%       | 100%     | Always injected                        |\n| Wiki   | 100%      | 50%      | Only injects when relevant pages exist |\n| Memory | 73%       | ~60%     | After access penalty + threshold fix   |\n\n\u003c/details\u003e\n\n\u003cdetails\u003e\n\u003csummary\u003ev0.5.0 - Topology-Aware Search \u0026 Architecture Decomposition\u003c/summary\u003e\n\nAdded **codebase topology analysis** and decomposed the search engine into focused strategy modules.\n\n**Topology analysis pipeline.** After each index, reporecall runs Louvain community detection on the call graph, identifies architectural hub nodes, scores surprising cross-boundary connections, and generates investigation questions. Results are persisted in SQLite and injected into prompt context automatically.\n\n**4 new MCP tools** for exploring codebase structure: `get_communities`, `get_hub_nodes`, `get_surprises`, `suggest_investigations`.\n\n**Community-aware search scoring.** Results from the same Louvain community as the query seed receive a locality boost, improving architecture and trace queries.\n\n**Daemon hardening.** Index scheduler queues are bounded at 50k entries. File watcher has backpressure at 10k pending events. Shutdown timeout is now configurable via `shutdownTimeoutMs`.\n\n**Hook request validation.** All hook endpoints now validate request bodies with Zod schemas, returning 400 with details on malformed payloads instead of silently misbehaving.\n\n**Search architecture decomposition.** The monolithic `hybrid.ts` (~6,800 lines) was split into 7 focused modules: `pipeline-core`, `bug-strategy`, `architecture-strategy`, `trace-strategy`, `lookup-strategy`, `context-prioritization`, and the thin `hybrid` orchestrator. No public API changes.\n\nOther improvements:\n- Tree-sitter parse timeout (5s) prevents hangs on malformed files\n- `reporecall mcp` warns when a daemon is already running (SQLite lock contention risk)\n- Ollama health check added to the `mcp` command\n- Bug intent classifier now recognizes plural forms (\"bugs\", \"issues\", \"problems\")\n- New dependencies: `graphology`, `graphology-communities-louvain` for graph analysis\n\n\u003c/details\u003e\n\n\u003cdetails\u003e\n\u003csummary\u003ev0.4.1 - Claude Hook Compatibility Fix\u003c/summary\u003e\n\nThis patch fixes Claude hook token lookup for real `claude -p` / headless sessions. Reporecall-generated hooks now fall back to `$PWD` when `$CLAUDE_PROJECT_DIR` is unavailable, so injected context reaches Claude reliably in local CLI sessions after re-running `reporecall init`.\n\n\u003c/details\u003e\n\n\u003cdetails\u003e\n\u003csummary\u003ev0.4.0 - Intent-Based Retrieval Overhaul\u003c/summary\u003e\n\nThis release replaces the old `R0 / R1 / R2` routing model with intent-based query modes. The old model described retrieval shape (exact, trace, broad), the new model describes what the user actually wants:\n\n| Mode           | Purpose                                                               |\n| -------------- | --------------------------------------------------------------------- |\n| `lookup`       | Exact symbol, file, endpoint, or module lookup                        |\n| `trace`        | Implementation path - \"how does X work\", \"what calls Y\"               |\n| `bug`          | Causal debugging - symptom descriptions, \"why does this fail\"         |\n| `architecture` | Broad inventory - \"which files implement...\", \"full flow from A to B\" |\n| `change`       | Cross-cutting edits - \"add logging across the auth flow\"              |\n| `skip`         | Meta/chat/non-code prompts                                            |\n\nOther changes in this release: streaming windowed indexing, adaptive embedding batches, semantic feature extraction, `summary_only` delivery for low-confidence bundles, PreToolUse hook guidance, and SQLite ABI self-repair.\n\n\u003c/details\u003e\n\n---\n\n## Development\n\n```bash\nnpm install\nnpm run build\nnpm test\n```\n\n---\n\n## Acknowledgments\n\nThe wiki layer is inspired by [Andrej Karpathy's LLM Wiki](https://www.mindstudio.ai/blog/andrej-karpathy-llm-wiki-knowledge-base-claude-code) concept - organizing codebase knowledge as structured markdown files that LLMs can query efficiently.\n\n## License\n\nMIT\n","funding_links":[],"categories":["Plugins"],"sub_categories":["All Plugins"],"project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fproofofwork-agency%2Freporecall","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fproofofwork-agency%2Freporecall","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fproofofwork-agency%2Freporecall/lists"}