Commit Graph

3804 Commits

Author SHA1 Message Date
idiotsj 38e99cf65c fix: restore task cancellation on timeout per review feedback
Pending tasks in asyncio.wait are tasks that have NOT completed
initialization within 20s, so cancelling them is safe and correct.
2026-02-27 22:21:47 +08:00
idiotsj 2cfe4288b2 fix: prevent initialized MCP clients from being cleaned up on timeout
- Do not cancel pending tasks on timeout; let them continue running
  in the background waiting for the termination signal (event.set()),
  so successfully initialized services remain available
- Track initialization state with a flag to distinguish init failures
  from post-init cancellations in _init_mcp_client_task_wrapper
2026-02-27 22:18:55 +08:00
idiotsj 4924739423 refactor: simplify MCP init orchestration and improve log security
- Replace Future-based sync with asyncio.wait + name→task mapping
- Explicitly cancel timed-out tasks after 20s timeout
- Downgrade sensitive config details (command/args/URL) to debug level
- Move urllib.parse import to top-level
2026-02-27 21:59:32 +08:00
idiotsj ec9f7403d5 perf: add timeout and better error handling for MCP initialization
- Add 20-second total timeout to prevent slow MCP servers from blocking startup
- Show detailed configuration info when MCP initialization fails
- List all failed services in a summary warning
- Gracefully handle timeout by using already-completed services

This ensures that even if some MCP servers are slow or unreachable,
the system will start within a reasonable time and provide clear
feedback about which services failed and why.
2026-02-27 20:24:17 +08:00
idiotsj 0de7ae8481 fix: resolve MCP tools race condition causing 'completion 无法解析' error
- Wait for MCP client initialization to complete before accepting requests
- Add Future-based synchronization in init_mcp_clients()
- Prevent tool_calls from being rejected due to empty func_list
- Improve error logging for MCP initialization failures

Fixes race condition where AI attempts to call MCP tools before they are
registered, resulting in 'API 返回的 completion 无法解析' exceptions.

The issue occurred because:
1. MCP clients were initialized asynchronously without waiting
2. System accepted user requests immediately after startup
3. AI received empty tool list and attempted to call non-existent tools
4. Tool matching failed, causing parsing errors

