pi-mpc

MPC (Mental Preview & Correction) extension for pi coding agent — rehearse and verify before any code is written

Package details

extension

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

$ pi install npm:pi-mpc
Package
pi-mpc
Version
1.0.0
Published
Apr 22, 2026
Downloads
127/mo · 127/wk
Author
shawn_rong
License
MIT
Types
extension
Size
33.9 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-mpc

MPC — Mental Preview & Correction for pi coding agent

A pi extension that forces the LLM to fully rehearse a task before touching a single file. It explores the codebase, dry-runs every change, hunts for type errors and broken imports, backtracks to fix them, and only then surfaces a structured Verified Plan for you to approve — or discard.


Why MPC?

Normal agents interleave thinking and writing. They guess, edit, re-guess, and leave a trail of partial fixes behind. MPC introduces a mandatory rehearse → verify loop:

explore → dryrun → issues → (backtrack →) verified → execute

All tool calls before execute are read-only. Nothing is written until the plan passes verification and you say go.


Phases

# Phase What happens Tools
1 explore Read files, grep patterns, identify everything that needs to change read-only
2 dryrun Narrate each edit step-by-step; predict the result of every change read-only
3 issues Actively check for type errors, broken imports, failing tests, wrong assumptions read-only
4 backtrack Fix identified issues, revise the plan (up to 2 rounds) read-only
5 verified Output a structured final plan with Assumptions, Steps, Risks, and Confidence read-only
6 execute User confirms → execute the verified plan with full tool access full

Automatic phase transitions

Each phase ends when the LLM emits a phase marker; the extension detects it and advances automatically:

Marker Transition
EXPLORATION COMPLETE: … → dryrun
DRY RUN COMPLETE: … → issues
NO ISSUES FOUND → verified (skips backtrack)
ISSUE N: … → backtrack (or force → verified after max retries)
REVISED PLAN: … → verified

Install

pi install npm:pi-mpc

Or add to your project settings (.pi/settings.json) so teammates get it automatically:

{
  "packages": ["npm:pi-mpc"]
}

Commands

Command Description
/mpc Toggle MPC mode on / off
/mpc-next Manually advance to the next phase (fallback when the LLM misses a marker)
/mpc-resume Resume the most recent in-progress plan from disk
/mpc-status Show current phase and plan file path

Shortcut: Ctrl + Alt + M — toggle MPC mode


Typical workflow

1.  /mpc                      ← enable MPC
2.  Refactor UserService to support async interfaces
     │
     ├─ [explore]   reads files, maps dependencies
     ├─ [dryrun]    narrates every edit, traces types
     ├─ [issues]    finds a missing export in utils.ts → ISSUE 1
     ├─ [backtrack] revises plan to add the export
     └─ [verified]  outputs structured plan + confidence rating
     │
3.  ❯  Execute the plan   ← you pick one
       Refine further
       Abort

Safety — read-only phases

During phases 1–4, edit and write are unavailable. bash calls are intercepted and must match a safe-command allowlist (cat, grep, git status, ls, etc.). Destructive patterns are blocked:

  • File writes (>, >>, tee, truncate)
  • File mutations (rm, mv, cp, mkdir)
  • Package installs (npm install, pip install, brew install, …)
  • Git writes (commit, push, merge, rebase, …)
  • System ops (sudo, kill, reboot, …)

Any blocked command returns an error explaining why, with a hint to use /mpc-next or /mpc to abort.


Plan persistence

Every MPC session is saved to disk automatically:

<project>/.pi/mpc/<timestamp>-<task-slug>.md

The file is human-readable Markdown (with phase outputs) plus a machine-readable JSON block at the bottom. Use /mpc-resume in any new session to pick up where you left off — the LLM skips completed phases and continues from the breakpoint.


Verified Plan format

When the LLM reaches phase 5 it outputs a structured plan:

## Verified Plan

### Summary
One paragraph: what this does and why.

### Assumptions Verified
- [assumption]: [how it was verified]

### Steps
1. **[File / Action]**: [what and why]
2. …

### Potential Risks
- [remaining unknowns or caveats]

### Confidence
HIGH / MEDIUM / LOW: [reason]

Mode comparison

Feature Normal agent Plan mode MPC
Trigger direct chat /plan · Ctrl+Alt+P /mpc · Ctrl+Alt+M
Workflow think → act (interleaved) explore → plan → execute explore → dryrun → issues → (backtrack) → verified → execute
Phases none 2 up to 6, auto-advancing
Tool lock full always read-only during explore read-only until execute
Issue detection ✓ dedicated phase
Auto-backtrack ✓ up to 2 rounds
Plan format none numbered list structured (Assumptions / Risks / Confidence)
Plan persisted session only .pi/mpc/*.md, cross-session resume
Confirm before execute Execute / Stay / Refine Execute / Refine / Abort
Best for quick edits medium complexity high-risk · multi-file · unfamiliar codebases

File structure

mpc/
├── index.ts      # entry point: commands, events, state machine
├── phases.ts     # phase labels + per-phase LLM prompts
├── persist.ts    # plan persistence (.pi/mpc/*.md read/write)
└── utils.ts      # types, marker detection, text helpers

Package this for npm

To publish as an npm package so others can pi install npm:pi-mpc:

package.json

{
  "name": "pi-mpc",
  "version": "1.0.0",
  "description": "MPC (Mental Preview & Correction) extension for pi coding agent",
  "type": "module",
  "license": "MIT",
  "keywords": ["pi-package", "pi-extension", "mpc", "plan-mode", "coding-agent"],
  "pi": {
    "extensions": ["./index.ts"]
  },
  "files": [
    "index.ts",
    "phases.ts",
    "persist.ts",
    "utils.ts",
    "README.md"
  ],
  "peerDependencies": {
    "@mariozechner/pi-coding-agent": "*",
    "@mariozechner/pi-tui": "*"
  }
}

Then:

npm publish --access public

Consumers install with:

pi install npm:pi-mpc

Contributing

Issues and PRs welcome at github.com/ShawnRong/pi-mpc.


License

MIT