Mewra Pounce — Reverse Call Trace
See every route that can reach your function — at a glance.
Mewra Pounce is an open-source VS Code extension that walks the reverse call hierarchy of any function and renders an interactive directed graph, highlighting every API route, background worker, and cron job that can reach it.
Mewra PreFlight companion
Install Mewra PreFlight alongside Pounce. On activation, Pounce registers its diff-scoped Blast Radius check with PreFlight. When a supported route declaration changes, the PreFlight dashboard shows affected entry points and includes Mermaid route summaries in the generated PR/MR description.
This companion check inspects only the Git diff; it does not run the editor's Call Hierarchy provider. Use Mewra Pounce: Trace Callers for the interactive, function-level reverse call graph.
Website: pounce.mewra.app · Part of the Mewra developer tooling ecosystem.
Source code: github.com/mewra-lab/mewra-pounce
Why
VS Code's built-in Call Hierarchy is a text tree. You expand it level by level to understand the full blast radius of a change. For deeply nested service code this takes minutes.
Mewra Pounce does the traversal for you and renders the result as a navigable graph — in seconds.
You place cursor on: discordLogger.error()
Mewra Pounce traces: error() (discord-logger.service.ts:118)
├── auth.controller.ts (credentialLogin, verifyPhoneOtp)
├── booking-expiration.controller.ts (runCronExpiration)
└── payment-recovery.controller.ts (runCronReconciliation)
⚠ Impacts 4 Routes | 27 Callers
Features
- One shortcut or right-click —
Alt+T / ⌥T or right-click Trace Callers on any function name
- Blast radius summary — ⚠ Impacts 4 API Routes | 1 Background Worker
- Multi-language & framework detection — TS/JS (Express, Fastify, NestJS, Next.js), Python (FastAPI, Flask, Django, Celery), Go (Gin, Echo, Chi,
net/http), Rust (Actix, Axum, Rocket), C/C++ (Crow, Drogon, Embedded), Java/Kotlin (Spring Boot), C# (ASP.NET Core), PHP (Laravel, Symfony), Swift (Vapor, iOS), Flutter (Dart)
- Interactive graph — pan, zoom, click any node to view file/line in the inspector and jump directly to editor
- Filter controls — toggle test files (
Alt+Shift+T) or filter to entry point routes only
- Mermaid export — one click to copy a Mermaid diagram ready for your PR description
- Local-first — no AI, no network calls, no telemetry, zero cloud dependency
Demo
| Action |
Result |
Alt+T on a function |
Graph opens beside the editor |
| Click a node |
Jumps to that file and line |
Alt+Shift+T |
Toggles test files in the graph |
| Copy as Mermaid button |
Copies Mermaid markdown to clipboard |
Install
From the VS Code Marketplace
Search Mewra Pounce in the Extensions panel (Ctrl+Shift+X / Cmd+Shift+X), or launch Quick Open (Ctrl+P / Cmd+P) and paste:
ext install mewra.mewra-pounce
Or install via terminal:
code --install-extension mewra.mewra-pounce
From a release VSIX
- Download
mewra-pounce-x.y.z.vsix from GitHub Releases
- In VS Code: open Extensions panel (
Ctrl+Shift+X / Cmd+Shift+X) → ··· (Views and More Actions) → Install from VSIX…
Commands
| Command |
Title |
Default keybinding |
mewra-pounce.trace |
Mewra Pounce: Trace Callers |
Alt+T |
mewra-pounce.toggleTestFiles |
Mewra Pounce: Toggle Test Files in Graph |
Alt+Shift+T |
mewra-pounce.exportMermaid |
Mewra Pounce: Copy Graph as Mermaid |
(webview button) |
mewra-pounce.clearCache |
Mewra Pounce: Clear Entry Point Cache |
— |
Settings
| Setting |
Default |
Description |
mewraPounce.maxDepth |
12 |
Maximum traversal depth |
mewraPounce.hideTestFilesByDefault |
true |
Hide test file nodes by default |
mewraPounce.frameworks |
all four |
Frameworks to detect as entry points |
mewraPounce.cacheEntryPoints |
true |
Cache detected entry points per workspace |
Supported Frameworks & Languages
| Framework |
What is detected |
| Express |
app.get/post/put/patch/delete/use, router.* |
| Fastify |
fastify.get/post/route/register |
| NestJS |
Files ending in .controller.ts / .resolver.ts / .gateway.ts |
| Next.js App Router |
route.ts files exporting GET/POST/… |
| Next.js Pages Router |
pages/api/**/*.ts exporting default |
| Workers & Cron Jobs |
BullMQ, Inngest, Celery, *.worker.*, *.cron.*, @Cron |
| FastAPI (Python) |
@app.get/post/..., @router.*, routers/, endpoints/ |
| Flask (Python) |
@app.route, @bp.route, blueprints, views |
| Django (Python) |
urls.py patterns, views.py View / ViewSet / APIView |
| Gin (Go) |
router.GET/POST/..., group.*, handlers with *gin.Context |
| Echo (Go) |
e.GET/POST/..., g.*, handlers with echo.Context |
| Chi (Go) |
r.Get/Post/..., r.Route, r.Mount |
| Standard net/http |
http.HandleFunc, http.Handle, ServeHTTP |
| Plain Python / CLI |
main.py, cli.py, def main(), @click, typer |
| Plain Go |
main.go, func main() |
| Rust |
main.rs, fn main(), Actix-web, Axum, Rocket macros |
| C / C++ |
main.c/cpp, main(), Embedded app_main, Crow, Drogon |
| Java / Kotlin |
Spring Boot @*Mapping, @Scheduled, @KafkaListener, main |
| C# (.NET) |
ASP.NET Core [Http*], Minimal API app.Map*, Program.cs |
| PHP |
Laravel Route::*, Symfony #[Route], ShouldQueue, index.php |
| Swift |
Vapor app.get/post, SwiftUI @main, UIKit viewDidLoad, @IBAction |
| Flutter / Dart |
main.dart, runApp, build, Shelf router.*, @pragma('vm:entry-point') |
Mermaid export example
graph TD
N0["validateUserInput<br/>validate.ts:42"]
N1["createUser<br/>user.service.ts:18"]
N2["POST /api/users<br/>user.routes.ts:9"]
N3["QueueWorker: onUserCreated<br/>user.worker.ts:5"]
N0 --> N1
N1 --> N2
N1 --> N3
style N0 fill:#3b82f6,color:#fff
style N2 fill:#22c55e,color:#fff
style N3 fill:#22c55e,color:#fff
Developing
See CONTRIBUTING.md for the full guide.
Quick start:
git clone https://github.com/mewra-lab/mewra-pounce.git
cd mewra-pounce
pnpm install
pnpm build
Press F5 in VS Code to launch the Extension Development Host.
Quality gate:
pnpm validate
Runs: format check → TypeScript check → unit tests → build.
Stack
TypeScript · VS Code Extension API (Call Hierarchy LSP)
Preact · Cytoscape.js · ts-morph · Zod
esbuild · Vitest · Prettier · Husky + lint-staged
pnpm 12.3.4
Roadmap
| Version |
Status |
Scope |
| 0.1.1 |
Current |
Reverse call hierarchy engine via LSP, interactive Cytoscape.js directed graph, polyglot framework entry point detection (TS/JS, Python, Go, Rust, Java, C#, PHP, Swift, Dart), blast radius summary, Mermaid diagram export |
| 0.2.0 |
Planned |
Active file-watcher cache invalidation, keyboard-first graph navigation (pan/zoom/focus), filter nodes by entry-point type (HTTP route, worker, cron) |
| 0.3.0 |
Planned |
Deep AST pattern matching for dynamic dispatch, export graph as SVG/PNG, Mewra PreFlight integration (surface blast radius & affected routes in pre-push checks) |
| 1.0.0 |
Future |
Cross-package & monorepo workspace tracing, first official stable release |
Documentation
Contributing
Contributions are welcome. Please read CONTRIBUTING.md and docs/GIT-WORKFLOW.md before submitting a Pull Request.
Security
Please report security issues privately. See SECURITY.md.
Privacy
Mewra Pounce is 100% local. See PRIVACY.md.
License
MIT
| |