{"_id":"@arvoretech/pi-widget-wrangler","_rev":"5-be3cdd65f3efbbae20d8f4e94a750129","name":"@arvoretech/pi-widget-wrangler","dist-tags":{"latest":"1.1.1"},"versions":{"1.0.0":{"name":"@arvoretech/pi-widget-wrangler","version":"1.0.0","keywords":["pi-package","pi","extension","widget","ui","toggle"],"author":{"name":"Arvore"},"license":"MIT","_id":"@arvoretech/pi-widget-wrangler@1.0.0","maintainers":[{"name":"joao.barros.arvore","email":"joao.barros@arvore.com.br"},{"name":"rafsouza","email":"rafasouza@protonmail.com"},{"name":"pedro.adas","email":"pedro.adas@gmail.com"},{"name":"guilhermebs","email":"guilhermebscontact@gmail.com"},{"name":"ricardoraposorfox","email":"ricardorbxx1@gmail.com"},{"name":"jott4","email":"jvgcunha2002@gmail.com"},{"name":"vitor.piovezan","email":"vitor.piovezan@arvore.com.br"}],"homepage":"https://github.com/arvoreeducacao/arvore-pi-extensions#readme","bugs":{"url":"https://github.com/arvoreeducacao/arvore-pi-extensions/issues"},"pi":{"extensions":["./dist/index.js"]},"dist":{"shasum":"997b84a9639df0a2efa9103f06c58b7b86ccf8b1","tarball":"https://registry.npmjs.org/@arvoretech/pi-widget-wrangler/-/pi-widget-wrangler-1.0.0.tgz","fileCount":6,"integrity":"sha512-ieS8pQhF9aaMo2lcslEDdiNFbi+9/hxLrbMzlqkB3Ik8Osw/ZIfJjmtNPRarrkxezQZTUdlE+H2Db6SrwmKicA==","signatures":[{"sig":"MEQCIF32efa91nFOrudAIMmNVENYRsEFSZ415L4P/hSDPTmKAiByNeWHjB0cz/lf9IoFIYmqeFwNZBsvqqfTXMYcDLiEgg==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":15617},"main":"dist/index.js","type":"module","_from":"file:arvoretech-pi-widget-wrangler-1.0.0.tgz","types":"dist/index.d.ts","scripts":{"dev":"tsc --watch","lint":"tsc --noEmit","build":"tsc"},"_npmUser":{"name":"rafsouza","email":"rafasouza@protonmail.com"},"_resolved":"/private/var/folders/_7/2_rx8cl54zl9mw5t0vc1f5n00000gn/T/f1f9527c6fae57478aac8520e45adc9a/arvoretech-pi-widget-wrangler-1.0.0.tgz","_integrity":"sha512-ieS8pQhF9aaMo2lcslEDdiNFbi+9/hxLrbMzlqkB3Ik8Osw/ZIfJjmtNPRarrkxezQZTUdlE+H2Db6SrwmKicA==","repository":{"url":"git+https://github.com/arvoreeducacao/arvore-pi-extensions.git","type":"git","directory":"packages/widget-wrangler"},"_npmVersion":"10.9.3","description":"PI extension that corrals widgets from every extension into one panel where you show or hide each one 🤠","directories":{},"_nodeVersion":"22.19.0","_hasShrinkwrap":false,"devDependencies":{"typescript":"^5.3.0","@types/node":"^20.10.0","@earendil-works/pi-tui":"latest","@earendil-works/pi-coding-agent":"latest"},"peerDependencies":{"@earendil-works/pi-coding-agent":">=0.74.0"},"_npmOperationalInternal":{"tmp":"tmp/pi-widget-wrangler_1.0.0_1782745354144_0.1730400653016715","host":"s3://npm-registry-packages-npm-production"}},"1.0.1":{"name":"@arvoretech/pi-widget-wrangler","version":"1.0.1","keywords":["pi-package","pi","extension","widget","ui","toggle"],"author":{"name":"Arvore"},"license":"MIT","_id":"@arvoretech/pi-widget-wrangler@1.0.1","maintainers":[{"name":"joao.barros.arvore","email":"joao.barros@arvore.com.br"},{"name":"rafsouza","email":"rafasouza@protonmail.com"},{"name":"pedro.adas","email":"pedro.adas@gmail.com"},{"name":"guilhermebs","email":"guilhermebscontact@gmail.com"},{"name":"ricardoraposorfox","email":"ricardorbxx1@gmail.com"},{"name":"jott4","email":"jvgcunha2002@gmail.com"},{"name":"vitor.piovezan","email":"vitor.piovezan@arvore.com.br"}],"homepage":"https://github.com/arvoreeducacao/arvore-pi-extensions#readme","bugs":{"url":"https://github.com/arvoreeducacao/arvore-pi-extensions/issues"},"pi":{"extensions":["./dist/index.js"]},"dist":{"shasum":"e00ae104a44b2328d655d3813c6b238f368906f9","tarball":"https://registry.npmjs.org/@arvoretech/pi-widget-wrangler/-/pi-widget-wrangler-1.0.1.tgz","fileCount":6,"integrity":"sha512-5nulurO8PlgJreoErEXvG2o3je2cYa4Ykg7lfW3wkAK1ASlIW8f+qJyryBrMWTu3LEsL3dxvSi1it1gChEaN6A==","signatures":[{"sig":"MEYCIQDY5qqjm1ollMymNPXf5DUoAq9DGC3C3e8nqlEPUKi0KAIhAOAp2oqahZTWcSLtdfxkCifLAKmTo/n+DwRZ+V5BtSii","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@arvoretech%2fpi-widget-wrangler@1.0.1","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":15617},"main":"dist/index.js","type":"module","_from":"file:/tmp/arvoretech-pi-widget-wrangler-1.0.1.tgz","types":"dist/index.d.ts","scripts":{"dev":"tsc --watch","lint":"tsc --noEmit","build":"tsc"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:bb0bfa20-f36b-4852-a8c9-949360177476"}},"_resolved":"/tmp/arvoretech-pi-widget-wrangler-1.0.1.tgz","_integrity":"sha512-5nulurO8PlgJreoErEXvG2o3je2cYa4Ykg7lfW3wkAK1ASlIW8f+qJyryBrMWTu3LEsL3dxvSi1it1gChEaN6A==","repository":{"url":"git+https://github.com/arvoreeducacao/arvore-pi-extensions.git","type":"git","directory":"packages/widget-wrangler"},"_npmVersion":"11.17.0","description":"PI extension that corrals widgets from every extension into one panel where you show or hide each one 🤠","directories":{},"_nodeVersion":"22.23.0","_hasShrinkwrap":false,"devDependencies":{"typescript":"^5.3.0","@types/node":"^20.10.0","@earendil-works/pi-tui":"latest","@earendil-works/pi-coding-agent":"latest"},"peerDependencies":{"@earendil-works/pi-coding-agent":">=0.74.0"},"_npmOperationalInternal":{"tmp":"tmp/pi-widget-wrangler_1.0.1_1782750202469_0.4263441591042476","host":"s3://npm-registry-packages-npm-production"}},"1.0.2":{"name":"@arvoretech/pi-widget-wrangler","version":"1.0.2","keywords":["pi-package","pi","extension","widget","ui","toggle"],"author":{"name":"Arvore"},"license":"MIT","_id":"@arvoretech/pi-widget-wrangler@1.0.2","maintainers":[{"name":"joao.barros.arvore","email":"joao.barros@arvore.com.br"},{"name":"rafsouza","email":"rafasouza@protonmail.com"},{"name":"pedro.adas","email":"pedro.adas@gmail.com"},{"name":"guilhermebs","email":"guilhermebscontact@gmail.com"},{"name":"ricardoraposorfox","email":"ricardorbxx1@gmail.com"},{"name":"jott4","email":"jvgcunha2002@gmail.com"},{"name":"vitor.piovezan","email":"vitor.piovezan@arvore.com.br"}],"homepage":"https://github.com/arvoreeducacao/arvore-pi-extensions#readme","bugs":{"url":"https://github.com/arvoreeducacao/arvore-pi-extensions/issues"},"pi":{"extensions":["./dist/index.js"]},"dist":{"shasum":"201331838900225ec3069ce1fa4bd58479577119","tarball":"https://registry.npmjs.org/@arvoretech/pi-widget-wrangler/-/pi-widget-wrangler-1.0.2.tgz","fileCount":6,"integrity":"sha512-heCwB8aCHCTg+OYuCa/u96SC1RVhzGy6BfBEnaT+mztteqh9losfF8+OXgCAGGuEyyvnKA0uGcv8nwP12la8RQ==","signatures":[{"sig":"MEQCIDCGp+KTViIIw+WDuPiCDu6Ov9otL1zscPXdcRaureTSAiBAz06oM15c4aQ8vXaySDC0mf8v3mtPv4N+6bQzSGmv3w==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@arvoretech%2fpi-widget-wrangler@1.0.2","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":18305},"main":"dist/index.js","type":"module","_from":"file:/tmp/arvoretech-pi-widget-wrangler-1.0.2.tgz","types":"dist/index.d.ts","scripts":{"dev":"tsc --watch","lint":"tsc --noEmit","build":"tsc"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:bb0bfa20-f36b-4852-a8c9-949360177476"}},"_resolved":"/tmp/arvoretech-pi-widget-wrangler-1.0.2.tgz","_integrity":"sha512-heCwB8aCHCTg+OYuCa/u96SC1RVhzGy6BfBEnaT+mztteqh9losfF8+OXgCAGGuEyyvnKA0uGcv8nwP12la8RQ==","repository":{"url":"git+https://github.com/arvoreeducacao/arvore-pi-extensions.git","type":"git","directory":"packages/widget-wrangler"},"_npmVersion":"11.18.0","description":"PI extension that corrals widgets from every extension into one panel where you show or hide each one 🤠","directories":{},"_nodeVersion":"22.23.1","_hasShrinkwrap":false,"devDependencies":{"typescript":"^5.3.0","@types/node":"^20.10.0","@earendil-works/pi-tui":"latest","@earendil-works/pi-coding-agent":"latest"},"peerDependencies":{"@earendil-works/pi-coding-agent":">=0.74.0"},"_npmOperationalInternal":{"tmp":"tmp/pi-widget-wrangler_1.0.2_1783025028013_0.8494473781768859","host":"s3://npm-registry-packages-npm-production"}},"1.1.0":{"name":"@arvoretech/pi-widget-wrangler","version":"1.1.0","keywords":["pi-package","pi","extension","widget","ui","toggle"],"author":{"name":"Arvore"},"license":"MIT","_id":"@arvoretech/pi-widget-wrangler@1.1.0","maintainers":[{"name":"joao.barros.arvore","email":"joao.barros@arvore.com.br"},{"name":"rafsouza","email":"rafasouza@protonmail.com"},{"name":"pedro.adas","email":"pedro.adas@gmail.com"},{"name":"guilhermebs","email":"guilhermebscontact@gmail.com"},{"name":"ricardoraposorfox","email":"ricardorbxx1@gmail.com"},{"name":"jott4","email":"jvgcunha2002@gmail.com"},{"name":"vitor.piovezan","email":"vitor.piovezan@arvore.com.br"}],"homepage":"https://github.com/arvoreeducacao/arvore-pi-extensions#readme","bugs":{"url":"https://github.com/arvoreeducacao/arvore-pi-extensions/issues"},"pi":{"extensions":["./dist/index.js"]},"dist":{"shasum":"50d107cfd51dede2c19d24f187276d350bc7ca9b","tarball":"https://registry.npmjs.org/@arvoretech/pi-widget-wrangler/-/pi-widget-wrangler-1.1.0.tgz","fileCount":6,"integrity":"sha512-Gtdt4dZ6mXUB2JJAe6qxLptUi7/LgE3GyzRBcdKK2RQtlKMVh46/NLvND0+2YZvcXdg7A+rT4hLiIQuDWDkDWw==","signatures":[{"sig":"MEUCIBVngEPaSVT8wGvu+/muCFs3IVql0ENwmSjV2GBwuCJ2AiEAvWxauCm04plM67KULb/9JZUf9z0n6ZDZKOj7fMR1XAY=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@arvoretech%2fpi-widget-wrangler@1.1.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":22891},"main":"dist/index.js","type":"module","_from":"file:/tmp/arvoretech-pi-widget-wrangler-1.1.0.tgz","types":"dist/index.d.ts","scripts":{"dev":"tsc --watch","lint":"tsc --noEmit","build":"tsc"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:bb0bfa20-f36b-4852-a8c9-949360177476"}},"_resolved":"/tmp/arvoretech-pi-widget-wrangler-1.1.0.tgz","_integrity":"sha512-Gtdt4dZ6mXUB2JJAe6qxLptUi7/LgE3GyzRBcdKK2RQtlKMVh46/NLvND0+2YZvcXdg7A+rT4hLiIQuDWDkDWw==","repository":{"url":"git+https://github.com/arvoreeducacao/arvore-pi-extensions.git","type":"git","directory":"packages/widget-wrangler"},"_npmVersion":"11.18.0","description":"PI extension that corrals widgets and footer statuses from every extension into one panel where you show or hide each one 🤠","directories":{},"_nodeVersion":"22.23.1","_hasShrinkwrap":false,"devDependencies":{"typescript":"^5.3.0","@types/node":"^20.10.0","@earendil-works/pi-tui":"latest","@earendil-works/pi-coding-agent":"latest"},"peerDependencies":{"@earendil-works/pi-coding-agent":">=0.74.0"},"_npmOperationalInternal":{"tmp":"tmp/pi-widget-wrangler_1.1.0_1783097724974_0.30899655360965084","host":"s3://npm-registry-packages-npm-production"}},"1.1.1":{"name":"@arvoretech/pi-widget-wrangler","version":"1.1.1","description":"PI extension that corrals widgets and footer statuses from every extension into one panel where you show or hide each one 🤠","main":"dist/index.js","types":"dist/index.d.ts","type":"module","peerDependencies":{"@earendil-works/pi-coding-agent":">=0.74.0"},"devDependencies":{"@earendil-works/pi-coding-agent":"latest","@earendil-works/pi-tui":"latest","@types/node":"^20.10.0","typescript":"^5.3.0"},"pi":{"extensions":["./dist/index.js"]},"keywords":["pi-package","pi","extension","widget","ui","toggle"],"repository":{"type":"git","url":"git+https://github.com/arvoreeducacao/arvore-pi-extensions.git","directory":"packages/widget-wrangler"},"author":{"name":"Arvore"},"license":"MIT","scripts":{"build":"tsc","dev":"tsc --watch","lint":"tsc --noEmit"},"_id":"@arvoretech/pi-widget-wrangler@1.1.1","bugs":{"url":"https://github.com/arvoreeducacao/arvore-pi-extensions/issues"},"homepage":"https://github.com/arvoreeducacao/arvore-pi-extensions#readme","_integrity":"sha512-3K98AE+LouR+4pOW6E90xAYRWExP4rcUe1VNLFLGCWCTKVGP41vF3Aj979Ml2UaE8kCmL6QrIBWMxBAQBR85ew==","_resolved":"/tmp/arvoretech-pi-widget-wrangler-1.1.1.tgz","_from":"file:/tmp/arvoretech-pi-widget-wrangler-1.1.1.tgz","_nodeVersion":"22.23.1","_npmVersion":"11.18.0","dist":{"integrity":"sha512-3K98AE+LouR+4pOW6E90xAYRWExP4rcUe1VNLFLGCWCTKVGP41vF3Aj979Ml2UaE8kCmL6QrIBWMxBAQBR85ew==","shasum":"67910ccd8b5f43abce864890b224407e0e5d66c6","tarball":"https://registry.npmjs.org/@arvoretech/pi-widget-wrangler/-/pi-widget-wrangler-1.1.1.tgz","fileCount":6,"unpackedSize":24540,"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@arvoretech%2fpi-widget-wrangler@1.1.1","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"signatures":[{"keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U","sig":"MEUCIAcW/0PQpIkKwtuteJOt/1Wk0y0SkdLnBG6jh4X1oAhoAiEAwaO5ZYi7j/TIbOIryvRkHa+k7HUmmhCo0btcRoujFxo="}]},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:bb0bfa20-f36b-4852-a8c9-949360177476"}},"directories":{},"maintainers":[{"name":"joao.barros.arvore","email":"joao.barros@arvore.com.br"},{"name":"rafsouza","email":"rafasouza@protonmail.com"},{"name":"pedro.adas","email":"pedro.adas@gmail.com"},{"name":"guilhermebs","email":"guilhermebscontact@gmail.com"},{"name":"ricardoraposorfox","email":"ricardorbxx1@gmail.com"},{"name":"jott4","email":"jvgcunha2002@gmail.com"},{"name":"vitor.piovezan","email":"vitor.piovezan@arvore.com.br"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages-npm-production","tmp":"tmp/pi-widget-wrangler_1.1.1_1783101868367_0.7995472861790949"},"_hasShrinkwrap":false}},"time":{"created":"2026-06-29T15:02:33.964Z","modified":"2026-07-03T18:04:28.945Z","1.0.0":"2026-06-29T15:02:34.326Z","1.0.1":"2026-06-29T16:23:22.600Z","1.0.2":"2026-07-02T20:43:48.146Z","1.1.0":"2026-07-03T16:55:25.120Z","1.1.1":"2026-07-03T18:04:28.486Z"},"bugs":{"url":"https://github.com/arvoreeducacao/arvore-pi-extensions/issues"},"author":{"name":"Arvore"},"license":"MIT","homepage":"https://github.com/arvoreeducacao/arvore-pi-extensions#readme","keywords":["pi-package","pi","extension","widget","ui","toggle"],"repository":{"type":"git","url":"git+https://github.com/arvoreeducacao/arvore-pi-extensions.git","directory":"packages/widget-wrangler"},"description":"PI extension that corrals widgets and footer statuses from every extension into one panel where you show or hide each one 🤠","maintainers":[{"name":"joao.barros.arvore","email":"joao.barros@arvore.com.br"},{"name":"rafsouza","email":"rafasouza@protonmail.com"},{"name":"pedro.adas","email":"pedro.adas@gmail.com"},{"name":"guilhermebs","email":"guilhermebscontact@gmail.com"},{"name":"ricardoraposorfox","email":"ricardorbxx1@gmail.com"},{"name":"jott4","email":"jvgcunha2002@gmail.com"},{"name":"vitor.piovezan","email":"vitor.piovezan@arvore.com.br"}],"readme":"# @arvoretech/pi-widget-wrangler 🤠\n\nRound up the widget herd. Every Pi extension can paint a widget above or below\nyour editor with `ctx.ui.setWidget(...)`. Install a few of them and the screen\ngets noisy fast. **Widget Wrangler** corrals every widget — from *any*\nextension — into one panel where you flip each one **shown** or **hidden**.\n\nIt is fully generic: it does not know or care which extensions you run. Anything\nthat calls `setWidget` shows up in the corral automatically.\n\n## What it does\n\n- Intercepts `ctx.ui.setWidget` (the shared UI surface all extensions write to)\n  and keeps a live registry of every widget, keyed by its id.\n- A panel (`/wrangle` or `Ctrl+Shift+W`) lists every widget it has seen, with a\n  `shown` / `hidden` toggle each — same feel as Pi's `/mcp` panel.\n- Hidden widgets are suppressed before they ever reach the screen. Your choices\n  persist **globally** for your user (saved to `~/.pi/agent/widget-wrangler.json`),\n  so the same widgets stay hidden across every chat, reload, and branch. A\n  choice made in one session takes effect in all others.\n- It never touches `ctx.ui.notify`, so error/info notifications from your\n  extensions still pop up and fade on their own — even for a hidden widget.\n\n## Usage\n\n- `/wrangle` — open the corral.\n- `Ctrl+Shift+W` — open the corral (default keybinding, configurable).\n- In the panel: arrow keys to move, `space`/`enter` to toggle, type to search,\n  `esc` to close. Changes apply instantly.\n\n### Changing the keybinding\n\nThe shortcut is a CLI flag, `widget-wrangler-key`. Override it when launching pi:\n\n```bash\npi --widget-wrangler-key=alt+w\n```\n\nPass an empty value to disable the shortcut entirely and rely only on\n`/wrangle`:\n\n```bash\npi --widget-wrangler-key=\n```\n\n> Note on `Alt`/`Option`: `alt+*` shortcuts are reliable on Linux but depend on\n> terminal configuration on macOS (e.g. iTerm2 needs \"Use ⌥ as Meta\"). The\n> default `ctrl+shift+g` is the most portable choice across macOS, Linux, and\n> Windows.\n\n## Install\n\nAdd it to your Pi extensions (npm package or local). It registers a command and\na shortcut; no configuration required.\n\n## How it works (and one caveat)\n\nAll extensions share a single `ctx.ui` object, so wrapping `setWidget` once\nintercepts every extension's widget calls. A widget appears in the corral the\nfirst time its owning extension sets it. Most status widgets re-set themselves\nevery turn, so they show up almost immediately; a widget set exactly once,\nbefore this extension loaded, only becomes controllable after its next update.\n\n## License\n\nMIT\n","readmeFilename":"README.md"}