Mauro
9fc72c1fb3
feat(tool-feedback): add separate message mode for chat feedback ( #2644 )
...
* feat(tool-feedback): add separate message mode for chat feedback
* add parameter in conf
2026-04-24 11:49:41 +08:00
lxowalle
451db2f5d8
Feat(channels): unify animated tool feedback across chat channels and Pico ( #2622 )
...
* feat(channels): unify tool feedback animation across discord telegram and feishu
* fix(tool-feedback): unify fallback and single-message delivery
* fix(channels): finalize tool feedback in place
* fix ci
* feat: improve tool feedback
* fix review blockers in pico token cache and tool feedback
fix(provider): preserve function thought signatures
fix(feishu): recover tool feedback after edit fallback
* * delete dead code
* fix(pico): clean up tool feedback progress state
* fix ci
* fix(web): preserve tool feedback line breaks in chat
* fix(channels): preserve tool feedback progress state
fix(pico): preserve context usage when finalizing tool feedback
chore: record branch review pass
fix: preserve tool feedback finalization state
fix(web): handle pico history update fallback
* fix ci
2026-04-23 10:35:50 +08:00
lxowalle
6421f146a9
Revert "Feat/channel tool feedback animation ( #2569 )" ( #2596 )
...
This reverts commit e556a816e4 .
2026-04-20 18:30:29 +08:00
lxowalle
e556a816e4
Feat/channel tool feedback animation ( #2569 )
...
* feat(channels): unify tool feedback animation across discord telegram and feishu
* fix(tool-feedback): unify fallback and single-message delivery
* fix(channels): finalize tool feedback in place
* fix ci
* feat: improve tool feedback
2026-04-20 15:20:26 +08:00
Hoshina
93f69a98ba
merge: integrate main channel config changes
2026-04-14 00:34:17 +08:00
Cytown
667fc85d54
refactor(config): make config.Channel to multiple instance support
...
add new field type to Channel struct
config.channels refactor to channel_list
update config version to 3
update the docs
2026-04-13 22:21:21 +08:00
Hoshina
a827d01d7c
test(channels): normalize manager outbound test message
2026-04-07 23:09:26 +08:00
Hoshina
e32a209683
Merge branch 'main' into refactor-inbound-context-routing-session
...
# Conflicts:
# pkg/agent/eventbus_test.go
# pkg/agent/loop.go
# pkg/bus/bus.go
# pkg/bus/types.go
# pkg/channels/pico/pico.go
# pkg/channels/telegram/telegram.go
# pkg/config/config.go
# web/backend/api/session.go
# web/backend/api/session_test.go
2026-04-07 21:41:02 +08:00
SakoroYou
257aa0ff57
fix(channels): fail fast when all channel startups fail ( #2262 )
...
* fix(channels): fail fast when all channel startups fail
* fix(channels): preserve startup errors and cover fail-fast semantics
2026-04-02 14:14:47 +08:00
Hoshina
59dee895fc
refactor(runtime): drop non-session legacy context compatibility
2026-04-01 20:56:48 +08:00
DimonB
6c0798ca3f
feat(channels): make Channel.Send return delivered message IDs ( #2190 )
...
* feat(channels): Channel.Send and MediaSender.SendMedia return delivered message IDs
Change Channel.Send signature from (ctx, msg) error to (ctx, msg) ([]string, error)
and MediaSender.SendMedia similarly, so callers can capture platform message IDs
for threading, reactions, and history annotation.
Adapters that return real IDs: Telegram (per-chunk MessageID), Discord (Message.ID),
Slack Send (ts), QQ (sentMsg.ID), Matrix (EventID). Slack SendMedia returns nil
because UploadFileV2 does not expose the posted message timestamp in its response.
All other adapters return nil IDs.
preSend and sendWithRetry in manager.go updated to propagate ([]string, bool).
README examples updated for both English and Chinese docs.
* style: apply golangci-lint fixes (golines)
* docs: fix Send migration guide — restore old error-only signature in before/after example
2026-03-31 11:07:32 +08:00
afjcjsbx
930dd028f1
fix err and placeholder
2026-03-22 13:47:23 +01:00
afjcjsbx
df4f322f09
fix(tool): route binary outputs through the media pipeline.
2026-03-22 12:05:28 +01:00
kiannidev
310358d3da
Merge upstream/main into fix/1323-telegram-endless-typing
...
Made-with: Cursor
2026-03-19 10:53:50 +02:00
Alix-007
3bcbfd99b9
fix(channels): stop stale typing loops on overwrite ( #1392 )
...
Co-authored-by: XYSK-lilong007 <267018309+XYSK-lilong007@users.noreply.github.com >
2026-03-12 14:31:00 +08:00
kiannidev
dc037f0d79
fix(telegram): stop typing indicator when LLM fails or hangs
2026-03-12 02:22:04 +02:00
afjcjsbx
f89c9673cb
sync sendmessage function
2026-03-09 11:38:23 +01:00
afjcjsbx
536e26aff1
Removed the old heavy logic
2026-03-08 18:22:15 +01:00
afjcjsbx
73243c9014
fix lint
2026-03-07 16:45:21 +01:00
afjcjsbx
a0591f0c08
unit test placeholder logic
2026-03-07 16:40:26 +01:00
Petrichor
62bdece7f5
chore: resolve conflicts with upstream/main
2026-02-28 12:21:54 +08:00
Hoshina
ba98069a00
fix: resolve wastedassign lint warnings in channel subpackages
...
Remove wasted initial assignments before switch statements in
onebot (segType), telegram (filename), and wecom (mediaType).
2026-02-26 23:36:06 +08:00
Hoshina
72e897f95a
fix(channels): fix memory hazards in channel abstraction layer
...
Address 7 memory/architecture issues affecting long-running gateway
processes on embedded devices (<10MB RAM):
- Fix dispatcher busy-wait: remove select+default pattern that caused
CPU spin after context cancellation; SubscribeOutbound handles ctx
internally
- Add TTL janitor for typingStops/placeholders sync.Map entries to
prevent unbounded accumulation when outbound paths fail
- Reduce queue buffers from 100 to 16 slots (~84% memory reduction)
- Optimize SplitMessage with index-based rune operations to reduce
intermediate string/rune allocations
- Replace uuid.New() with atomic counter + random prefix for media
scope IDs (eliminates per-call crypto/rand syscall)
- Lazy channel worker creation: defer goroutine+buffer allocation
until channel.Start() succeeds
2026-02-24 22:30:22 +08:00
Hoshina
60b68b305a
feat(channels): add typing/placeholder automation and Pico Protocol channel (Phase 10 + 7)
...
Phase 10: Define TypingCapable, MessageEditor, PlaceholderRecorder interfaces.
Manager orchestrates outbound typing stop and placeholder editing via preSend.
Migrate Telegram, Discord, Slack, OneBot to register state with Manager instead
of handling locally in Send. Phase 7: Add native WebSocket Pico Protocol channel
as reference implementation of all optional capability interfaces.
2026-02-23 04:55:15 +08:00
Hoshina
38a26d702c
refactor(channels): add per-channel rate limiting and send retry with error classification
...
Define sentinel error types (ErrNotRunning, ErrRateLimit, ErrTemporary,
ErrSendFailed) so the Manager can classify Send failures and choose the
right retry strategy: permanent errors bail immediately, rate-limit
errors use a fixed 1s delay, and temporary/unknown errors use exponential
backoff (500ms→1s→2s, capped at 8s, up to 3 retries). A per-channel
token-bucket rate limiter (golang.org/x/time/rate) throttles outbound
sends before they hit the platform API.
2026-02-22 23:51:55 +08:00