@savagelands-net/pi-cwd
v0.1.2
Published
Pi extension that changes the real session working directory with /cwd and /cd
Maintainers
Readme
@savagelands-net/pi-cwd
Pi extension that changes Pi's real session working directory from inside Pi.
Unlike virtual-cwd extensions that rewrite tool arguments while leaving ctx.cwd unchanged, this extension forks the current session into a new session whose header has the target cwd, then switches Pi to that session. After the switch, ctx.cwd is the new directory.
Install
pi install git:github.com/savagelands-net/pi-cwdThen restart Pi or run:
/reloadUsage
/cwd # show the current real cwd
/cd # alias: show the current real cwd
/cwd /tmp # absolute path
/cwd ../other-project # relative to the current real cwd
/cwd ~/repos/project # tilde expansion
/cd ~/repos/project # aliasDirectory arguments support tab completion.
How it works
/cwd <dir> and /cd <dir>:
- resolve the target directory (
absolute,relative, and~are supported) - verify the target exists and is a directory
- fork the current session file into the target cwd using Pi's
SessionManager.forkFrom(...) - switch Pi to the newly forked session with
ctx.switchSession(...)
Because the target cwd is stored in the new session header, the cwd survives:
/reload- quitting and resuming the session
- built-in tools and extension code that read
ctx.cwd
Notes
- This requires a persisted session. Ephemeral
--no-sessionsessions cannot be moved because there is no source session file to fork. - The command creates a new session file each time the cwd changes. The new session records the previous session as
parentSession. /cwdwith no argument only reports the current real cwd.
