Skip to content

feat: package Recall on Pi native surfaces#247

Merged
edheltzel merged 1 commit into
mainfrom
fm/recall-pi-packaging-shape-p3
Jul 22, 2026
Merged

feat: package Recall on Pi native surfaces#247
edheltzel merged 1 commit into
mainfrom
fm/recall-pi-packaging-shape-p3

Conversation

@edheltzel

@edheltzel edheltzel commented Jul 22, 2026

Copy link
Copy Markdown
Owner

Summary

  • Declare Recall as a native Pi package for its two package resources: the lifecycle extensions and all nine Agent Skills.
  • Install and configure pi-mcp-adapter separately for the recall-memory MCP server, preserving existing user choices and safely migrating legacy shadow copies.
  • Use Pi supported session APIs for shutdown capture and pre-agent memory context.
  • Document the integration and the hard limit plainly: Pi has no single package primitive spanning extensions, skills, and MCP.

Verified Pi surface

Verified against the installed Pi CLI 0.81.1 with pi --help, pi install --help, pi list --help, and pi --no-extensions --help.

Pi packages natively discover extensions, skills, prompts, and themes, but not MCP configuration.
The --mcp-config surface disappears under --no-extensions, confirming that MCP support in this installation comes from the separate adapter extension.
The implementation follows the pinned official package, skill, and extension lifecycle contracts.

Safety and compatibility

  • Installation remains one human step through recall install --yes while composing the native Pi package and the separate MCP adapter/config underneath.
  • Reinstall is idempotent.
  • Existing explicit directTools preferences survive refresh.
  • Legacy Recall-managed Pi shadows are removed, while customized or foreign collisions are backed up instead of overwritten.
  • Claude packaging is unchanged.

Validation

  • bun test: 1,256 passed, 0 failed across 104 files.
  • bun run lint: passed.
  • bash -n install.sh update.sh uninstall.sh lib/install-lib.sh: passed.
  • bun run test:e2e:pi-integration: passed with Pi 0.81.1, two installs, nine skills, nine direct MCP tools, lifecycle capture, and legacy-shadow cleanup.
  • bun run test:e2e:codex-plugin: passed after extracting the shared isolation helper.

The Pi E2E used disposable HOME, PI_CODING_AGENT_DIR, RECALL_HOME, and RECALL_DB_PATH paths.
The production database /Users/ed/.agents/Recall/recall.db was never opened by the test and had identical before/after metadata: size 178216960, mtime 1784748240001.284, inode 571168746.

Pi limitation

This is intentionally not a Codex-style or Claude-style all-in-one plugin bundle.
Pi has no verified manifest that installs extensions, skills, and MCP as one package, so Recall uses each native mechanism directly and lets the installer coordinate them without inventing a cross-host bundle abstraction.
The MCP adapter discovers direct tools after its initial metadata warmup; the first session can use the adapter proxy and then reload Pi for the nine direct recall_memory_* tools.

Related: #228

Issues

This PR closes nothing, deliberately - no closing keyword is used.

Re-checked against every issue in this repo (125 total, 31 open), reading acceptance criteria rather than matching titles. No open issue tracks Pi packaging, and nothing in this diff fully satisfies an existing issue. References below are keyword-free on purpose so none of them is silently closed on merge.

Base branch is main (the repo default), so any keyword added here would fire on merge - which is why none is present.

Partially addresses, but NOT closed

Related, but NOT closed

Considered and deliberately NOT linked

Attribution note

#48 was resolved by #245 (the src/hosts/session-source.ts registry), and the Codex packaging work also landed there. Neither is re-claimed here.

@edheltzel
edheltzel force-pushed the fm/recall-pi-packaging-shape-p3 branch from 1078deb to b9d1b2d Compare July 22, 2026 20:58
@edheltzel
edheltzel merged commit 6ea266a into main Jul 22, 2026
2 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants