Commit Graph

1173 Commits

Author SHA1 Message Date
Xubin Ren
1303cc6669 Merge PR #1485: fix: add missed openai dependency
fix: add missed `openai` dependency
2026-03-04 00:14:52 +08:00
cocolato
5f7fb9c75a add missed dependency 2026-03-03 23:40:56 +08:00
WufeiHalf
0f1cc40b22 feat(telegram): add Telegram group topic support 2026-03-03 22:08:01 +08:00
astvacp
01744029d8 fix problem with proxy for Telegram
This PR fixes problem with proxy for Telegram
2026-03-03 18:08:50 +07:00
Yan-ke Guo
a7be0b3c9e sync missing scripts from upstream openclaw repository 2026-03-03 18:14:26 +08:00
Re-bin
c05cb2ef64 refactor(cron): remove CLI cron commands and unify scheduling via cron tool 2026-03-03 05:51:24 +00:00
Re-bin
9a41aace1a Merge PR #1458: prevent cron self-scheduling safely 2026-03-03 05:36:50 +00:00
Re-bin
30803afec0 fix(cron): isolate cron-execution guard with contextvars 2026-03-03 05:36:48 +00:00
Re-bin
ec6430fa0c Merge branch 'main' into pr-1458 2026-03-03 05:18:28 +00:00
Re-bin
caa8acf6d9 Merge PR #1456: merge user messages and harden save_turn multimodal persistence 2026-03-03 05:13:20 +00:00
Re-bin
03b83fb79e fix(agent): skip empty multimodal user entries after runtime-context strip 2026-03-03 05:13:17 +00:00
Nikolas de Hor
da8a4fc68c fix: prevent cron job execution from scheduling new jobs
When a cron job fires, the agent processes the scheduled message and
has access to the cron tool. If the original message resembles a
scheduling instruction (e.g. "remind me in 10 seconds"), the agent
would call cron.add again, creating an infinite feedback loop.

Add a cron-context flag to CronTool that blocks add operations during
cron job execution. The flag is set before process_direct() and cleared
in a finally block to ensure cleanup even on errors.

Fixes #1441
2026-03-03 01:02:33 -03:00
Nikolas de Hor
ad99d5aaa0 fix: merge consecutive user messages into single message
Some LLM providers (Minimax, Dashscope) strictly reject consecutive
messages with the same role. build_messages() was emitting two separate
user messages back-to-back: the runtime context and the actual user
content.

Merge them into a single user message, handling both plain text and
multimodal (image) content. Update _save_turn() to strip the runtime
context prefix from the merged message when persisting to session
history.

Fixes #1414
Fixes #1344
2026-03-03 00:59:58 -03:00
chengyongru
8f4baaa5ce feat(gateway): support multiple instances with --workspace and --config options
- Add --workspace/-w flag to specify workspace directory
- Add --config/-c flag to specify config file path
- Move cron store to workspace directory for per-instance isolation
- Enable running multiple nanobot instances simultaneously
2026-03-02 23:18:54 +08:00
David Markey
ecdfaf0a5a feat(custom-provider): add x-session-affinity header for prompt caching 2026-03-02 11:03:12 +00:00
Re-bin
3c79404194 fix(providers): sanitize thinking_blocks by provider and harden content normalization 2026-03-02 06:58:10 +00:00
Re-bin
1601470436 Merge PR #1399: reload cron store on timer tick 2026-03-02 06:38:00 +00:00
Re-bin
9877195de5 chore(cron): remove redundant timer comment 2026-03-02 06:37:57 +00:00
Re-bin
f3979c0ee6 Merge branch 'main' into pr-1399 2026-03-02 06:30:43 +00:00
Re-bin
3f79245b91 Merge PR #1406: normalize Matrix media metadata and attachment upload call 2026-03-02 06:28:48 +00:00
Re-bin
be4f83a760 Merge branch 'main' into pr-1406 2026-03-02 06:24:53 +00:00
Re-bin
b575606c9e Merge PR #1403: deny-by-default allowFrom with startup validation 2026-03-02 06:13:40 +00:00
Re-bin
bbfc1b40c1 security: deny-by-default allowFrom with wildcard support and startup validation 2026-03-02 06:13:37 +00:00
Wenjie Lei
2c63946519 fix(matrix): normalize media metadata and keyword-call attachment upload 2026-03-01 21:56:08 -08:00
chengyongru
d447be5ca2 security: deny by default in is_allowed for all channels
When allow_from is not configured, block all access by default
instead of allowing everyone. This prevents unauthorized access
when channels are enabled without explicit allow lists.
2026-03-02 13:18:43 +08:00
Joel Chan
e9d023f52c feat(discord): add group policy to control group respond behaviour 2026-03-02 12:16:49 +08:00
yzchen
dba93ae83a cron: reload jobs store on each timer tick 2026-03-02 11:19:45 +08:00
chengyongru
aed1ef5529 fix: add SIGTERM, SIGHUP handling and ignore SIGPIPE
- Add handler for SIGTERM to prevent "Terminated" message on Linux
- Add handler for SIGHUP for terminal closure handling
- Ignore SIGPIPE to prevent silent process termination
- Change os._exit(0) to sys.exit(0) for proper cleanup

