picoclaw/pkg
Jex 213274002a
fix: keep Discord typing indicator alive during agent processing (#391)
* fix: keep Discord typing indicator alive during agent processing

Discord's ChannelTyping() expires after ~10s, but agent processing
(LLM + tool execution) typically takes 30-60s+. Replace single-fire
ChannelTyping() with a self-managed typing loop inside DiscordChannel.

- startTyping(chatID): goroutine refreshes ChannelTyping every 8s
- stopTyping(chatID): called in Send() when response is dispatched
- Stop() cleans up all typing goroutines on shutdown
- startTyping placed after all early returns to prevent goroutine leaks

Typing lifecycle fully contained in channel layer, no interface changes.

Fixes #390

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>

* fix: add goroutine safety to Discord typing indicator

- Add 5-minute timeout as safety net to prevent indefinite goroutine leaks
  when agent produces no outbound message (empty response, panic, etc.)
- Listen on c.ctx.Done() so goroutine exits when channel context is cancelled
- Log ChannelTyping() errors at debug level for diagnostics (rate limits, session closed)

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>

---------

Co-authored-by: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-19 13:28:58 +01:00
..
agent fix: ensure tool name is correctly assigned in LLM iteration(missing tool call name in debug mode logs) (#454) 2026-02-19 12:06:09 +01:00
auth fix: codex agent 400 error (#102) 2026-02-16 11:46:02 +08:00
bus Prevent panic on publish after MessageBus is closed (#223) 2026-02-16 15:04:25 +08:00
channels fix: keep Discord typing indicator alive during agent processing (#391) 2026-02-19 13:28:58 +01:00
config merge: sync upstream/main (PR #213) into feat/multi-agent-routing 2026-02-18 11:39:14 -03:00
constants refactor: replace bool map with set-style map for internal channels (#472) 2026-02-19 11:48:17 +01:00
cron fix: tighten file perms and enforce Slack ACL checks (#186) 2026-02-16 16:06:39 +08:00
devices feat: add device hotplug event notifications (USB on Linux) 2026-02-14 17:03:04 +08:00
health Add health check endpoints (/health and /ready) for container orchestration liveness and readiness probes. (#104) 2026-02-16 11:53:11 +08:00
heartbeat * fix: heartbeat/service_test.go test failed 2026-02-13 22:19:18 +08:00
logger * First commit 2026-02-09 19:20:19 +08:00
migrate merge: sync upstream/main, wire WebSearch through factory 2026-02-18 11:09:18 -03:00
providers fix: also use max_completion_tokens for gpt5 era models (#445) 2026-02-19 01:29:34 +01:00
routing feat: add multi-agent routing with declarative bindings 2026-02-13 12:12:33 -03:00
session Feat issue 183 (#189) 2026-02-16 16:30:54 +08:00
skills dead code cleanup (#210) 2026-02-19 01:54:13 +01:00
state refactor(heartbeat): add configurable interval and channel-aware routing 2026-02-13 11:13:32 +08:00
tools fix: ensure tool name is correctly assigned in LLM iteration(missing tool call name in debug mode logs) (#454) 2026-02-19 12:06:09 +01:00
utils Update pkg/utils/message.go 2026-02-18 23:26:39 +01:00
voice Remove duplicate truncate functions, reuse utils.Truncate 2026-02-12 00:46:48 +08:00