Re-bin
c6f670809c
Merge PR #949 : fix(provider): filter empty text content blocks causing API 400
2026-02-22 18:26:42 +00:00
Re-bin
b653183bb0
refactor(providers): move empty content sanitization to base class
2026-02-22 18:26:42 +00:00
Re-bin
2f7835a301
Merge remote-tracking branch 'origin/main' into pr-949
2026-02-22 18:21:47 +00:00
Re-bin
6913d541c8
Merge PR #986 : fix(feishu): replace file.get with message_resource.get to fix file download permission issue
2026-02-22 18:16:45 +00:00
Re-bin
efe89c9091
fix(feishu): pass msg_type as resource_type and clean up style
2026-02-22 18:16:45 +00:00
Re-bin
3d55c9cd03
Merge remote-tracking branch 'origin/main' into pr-986
2026-02-22 18:13:37 +00:00
Re-bin
4f0930f517
Merge PR #955 : fix(providers): normalize empty reasoning_content to None at provider level
2026-02-22 18:11:45 +00:00
Re-bin
c8881c5d49
Merge remote-tracking branch 'origin/main' into pr-955
2026-02-22 18:08:43 +00:00
Re-bin
e46edf2806
Merge PR #950 : fix(mcp): add configurable timeout to MCP tool calls
2026-02-22 18:04:13 +00:00
Re-bin
437ebf4e6e
feat(mcp): make tool_timeout configurable per server via config
2026-02-22 18:04:13 +00:00
Re-bin
51f6247aed
Merge remote-tracking branch 'origin/main' into pr-950
2026-02-22 17:52:24 +00:00
Re-bin
14ba50c172
Merge PR #968 : docs: add systemd user service instructions to README
2026-02-22 17:51:23 +00:00
Re-bin
1aa06ea03d
docs: improve Linux Service section in README
2026-02-22 17:51:23 +00:00
Re-bin
12af652d5a
Merge remote-tracking branch 'origin/main' into pr-968
2026-02-22 17:48:32 +00:00
Re-bin
e322f82f9c
Merge PR #962 : fix(qq): make start() long-running per base channel contract
2026-02-22 17:35:53 +00:00
Re-bin
b53c3d39ed
fix(qq): remove dead _bot_task field and fix stop() to close client
2026-02-22 17:35:53 +00:00
Re-bin
9efe95970e
Merge branch 'main' into pr-962
2026-02-22 17:24:34 +00:00
Re-bin
b13d7f853e
fix(agent): make tool hint a fallback when no content in on_progress
2026-02-22 17:17:35 +00:00
Re-bin
d5e820df98
Merge PR #881 : fix(loop): serialize /new consolidation, track task refs, archive before clear
2026-02-22 17:11:59 +00:00
Re-bin
1cfcc647b7
fix(loop): resolve conflicts with main and improve /new handler
2026-02-22 17:11:59 +00:00
Re-bin
60751909cb
Merge PR #959 : fix(email): evict oldest half of dedup set instead of clearing entirely
2026-02-22 15:48:49 +00:00
Re-bin
4e8c8cc227
fix(email): fix misleading comment and simplify uid eviction
2026-02-22 15:48:49 +00:00
Re-bin
d82c292c99
Merge branch 'main' into pr-959
2026-02-22 15:41:09 +00:00
Re-bin
598f7dafd1
Merge PR #958 : fix(session): handle errors in legacy session migration
2026-02-22 15:40:17 +00:00
Re-bin
71de1899e6
fix(session): use logger.exception and move import to top
2026-02-22 15:40:17 +00:00
Re-bin
b8a06f8d19
Merge branch 'main' into pr-958
2026-02-22 15:39:09 +00:00
Re-bin
b161628ad7
Merge PR #957 : fix(slack): add exception handling to socket listener
2026-02-22 15:38:19 +00:00
Re-bin
b93b77a485
fix(slack): use logger.exception to capture full traceback
2026-02-22 15:38:19 +00:00
Re-bin
c53deecdb1
Merge branch 'main' into pr-957
2026-02-22 15:35:26 +00:00
Re-bin
ef64739736
Merge PR #956 : fix(security): prevent path traversal bypass via startswith check
2026-02-22 15:34:36 +00:00
Re-bin
e0743d6345
Merge branch 'main' into pr-956
2026-02-22 15:33:28 +00:00
FloRa
0d3a2963d0
fix(feishu): replace file.get with message_resource.get to fix file download permission issue
2026-02-22 17:37:33 +08:00
FloRa
973061b01e
fix(feishu): replace file.get with message_resource.get to fix file download permission issue
2026-02-22 17:15:00 +08:00
Xubin Ren
fff6207c6b
Merge PR #982 to add DingTalk, QQ, and Email to channels status output
...
feat(cli): add DingTalk, QQ, and Email to channels status output
2026-02-22 14:57:44 +08:00
TANISH RAJPUT
1532f11b45
Merge pull request #7 from Athemis/feat/matrix-improvements
...
fix(matrix): harmonize units and keep typing indicator during tool calls
2026-02-22 11:47:17 +05:30
Yingwen Luo-LUOYW
b323087631
feat(cli): add DingTalk, QQ, and Email to channels status output
2026-02-22 12:42:33 +08:00
Rok Pergarec
3e40600483
docs: add systemd user service instructions to README
2026-02-21 20:55:54 +01:00
Alexander Minges
494fa8966a
refactor(matrix): use milliseconds for typing timing constants
2026-02-21 20:45:09 +01:00
Alexander Minges
de5104ab2a
fix(matrix): keep typing indicator during progress updates
2026-02-21 20:44:51 +01:00
andienguyen-ecoligo
8c55b40b9f
fix(qq): make start() long-running per base channel contract
...
QQ channel's start() created a background task and returned immediately,
violating the base Channel contract which specifies start() should be
"a long-running async task". This caused the gateway to exit prematurely
when QQ was the only enabled channel.
Now directly awaits _run_bot() to stay alive like other channels.
Fixes #894
2026-02-21 12:38:24 -05:00
andienguyen-ecoligo
ba66c64750
fix(email): evict oldest half of dedup set instead of clearing entirely
...
When _processed_uids exceeds 100k entries, the entire set was cleared
with .clear(), allowing all previously seen emails to be re-processed.
Now evicts the oldest 50% of entries, keeping recent UIDs to prevent
duplicate processing while still bounding memory usage.
Fixes #890
2026-02-21 12:36:04 -05:00
andienguyen-ecoligo
54a0f3d038
fix(session): handle errors in legacy session migration
...
shutil.move() in _load() can fail due to permissions, disk full, or
concurrent access. Without error handling, the exception propagates up
and prevents the session from loading entirely.
Wrap in try/except so migration failures are logged as warnings and the
session falls back to loading from the legacy path on next attempt.
Fixes #863
2026-02-21 12:35:21 -05:00
andienguyen-ecoligo
ef96619039
fix(slack): add exception handling to socket listener
...
_handle_message() in _on_socket_request() had no try/except. If it
throws (bus full, permission error, etc.), the exception propagates up
and crashes the Socket Mode event loop, causing missed messages.
Other channels like Telegram already have explicit error handlers.
Fixes #895
2026-02-21 12:34:50 -05:00
andienguyen-ecoligo
5c9cb3a208
fix(security): prevent path traversal bypass via startswith check
...
`startswith` string comparison allows bypassing directory restrictions.
For example, `/home/user/workspace_evil` passes the check against
`/home/user/workspace` because the string starts with the allowed path.
Replace with `Path.relative_to()` which correctly validates that the
resolved path is actually inside the allowed directory tree.
Fixes #888
2026-02-21 12:34:14 -05:00
andienguyen-ecoligo
de63c31d43
fix(providers): normalize empty reasoning_content to None at provider level
...
PR #947 fixed the consumer side (context.py) but the root cause is at
the provider level — getattr returns "" (empty string) instead of None
when reasoning_content is empty. This causes DeepSeek API to reject the
request with "Missing reasoning_content field" error.
`"" or None` evaluates to None, preventing empty strings from
propagating downstream.
Fixes #946
2026-02-21 12:30:57 -05:00
Re-bin
0040c62b74
Merge PR #939 : Remove redundant tools description from system prompt
2026-02-21 17:07:02 +00:00
Re-bin
13d768cd93
Merge branch 'main' into pr-939
2026-02-21 17:06:05 +00:00
Xubin Ren
6a9152f0c4
Merge PR #947 to Fix 'Missing reasoning_content field' error for deepseek provider.
...
fix(context): Fix 'Missing `reasoning_content` field' error for deepseek provider.
2026-02-22 00:47:58 +08:00
Xubin Ren
9b4273f6a4
Merge PR #951 to change VolcEngine litellm prefix from openai to volcengine
...
fix: change VolcEngine litellm prefix from openai to volcengine
2026-02-22 00:45:49 +08:00
init-new-world
deae84482d
fix: change VolcEngine litellm prefix from openai to volcengine
2026-02-22 00:42:41 +08:00