diff --git a/commands/hey.md b/commands/hey.md new file mode 100644 index 0000000..c07b8dd --- /dev/null +++ b/commands/hey.md @@ -0,0 +1,40 @@ +--- +description: " " +argument-hint: "ping | chirp | knock | coin | chime | yourturn [times] [idle-seconds] | off" +allowed-tools: Bash(hey:*), Bash(hey), Bash(hey off) +--- +Activate **hey** for THIS session only — a short **sound** plays when I hand back to you +(finish a reply, or hit a permission prompt), but **only if you've been idle longer than +the threshold**. Fast back-and-forth stays silent; you're beeped only when you've likely +stepped away. It plays on the machine where you sit (local, or forwarded if I'm driven +over SSH). Nothing listens, ever. Most alerts are plain sounds; `yourturn` is a +short pre-rendered voice clip. + +Requested: `$ARGUMENTS` + +## If `$ARGUMENTS` is empty +Do NOT pick a sound. Show the options and ask which they want — nothing else. + +| Sound | Character | +|-------|-----------| +| ping | one clean bright blip | +| chirp | two-note rising pip | +| knock | two soft low thumps | +| coin | jaunty pickup blip | +| chime | Nina's sparkle arpeggio (the speech cue) | +| yourturn | a voice saying "your turn" — cuts through ambient audio | + +Call format: `/hey [times] [idle-seconds]`. Defaults: times=1, idle-threshold=45s. + +## If `$ARGUMENTS` is `off` / `stop` +Run `hey off`, confirm once. Nothing else. + +## Otherwise — a sound, optionally times and threshold +Run `hey $ARGUMENTS` (e.g. `hey knock 2 45`). It previews the sound once and activates. +Confirm in one line: which sound, how many plays, and the idle threshold. Nothing more — +no meta narration on later turns. + +## Notes +- Uniform rule, no model judgement: any hand-back beeps iff `now − last_prompt ≥ threshold`. +- Standalone tool at `~/42labs/john-w-bsmt/hey` (repo `4242labs/hey`); sounds in `~/42labs/john-w-bsmt/hey/assets/`. +- Independent of `/nina` voice — you can run either or both. diff --git a/config.sh b/config.sh index 146ded9..b38039e 100644 --- a/config.sh +++ b/config.sh @@ -12,16 +12,16 @@ mkdir -p "$HEY_CACHE" 2>/dev/null HEY_SWITCH="${HEY_SWITCH:-$HOME/.config/agent-signal/on}" # Per-session token so concurrent agents isolate their markers + playback and # never kill each other. Falls back to PID outside Claude Code. -HEY_SESSION="${HEY_SESSION:-${CLAUDE_CODE_SESSION_ID:-$$}}" +HEY_SESSION="${HEY_SESSION:-${HERMES_SESSION_ID:-${CLAUDE_CODE_SESSION_ID:-$$}}}" HEY_OUT="$HEY_CACHE/$HEY_SESSION" # markers: $HEY_OUT.hey / .turn # --- sounds ------------------------------------------------------------------- HEY_DIR="${HEY_DIR:-$HEY_HOME/assets}" # where the sounds live HEY_THRESHOLD="${HEY_THRESHOLD:-45}" # default idle seconds before a beep fires HEY_TIMES="${HEY_TIMES:-1}" # default number of plays per alert -HEY_DEFAULT_SOUND="${HEY_DEFAULT_SOUND:-ping}" # the system-wide default: "beep" x2 after 20s idle +HEY_DEFAULT_SOUND="${HEY_DEFAULT_SOUND:-chime}" # the system-wide default: chime x2 after 5s idle HEY_DEFAULT_TIMES="${HEY_DEFAULT_TIMES:-2}" -HEY_DEFAULT_THRESHOLD="${HEY_DEFAULT_THRESHOLD:-20}" +HEY_DEFAULT_THRESHOLD="${HEY_DEFAULT_THRESHOLD:-5}" HEY_GAP="${HEY_GAP:-0.25}" # seconds between repeated plays # One row per sound: "name|file". Names match case-insensitively. # A spoken alert is just another row — the player does not care whether the diff --git a/hermes/hey/SKILL.md b/hermes/hey/SKILL.md new file mode 100644 index 0000000..b75b45d --- /dev/null +++ b/hermes/hey/SKILL.md @@ -0,0 +1,39 @@ +--- +name: hey +description: Beep when the agent hands back after you have been idle (/hey [times] [idle-s] | off). +--- +Activate **hey** for THIS session only — a short **sound** plays when I hand back to you +(finish a reply), but **only if you've been idle longer than +the threshold**. Fast back-and-forth stays silent; you're beeped only when you've likely +stepped away. It plays on the machine where you sit (local, or forwarded if I'm driven +over SSH). Nothing listens, ever. Most alerts are plain sounds; `yourturn` is a +short pre-rendered voice clip. + +Requested: the user instruction + +## If the user instruction is empty +Do NOT pick a sound. Show the options and ask which they want — nothing else. + +| Sound | Character | +|-------|-----------| +| ping | one clean bright blip | +| chirp | two-note rising pip | +| knock | two soft low thumps | +| coin | jaunty pickup blip | +| chime | Nina's sparkle arpeggio (the speech cue) | +| yourturn | a voice saying "your turn" — cuts through ambient audio | + +Call format: `/hey [times] [idle-seconds]`. Defaults: times=1, idle-threshold=45s. + +## If the user instruction is `off` / `stop` +Run `hey off`, confirm once. Nothing else. + +## Otherwise — a sound, optionally times and threshold +Run `hey the user instruction` (e.g. `hey knock 2 45`). It previews the sound once and activates. +Confirm in one line: which sound, how many plays, and the idle threshold. Nothing more — +no meta narration on later turns. + +## Notes +- Uniform rule, no model judgement: any hand-back beeps iff `now − last_prompt ≥ threshold`. +- Standalone tool at `~/42labs/john-w-bsmt/hey` (repo `4242labs/hey`); sounds in `~/42labs/john-w-bsmt/hey/assets/`. +- Independent of `/nina` voice — you can run either or both.