Transform arcade-agent into a token-efficient codebase understanding layer for AI agents.
Make tools callable by any MCP-compatible agent (Claude Code, Cursor, etc.)
get_full_result.get_full_result tool. Agents control how much data they consume.max_tokens hint. Progressive truncation (entity details → edge summaries → component counts) via budget.py.DependencyGraph to JSON in .arcade-cache/. Keyed by file paths + mtimes. Auto-invalidates when source files change.Give agents maximum understanding per token spent.
summarize tool — Returns structured codebase overview: package tree, dependency hotspots, entry points. One call replaces reading dozens of files.summarize(focus="com.foo.auth") drills into a specific package with entities, dependencies in/out, and key files.explain_component tool — Shows responsibility, entities, public API surface, internal-only entities, component dependencies, and cohesion metric.find_relevant tool — Keyword-based search across entity names, packages, and file paths. Architecture-aware boosting via component names and responsibilities.Help agents understand what changed and what matters without reading full diffs.
diff_impact tool — Given a set of changed files, map them to affected components, the downstream reverse-dependency closure, and potentially broken contracts (external callers of changed public entities).changelog_architecture tool — Given two commits/tags, produce an architectural changelog: new/removed components, shifted responsibilities, new smells.blame_component tool — Component-level ownership via git blame aggregation.Let agents ask “what do I need to read?” instead of reading everything.
context_for_task tool — Input: natural-language task description. Output: minimal set of files the agent needs, ranked by relevance with per-file role (direct match / dependency / dependent / component sibling) and reason.dependency_cone tool — Given an entity/file, return the upstream/downstream dependency cone with depth control and per-direction node caps. Shares the cycle-safe traversal helper with diff_impact.api_surface tool — Extract public interfaces only (public top-level types + their public members) without implementation details. Public is derived by naming convention + external-dependent signal (parsers store no visibility field or param types).Handle real-world polyglot monorepos.
parsers/typescript.py).parsers/go.py).parsers/kotlin.py) for JVM/Kotlin-first repos (e.g. embabel-agent).incremental.py), wired for the Python parser only; extending to the other two-pass parsers is follow-up.languages=[...] / language="multi") merges per-language graphs and relinks import/extends/implements across FQN space. Relinking is family-scoped: the jvm family (Java↔Kotlin) is the supported and validated pair; every other language is its own family and is merged without cross-language edges. Extending relinking to further families (and broader RPC/IDL bridges — gRPC stubs, OpenAPI) remains follow-up.Work everywhere agents work.
| Priority | Items | Rationale |
|---|---|---|
| Done | 1–9, 12, 13, 14, 15, 16a, 16a2, 17, 18 (MVP) | Phases 1–2 + TS/JS & Go & Kotlin parsers, incremental parsing (Python), diff_impact, context_for_task, api_surface, polyglot merge+relink |
| Now | 10 | Architectural changelog |
| Next | 11, 16b | Component ownership, Rust parser |
| Then | 19–22 | Ecosystem breadth (OpenAI / LangChain / Claude SDK / IDE) |