JSPM

  • Created
  • Published
  • Downloads 2556
  • Score
    100M100P100Q128063F
  • License Apache-2.0

Pi Coding Agent extension — routes bash/read/grep/find/ls through lean-ctx for strong token savings. The embedded MCP bridge (on by default) adds a persistent session cache so unchanged re-reads cost ~13 tokens.

Package Exports

    This package does not declare an exports field, so the exports above have been automatically detected and optimized by JSPM instead. If any package subpath is missing, it is recommended to post an issue to the original package (pi-lean-ctx) to support the "exports" field. If that is not possible, create a JSPM override to customize the exports field for this package.

    Readme

    pi-lean-ctx

    Pi Coding Agent extension that provides ctx_-prefixed tools backed by lean-ctx for 60–90% token savings.

    • Default: embedded MCP bridge ON (persistent session cache → unchanged re-reads cost ~13 tokens), additive mode (Pi builtins preserved)
    • Opt out: LEAN_CTX_PI_ENABLE_MCP=0 (or "enableMcp": false) forces the one-shot CLI path, which cannot cache across calls
    • Optional: replace mode (LEAN_CTX_PI_MODE=replace) disables Pi builtins

    Tool Mode

    By default, pi-lean-ctx runs in additive mode: Pi's built-in tools (read, bash, ls, find, grep) remain available alongside the ctx_* tools. Agents can use either set.

    To switch to replace mode (disables Pi builtins, only ctx_* tools available):

    export LEAN_CTX_PI_MODE=replace

    Config file

    If you only use lean-ctx through Pi, keep every setting in one file instead of env vars — ~/.pi/agent/extensions/pi-lean-ctx/config.json:

    {
      "mode": "replace",
      "enableMcp": true,
      "binary": "/opt/lean-ctx/bin/lean-ctx",
      "env": { "LEAN_CTX_COMPRESSION": "aggressive" }
    }

    modeLEAN_CTX_PI_MODE, enableMcpLEAN_CTX_PI_ENABLE_MCP, binaryLEAN_CTX_BIN. The env map is forwarded to every lean-ctx subprocess, so it can override ~/.lean-ctx/config.toml engine settings. Explicit env vars still win over the file; the file wins over defaults.

    What it does

    ctx_ Tools (CLI-backed)

    Adds ctx_-prefixed tools alongside Pi's builtins (or replaces them in replace mode):

    Tool Replaces Compression
    ctx_read read Smart mode selection (full/map/signatures) based on file type and size
    ctx_shell bash All shell commands compressed via lean-ctx's 95+ patterns
    ctx_grep grep Results grouped and compressed via ripgrep + lean-ctx
    ctx_find find File listings compressed and .gitignore-aware
    ctx_ls ls Directory output compressed

    Pi's edit and write builtins remain unchanged.

    Direct lean-ctx CLI tool

    The lean_ctx tool runs lean-ctx directly (no nested compression). Use it for commands like:

    • lean_ctx overview
    • lean_ctx session …
    • lean_ctx knowledge …
    • lean_ctx gain / lean_ctx stats
    • lean_ctx index …

    Optional MCP Tools (Embedded Bridge)

    By default, pi-lean-ctx does not start an MCP server. If enabled, it spawns lean-ctx as an MCP server and registers advanced tools directly in Pi:

    Tool Purpose
    ctx_session Session state management and persistence
    ctx_knowledge Project knowledge graph with temporal validity
    ctx_semantic_search Find code by meaning, not exact text
    ctx_overview Codebase overview and architecture analysis
    ctx_compress Manual compression control
    ctx_metrics Token savings dashboard
    ctx_multi_read Batch file reads
    ctx_search MCP-native search
    ctx_tree File tree listing

    If you don't want MCP: keep it disabled and use the ctx_ CLI tools + lean_ctx tool only.

    Install

    # 1. Install lean-ctx (if not already installed)
    cargo install lean-ctx
    # or: brew tap yvgude/lean-ctx && brew install lean-ctx
    
    # 2. Install the Pi package
    pi install npm:pi-lean-ctx
    
    # 3. Restart Pi

    Or use the automated setup:

    lean-ctx init --agent pi

    How it works

    ctx_ tools (CLI-backed)

    These tools invoke the lean-ctx binary via CLI with LEAN_CTX_COMPRESS=1. The built-in tools they replace (read, bash, ls, find, grep) are disabled via pi.setActiveTools() so only the ctx_ versions are available to the LLM.

    Embedded MCP bridge (session cache + advanced tools)

    On by default, pi-lean-ctx spawns the lean-ctx binary as an MCP server (JSON-RPC over stdio). This persistent process holds the session cache: ctx_read (every mode, including line ranges) is routed through the bridge, so an unchanged re-read costs ~13 tokens instead of the full file and the read registers as a real CEP session (counted by lean-ctx gain). The bridge also discovers the server's advanced tools (ctx_edit, ctx_overview, ctx_graph, …), filters out those already exposed as ctx_ CLI tools, and registers the rest as native Pi tools.

    The bridge wins over ~/.pi/agent/mcp.json: a lean-ctx entry there (written by lean-ctx init --agent pi) does not disable the embedded bridge, because Pi has no native MCP support and that entry only does anything if you separately run pi-mcp-adapter. /lean-ctx warns about possible duplicates only when the adapter is genuinely running. If the bridge can't start, the CLI path keeps working — only the cache and advanced tools are unavailable.

    Automatic reconnection

    If the MCP server process crashes, the bridge automatically reconnects (up to 3 attempts with exponential backoff). If reconnection fails, CLI-based tools continue working normally — only the advanced MCP tools become unavailable.

    Disabling the bridge (optional)

    The bridge is on by default. To force the one-shot CLI path (no cross-call cache), set an environment variable and restart Pi:

    export LEAN_CTX_PI_ENABLE_MCP=0
    pi

    …or set "enableMcp": false in ~/.pi/agent/extensions/pi-lean-ctx/config.json.

    pi-mcp-adapter compatibility

    If you prefer using pi-mcp-adapter to manage your MCP servers, lean-ctx integrates automatically:

    # Option A: lean-ctx writes the config for you
    lean-ctx init --agent pi
    
    # Option B: Manual configuration in ~/.pi/agent/mcp.json
    {
      "mcpServers": {
        "lean-ctx": {
          "command": "/path/to/lean-ctx",
          "lifecycle": "lazy",
          "directTools": true
        }
      }
    }

    When pi-mcp-adapter manages the lean-ctx MCP server, pi-lean-ctx detects this and only registers its CLI-based tool overrides, leaving MCP tool management to the adapter.

    Binary Resolution

    The extension locates the lean-ctx binary in this order:

    1. LEAN_CTX_BIN environment variable
    2. binary in ~/.pi/agent/extensions/pi-lean-ctx/config.json
    3. ~/.cargo/bin/lean-ctx
    4. ~/.local/bin/lean-ctx (Linux) or %APPDATA%\Local\lean-ctx\lean-ctx.exe (Windows)
    5. /usr/local/bin/lean-ctx (macOS/Linux)
    6. lean-ctx on PATH

    Smart Read Modes

    The ctx_read tool automatically selects the optimal lean-ctx mode:

    File Type Size Mode
    .md, .json, .toml, .yaml, etc. Any full
    Code files (55+ extensions) < 8 KB full
    Code files 8–96 KB map (deps + API signatures)
    Code files > 96 KB signatures (AST extraction)
    Other files < 48 KB full
    Other files > 48 KB map

    Slash Command

    Use /lean-ctx in Pi to check:

    • Which binary is being used
    • MCP bridge status (disabled / embedded / adapter)
    • Active ctx_ tool names

    Disabling specific tools

    To disable specific MCP tools, configure disabled_tools in ~/.lean-ctx/config.toml:

    disabled_tools = ["ctx_graph", "ctx_benchmark"]

    Or via environment variable:

    LEAN_CTX_DISABLED_TOOLS=ctx_graph,ctx_benchmark pi