Commit Graph

1279 Commits

Author SHA1 Message Date
Re-bin
4f9857f85f feat(telegram): add configurable group mention policy 2026-03-10 04:34:15 +00:00
Re-bin
8aa754cd2e Merge branch 'main' into pr-1389 2026-03-10 04:26:12 +00:00
Re-bin
d803144f44 merge: PR #1785 respect gateway port from config when --port omitted 2026-03-10 04:08:00 +00:00
Re-bin
0ecfb0a9d6 Merge branch 'main' into pr-1785 2026-03-10 04:07:53 +00:00
Re-bin
39d21bc19d merge: PR #1797 let gateway use configured port by default 2026-03-10 03:54:46 +00:00
shenchengtsi
b24d6ffc94 fix(memory): validate save_memory payload before persisting 2026-03-10 11:32:11 +08:00
Chris Alexander
d633ed6e51 fix(subagent): avoid missing from_legacy call 2026-03-09 20:36:31 +00:00
Chris Alexander
71d90de31b feat(web): configurable web search providers with fallback
Add multi-provider web search support: Brave (default), Tavily,
DuckDuckGo, and SearXNG. Falls back to DuckDuckGo when provider
credentials are missing. Providers are dispatched via a map with
register_provider() for plugin extensibility.

- WebSearchConfig with env-var resolution and from_legacy() bridge
- Config migration for legacy flat keys (tavilyApiKey, searxngBaseUrl)
- SearXNG URL validation, explicit error for unknown providers
- ddgs package (replaces deprecated duckduckgo-search)
- 16 tests covering all providers, fallback, env resolution, edge cases
- docs/web-search.md with full config reference

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-09 20:36:14 +00:00
Protocol Zero
1284c7217e fix(cli): let gateway use config port by default
Respect config.gateway.port when --port is omitted, while keeping CLI flags as the highest-precedence override.
2026-03-09 20:12:11 +00:00
Protocol Zero
0104a2253a fix(telegram): avoid media filename collisions
Use file_unique_id when storing downloaded Telegram media so different uploads do not silently overwrite each other on disk.
2026-03-09 20:11:16 +00:00
Re-bin
99b896f5d4 merge: PR #1784 refine Slack thread handling 2026-03-09 17:18:13 +00:00
Re-bin
28330940d0 fix(slack): skip thread_ts for direct messages 2026-03-09 17:18:10 +00:00
chengyongru
45c0eebae5 docs(wecom): add wecom configuration guide in readme 2026-03-10 00:53:23 +08:00
Re-bin
757921fb27 Merge branch 'main' into pr-1784 2026-03-09 16:35:10 +00:00
ailuntz
9c88e40a61 fix(cli): respect gateway port from config when --port omitted 2026-03-10 00:32:42 +08:00
Xubin Ren
81b22a9e3a Merge PR #1741: fix: ensure feishu audio file has .opus extension for Groq Whisper compatibility
fix: ensure feishu audio file has .opus extension for Groq Whisper compatibility
2026-03-10 00:26:30 +08:00
ailuntz
620d7896c7 fix(slack): define thread usage when sending messages 2026-03-10 00:14:34 +08:00
chengyongru
a660a25504 feat(wecom): add wecom channel [wobsocket]
support text/audio[wecom support audio message by default]
2026-03-09 22:46:35 +08:00
Zek
711903bc5f feat(feishu): add global group mention policy
- Add group_policy config: 'open' (default) or 'mention'
- 'open': Respond to all group messages (backward compatible)
- 'mention': Only respond when @mentioned in any group
- Auto-detect bot mentions by pattern matching:
  * If open_id configured: match against mentions
  * Otherwise: detect bot by empty user_id + ou_ open_id pattern
- Support @_all mentions
- Private chats unaffected (always respond)
- Clean implementation with minimal logging

