{"_id":"@abarisain/pi-silent-turn","name":"@abarisain/pi-silent-turn","dist-tags":{"latest":"0.1.0"},"versions":{"0.1.0":{"name":"@abarisain/pi-silent-turn","version":"0.1.0","description":"Let an agent end a background turn without answering — a curation gate for relayed reports, schedules and peer messages when proactive push is on","license":"MIT","author":{"name":"Arnaud Barisain-Monrose"},"type":"module","main":"index.ts","keywords":["pi-package","pi","pi-coding-agent","pi-extension","omp","oh-my-pi","telegram","notifications"],"repository":{"type":"git","url":"git+https://github.com/abarisain/pi-plugins.git","directory":"plugins/pi-silent-turn"},"homepage":"https://github.com/abarisain/pi-plugins/tree/main/plugins/pi-silent-turn","peerDependencies":{"@earendil-works/pi-coding-agent":"*","@earendil-works/pi-ai":"*"},"peerDependenciesMeta":{"@earendil-works/pi-coding-agent":{"optional":true},"@earendil-works/pi-ai":{"optional":true}},"pi":{"extensions":["index.ts"]},"omp":{"extensions":["index.ts"]},"publishConfig":{"access":"public"},"_id":"@abarisain/pi-silent-turn@0.1.0","gitHead":"d69baa6d80e1322485f13e5c4f19ffdf629dfcf8","bugs":{"url":"https://github.com/abarisain/pi-plugins/issues"},"_nodeVersion":"24.4.1","_npmVersion":"11.4.2","dist":{"integrity":"sha512-w648ysBLBrmdyqLlZiaBSZq4YoWNOoyRNwSnV3+zvhKScJAHUaXq8M5br+n7Ldm++JBdEPF+vZe+DdSZ1eSUxg==","shasum":"f508629421976976506aa8ede018a388573b8df7","tarball":"https://registry.npmjs.org/@abarisain/pi-silent-turn/-/pi-silent-turn-0.1.0.tgz","fileCount":4,"unpackedSize":8383,"signatures":[{"keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U","sig":"MEUCIGxWu/cSlmxdX5cc7qKsb02Zp3RCUkmzoShSCTtiyQTCAiEAibJidZmqZwNUkRioiVLci3xreHWgPM/uykzYEWmFc8Y="}]},"_npmUser":{"name":"arnaudbarisain","email":"abarisain@gmail.com"},"directories":{},"maintainers":[{"name":"arnaudbarisain","email":"abarisain@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages-npm-production","tmp":"tmp/pi-silent-turn_0.1.0_1787061984113_0.9696427280241833"},"_hasShrinkwrap":false}},"time":{"created":"2026-08-18T14:06:23.839Z","0.1.0":"2026-08-18T14:06:24.256Z","modified":"2026-08-18T14:06:24.484Z"},"maintainers":[{"name":"arnaudbarisain","email":"abarisain@gmail.com"}],"description":"Let an agent end a background turn without answering — a curation gate for relayed reports, schedules and peer messages when proactive push is on","homepage":"https://github.com/abarisain/pi-plugins/tree/main/plugins/pi-silent-turn","keywords":["pi-package","pi","pi-coding-agent","pi-extension","omp","oh-my-pi","telegram","notifications"],"repository":{"type":"git","url":"git+https://github.com/abarisain/pi-plugins.git","directory":"plugins/pi-silent-turn"},"author":{"name":"Arnaud Barisain-Monrose"},"bugs":{"url":"https://github.com/abarisain/pi-plugins/issues"},"license":"MIT","readme":"# pi-silent-turn\n\nLets an agent end a **background** turn without saying anything.\n\nBridges, schedulers and peer extensions start turns nobody asked for: a relayed\nstatus report, a cron tick, a message from another session. With proactive push\nenabled, whatever the agent says at the end of one of those turns is delivered to\nthe user — so \"just don't reply\" is not something a model can do reliably. It\nalways says *something*, and that something buzzes your phone.\n\nThis adds a real exit:\n\n```\nend_turn_silently({ reason: \"duplicate of the report core already relayed\" })\n```\n\nThe tool aborts the run from inside itself, so the turn ends with no completed\nassistant block for a bridge to project. Useful results still go out as an\nordinary reply — the agent gets a curation gate rather than an on/off switch.\n\n## It refuses on user-facing turns\n\nA turn that began with an **input event** — typed in the terminal, or delivered\nby a bridge as a user message (`sendUserMessage`) — is a question someone is\nwaiting on. Silence there is a bug, not curation, so the tool refuses and says\nso. Background turns arrive as custom messages (`sendMessage`) and fire no input\nevent, which is exactly what this distinguishes.\n\nInvestigate before deciding — tool calls are never delivered, so the agent can\nread the report, search its memory and compare against what the user already has.\nWhat it must not do is write **prose** first: completed text blocks are what a\nbridge projects, so a \"let me check…\" line can already be on its way before the\ntool runs.\n\n## Install\n\n```bash\npi install npm:@abarisain/pi-silent-turn\n```\n\n`/silent-turn-last` shows why the last turn was dropped — the reason is recorded\nlocally and never sent to the user.\n\n## Notes\n\n- Suppression relies on the run ending before a final block exists. A bridge that\n  projects *partial* output may still deliver text written before the call.\n- The tool is available on every turn; only its refusal distinguishes them, so\n  the model still needs to know when the quiet path is appropriate. Say so in\n  your agent's prompt.\n\nMIT.\n","readmeFilename":"README.md","_rev":"1-b720fb86487e8246447a4209ca7056e6"}