feat: Enhance local command handling and introduce local intents
- Refactor `run_local_command` to manage subprocesses more effectively, ensuring child processes are terminated on timeout. - Introduce `_terminate` function to handle process group termination and capture output. - Implement `_command_output` to format command results with a character limit. - Add local intent recognition in `intents.py` to handle commands like "stop", "go to sleep", and "come here" without server interaction. - Normalize user input to match local intents while stripping filler words. - Update tests to cover new local intent functionality and ensure proper command handling. - Enhance speech processing to handle abbreviations and improve spoken output clarity.
This commit is contained in:
+16
-1
@@ -72,8 +72,17 @@ ELEVENLABS_VOICE_ID=
|
||||
#VAD_MIN_UTTERANCE_SECONDS=0.4
|
||||
#VAD_GRACE_SECONDS=4 # how long to wait for you to start talking
|
||||
|
||||
# ── Local intents (optional) ────────────────────────────────────────────────
|
||||
# A short, closed list of things the pet answers itself, with no server round
|
||||
# trip: "stop", "be quiet", "come here", "go away", "go to sleep", "wake up",
|
||||
# "say that again", "sit"/"stay", "go for a walk", "use your normal voice".
|
||||
# Matched whole and exact, and never while you're answering a question Bolt
|
||||
# asked, so a real request ("stop the docker container") still goes to him.
|
||||
# Set to false to route absolutely everything through the server.
|
||||
#LOCAL_INTENTS=true
|
||||
|
||||
# ── Follow-up listening (optional) ──────────────────────────────────────────
|
||||
# When a reply ends on a question, the pet keeps listening for your answer
|
||||
# When a reply asks you something, the pet keeps listening for your answer
|
||||
# instead of dropping back to idle and making you say the wake word again.
|
||||
# FOLLOW_UP_MAX_TURNS caps how many question-and-answer rounds can chain
|
||||
# without you re-triggering it (0 = no cap) — a stop on runaway loops if the
|
||||
@@ -181,6 +190,12 @@ ELEVENLABS_VOICE_ID=
|
||||
#NOTIFICATION_BRIDGE=false
|
||||
#NOTIFICATION_FILTER=build|deploy|calendar
|
||||
#NOTIFICATION_MIN_INTERVAL_SECONDS=60
|
||||
# Notifications queue while the pet is napping (the heartbeat that forwards them
|
||||
# doesn't run). These two stop an overnight backlog becoming a monologue at 8am:
|
||||
# the queue drops its oldest past the limit, and anything staler than the age
|
||||
# limit is discarded rather than read out.
|
||||
#NOTIFICATION_QUEUE_LIMIT=20
|
||||
#NOTIFICATION_MAX_AGE_SECONDS=900
|
||||
|
||||
# ── Push-to-talk (optional) ─────────────────────────────────────────────────
|
||||
# Global hotkey; needs pynput and a session that allows global key hooks
|
||||
|
||||
Reference in New Issue
Block a user