This fix ensures all MCP tools are loaded before the system processes
any requests that might use them.
2026-02-27 20:05:13 +08:00
Soulter 42e84afd89 perf: improve cron job page 2026-02-02 14:13:17 +08:00
Soulter a7ed6b8c76 fix: reasoning block style 2026-02-02 14:11:17 +08:00
Soulter ee43b98ce6 fix: add missing comma in truncate_and_compress hint in config-metadata.json 2026-02-01 23:34:21 +08:00
Soulter 681b4747a6 feat: add proactive capability configuration with cron tools support 2026-02-01 23:33:45 +08:00
Soulter a6da4ebe5e feat: add styles for embedded images and audio in MessagePartsRenderer 2026-02-01 23:29:08 +08:00
Soulter e35a604b30 Merge pull request #4697 from advent259141/Astrbot_skill
feat: implemented proactive agents and subagents orchestrator
2026-02-01 22:57:47 +08:00
Soulter 45c9db258d feat: add support for resolving file paths from sandbox and downloading files if necessary 2026-02-01 22:30:22 +08:00
Soulter 382aaaf053 feat: i18n 2026-02-01 22:04:44 +08:00
Soulter f66edc8d45 feat: implement CronJob system with support for one-time tasks and enhanced UI for task management 2026-02-01 22:04:30 +08:00
Soulter 3f8d8b5033 feat: integrate subagent orchestrator with configuration options for tool management 2026-02-01 20:43:08 +08:00
Soulter bf587765de feat: enhance FileDownloadTool to confirm file removal and successful download 2026-02-01 18:13:23 +08:00
Soulter 313a6d8a24 fix: improve error handling for temporary file removal in FileDownloadTool 2026-02-01 18:12:40 +08:00
Soulter 2213fb1ebf feat: add proactive messaging support in CronJobPage and enhance file download tool with user notification option 2026-02-01 18:12:11 +08:00
Soulter 9bf63354be feat: enhance UI for SubAgent and CronJob management with beta indicators 2026-02-01 17:58:30 +08:00
Soulter cd6cb1d60c chore: remove reminder 2026-02-01 17:50:29 +08:00
Soulter 193676012f feat: implement history persistence for agent interactions and enhance cron job permission handling 2026-02-01 17:42:08 +08:00
Soulter bddf7b8623 feat: add proactive messaging support and enhance message handling in SendMessageToUserTool 2026-02-01 16:49:10 +08:00
Soulter 4c8c87d3fd feat: enhance cron job management and update UI terminology 2026-02-01 15:49:14 +08:00
Soulter 83288ca43e ruff format 2026-02-01 14:33:17 +08:00
Soulter 7f58a83833 Refactor cron job handling and enhance proactive agent capabilities
- Updated FunctionToolExecutor to improve background task handling and integrate new system prompts for proactive agents.
- Enhanced MainAgentBuildConfig with additional configuration options for tool management and context handling.
- Introduced new system prompts for proactive agents triggered by cron jobs and background tasks to improve user interaction.
- Refactored cron job management to utilize ProviderRequest for better context management and tool integration.
- Renamed cron job tools for clarity, changing "create_cron_job" to "create_future_task" and similar adjustments for consistency.
- Improved error handling and logging for cron job execution and agent responses.
- Added support for image captioning and persona management in agent requests.
2026-02-01 14:32:30 +08:00
Soulter 19651d24bb fix(skills): remove sandbox runtime handling from skill upload process (#4798) 2026-02-01 13:13:27 +08:00
Soulter dba08edd0d style: enhance dialog titles with padding and text styles in MCP and Skills sections 2026-02-01 11:09:32 +08:00
letr dc06bc943a fix(mcp): cannot rename MCP Server (#4766)
* fix(mcp): support renaming when editing MCP servers

When editing the MCP server configuration, you can now change the server name. The frontend will save the original name in edit mode, and the backend will recognize the rename operation through the oldName field.

* fix(mcp): fixed an issue where renaming the MCP server did not check for name conflicts

When renaming an MCP server, add a check to see if the target name already exists. If the name exists and it is a rename operation, return an error message to avoid overwriting the configuration.
2026-02-01 11:01:49 +08:00
Soulter b48e6fb1b3 Merge remote-tracking branch 'origin/master' into Astrbot_skill 2026-02-01 00:46:05 +08:00
Soulter 0c5308a132 refactor: extract main agent 2026-02-01 00:43:41 +08:00
Soulter 339d98be35 chore: bump version to 4.13.2 (#4782) 2026-02-01 00:39:37 +08:00
Soulter e8be624794 fix(context): append 'main' to module_part for handler module path (#4776) 2026-01-31 22:26:50 +08:00
Soulter b2c6471ab0 fix: skill like tool (#4775) 2026-01-31 22:11:42 +08:00
Soulter 4ea865f017 feat: add cron job management tools and dashboard integration
- Implemented proactive cron job tools in InternalAgentSubStage for scheduling tasks.
- Created SendMessageToUserTool for sending messages to users based on cron job triggers.
- Added CreateActiveCronTool, DeleteCronJobTool, and ListCronJobsTool for cron job management.
- Introduced CronRoute for handling cron job API requests in the dashboard.
- Developed CronJobPage.vue for managing cron jobs in the dashboard UI.
- Updated SubAgentPage.vue to include persona selection for subagents.
2026-01-31 17:08:37 +08:00
sanyekana 106f352017 fix: Fixed a bug where the front end still displayed a success messag… (#4768)
* fix: Fixed a bug where the front end still displayed a success message when Skills upload failed.

* refactor(dashboard): unify API response handling in SkillsSection
2026-01-31 11:31:02 +08:00
Soulter 5b7805e8d7 feat: trace and log file config (#4747)
* feat: trace

* fix(log): increase log cache size from 200 to 500

* feat(logging): add file and trace logging configuration options
2026-01-31 00:05:54 +08:00
Soulter 831c2150d6 Merge remote-tracking branch 'origin/master' into Astrbot_skill 2026-01-29 23:46:21 +08:00
Soulter a500f2edc8 chore: bump version to 4.13.1 v4.13.1 2026-01-29 23:31:49 +08:00
Soulter d27099f2da fix(skills): update SANDBOX_SKILLS_ROOT path to use relative directory 2026-01-29 23:25:56 +08:00
Helian Nuits 2aa0986295 fix(db): using lambda expression to ensure updated_at field (#4730)
* fix(db): 使用 lambda 表达式确保 updated_at 字段正确更新

updated_at 字段原先在 sa_column_kwargs["onupdate"] 中直接使用了 datetime.now(),导致时间戳仅在模块导入时被计算一次,之后不再变化,结果所有记录的更新时间都被设成了程序启动时间。

本次修改将时间戳生成逻辑封装进 lambda 表达式,使 SQLAlchemy 在每次更新记录时才惰性求值,从而保证时间戳实时更新。

* refactor(db): 根据建议引入 TimestampMixin 统一时间戳定义,提取 `created_at`/`updated_at` 至 [TimestampMixin]
2026-01-29 19:07:21 +08:00
Soulter 34c6ceb67c fix(docs): update feature description to include 'Skills' in README files 2026-01-29 17:22:48 +08:00
Soulter 906877cbe6 feat(i18n): add localized message for tool usage in chat 2026-01-29 16:29:44 +08:00
Soulter 609180022e feat(chat): refactor message rendering and introduce ToolCallItem component 2026-01-29 16:07:57 +08:00
Soulter 49c087a141 docs: replace demo banner in readme
Updated the image in the README file.
2026-01-29 12:17:11 +08:00
Soulter 70f12cd686 docs(readme): update language links and enhance feature descriptions 2026-01-29 12:09:38 +08:00
advent259141 738e69a8af add 3-mode selector and main tool mounting policy 2026-01-29 11:27:50 +08:00
Gao Jinzhe 60492d46ee Merge branch 'master' into Astrbot_skill 2026-01-29 10:57:30 +08:00
Soulter ea82e00359 fix(changelog): clarify support for Anthropic Skills with usage reference v4.13.0 2026-01-29 00:54:39 +08:00
Soulter 928c557a25 fix: update markstream-vue and stream-monaco dependencies 2026-01-29 00:48:51 +08:00
Soulter 0500ee8e2b chore: bump version to 4.13.0 2026-01-29 00:21:58 +08:00