Commit Graph
1481 Commits
Author SHA1 Message Date
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 AlexanderandClaude Opus 4.6 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 RenandGitHub 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
skiyo dfb4537867 feat: add --dir option to onboard command for Multiple Instances
- Add --dir parameter to specify custom base directory for config and workspace
- Enables Multiple Instances initialization with isolated configurations
- Config and workspace are created under the specified directory
- Maintains backward compatibility with default ~/.nanobot/
- Updates help text and next steps with actual paths
- Updates README.md with --dir usage examples for Multiple Instances

Example usage:
  nanobot onboard --dir ~/.nanobot-A
  nanobot onboard --dir ~/.nanobot-B
  nanobot onboard  # uses default ~/.nanobot/
2026-03-09 16:25:56 +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 RenandGitHub 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 ArenasandGitHub 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