Commit Graph

492 Commits

Author SHA1 Message Date
Re-bin
72a622aea1 Merge PR #824: handle /help in Telegram directly, bypassing ACL 2026-02-20 08:40:32 +00:00
Re-bin
2f315ec567 style: trim _on_help docstring 2026-02-20 08:39:26 +00:00
Re-bin
7957f84e3d Merge branch 'main' into pr-824 2026-02-20 08:36:34 +00:00
Re-bin
7d7c1e3edf Merge PR #823: prevent duplicate memory consolidation tasks per session 2026-02-20 08:35:27 +00:00
Re-bin
686471bd8d Merge branch 'main' into pr-823 2026-02-20 08:33:45 +00:00
Re-bin
ef0eef9f74 Merge PR #825: allow one retry for models that send interim text before tool calls 2026-02-20 08:31:57 +00:00
Re-bin
2383dcb3a8 style: use loguru native format and trim comments in interim retry 2026-02-20 08:31:48 +00:00
Re-bin
0660d614f6 Merge branch 'main' into pr-825 2026-02-20 08:24:26 +00:00
Re-bin
5855d92619 Merge PR #854: add Anthropic prompt caching via cache_control 2026-02-20 08:21:55 +00:00
Re-bin
9ffae47c13 refactor(litellm): remove redundant comments in cache_control methods 2026-02-20 08:21:02 +00:00
Re-bin
afa0513243 Merge branch 'main' into pr-854 2026-02-20 08:17:32 +00:00
Re-bin
72f449e868 Merge PR #644: handle non-string values in memory consolidation 2026-02-20 08:13:07 +00:00
Re-bin
002de466d7 chore: remove test file for memory consolidation fix 2026-02-20 08:12:23 +00:00
Re-bin
a9bffdc06f Merge branch 'main' into pr-644 2026-02-20 08:08:55 +00:00
Re-bin
a79e56a44d Merge PR #763: add service-layer timezone validation for cron jobs 2026-02-20 08:06:36 +00:00
Re-bin
2b8c082428 Merge branch 'main' into pr-763 2026-02-20 08:04:48 +00:00
Re-bin
5d7a27ebf2 Merge PR #653: resolve relative file paths against workspace 2026-02-20 08:03:27 +00:00
Re-bin
e17342ddfc fix: pass workspace to file tools in subagent 2026-02-20 08:03:24 +00:00
Re-bin
55ac4b729e Merge branch 'main' into pr-653 2026-02-20 08:01:08 +00:00
Re-bin
ae0347042b Merge PR #455: fix UTF-8 encoding and ensure_ascii for non-ASCII support 2026-02-20 08:00:32 +00:00
Re-bin
73fdd0dd45 fix: complete ensure_ascii=False and UTF-8 encoding migration 2026-02-20 07:59:32 +00:00
Re-bin
4c2f64db14 Merge PR #864: use loguru native formatting to prevent KeyError on curly braces 2026-02-20 07:55:52 +00:00
Re-bin
37252a4226 fix: complete loguru native formatting migration across all files 2026-02-20 07:55:34 +00:00
Re-bin
0bde1d89fa Merge branch 'main' into pr-864 2026-02-20 07:47:48 +00:00
Re-bin
0e6683ad4b Merge PR #870: remove dead pub/sub code from MessageBus 2026-02-20 07:42:50 +00:00
Re-bin
b26a2e1af1 Merge branch 'main' into pr-870 2026-02-20 07:41:17 +00:00
AlexanderMerkel
0001f286b5 fix: remove dead pub/sub code from MessageBus
`subscribe_outbound()`, `dispatch_outbound()`, and `stop()` have zero
callers — `ChannelManager._dispatch_outbound()` handles all outbound
routing via `consume_outbound()` directly. Remove the dead methods and
their unused imports (`Callable`, `Awaitable`, `logger`).

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-19 19:00:25 -07:00
Nikolas de Hor
53b83a38e2 fix: use loguru native formatting to prevent KeyError on messages containing curly braces
Closes #857
2026-02-19 17:19:36 -03:00
Re-bin
d22929305f Merge PR #820: fix safety guard false positive on 'format' in URLs 2026-02-19 17:48:37 +00:00
Re-bin
fbfb030a6e chore: remove network-dependent test file for shell guard 2026-02-19 17:48:09 +00:00
Re-bin
1c51fbeeee Merge branch 'main' into pr-820 2026-02-19 17:44:30 +00:00
Re-bin
c1296746e3 Merge PR #851: wait for killed process after shell timeout to prevent fd leaks 2026-02-19 17:43:05 +00:00
Re-bin
fe7b0b64c1 Merge branch 'main' into pr-851 2026-02-19 17:42:23 +00:00
Re-bin
125524f5c2 Merge PR #836: fix Codex provider routing for GitHub Copilot models 2026-02-19 17:39:52 +00:00
Re-bin
b11f0ce6a9 fix: prefer explicit provider prefix over keyword match to fix Codex routing 2026-02-19 17:39:44 +00:00
Re-bin
d78368bb2f Merge branch 'main' into pr-836 2026-02-19 17:35:19 +00:00
Re-bin
9a00a274e5 Merge PR #844: support sending images, audio, and files for Feishu 2026-02-19 17:34:01 +00:00
Re-bin
3890f1a7dd refactor(feishu): clean up send() and remove dead code 2026-02-19 17:33:08 +00:00
Re-bin
eea4942025 Merge branch 'main' into pr-844 2026-02-19 17:29:35 +00:00
Re-bin
d748e6eca3 fix: pin dependency version ranges 2026-02-19 17:28:13 +00:00
tercerapersona
3b4763b3f9 feat: add Anthropic prompt caching via cache_control
Inject cache_control: {"type": "ephemeral"} on the system message and
last tool definition for providers that support prompt caching. Adds
supports_prompt_caching flag to ProviderSpec (enabled for Anthropic only)
and skips caching when routing through a gateway.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-02-19 11:05:22 -03:00
Nikolas de Hor
c86dbc9f45 fix: wait for killed process after shell timeout to prevent fd leaks
When a shell command times out, process.kill() is called but the
process object was never awaited after that. This leaves subprocess
pipes undrained and file descriptors open. If many commands time out,
fd leaks accumulate.