docs: update Feishu README with group policy documentation
2026-03-09 17:54:02 +08:00
Renato Machado
85c56d7410 feat: add "restart" command 2026-03-09 01:37:35 +00:00
chengyongru
4044b85d4b fix: ensure feishu audio file has .opus extension for Groq Whisper compatibility 2026-03-09 01:32:10 +08:00
Re-bin
f19cefb1b9 docs: update v0.1.4.post4 release news 2026-03-08 17:00:46 +00:00
Re-bin
4147d0ff9d docs: update v0.1.4.post4 release news 2026-03-08 17:00:09 +00:00
Re-bin
998021f571 docs: refresh install/update guidance and bump v0.1.4.post4 2026-03-08 16:57:28 +00:00
Re-bin
a0bb4320f4 chore: bump version to 0.1.4.post4 2026-03-08 16:44:47 +00:00
Re-bin
cd2b0f74c9 Merge PR #1579: refine platform policy and memory skill docs 2026-03-08 16:39:40 +00:00
Re-bin
4715321319 Merge branch 'main' into pr-1579 and tighten platform guidance 2026-03-08 16:39:37 +00:00
Re-bin
ce9b516b11 Merge branch 'main' into pr-1579 2026-03-08 16:29:54 +00:00
Re-bin
e7bd5140c3 Merge PR #1728: harden MCP tool cancellation handling 2026-03-08 16:03:24 +00:00
Re-bin
5eb67facff Merge branch 'main' into pr-1728 and harden MCP tool cancellation handling 2026-03-08 16:01:06 +00:00
Re-bin
4e197dc18e Merge branch 'main' into pr-1728 2026-03-08 15:51:06 +00:00
Xubin Ren
51d113d5a5 Merge PR #1727: feat(qq): send messages using markdown payload
feat(qq): send messages using markdown payload
2026-03-08 23:40:30 +08:00
Re-bin
7cbb254a8e fix: remove stale IDENTITY bootstrap entry 2026-03-08 15:39:40 +00:00
Alfredo Arenas
ed3b9c16f9 fix: handle CancelledError in MCP tool calls to prevent process crash
MCP SDK's anyio cancel scopes can leak CancelledError on timeout or
failure paths. Since CancelledError is a BaseException (not Exception),
it escapes both MCPToolWrapper.execute() and ToolRegistry.execute(),
crashing the agent loop.

Now catches CancelledError and returns a graceful error to the LLM,
while still re-raising genuine task cancellations from /stop.
Also catches general Exception for other MCP failures (connection
drops, invalid responses, etc.).

Related: #1055
2026-03-08 08:05:18 -06:00
TheAutomatic
1421ac501c feat(qq): send messages using markdown payload 2026-03-08 07:04:06 -07:00
VITOHJL
274edc5451 fix(compression): prefer provider prompt token usage 2026-03-08 17:25:59 +08:00
VITOHJL
1b16d48390 fix(loop): update _cumulative_tokens in _save_turn and preserve it in compression methods 2026-03-08 15:26:49 +08:00
VITOHJL
a984e0df37 feat(loop): add history message count logging in compression 2026-03-08 15:23:55 +08:00
VITOHJL
2706d3c317 fix(commands): use max_tokens_output instead of max_tokens from AgentDefaults 2026-03-08 15:20:34 +08:00
VITOHJL
2dcb4de422 fix(commands): update AgentLoop calls to use token-based compression parameters 2026-03-08 15:04:38 +08:00
VITOHJL
dbc518098e refactor: implement token-based context compression mechanism
Major changes:
- Replace message-count-based memory window with token-budget-based compression
- Add max_tokens_input, compression_start_ratio, compression_target_ratio config
- Implement _maybe_compress_history() that triggers based on prompt token usage
- Use _build_compressed_history_view() to provide compressed history to LLM
- Refactor MemoryStore.consolidate() -> consolidate_chunk() for chunk-based compression
- Remove last_consolidated from Session, use _compressed_until metadata instead
- Add background compression scheduling to avoid blocking message processing

Key improvements:
- Compression now based on actual token usage, not arbitrary message counts
- Better handling of long conversations with large context windows
- Non-destructive compression: old messages remain in session, but excluded from prompt
- Automatic compression when history exceeds configured token thresholds
2026-03-08 14:20:16 +08:00
Re-bin
0b68360286 Merge PR #1635: add agent config/workspace CLI support 2026-03-08 03:26:30 +00:00
Re-bin
bf0ab93b06 Merge branch 'main' into pr-1635 2026-03-08 03:24:15 +00:00
Re-bin
fb4f696085 Merge branch 'main' into pr-1635 2026-03-08 03:14:20 +00:00
Re-bin
0a5daf3c86 docs: update readme for multiple instances and cli 2026-03-08 03:03:25 +00:00
Re-bin
7fa0cd437b merge: integrate pr-1581 multi-instance path cleanup 2026-03-08 02:58:28 +00:00
Re-bin
20dfaa5d34 refactor: unify instance path resolution and preserve workspace override 2026-03-08 02:58:25 +00:00
Re-bin
bdac08161b Merge branch 'main' into pr-1581 2026-03-08 02:05:23 +00:00
Re-bin
822d2311e0 docs: update nanobot march news 2026-03-08 01:44:06 +00:00
Re-bin
3ca89d7821 docs: update nanobot news 2026-03-08 01:42:30 +00:00