pi-session-manager

extensionmaintained

Session browser for pi coding agent — browse, resume, rename, and delete sessions

by · v0.1.0 · published 4mo ago

$ pi install npm:pi-session-manager
downloads/mo
394
stars
6
last push
4w ago
open issues
0

Signals

license: MITtestspi manifest: missinginstall size: —deps: 0peer deps: 0

Download trend

544 downloads · last 12 weeks (weekly)

README

pi-session-manager

A session browser extension for the pi coding agent. Browse, resume, rename, and delete sessions from an interactive TUI overlay — without leaving your current conversation.

Install

pi install npm:pi-session-manager

Features

  • Browse sessions — interactive fuzzy-searchable list with age, message count, and working directory
  • Resume — switch to any previous session instantly
  • Delete — remove sessions with a confirmation prompt
  • Rename — give sessions a meaningful name (current session only; use /name for others)
  • Scope toggle — switch between current project and all projects with Tab
  • Status bar — active session name shown persistently in the footer when set

Commands

CommandDescription
/sessionsBrowse sessions for the current working directory
/sessions allBrowse sessions across all projects
/sallShorthand for /sessions all

Keyboard Shortcuts

Inside the session browser:

KeyAction
/ Navigate sessions
EnterResume selected session
dDelete selected session
nRename selected session
TabToggle scope (current project ↔ all projects)
EscClose browser

Type to filter sessions by title, message content, or working directory.

How It Works

The extension registers two commands and a session_start hook:

  • On session_start, it reads the active session's name and renders it in the status bar (e.g. 📁 my-feature).
  • /sessions / /sall open a centered overlay built with pi's TUI primitives (SelectList, Container, DynamicBorder).
  • Sessions are loaded via SessionManager.list() (current directory) or SessionManager.listAll() (global), sorted newest-first.
  • The list displays a human-readable title (session name → first message → filename fallback), age, message count, and a shortened working directory path.
  • Resuming a session calls ctx.switchSession(). If the session has a name, the status bar is updated immediately.
  • Rename only works on the currently active session; for other sessions, you must resume first and then use /name.

Requirements

License

MIT