{"_id":"@amolith/pi-handoff","_rev":"7-8764dbcb7a57be10af191158c636ecbf","name":"@amolith/pi-handoff","dist-tags":{"beta":"0.1.0","latest":"0.1.0"},"versions":{"0.1.0-beta.0":{"name":"@amolith/pi-handoff","version":"0.1.0-beta.0","keywords":["pi-package"],"_id":"@amolith/pi-handoff@0.1.0-beta.0","maintainers":[{"name":"amolith","email":"amolith@secluded.site"}],"pi":{"extensions":["./src/index.ts"]},"dist":{"shasum":"093351d6d8b7438fe8dff148100818db9e6ee8bc","tarball":"https://registry.npmjs.org/@amolith/pi-handoff/-/pi-handoff-0.1.0-beta.0.tgz","fileCount":12,"integrity":"sha512-b5VFePwWtIFuPk0HFHdujkTtHB8HD+mT3BnzVwLju4Eo2Lkj57tgllXxw2I1jS0mXtfILq63H+1Bsue+bZ/akg==","signatures":[{"sig":"MEQCIFOToxWk24Vmye529jajWFbJHhquyQWe2GahhECQLAfEAiBwEppJJPoBk8Q+6XWvqx0zfogLet/ih6+gpMjnsmB4WQ==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":32389},"type":"module","gitHead":"aeb6e2c7030d76b42f9aaa9ae5d14cc2ff217bc9","scripts":{"typecheck":"tsc --noEmit"},"_npmUser":{"name":"amolith","email":"amolith@secluded.site"},"repository":{"url":"https://git.secluded.site/pi-extensions","type":"git","directory":"packages/handoff"},"_npmVersion":"11.16.0","description":"Use subagents to transfer pi session context to a new session and query past sessions","directories":{},"_nodeVersion":"26.3.0","_hasShrinkwrap":false,"peerDependencies":{"typebox":"*","@earendil-works/pi-ai":"*","@earendil-works/pi-tui":"*","@earendil-works/pi-coding-agent":"*"},"_npmOperationalInternal":{"tmp":"tmp/pi-handoff_0.1.0-beta.0_1780679015925_0.0646329301316646","host":"s3://npm-registry-packages-npm-production"}},"0.1.0-beta.1":{"name":"@amolith/pi-handoff","version":"0.1.0-beta.1","keywords":["pi-package"],"_id":"@amolith/pi-handoff@0.1.0-beta.1","maintainers":[{"name":"amolith","email":"amolith@secluded.site"}],"pi":{"extensions":["./src/index.ts"]},"dist":{"shasum":"46fb6b87291b64e5c5a7cc60d03153620be5f59a","tarball":"https://registry.npmjs.org/@amolith/pi-handoff/-/pi-handoff-0.1.0-beta.1.tgz","fileCount":13,"integrity":"sha512-TJaCLHoGcihwFb030tmRtrmdgy+jCKJbcgyGvo6J2fcMsetPIOONYPzOBc0EnXSjzsw4kLxjj3+7L9777kK+0w==","signatures":[{"sig":"MEUCIHvD+V8qWL8/0xxDTiTQt7aw9jP2XWcG4UAYmIUHfLxmAiEAz4s1R8NCcwbX/5ktMoFqz2bv3xD27dN/SiUi5jeBdWE=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":37295},"type":"module","gitHead":"932848921039a2e626a97027e0eaab951a4625c4","scripts":{"typecheck":"tsc --noEmit"},"_npmUser":{"name":"amolith","email":"amolith@secluded.site"},"repository":{"url":"https://git.secluded.site/pi-extensions","type":"git","directory":"packages/handoff"},"_npmVersion":"11.16.0","description":"Use subagents to transfer pi session context to a new session and query past sessions","directories":{},"_nodeVersion":"26.3.0","_hasShrinkwrap":false,"readmeFilename":"README.md","peerDependencies":{"typebox":"*","@earendil-works/pi-ai":"*","@earendil-works/pi-tui":"*","@earendil-works/pi-coding-agent":"*"},"_npmOperationalInternal":{"tmp":"tmp/pi-handoff_0.1.0-beta.1_1780691070396_0.8088965790649982","host":"s3://npm-registry-packages-npm-production"}},"0.1.0-beta.2":{"name":"@amolith/pi-handoff","version":"0.1.0-beta.2","keywords":["pi-package"],"_id":"@amolith/pi-handoff@0.1.0-beta.2","maintainers":[{"name":"amolith","email":"amolith@secluded.site"}],"pi":{"extensions":["./src/index.ts"]},"dist":{"shasum":"03b2a7720271767da349d5fd1be612c10328fb7d","tarball":"https://registry.npmjs.org/@amolith/pi-handoff/-/pi-handoff-0.1.0-beta.2.tgz","fileCount":13,"integrity":"sha512-aXZCuaXwq6vMPwgMGr2cirpfGtPH73edJvIxNeyRtm93UbMwWqAhCFfMtBcn8lqSDiiLsg60ezk/+7CGyEHc0Q==","signatures":[{"sig":"MEQCIHkPJvyWvjoPJIq82aujXl0WIzsZrkGVdVvurNnOxQckAiBVoeJb9x7o6hc/IA3g0X4rvAyMpR7cWZ0HGdr1p/fvEw==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":40977},"type":"module","gitHead":"82b54277bb2ed2a56c01c2cd8efed85d672b2820","scripts":{"typecheck":"tsc --noEmit"},"_npmUser":{"name":"amolith","email":"amolith@secluded.site"},"repository":{"url":"https://git.secluded.site/pi-extensions","type":"git","directory":"packages/handoff"},"_npmVersion":"11.16.0","description":"Use subagents to transfer pi session context to a new session and query past sessions","directories":{},"_nodeVersion":"26.3.0","_hasShrinkwrap":false,"readmeFilename":"README.md","peerDependencies":{"typebox":"*","@earendil-works/pi-ai":"*","@earendil-works/pi-tui":"*","@earendil-works/pi-coding-agent":"*"},"_npmOperationalInternal":{"tmp":"tmp/pi-handoff_0.1.0-beta.2_1780694896798_0.6946959616849824","host":"s3://npm-registry-packages-npm-production"}},"0.1.0":{"name":"@amolith/pi-handoff","version":"0.1.0","keywords":["pi-package"],"_id":"@amolith/pi-handoff@0.1.0","maintainers":[{"name":"amolith","email":"amolith@secluded.site"}],"pi":{"extensions":["./src/index.ts"]},"dist":{"shasum":"d4b165076b9bb4d3315190c8c97337e770d40296","tarball":"https://registry.npmjs.org/@amolith/pi-handoff/-/pi-handoff-0.1.0.tgz","fileCount":13,"integrity":"sha512-RrWiztcCaFSIN9KNZsDgsgQ7FGuwX3as5sqO6h7qRGoMG2bUeMRpAACuf+RvU0mAUtU+JUC7YZEo5e4ZIjJuOQ==","signatures":[{"sig":"MEQCIFXCRVbV8rClATOSXjrNtJqXABsmJctb67WHohd6QLmFAiB9sQPZjo8t/b0EjYqQHDCuCkc/H8E0rQ6FNfDi7injmw==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":41264},"type":"module","gitHead":"1300e15910e3eb4a2856d388cb4855c4ccba11b7","scripts":{"typecheck":"tsc --noEmit"},"_npmUser":{"name":"amolith","email":"amolith@secluded.site"},"repository":{"url":"https://git.secluded.site/pi-extensions","type":"git","directory":"packages/handoff"},"_npmVersion":"11.16.0","description":"Use subagents to transfer pi session context to a new session and query past sessions","directories":{},"_nodeVersion":"26.3.0","_hasShrinkwrap":false,"peerDependencies":{"typebox":"*","@earendil-works/pi-ai":"*","@earendil-works/pi-tui":"*","@earendil-works/pi-coding-agent":"*"},"_npmOperationalInternal":{"tmp":"tmp/pi-handoff_0.1.0_1780697044071_0.20068035438956766","host":"s3://npm-registry-packages-npm-production"}}},"time":{"created":"2026-06-05T17:03:35.802Z","modified":"2026-06-05T22:04:36.898Z","0.1.0-beta.0":"2026-06-05T17:03:36.082Z","0.1.0-beta.1":"2026-06-05T20:24:30.551Z","0.1.0-beta.2":"2026-06-05T21:28:16.974Z","0.1.0":"2026-06-05T22:04:04.320Z"},"keywords":["pi-package"],"repository":{"url":"https://git.secluded.site/pi-extensions","type":"git","directory":"packages/handoff"},"description":"Use subagents to transfer pi session context to a new session and query past sessions","maintainers":[{"name":"amolith","email":"amolith@secluded.site"}],"readme":"<!--\nSPDX-FileCopyrightText: Amolith <amolith@secluded.site>\n\nSPDX-License-Identifier: CC0-1.0\n-->\n\n# `@amolith/pi-handoff`\n\n[![pi-handoff on NPM](https://img.shields.io/npm/v/@amolith/pi-handoff)](https://www.npmjs.com/package/@amolith/pi-handoff)\n[![Licensed under MutuaL-1.2](https://img.shields.io/badge/License-MutuaL--1.2-af2e1a?style=flat&labelColor=110402&link=https%3A%2F%2Fcodeberg.org%2FMutualism%2FMutualist-License)](https://codeberg.org/Mutualism/Mutualist-License)\n[![REUSE status](https://api.reuse.software/badge/git.secluded.site/pi-extensions)](https://api.reuse.software/info/git.secluded.site/pi-extensions)\n[![scratchanitch.dev badge](https://img.shields.io/badge/scratchanitch-dev-FFC4B5)](https://scratchanitch.dev)\n[![Liberapay donation status](https://img.shields.io/liberapay/receives/Amolith.svg?logo=liberapay)](https://liberapay.com/Amolith/)\n\nGet to the end of the thing you're doing, then use a subagent to extract\nrelevant bits from the current session and create a new one from them with\n`/handoff thorough goal description`. You can tell Pi to hand something off\nbecause it has a handoff tool too.\n\nAfter extraction, whether triggered by you or Pi, the draft handoff goes in the\nnew session's prompt editor and an auto-submit countdown starts that's cancelled\nby pressing most any key.\n\n## Install\n\n```sh\npi install npm:@amolith/pi-handoff\n```\n\nIf you try it and find that it doesn't behave as expected, please send me your\nsession file, the goal, and the resulting handoff so I can debug. Contact me via\nthe methods listed at the bottom of [my website](https://secluded.site), or if\nyou know me elsewhere, you're welcome to DM me there.\n\n## Do it yourself\n\nRun `/handoff` with whatever the next session should do:\n\n```text\n/handoff finish the release notes and publish both packages\n```\n\nIf you omit the goal, Pi asks for one. Before the new session starts, the\nextension opens the generated handoff draft in the editor so you can review or\ntweak it. After the session switch, it starts an auto-submit countdown and\npressing most any key cancels it.\n\nTo use a different model in the new session, pass `-model provider/modelId`:\n\n```text\n/handoff -model neuralwatt/glm-5.1 finish the release notes\n```\n\n## Let the agent do it\n\nThe package also registers a `handoff` tool. The agent should only use it when\nyou explicitly ask for a handoff. It accepts:\n\n- `goal`: the goal for the new session\n- `model`: optional `provider/modelId` for the new session\n\nThe handoff happens after the current agent turn completes and still opens the\neditor so you can tweak before starting the new session.\n\n## Configure the extraction model\n\nIt uses the current session model by default. Interactively select a\ncheaper/faster model by running:\n\n```text\n/handoff:set-extraction-model\n```\n\nIt opens Pi's model picker and saves the selected model in\n`$PI_CODING_AGENT_DIR/settings.json` as `handoffExtractionModel`.\n\nYou can also set a `provider/modelId` with one of these:\n\n1. Startup flag: `--handoff-extraction-model provider/modelId`\n2. Env var: `$PI_HANDOFF_EXTRACTION_MODEL`\n3. Settings value: `handoffExtractionModel` in `$PI_CODING_AGENT_DIR/settings.json`\n\nIf you set more than one, that list is the precedence order.\n\nExample settings:\n\n```json\n{\n  \"handoffExtractionModel\": \"neuralwatt/qwen3.6-35b-fast\"\n}\n```\n\nIf the configured value is malformed or doesn't match a registered model, the\nextension falls back to the current session model.\n\n## Ask about the old session\n\nNew handoff prompts include the parent session path when available. The package\nregisters a `session_query` tool so the next agent can ask focused questions\nabout that prior session when the handoff summary isn't enough.\n","readmeFilename":"README.md"}