Add a bounded wait (5s) after kill to let the process fully terminate
and release its resources.
2026-02-19 10:27:11 -03:00
Nikolas de Hor
1b49bf9602 fix: avoid duplicate messages on retry and reset final_content
Address review feedback:
- Remove on_progress call for interim text to prevent duplicate
  messages when the model simply answers a direct question
- Reset final_content to None before continue to avoid stale
  interim text leaking as the final response on empty retry

Closes #705
2026-02-19 10:26:49 -03:00
Ubuntu
d08c022255 feat(feishu): support sending images, audio, and files
- Add image upload via im.v1.image.create API
- Add file upload via im.v1.file.create API
- Support sending images (.png, .jpg, .gif, etc.) as image messages
- Support sending audio (.opus) as voice messages
- Support sending other files as file messages
- Refactor send() to handle media attachments before text content
2026-02-19 16:31:00 +08:00
PiEgg
9789307dd6 Fix Codex provider routing for GitHub Copilot models 2026-02-19 13:30:02 +08:00
chtangwin
124c611426 Fix: Add ensure_ascii=False to WhatsApp send payload
The send() payload contains user message content (msg.content) which
may include non-ASCII characters (e.g. CJK, German umlauts, emoji).

The auth frame and Discord heartbeat/identify payloads are left
unchanged as they only carry ASCII protocol fields.
2026-02-18 18:46:23 -08:00
chtangwin
a2379a08ac Fix: Ensure UTF-8 encoding and ensure_ascii=False for remaining file/JSON operations 2026-02-18 18:37:17 -08:00
chtangwin
c7b5dd9350 Fix: Ensure UTF-8 encoding for all file operations 2026-02-18 18:28:54 -08:00
Nikolas de Hor
464352c664 fix: allow one retry for models that send interim text before tool calls
Some LLM providers (MiniMax, Gemini Flash, GPT-4.1, etc.) send an
initial text-only response like "Let me investigate..." before actually
making tool calls. The agent loop previously broke immediately on any
text response without tool calls, preventing these models from ever
using tools.

Now, when the model responds with text but hasn't used any tools yet,
the loop forwards the text as progress to the user and gives the model
one additional iteration to make tool calls. This is limited to a
single retry to prevent infinite loops.

Closes #705
2026-02-18 21:31:12 -03:00
Nikolas de Hor
33d760d312 fix: handle /help command directly in Telegram, bypassing ACL check
The /help command was routed through _forward_command → _handle_message
→ is_allowed(), which denied access to users not in the allowFrom list.
Since /help is purely informational, it should be accessible to all
users — similar to how /start already works with its own handler.

Add a dedicated _on_help handler that replies directly without going
through the message bus access control.

Closes #687
2026-02-18 21:31:11 -03:00