Fixes issue #1365

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-02 11:04:53 +08:00
chengyongru
ae788a17f8 chore: add .worktrees to .gitignore
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-02 11:03:54 +08:00
Sense_wang
521217a7f5 fix(telegram): enforce group_policy in _on_message
When `group_policy` is set to "mention", skip messages in group chats
unless the bot is @mentioned or the message is a reply to the bot.

Fixes #1380
2026-03-01 16:50:36 +00:00
Sense_wang
43329018f7 fix(telegram): add group_policy config for Telegram groups
Add `group_policy` field to `TelegramConfig` with "open" (default) and
"mention" options, consistent with Slack and Matrix channel configs.
2026-03-01 16:50:02 +00:00
zerone0x
8571df2e63 fix(feishu): split card messages when content has multiple tables
Feishu rejects interactive cards that contain more than one table element
(API error 11310: card table number over limit).

Add FeishuChannel._split_elements_by_table_limit() which partitions the flat
card-elements list into groups of at most one table each.  The send() method
now iterates over these groups and sends each as its own card message, so all
tables are delivered to the user instead of the entire message being dropped.

Single-table and table-free messages are unaffected (one card, same as before).

Fixes #1382
2026-03-01 15:13:44 +01:00
Re-bin
a5962170f6 Merge PR #1370: add web tools proxy support 2026-03-01 12:53:20 +00:00
Re-bin
15529c668e fix(web): sanitize proxy logs and polish search key hint 2026-03-01 12:53:18 +00:00
Re-bin
f5c0c75648 Merge branch 'main' into pr-1370 2026-03-01 12:48:01 +00:00
Re-bin
1109fdc682 Merge PR #1375: improve cron reminder context handling 2026-03-01 12:46:06 +00:00
Re-bin
a7d24192d9 fix(cron): route scheduled jobs through process_direct with english reminder prefix 2026-03-01 12:45:53 +00:00
VITOHJL
468dfc406b feat(cron): improve cron job context handling
Improve cron job execution context to ensure proper message delivery and
session history recording.

Changes:
- Add [绯荤粺瀹氭椂浠诲姟] prefix to cron reminder messages to clearly mark
  them as system-driven, not user queries
- Use user role for cron reminder messages (required by some LLM APIs)
- Properly handle MessageTool to avoid duplicate message delivery
- Correctly save turn history with proper skip count
- Ensure Runtime Context is included in the message list

This ensures that:
1. Cron jobs execute with proper context
2. Messages are correctly delivered to users
3. Session history accurately records cron job interactions
4. The LLM understands these are system-driven reminders, not user queries
2026-03-01 17:05:04 +08:00
chengyongru
82be2ae1a5 feat(tool): add web search proxy 2026-03-01 16:51:54 +08:00
Re-bin
aff8d8e9e1 Merge PR #1361: fix(feishu): parse post wrapper payload for rich text messages 2026-03-01 06:36:32 +00:00
Re-bin
4752e95a24 merge origin/main into pr-1361 2026-03-01 06:36:29 +00:00
Re-bin
c2bbd6d20d Merge branch 'main' into pr-1361 2026-03-01 06:30:10 +00:00
Re-bin
7eae842132 Merge PR #1339: style: unify code formatting 2026-03-01 06:13:29 +00:00
Re-bin
3c6c49cc5d Merge branch 'main' into pr-1339
Made-with: Cursor

# Conflicts:
#	nanobot/cron/service.py
2026-03-01 06:06:01 +00:00
Xubin Ren
c69e45f987 Merge PR #1371 to auto-reload jobs.json when modified externally
fix(cron): auto-reload jobs.json when modified externally
2026-03-01 14:02:37 +08:00
Re-bin
89e5a28097 fix(cron): auto-reload jobs.json when modified externally 2026-03-01 06:01:47 +00:00
Jack Lu
3ee061b879 Merge branch 'main' into main 2026-03-01 13:35:24 +08:00
yzchen
2fc16596d0 fix(feishu): parse post wrapper payload for rich text messages 2026-03-01 02:17:10 +08:00
Re-bin
f172c9f381 docs: reformat release news with v0.1.4.post3 release 2026-02-28 18:06:56 +00:00
Re-bin
ee9bd6a96c docs: update v0.1.4.post3 release news 2026-02-28 18:04:12 +00:00