{"_id":"@aefree/pi-wezterm-tools","_rev":"3-d3f74befed94b811421ee20bc598fe89","name":"@aefree/pi-wezterm-tools","dist-tags":{"latest":"0.1.6"},"versions":{"0.1.4":{"name":"@aefree/pi-wezterm-tools","version":"0.1.4","keywords":["pi-package","wezterm","terminal"],"license":"MIT","_id":"@aefree/pi-wezterm-tools@0.1.4","maintainers":[{"name":"aefree","email":"aaron@secretcrush.net"}],"homepage":"https://github.com/aefreedman/pi-wezterm-tools#readme","bugs":{"url":"https://github.com/aefreedman/pi-wezterm-tools/issues"},"pi":{"extensions":["./index.ts","./extensions/wezterm-tab-flash-notifier.ts"]},"dist":{"shasum":"8ebd629d7c8f5e606edfcea30eb3f31e9a54b176","tarball":"https://registry.npmjs.org/@aefree/pi-wezterm-tools/-/pi-wezterm-tools-0.1.4.tgz","fileCount":22,"integrity":"sha512-yaT0YdeNxdvxOAodqPgweHYi5CysOzx2N2zXGi16Yq5wQ8hPANr3ia3a8Ac0uXvYdza5yg9FgG48WKj7lldNIQ==","signatures":[{"sig":"MEQCIHCxoNxNDe8+2HHZ0DeQDR/AK8+dOBigK+4+aGOQtdVnAiBDMqWzC+RqW2PP18ogtmP99Q9QRDrG5OrYQE4kdz4j5A==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":128911},"type":"module","gitHead":"212ce1388bf233173fb059383d4760fe468cd872","scripts":{"test":"tsx tests/wezterm-tool-rendering.test.ts && tsx tests/run-command.test.ts && tsx tests/wezterm-template-loader.integration.test.ts && tsx tests/wezterm-tab-notifier.test.ts && tsx tests/package-validation.test.ts"},"_npmUser":{"name":"aefree","email":"aaron@secretcrush.net"},"repository":{"url":"git+ssh://git@github.com/aefreedman/pi-wezterm-tools.git","type":"git"},"_npmVersion":"11.6.2","description":"Pi tools for managing WezTerm sessions, layouts, templates, and tab notifications.","directories":{},"_nodeVersion":"24.13.0","publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"4.23.9"},"peerDependencies":{"typebox":"*","@earendil-works/pi-ai":"*","@earendil-works/pi-coding-agent":"*"},"peerDependenciesMeta":{"typebox":{"optional":true},"@earendil-works/pi-ai":{"optional":true},"@earendil-works/pi-coding-agent":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/pi-wezterm-tools_0.1.4_1786019146553_0.6402018039071757","host":"s3://npm-registry-packages-npm-production"}},"0.1.5":{"name":"@aefree/pi-wezterm-tools","version":"0.1.5","keywords":["pi-package","wezterm","terminal"],"license":"MIT","_id":"@aefree/pi-wezterm-tools@0.1.5","maintainers":[{"name":"aefree","email":"aaron@secretcrush.net"}],"homepage":"https://github.com/aefreedman/pi-wezterm-tools#readme","bugs":{"url":"https://github.com/aefreedman/pi-wezterm-tools/issues"},"pi":{"extensions":["./index.ts","./extensions/wezterm-tab-flash-notifier.ts"]},"dist":{"shasum":"6d8b7d63d1b297a2217fcbeae2a35c7a4b990da7","tarball":"https://registry.npmjs.org/@aefree/pi-wezterm-tools/-/pi-wezterm-tools-0.1.5.tgz","fileCount":22,"integrity":"sha512-rTj+fNP7xOQ2FyFpM0KfmrQ3NYl2UtiJDUKT4v5E8E2lSiW+5tFlq04AG9/C2fwUbp+fHa3LgwLSJMzEprvfNA==","signatures":[{"sig":"MEQCIAyiF/k4w6oGm+NOvyav8oggvZ1iZkuX3OYBJ3zd66IBAiBLkvaunBgK39nTQr16lUw6HBbktA1J9f3tZ2roc49FXQ==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"},{"sig":"MEYCIQC35iJMyNPt29GdAMv2vg13wgOsYS1QDOUazos4NywDfwIhAJ3quJ81oy+iWHSMpLqaaPrb5Ni5nM04ngPbCQk2alPT","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@aefree%2fpi-wezterm-tools@0.1.5","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":128709},"type":"module","gitHead":"b635ff427b6afc5a40be8fbe48fb2ae57298e8d9","scripts":{"test":"tsx tests/wezterm-tool-rendering.test.ts && tsx tests/run-command.test.ts && tsx tests/wezterm-template-loader.integration.test.ts && tsx tests/wezterm-tab-notifier.test.ts && tsx tests/package-validation.test.ts"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:7f45d8eb-7b49-4997-8290-74c7c8ec39b6"}},"repository":{"url":"git+ssh://git@github.com/aefreedman/pi-wezterm-tools.git","type":"git"},"_npmVersion":"11.5.1","description":"Pi tools for managing WezTerm sessions, layouts, templates, and tab notifications.","directories":{},"_nodeVersion":"22.14.0","publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"4.23.9","@earendil-works/pi-ai":"0.87.0","@earendil-works/pi-coding-agent":"0.87.0"},"peerDependencies":{"typebox":"*","@earendil-works/pi-ai":"*","@earendil-works/pi-coding-agent":"*"},"peerDependenciesMeta":{"typebox":{"optional":true},"@earendil-works/pi-ai":{"optional":true},"@earendil-works/pi-coding-agent":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/pi-wezterm-tools_0.1.5_1790024721975_0.4209203046822414","host":"s3://npm-registry-packages-npm-production"}},"0.1.6":{"pi":{"extensions":["./index.ts","./extensions/wezterm-tab-flash-notifier.ts"]},"_id":"@aefree/pi-wezterm-tools@0.1.6","bugs":{"url":"https://github.com/aefreedman/pi-wezterm-tools/issues"},"dist":{"shasum":"04b364f6e303099d5412ba9fbb021029ff3f3868","tarball":"https://registry.npmjs.org/@aefree/pi-wezterm-tools/-/pi-wezterm-tools-0.1.6.tgz","fileCount":22,"integrity":"sha512-SE/s8eZTzVWRdTPAL1Ybhw7/dMVy1Gq6VXIaMfS/np8MPJFzc7yzDgrLbIH4gYdoC+d2Pb28cc9ZkU199igC2w==","signatures":[{"sig":"MEUCIQCDkaVpHJ/NQPH0WouqD0jLzhQJHbRENqSLuMRWzO/9mAIgRrGDOr6vWtxzv1Hm2FjObbNQyyqGWiM4wiZVpS2CQeU=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"},{"keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U","sig":"MEYCIQCf33w9JILhDC6EMJTw90Bqt2aljaDBEr0PRQjpIGGSkAIhAOqXYyOgEg8Ztgu5oNvAFSg31dOAQiPMYhnPaRE94/r7"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@aefree%2fpi-wezterm-tools@0.1.6","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":128790},"name":"@aefree/pi-wezterm-tools","type":"module","engines":{"node":">=22.19.0"},"gitHead":"99e4c38fb34c1ca67da704a10165023ff9a85990","license":"MIT","scripts":{"test":"node tests/npm-identity.test.mjs && tsx tests/wezterm-tool-rendering.test.ts && tsx tests/run-command.test.ts && tsx tests/wezterm-template-loader.integration.test.ts && tsx tests/wezterm-tab-notifier.test.ts && tsx tests/package-validation.test.ts"},"version":"0.1.6","_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"7f45d8eb-7b49-4997-8290-74c7c8ec39b6"}},"homepage":"https://github.com/aefreedman/pi-wezterm-tools#readme","keywords":["pi-package","wezterm","terminal"],"repository":{"url":"git+ssh://git@github.com/aefreedman/pi-wezterm-tools.git","type":"git"},"_npmVersion":"11.5.1","description":"Pi tools for managing WezTerm sessions, layouts, templates, and tab notifications.","directories":{},"maintainers":[{"name":"aefree","email":"aaron@secretcrush.net"}],"_nodeVersion":"22.19.0","publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"4.23.15","@earendil-works/pi-ai":"0.99.1","@earendil-works/pi-coding-agent":"0.99.1"},"peerDependencies":{"typebox":"*","@earendil-works/pi-ai":"*","@earendil-works/pi-coding-agent":"*"},"peerDependenciesMeta":{"typebox":{"optional":true},"@earendil-works/pi-ai":{"optional":true},"@earendil-works/pi-coding-agent":{"optional":true}},"_npmOperationalInternal":{"host":"s3://npm-registry-packages-npm-production","tmp":"tmp/pi-wezterm-tools_0.1.6_1790733461173_0.7537792668511363"}}},"time":{"created":"2026-08-06T12:25:46.357Z","modified":"2026-09-30T01:57:41.602Z","0.1.4":"2026-08-06T12:25:46.705Z","0.1.5":"2026-09-21T21:05:22.062Z","0.1.6":"2026-09-30T01:57:41.253Z"},"bugs":{"url":"https://github.com/aefreedman/pi-wezterm-tools/issues"},"license":"MIT","homepage":"https://github.com/aefreedman/pi-wezterm-tools#readme","keywords":["pi-package","wezterm","terminal"],"repository":{"url":"git+ssh://git@github.com/aefreedman/pi-wezterm-tools.git","type":"git"},"description":"Pi tools for managing WezTerm sessions, layouts, templates, and tab notifications.","maintainers":[{"name":"aefree","email":"aaron@secretcrush.net"}],"readme":"# Pi WezTerm Tools\n\nPi package that lets Pi manipulate WezTerm sessions, workspaces, layouts, and templates, and marks tabs when Pi finishes a reply.\n\n## Tools\n\n- `wezterm_launch`\n- `wezterm_attach`\n- `wezterm_health`\n- `wezterm_kill`\n- `wezterm_list`\n- `wezterm_load_template`\n- `wezterm_template`\n- `wezterm_workspace`\n\n## Tab notifications\n\nThe bundled notifier marks the target WezTerm tab when Pi finishes a reply and the target pane is not focused.\n\n- Pi's built-in OSC 9;4 support handles in-progress streaming and compaction activity in supporting terminals such as WezTerm.\n- The notifier marks the transition back to the user turn with a `READY` badge.\n- It prefers exact pane targeting via `PI_WEZTERM_PANE_ID` or `WEZTERM_PANE`, then falls back to a cached pane ID and finally a session-title match.\n- It updates the tab title through `wezterm cli set-tab-title`; a companion WezTerm tab formatter can render the stable badge and clear it when the tab becomes active.\n\nSupported notifier environment variables:\n\n- `PI_WEZTERM_NOTIFY_ENABLED`\n- `PI_WEZTERM_EXECUTABLE`\n- `PI_WEZTERM_NOTIFY_COOLDOWN_MS`\n- `PI_WEZTERM_NOTIFY_TIMEOUT_MS`\n- `PI_WEZTERM_NOTIFICATION_TEXT`\n- `PI_WEZTERM_PANE_ID`\n- `WEZTERM_PANE`\n\n## Template locations\n\nPi-native template lookup order:\n\n1. project-local: `.pi/wezterm-templates/` (requires `allowProjectTemplate: true`)\n2. user-global: `~/.pi/agent/wezterm-templates/`\n3. package examples: `templates/examples/`\n\nProject-local templates are executable configuration from the current project, so loading one always requires explicit trust via `allowProjectTemplate: true`. This also prevents an unapproved project template from silently shadowing a user-global or package template. Template names may contain letters, numbers, dots, underscores, and hyphens, but not path separators or `..`.\n\nAny variable interpolated into a command field is executable input and is rejected unless the caller explicitly sets `allowCommandVariables: true` after reviewing the value. Variables used only in non-command fields do not require this opt-in.\n\n## Install\n\nRecommended as a global package.\n\nFrom npm:\n\n```bash\npi install npm:@aefree/pi-wezterm-tools\n```\n\nFrom GitHub for development:\n\n```bash\npi install git:git@github.com:aefreedman/pi-wezterm-tools.git\n```\n\nLocal development install:\n\n```bash\npi install <path-to-pi-wezterm-tools>\n```\n\n## Requirements\n\n- `wezterm` installed and available on `PATH` (or `PI_WEZTERM_EXECUTABLE` set to its full path)\n- WezTerm environment variables available in the target terminal session for best notification pane targeting\n- `jq` installed and available on `PATH`\n- `bash` available for running the packaged shell scripts\n- `python3` or `python` available when substituting template variables; template loading fails with a clear error when neither is installed\n\nOn macOS, the tools also fall back to `/Applications/WezTerm.app/Contents/MacOS/wezterm` when the `wezterm` command is not on `PATH`. Set `PI_WEZTERM_EXECUTABLE` to an executable file path to explicitly select a WezTerm binary; this override takes precedence over `PATH`.\n\nPane commands use Bash by default to preserve existing behavior. Set `PI_WEZTERM_PANE_SHELL=/bin/zsh` (or another executable shell) when pane commands should load that shell's startup environment and continue interactively in it.\n\n## Testing\n\n```bash\nnpm test\n```\n\n## Notes\n\n- This package includes the tab notification extension; enable only the notification configuration you want Pi to load.\n- Package-local shell scripts live under `scripts/wezterm/`.\n- Example templates ship under `templates/examples/`.\n\n## License\n\nMIT. See `LICENSE`.\n","readmeFilename":"README.md"}