picoclaw/pkg/config
Hoshina 29ed650107 feat(channels): auto-orchestrate Placeholder/Typing/Reaction via capability interfaces
Define PlaceholderCapable, TypingCapable, and ReactionCapable interfaces
and have BaseChannel.HandleMessage auto-detect and trigger all three as
independent pipelines on inbound messages. This replaces the scattered
manual orchestration code in each channel's handleMessage with a single
unified dispatch in the framework layer.

Changes:
- Add PlaceholderCapable interface to interfaces.go
- Add ReactionCapable + RecordReactionUndo to interfaces.go
- BaseChannel.HandleMessage auto-triggers Typing → Reaction → Placeholder
- Manager gains reactionUndos sync.Map with TTL janitor cleanup
- Telegram: extract SendPlaceholder from manual code, add StartTyping
- Discord: add SendPlaceholder + StartTyping
- Pico: add SendPlaceholder (uses Pico Protocol message.create)
- Slack: extract ReactToMessage from manual code
- OneBot: extract ReactToMessage, remove leaked pendingEmojiMsg sync.Map
- LINE: move group-chat guard into StartTyping, remove manual orchestration
- Config: add Placeholder to PicoConfig; remove from Slack/LINE/OneBot
  (no MessageEditor, so placeholder config was dead code)
2026-02-27 03:33:21 +08:00
..
config.go feat(channels): auto-orchestrate Placeholder/Typing/Reaction via capability interfaces 2026-02-27 03:33:21 +08:00
config_test.go config: change default dm_scope to per-channel-peer 2026-02-26 16:51:18 +08:00
defaults.go feat(media): integrate TTL cleanup into FileMediaStore 2026-02-24 21:24:32 +09:00
migration.go fix(providers): support per-model request_timeout in model_list (#733) 2026-02-26 19:08:19 +11:00
migration_test.go fix(providers): support per-model request_timeout in model_list (#733) 2026-02-26 19:08:19 +11:00
model_config_test.go fix(providers): support per-model request_timeout in model_list (#733) 2026-02-26 19:08:19 +11:00