# 🔔 @jwbz/pi-sounds

pi 声音提醒系统：在所有「卡流程」的地方用不同音调的提示音提醒用户，让长任务结束、需要你介入时不再错过。

## 功能

| 场景 | 触发时机 | 音调 |
|---|---|---|
| ✅ done | agent 整个流程结束（`agent_settled`） | 880Hz→1174Hz 双响 |
| 🔐 permission | 需要用户批准权限 | 659Hz 三连响 |
| ❓ question | 需要用户回答问题 | 784Hz→988Hz 双响 |
| ⚠️ error | 网络/服务错误（`after_provider_response` ≥ 400） | 392Hz→330Hz→262Hz 三连降调 |

全部异步播放、失败静默，不阻塞调用方。

## 安装

```bash
pi install npm:@jwbz/pi-sounds
```

重启 pi 或 `/reload` 生效。

不想装包时也可以单文件部署：复制 `index.ts` 到 `~/.pi/agent/extensions/` 即可。

## 环境要求

- **Windows** + **PowerShell**（通过 `powershell.exe` 的 `[console]::beep` 播放）
- 其他平台安装后不报错，但不发声

## 其他扩展接入

需要自己触发声音（如权限弹窗、提问）的扩展，动态 import 本包并调用 `playSound`：

```ts
const { playSound } = await import("@jwbz/pi-sounds/index.ts");

playSound("permission"); // 需要用户批准
playSound("question");   // 需要用户回答
```

```ts
playSound(kind: "done" | "permission" | "question" | "error"): void
```

建议动态 import + try-catch 包裹，模块缺失时静默降级，不影响宿主扩展运行。

## 本地开发

```bash
pi -e ./index.ts        # 临时试装，只对当前 run 生效
pi install ./              # 正式装本地路径
```

## 发布

```bash
npm publish --access public
```

## License

MIT
