pi-diet-ast

On-demand ast-grep structural search and replacement tools for Pi.

Packages

Package details

extension

Install pi-diet-ast from npm and Pi will load the resources declared by the package manifest.

$ pi install npm:pi-diet-ast
Package
pi-diet-ast
Version
0.1.1
Published
Jun 1, 2026
Downloads
not available
Author
probabilityengineer
License
MIT
Types
extension
Size
15.1 KB
Dependencies
0 dependencies · 2 peers
Pi manifest JSON
{
  "extensions": [
    "./index.ts"
  ]
}

Security note

Pi packages can execute code and influence agent behavior. Review the source before installing third-party packages.

README

pi-diet-ast

On-demand ast-grep structural search and replacement tools for Pi.

pi-diet-ast gives Pi agents a compact pair of model-visible tools for syntax-aware code search and conservative structural replacement. It keeps the prompt surface small: one search tool, one replace tool, no automatic scans, and no dynamic context injection.

Use it when a request is shaped like code structure — calls, imports, functions, classes, exports, object patterns, decorators, control flow — where grep is too literal and semantic search is too broad.

Tools

  • ast_grep_search — AST-aware code search
  • ast_grep_replace — AST-aware replacement, dry-run by default

Search ergonomics

ast_grep_search supports two styles.

Custom ast-grep pattern

{ "mode": "pattern", "pattern": "foo($$$ARGS)", "lang": "typescript", "paths": ["index.ts"] }

Compact presets

{ "mode": "calls", "name": "runJj", "lang": "typescript", "paths": ["index.ts"] }
{ "mode": "imports", "module": "node:child_process", "lang": "typescript", "paths": ["index.ts"] }
{ "mode": "functions", "name": "buildStatus", "lang": "typescript", "paths": ["index.ts"] }
{ "mode": "classes", "name": "Parser", "lang": "typescript", "paths": ["src"] }
{ "mode": "exports", "lang": "typescript", "paths": ["index.ts"] }

Presets keep the tool count small while avoiding hand-written ast-grep patterns for frequent tasks. mode defaults to pattern for compatibility. For mode: "calls", a bare name such as registerCommand matches both bare calls and member calls like pi.registerCommand(...); use a dotted name for an exact callee.

Replace

ast_grep_replace remains conservative: it is a dry run unless apply: true is passed.

{
  "pattern": "foo($$$ARGS)",
  "rewrite": "bar($$$ARGS)",
  "lang": "typescript",
  "paths": ["src"],
  "apply": false
}

Install

From npm:

pi install npm:pi-diet-ast

From GitHub:

pi install git:github.com/ProbabilityEngineer/pi-diet-ast

For project-local install, add -l:

pi install -l npm:pi-diet-ast

For local testing:

pi -e ./index.ts

Runtime

Uses sg from @ast-grep/cli if available, otherwise falls back to:

npx --yes @ast-grep/cli

Prompt overhead

pi-diet-ast registers compact tools and routing guidance only. It does not inject scan results or repository state into prompts.