pi-diet-ast
On-demand ast-grep structural search and replacement tools for Pi.
Package details
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 searchast_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.