{"_id":"@baozs/pi-peon-ping-win","_rev":"5-d3cfd74e169dfce8c2d80e99623b4c81","name":"@baozs/pi-peon-ping-win","dist-tags":{"latest":"2.0.1"},"versions":{"1.0.0":{"name":"@baozs/pi-peon-ping-win","version":"1.0.0","keywords":["pi-package","peon-ping","windows","pi-extension"],"author":{"name":"cppgohan"},"license":"MIT","_id":"@baozs/pi-peon-ping-win@1.0.0","maintainers":[{"name":"cppgohan","email":"cppgohan@gmail.com"}],"contributors":[{"url":"original pi-peon-ping","name":"Josh Thomas","email":"josh@joshuadavidthomas.com"}],"homepage":"https://github.com/Gohan/pi-peon-ping-win#readme","bugs":{"url":"https://github.com/Gohan/pi-peon-ping-win/issues"},"pi":{"extensions":["./src/index.ts"]},"dist":{"shasum":"c94b3f8bcae6901f1dffdc47a8e42e2061aa07cd","tarball":"https://registry.npmjs.org/@baozs/pi-peon-ping-win/-/pi-peon-ping-win-1.0.0.tgz","fileCount":31,"integrity":"sha512-wwOnuck2gluzABZ+7WNdJjqEMj8bkC5VNYGjAvL97PttKcAy4MFZbCXo57egg03gEIgcxZmPqHpRgfauDIE/RQ==","signatures":[{"sig":"MEUCIQCVGMN3dHQg6gD6KttHj5TDLLoRgRyHEfdn/QGBRSGg7QIgQD30d0TrhzlWxa74TSoy1ErHl3vEGLnPBVrmQJBbmFc=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":179672},"type":"module","gitHead":"5443620dea37b7def95e2508aa41e272571b3194","scripts":{"test":"bun test tests/","typecheck":"tsc --noEmit","test:watch":"bun test tests/ --watch"},"_npmUser":{"name":"cppgohan","email":"cppgohan@gmail.com"},"repository":{"url":"git+https://github.com/Gohan/pi-peon-ping-win.git","type":"git"},"_npmVersion":"11.12.1","description":"Pi extension for peon-ping sound notifications — fork with native Windows support (ffplay/mpv + winmm.dll PlaySound fallback)","directories":{},"_nodeVersion":"24.15.0","publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"@types/bun":"latest","typescript":"^5.0.0"},"peerDependencies":{"@mariozechner/pi-tui":">=0.50.0","@mariozechner/pi-coding-agent":">=0.50.0"},"_npmOperationalInternal":{"tmp":"tmp/pi-peon-ping-win_1.0.0_1781772345876_0.8395495124555539","host":"s3://npm-registry-packages-npm-production"}},"1.1.0":{"name":"@baozs/pi-peon-ping-win","version":"1.1.0","keywords":["pi-package","peon-ping","windows","pi-extension"],"author":{"name":"cppgohan"},"license":"MIT","_id":"@baozs/pi-peon-ping-win@1.1.0","maintainers":[{"name":"cppgohan","email":"cppgohan@gmail.com"}],"contributors":[{"url":"original pi-peon-ping","name":"Josh Thomas","email":"josh@joshuadavidthomas.com"}],"homepage":"https://github.com/Gohan/pi-peon-ping-win#readme","bugs":{"url":"https://github.com/Gohan/pi-peon-ping-win/issues"},"pi":{"extensions":["./src/index.ts"]},"dist":{"shasum":"97c6f6435bd97ad2b51338f4f46abedfa9502102","tarball":"https://registry.npmjs.org/@baozs/pi-peon-ping-win/-/pi-peon-ping-win-1.1.0.tgz","fileCount":32,"integrity":"sha512-EuDL0WBh6w1n24lcuysQq09goxu9pEE9QHNX3Enz6Vgd/RlHmhR0xdkwyU9S8O8m2Y/htjm0c/9ustgqboeugw==","signatures":[{"sig":"MEYCIQDR+lBDev95oKPi+L6N13rrw/diWOpEbpfuauKTv1YG6QIhANc+82QjuKKcyc2FogsVOcMnT4JbYzbIUo4f06idRhdz","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@baozs%2fpi-peon-ping-win@1.1.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":192461},"type":"module","gitHead":"abd108403e943d6ddcd38972cebe5973108c374c","scripts":{"test":"bun test tests/","typecheck":"tsc --noEmit","test:watch":"bun test tests/ --watch"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:0d9be1ca-988f-4318-840c-715ec56ede6a"}},"repository":{"url":"git+https://github.com/Gohan/pi-peon-ping-win.git","type":"git"},"_npmVersion":"11.17.0","description":"Pi extension for peon-ping sound notifications — fork with native Windows support (ffplay/mpv + winmm.dll PlaySound fallback)","directories":{},"_nodeVersion":"22.22.3","publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"@types/bun":"latest","typescript":"^5.0.0"},"peerDependencies":{"@mariozechner/pi-tui":">=0.50.0","@mariozechner/pi-coding-agent":">=0.50.0"},"_npmOperationalInternal":{"tmp":"tmp/pi-peon-ping-win_1.1.0_1781803828805_0.004461135197226795","host":"s3://npm-registry-packages-npm-production"}},"1.2.0":{"name":"@baozs/pi-peon-ping-win","version":"1.2.0","keywords":["pi-package","peon-ping","windows","pi-extension"],"author":{"name":"cppgohan"},"license":"MIT","_id":"@baozs/pi-peon-ping-win@1.2.0","maintainers":[{"name":"cppgohan","email":"cppgohan@gmail.com"}],"contributors":[{"url":"original pi-peon-ping","name":"Josh Thomas","email":"josh@joshuadavidthomas.com"}],"homepage":"https://github.com/Gohan/pi-peon-ping-win#readme","bugs":{"url":"https://github.com/Gohan/pi-peon-ping-win/issues"},"pi":{"extensions":["./src/index.ts"]},"dist":{"shasum":"7c71f3ab80ca341f4dcfbb6c1eb474bec9ab33ec","tarball":"https://registry.npmjs.org/@baozs/pi-peon-ping-win/-/pi-peon-ping-win-1.2.0.tgz","fileCount":32,"integrity":"sha512-+uDGHmhj8v9Oz/kx9EpcN7oFEFEaIFLthYBy9hUzP+mEnV0sE42+KLDviJdCb7Nh0HST5P/jcQmmf8VwKe5Y/w==","signatures":[{"sig":"MEQCIGstyoqt6lIiTCfUWsxT4GJgUNAH/uy42COS8harlErOAiAkhOu3bEFBGm538oHI+MEXbadAt9MVquscRdwNNLJU8w==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@baozs%2fpi-peon-ping-win@1.2.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":201422},"type":"module","gitHead":"f39d6921de7c87a0155672d972aa701ba8137fa0","scripts":{"test":"bun test tests/","typecheck":"tsc --noEmit","test:watch":"bun test tests/ --watch"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:0d9be1ca-988f-4318-840c-715ec56ede6a"}},"repository":{"url":"git+https://github.com/Gohan/pi-peon-ping-win.git","type":"git"},"_npmVersion":"11.17.0","description":"Pi extension for peon-ping sound notifications — fork with native Windows support (ffplay/mpv + winmm.dll PlaySound fallback)","directories":{},"_nodeVersion":"22.22.3","publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"@types/bun":"latest","typescript":"^5.0.0"},"peerDependencies":{"@mariozechner/pi-tui":">=0.50.0","@mariozechner/pi-coding-agent":">=0.50.0"},"_npmOperationalInternal":{"tmp":"tmp/pi-peon-ping-win_1.2.0_1781849305280_0.9365191450720354","host":"s3://npm-registry-packages-npm-production"}},"2.0.0":{"name":"@baozs/pi-peon-ping-win","version":"2.0.0","keywords":["pi-package","peon-ping","windows","pi-extension"],"author":{"name":"cppgohan"},"license":"MIT","_id":"@baozs/pi-peon-ping-win@2.0.0","maintainers":[{"name":"cppgohan","email":"cppgohan@gmail.com"}],"contributors":[{"url":"original pi-peon-ping","name":"Josh Thomas","email":"josh@joshuadavidthomas.com"}],"homepage":"https://github.com/Gohan/pi-peon-ping-win#readme","bugs":{"url":"https://github.com/Gohan/pi-peon-ping-win/issues"},"pi":{"extensions":["./src/index.ts"]},"dist":{"shasum":"5ed6252e6143bb7635934b154847686c1cd6a49f","tarball":"https://registry.npmjs.org/@baozs/pi-peon-ping-win/-/pi-peon-ping-win-2.0.0.tgz","fileCount":31,"integrity":"sha512-+ZUgcXDrFuvia/02Yx2RnHmKHtBuAdlz00+qv5V+dA3StQ8rAPfeck74xZI25yuxyM02t884t6ldaA4zt0LFKg==","signatures":[{"sig":"MEYCIQCsCXS6zwc/kyv+Pu5JvHvXpozasKiuwd+9937CObUD2gIhANWfI+Mt1PtS6vKYRc4Gjb8wg8rt0qA9BB/B8Plnl3Oa","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@baozs%2fpi-peon-ping-win@2.0.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":124608},"type":"module","gitHead":"acb53e182bead318fe16b982fd25e3e6333f0d48","scripts":{"test":"vitest run","typecheck":"tsc --noEmit","test:watch":"vitest"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:0d9be1ca-988f-4318-840c-715ec56ede6a"}},"repository":{"url":"git+https://github.com/Gohan/pi-peon-ping-win.git","type":"git"},"_npmVersion":"11.17.0","description":"Pi extension for peon-ping sound notifications — fork with native Windows support (ffplay/mpv + winmm.dll PlaySound fallback)","directories":{},"_nodeVersion":"22.22.3","publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"vitest":"^4.1.9","typescript":"^5.0.0","@types/node":"^25.9.3","@earendil-works/pi-agent-core":"^0.79.7"},"peerDependencies":{"@earendil-works/pi-tui":">=0.74.0","@earendil-works/pi-coding-agent":">=0.74.0"},"_npmOperationalInternal":{"tmp":"tmp/pi-peon-ping-win_2.0.0_1781855351051_0.8996543230872047","host":"s3://npm-registry-packages-npm-production"}},"2.0.1":{"name":"@baozs/pi-peon-ping-win","version":"2.0.1","description":"Pi extension for peon-ping sound notifications — fork with native Windows support (ffplay/mpv + winmm.dll PlaySound fallback)","keywords":["pi-package","peon-ping","windows","pi-extension"],"type":"module","license":"MIT","author":{"name":"cppgohan"},"contributors":[{"name":"Josh Thomas","email":"josh@joshuadavidthomas.com","url":"original pi-peon-ping"}],"repository":{"type":"git","url":"git+https://github.com/Gohan/pi-peon-ping-win.git"},"publishConfig":{"access":"public"},"pi":{"extensions":["./src/index.ts"]},"scripts":{"test":"vitest run","test:watch":"vitest","typecheck":"tsc --noEmit"},"devDependencies":{"@earendil-works/pi-agent-core":"^0.79.7","@types/node":"^25.9.3","typescript":"^5.0.0","vitest":"^4.1.9"},"peerDependencies":{"@earendil-works/pi-coding-agent":">=0.74.0","@earendil-works/pi-tui":">=0.74.0"},"gitHead":"dc4c0a06faa19c424ae7f76b7a8c4259527e65c5","_id":"@baozs/pi-peon-ping-win@2.0.1","bugs":{"url":"https://github.com/Gohan/pi-peon-ping-win/issues"},"homepage":"https://github.com/Gohan/pi-peon-ping-win#readme","_nodeVersion":"22.22.3","_npmVersion":"11.17.0","dist":{"integrity":"sha512-h7p0bg+qFM2wff2SWWaysk1J2KhKDRQr6TJyKI37mNv27AfvpUIgOeZcVCT/B2lTbIHbbEiHXWyZdppPPf3VBA==","shasum":"cfdfc356aa338006c9a920aed9b8c2921b7ac241","tarball":"https://registry.npmjs.org/@baozs/pi-peon-ping-win/-/pi-peon-ping-win-2.0.1.tgz","fileCount":31,"unpackedSize":125201,"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@baozs%2fpi-peon-ping-win@2.0.1","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"signatures":[{"keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U","sig":"MEYCIQDyl6C1AMy4VGXBMLLndzsuDgrFhvnGsLrw+EA2tcLhsAIhANNUmdXrSVpt3OU70jWyd2FA9Zc79o6fuq5nD0mN+B4y"}]},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:0d9be1ca-988f-4318-840c-715ec56ede6a"}},"directories":{},"maintainers":[{"name":"cppgohan","email":"cppgohan@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages-npm-production","tmp":"tmp/pi-peon-ping-win_2.0.1_1781856162300_0.7869115409520537"},"_hasShrinkwrap":false}},"time":{"created":"2026-06-18T08:45:45.668Z","modified":"2026-06-19T08:02:42.744Z","1.0.0":"2026-06-18T08:45:46.077Z","1.1.0":"2026-06-18T17:30:28.952Z","1.2.0":"2026-06-19T06:08:25.441Z","2.0.0":"2026-06-19T07:49:11.176Z","2.0.1":"2026-06-19T08:02:42.453Z"},"bugs":{"url":"https://github.com/Gohan/pi-peon-ping-win/issues"},"author":{"name":"cppgohan"},"license":"MIT","homepage":"https://github.com/Gohan/pi-peon-ping-win#readme","keywords":["pi-package","peon-ping","windows","pi-extension"],"repository":{"type":"git","url":"git+https://github.com/Gohan/pi-peon-ping-win.git"},"description":"Pi extension for peon-ping sound notifications — fork with native Windows support (ffplay/mpv + winmm.dll PlaySound fallback)","contributors":[{"name":"Josh Thomas","email":"josh@joshuadavidthomas.com","url":"original pi-peon-ping"}],"maintainers":[{"name":"cppgohan","email":"cppgohan@gmail.com"}],"readme":"# pi-peon-ping-win\n\n> **Fork notice:** This is a fork of [`pi-peon-ping`](https://github.com/joshuadavidthomas/pi-peon-ping) that adds **native Windows** support. The upstream package only handles macOS, Linux, and WSL; on native Windows its `playSound` switch silently falls through and no sound plays. This fork adds:\n>\n> - A `\"win\"` platform branch with a **three-tier audio fallback**: `ffplay` → `mpv` → `winmm.dll PlaySound` (via PowerShell P/Invoke). The first two support volume control; the last needs no external deps.\n> - **`pwsh` preference** — uses PowerShell 7 if installed, falling back to Windows PowerShell.\n> - **`playback_wait_seconds` config** — makes the post-`Play()` sleep configurable (default 2s vs upstream's hardcoded 3s), reducing lingering processes during rapid events.\n> - **Default `volume` raised to `1.0`** (upstream `0.5`) — peon-ping is an alert sound, and at 0.5 it's easy to miss on Windows.\n> - **Why not WPF `MediaPlayer`?** Upstream WSL uses `System.Windows.Media.MediaPlayer`, but it silently fails to render audio in `-NonInteractive -Command` background processes (no WPF Dispatcher message pump). This fork replaces it on Windows.\n> - **Custom WinForms popup** on Windows (multi-screen, icon + title + body, auto-dismiss). Upstream's corner-only Windows Toast needs a registered AUMID + Start Menu shortcut and is suppressed by Focus Assist; this fork bypasses all of that. Spawn uses `detached: false` — with `detached: true` Node creates the child via `CREATE_NEW_PROCESS_GROUP`, which breaks WinForms' desktop association (the PowerShell process runs but no window renders).\n> - **Event-aware notification content.** Upstream's popup title/body are hardcoded per event; this fork mirrors the strategy of the [original peon-ping](https://github.com/PeonPing/peon-ping): title is `<project> · <status>` with `<project>` resolved via a priority chain (pi session name → git remote repo name → folder name), and body is event-specific (assistant's last response for `task.complete`, `<tool> failed` for `task.error`, etc.). See [Desktop notification content](#desktop-notification-content).\n>\n> Install `ffplay` for the best experience: `winget install Gyan.FFmpeg`.\n>\n> All credit for the original work goes to [joshuadavidthomas](https://github.com/joshuadavidthomas).\n\nA [pi coding agent](https://github.com/earendil-works/pi) extension for [peon-ping](https://github.com/PeonPing/peon-ping) sound notifications. Plays themed audio clips on lifecycle events using [OpenPeon](https://github.com/PeonPing/og-packs) sound packs (Warcraft III Peon, GLaDOS, Duke Nukem, StarCraft, and more).\n\n## Requirements\n\n- [pi](https://github.com/earendil-works/pi) >= 0.74.0\n- An audio player on your system (see [Platform support](#platform-support))\n\n## Features\n\n| Event | Sound category | Desktop notification |\n|-------|---------------|----------------------|\n| Session start | `session.start` — \"Ready to work?\" | — |\n| Agent starts working | `task.acknowledge` — \"Work, work.\" | — |\n| Tool error | `task.error` — error sound | `error` — body names the failing tool |\n| Rapid prompts (≥3 in 10s) | `user.spam` — annoyed voice line | — |\n| Agent finishes | `task.complete` — completion sound | `done` — body shows the assistant's last response (truncated) |\n| Context compaction | `resource.limit` — limit sound | `compacted` — body: \"Context compacted\" |\n\nSee [Desktop notification content](#desktop-notification-content) below for how title/body are built.\n\n- `/peon` opens a settings panel to toggle sounds, switch packs, adjust volume, and enable/disable individual categories\n- `/peon install` downloads the default 10 packs from the [peon-ping registry](https://peonping.github.io/registry/)\n- Browsing packs previews each one as you scroll\n\n## Installation\n\nInstall as a [pi package](https://github.com/earendil-works/pi/blob/main/packages/coding-agent/docs/packages.md) globally:\n\n```bash\npi install npm:pi-peon-ping\n```\n\nFor project-local installation:\n\n```bash\npi install -l npm:pi-peon-ping\n```\n\nTo try without installing:\n\n```bash\npi -e npm:pi-peon-ping\n```\n\nYou can also use the repository URL:\n\n```bash\npi install git:github.com/joshuadavidthomas/pi-peon-ping\n# or the full URL\npi install https://github.com/joshuadavidthomas/pi-peon-ping\n```\n\nFor manual installation:\n\n```bash\ngit clone https://github.com/joshuadavidthomas/pi-peon-ping ~/.pi/agent/extensions/pi-peon-ping\n```\n\n## Usage\n\nOn first run, the extension will prompt you to install sound packs. You can also install them manually:\n\n```\n/peon install\n```\n\nOpen the settings panel:\n\n```\n/peon\n```\n\n### Installing specific packs\n\n`/peon install` without arguments installs the 10 default packs. To install one or more specific packs, pass their names:\n\n```\n/peon install peon_ru\n/peon install peon_ru glados duke_nukem\n```\n\nPack names come from the public [peon-ping registry](https://peonping.github.io/registry/index.json). Browse all 46+ packs (Warcraft, StarCraft, Portal, Red Alert, Dota 2, etc.) with previews at **[openpeon.com/packs](https://openpeon.com/packs)** — each pack's `name` field is what you pass to `/peon install`.\n\n### Switching packs at runtime\n\nOpen `/peon` settings panel to:\n- Switch the active pack\n- Adjust volume\n- Enable/disable individual sound categories (session start, task complete, etc.)\n- Browse packs with audio preview as you scroll\n\n## Platform support\n\n| Platform | Player |\n|----------|--------|\n| macOS | `afplay` (built-in) |\n| Linux | `pw-play`, `paplay`, `ffplay`, `mpv`, `play`, or `aplay` (first found) |\n| WSL | PowerShell `MediaPlayer` |\n| **Windows (native)** ⭐ | `ffplay` (recommended, `winget install Gyan.FFmpeg`) → `mpv` → `winmm.dll PlaySound` fallback (no volume control) |\n\n## Desktop notification content\n\nThe popup title and body are generated per event, mirroring the strategy of the [original peon-ping](https://github.com/PeonPing/peon-ping):\n\n**Title format:** `<project> · <status>`\n\n`<project>` resolves via a priority chain:\n\n1. pi session name (`pi.getSessionName()`)\n2. git remote repo name (`git remote get-url origin`, last path segment minus `.git`)\n3. `basename(cwd)` — folder name fallback\n\n`<status>` labels the event type:\n\n| Status | Event |\n|--------|-------|\n| `done` | `agent_end` (task complete) |\n| `error` | `tool_execution_end` with `isError` |\n| `compacted` | `session_compact` (fired AFTER compaction completes, not before — the before event can be cancelled by other handlers, so firing on `session_before_compact` would notify on cancellations too) |\n\n**Body** is event-specific:\n\n- `done` → assistant's last text response, truncated to ~120 chars at a word boundary (so the popup tells you what actually happened, not just \"Task complete\")\n- `error` → `<toolName> failed`\n- `compacted` → `Context compacted`\n\nOn Windows the popup is a custom WinForms window (multi-screen, peon icon, auto-dismiss), not a Windows Toast — see the Fork notice at the top for rationale.\n\n## Remote development\n\nThe extension auto-detects SSH sessions, devcontainers, and Codespaces, and routes audio through the peon-ping relay running on your local machine. See the [peon-ping remote development docs](https://github.com/PeonPing/peon-ping#remote-development-ssh--devcontainers--codespaces) for relay setup. The relay mode can be configured in `/peon` settings (`auto` / `local` / `relay`).\n\n## Config and data\n\nThe extension also picks up existing packs from `~/.claude/hooks/peon-ping/` if you have a Claude Code installation. Config and state are stored in `~/.config/peon-ping/`.\n\n### Configuration options\n\nEdit `~/.config/peon-ping/config.json` or use the `/peon` settings panel:\n\n| Option | Default | Description |\n|--------|---------|-------------|\n| `default_pack` | `\"peon\"` | Active sound pack |\n| `volume` | `1.0` | Sound volume (0.0–1.0). Fork default is 1.0 (upstream uses 0.5). |\n| `enabled` | `true` | Master on/off switch |\n| `desktop_notifications` | `true` | Show system notifications on task complete |\n| `silent_window_seconds` | `0` | Suppress `task.complete` for tasks shorter than N seconds |\n| `annoyed_threshold` | `3` | Number of rapid prompts to trigger spam detection |\n| `annoyed_window_seconds` | `10` | Time window for spam detection |\n| `relay_mode` | `\"auto\"` | Relay mode: `\"auto\"`, `\"local\"`, or `\"relay\"` |\n| `playback_wait_seconds` | `2` | **(Fork-added)** Seconds the PowerShell MediaPlayer process stays alive after `Play()`. Lowering this reduces lingering processes when sounds trigger rapidly. Upstream hardcodes `3`. |\n\n> **Note:** If you have an existing config with `active_pack`, it will be automatically migrated to `default_pack` on next load.\n\n## Development\n\n```bash\nnpm install           # Install dependencies\nnpm test              # Run tests\nnpm run test:watch    # Run tests in watch mode\nnpm run typecheck     # Type check\n```\n\nTo test the extension locally without conflicting with a globally installed copy:\n\n```bash\npi -ne -e ./src/index.ts\n```\n\n`-ne` disables extension auto-discovery, `-e` loads only the local source.\n\n## License\n\npi-peon-ping is licensed under the MIT license. See the [`LICENSE`](LICENSE) file for more information.\n","readmeFilename":"README.md"}