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
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
Yingwen Luo-LUOYW
b323087631
feat(cli): add DingTalk, QQ, and Email to channels status output
2026-02-22 12:42:33 +08: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
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
Re-bin
edc671a8a3
docs: update format of news section
2026-02-21 16:39:26 +00:00
nanobot-bot
01c835aac2
fix(context): Fix 'Missing reasoning_content field' error for deepseek provider.
2026-02-21 23:11:30 +08:00
Re-bin
88ca2e0530
docs: update v.0.1.4.post1 release news
2026-02-21 13:20:55 +00:00
Re-bin
af71ccf051
release: v0.1.4.post1
2026-02-21 13:05:14 +00:00
vincentchen
b3acd19c7b
Remove redundant tools description (because tools information is passed in with each self.provider.chat() call)
2026-02-21 20:28:42 +08:00
Re-bin
9c61e1389c
docs: update nanobot news
2026-02-21 08:33:31 +00:00
Re-bin
ec4bdb651f
docs: update nanobot news
2026-02-21 08:33:02 +00:00
Re-bin
f89f8a972c
Merge pull request #926 : fix(agent): skip empty fallback outbound for non-cli channels
2026-02-21 08:27:54 +00:00
Re-bin
0b30f514b4
style(loop): compact empty outbound message construction
2026-02-21 08:27:49 +00:00
Re-bin
012a5e78e5
Merge branch 'main' into pr-926
2026-02-21 08:21:17 +00:00
Xubin Ren
4dca2872bf
Merge pull request #930 to slim down agent loop
...
refactor: extract memory consolidation to MemoryStore, slim down agent loop
2026-02-21 16:19:08 +08:00
Re-bin
ab026c5131
refactor: extract memory consolidation to MemoryStore, slim down AgentLoop
2026-02-21 08:14:46 +00:00
Re-bin
668dd6e2f5
Merge pull request #866 : refactor(memory): use tool call instead of JSON text for memory consolidation
2026-02-21 08:02:03 +00:00
Re-bin
8c15454379
Merge branch 'main' into pr-866
2026-02-21 07:46:25 +00:00
Xubin Ren
6076f98527
Merge pull request #928 to remove interim text retry, use system prompt constraint instead
...
refactor(loop): remove interim text retry, use system prompt constraint instead
2026-02-21 15:35:35 +08:00
Re-bin
aeb07d3450
refactor(loop): remove interim text retry, use system prompt constraint instead
2026-02-21 07:32:58 +00:00
Re-bin
a0820eceee
Merge pull request #887 : fix(loop): preserve interim content as fallback when retry produces empty response
2026-02-21 07:17:35 +00:00
Re-bin
8bb849470b
Merge branch 'main' into pr-887
2026-02-21 07:12:58 +00:00
Alexander Minges
c4bee640b8
fix(agent): skip empty fallback outbound for non-cli channels
2026-02-21 07:51:28 +01:00
Re-bin
900604e9ca
Merge pull request #921 : fix(tools): provide diff hint when edit_file old_text not found
2026-02-21 06:39:14 +00:00
Re-bin
4f5cb7d1e4
style(filesystem): simplify best-match loop
2026-02-21 06:39:04 +00:00