Commit Graph

1128 Commits

Author SHA1 Message Date
LIghtJUNction
c4048bb8eb refactor: delete _internal
remove deprecated API modules and example scripts; update core modules
(agents, providers, tools, platform adapters, utils), dashboard package
and components, and unit tests.
2026-04-23 04:16:30 +08:00
LIghtJUNction
33ec7bbf9c merge: master -> dev 2026-04-23 01:12:06 +08:00
Soulter
0748f0a42f feat: enhance attachment handling with previews and file signature checks 2026-04-22 13:18:08 +08:00
Soulter
36d6f3b67e feat: add inline message editing and regeneration functionality for webui (#7673)
* feat: add inline message editing and regeneration functionality for webui

- Implemented inline editing for user messages in the chat component.
- Added a regenerate menu for retrying messages with different models.
- Enhanced message handling to include llm_checkpoint_id for better tracking.
- Updated localization files to include new actions for retrying and model selection.
- Introduced tests for checkpoint message handling and chat route functionality.

* feat: thread mode in webui

* feat: enhance message editing functionality to allow only the latest user message to be edited

* feat: add error handling and user feedback for thread creation in chat component

* feat: add thread count display and localization support in chat component

* feat: add RefsSidebar component and integrate reference management in chat UI

* feat: improve message editing validation and cleanup for bot messages

* feat: enhance checkpoint message handling with binding and dumping functionality
2026-04-22 11:51:12 +08:00
SaintaToken
17ace9b5db feat: add buffered intermediate messages for non-streaming agent loop (#7627)
* feat: add buffered intermediate messages for non-streaming agent loop

* Refactored buffering logic into helpers to reduce inline complexity.

* feat: add buffer_intermediate_messages configuration for merging Agent intermediate messages

---------

Co-authored-by: Soulter <905617992@qq.com>
2026-04-21 23:32:00 +08:00
Rain-0x01_
6b756f666f docs: Unify documentation links (#7709)
astrbot.app -> docs.astrbot.app
2026-04-21 22:42:27 +08:00
千岚之夏
fb16e12c80 feat: 插件有新版本时置顶显示(可开关) (#7665)
* feat: add pinUpdatesOnTop option to always show plugin updates at top

* fix: add missing pinUpdatesOnTop destructuring in InstalledPluginsTab

* fix: address AI review suggestions - add localStorage persistence and increase switch width

* fix: harden extension preference storage

* fix: refine extension preference sorting

* fix: simplify extension preference sorting

* refactor: simplify extension preference storage access

---------

Co-authored-by: Test User <test@test.com>
Co-authored-by: 邹永赫 <1259085392@qq.com>
2026-04-21 09:21:07 +09:00
Aster
76ee4f27dd feat: add epub support for knowledge base document upload (#7594)
* feat: add EPUB parsing support for knowledge base and file reader

* feat: update supported file formats for document upload in knowledge base

* feat: enhance EPUB parser to support spine order and generic containers

* makeitdown parse epub

* update parser

* fix
2026-04-20 15:24:07 +08:00
Soulter
00689604b4 chore: bump version to 4.23.2 2026-04-19 17:50:03 +08:00
Soulter
fd2ca702d7 fix: remove default value for injected isDark in ThemeAwareMarkdownCodeBlock 2026-04-19 13:19:08 +08:00
Strands
fbe9a38c42 fix(dashboard): propagate dark mode to code blocks inside list items (#7667) 2026-04-19 13:01:33 +08:00
LIghtJUNction
6d494283f6 Merge remote-tracking branch 'origin' into dev
# Conflicts:
#	astrbot/core/db/vec_db/faiss_impl/document_storage.py
#	astrbot/core/platform/sources/telegram/tg_adapter.py
#	astrbot/core/platform/sources/weixin_oc/weixin_oc_adapter.py
#	astrbot/core/tools/cron_tools.py
#	astrbot/core/updator.py
#	astrbot/core/zip_updator.py
#	dashboard/src/components/shared/ConfigItemRenderer.vue
#	dashboard/src/utils/providerUtils.js
2026-04-19 05:42:39 +08:00
千岚之夏
0ca6ba91b1 feat: add MiniMax Token Plan provider with hardcoded model list (#7609)
* feat: add MiniMax Token Plan provider with hardcoded model list (fix #7585)

- Add new provider 'minimax_token_plan' for MiniMax Token Plan users
- Inherit ProviderAnthropic to reuse all chat/completion logic
- Hardcode api_base to https://api.minimaxi.com/anthropic
- get_models() returns hardcoded list: MiniMax-M2.7, M2.5, M2.1, M2
- Highspeed models excluded (require premium tier)
- Reason for hardcoding: Token Plan API does not expose /models endpoint
- Fixes: https://github.com/AstrBotDevs/AstrBot/issues/7585

* fix: remove api_base from config template and add model validation

- Remove api_base from default_config_tmpl (always overridden, misleading)
- Add model validation against MINIMAX_TOKEN_PLAN_MODELS
- Raise clear ValueError if user configures an unsupported model

Addressed Sourcery AI review comments.

* fix: use custom_headers for Bearer token auth instead of auth_header

MiniMax Token Plan requires Authorization: Bearer <token> header.
Use custom_headers to inject the correct auth header instead of
the non-functional auth_header key.

Addressed Gemini Code Assist review comment.

* fix: update MiniMax Token Plan provider adapter and documentation to English

* feat: add MiniMax Token Plan configuration and icon support

* feat: remove default configuration template from MiniMax Token Plan provider adapter

---------

Co-authored-by: Soulter <905617992@qq.com>
2026-04-17 16:48:52 +08:00
Soulter
087c793615 revert "fix: scss import warning (#7528)" (#7616)
This reverts commit ee85a4e50f.
2026-04-17 11:58:47 +08:00
Kangyang Ji
ee85a4e50f fix: scss import warning (#7528)
* chore(dashboard): 将 Sass @import 迁移到 @use

Dart Sass 3.0.0 将移除 @import,迁移到 @use 以消除弃用警告

* add new import into style.scss

---------

Co-authored-by: LIghtJUNction <lightjunction.me@gmail.com>
2026-04-16 20:05:37 +08:00
XiaoYang
34cf4014e6 fix: prevent numeric input from resetting to zero on blur without edit (#7560)
When a numeric input field was focused but not edited, the blur handler
called toNumber(null) which returned 0 via parseFloat(null) → NaN → 0.
Now we skip emitting the update when numericTemp is null (no edits made).
2026-04-16 08:48:13 +08:00
LIghtJUNction
4d1e0ef1be merge: resolve conflicts from upstream
Conflict resolution: accepted HEAD versions for all conflicted files.
2026-04-15 17:03:54 +08:00
時壹
7c39abc6b5 fix(dashboard): resolve chat attachment 401 (#7569)
* fix(dashboard): resolve chat attachment 401 by restoring axios blob URL fetch

* chore: cache blob URL promises to prevent duplicate requests and memory leaks
2026-04-15 15:52:14 +08:00
若月千鸮
625eab223f feat: enable shiki highlighting for t2i templates and add a template (#7501)
* fix: enable shiki highlighting for t2i templates

* fix: t2i templates cr

* feat: add new t2i template astrbot_vitepress.html
2026-04-14 16:46:32 +08:00
Soulter
abd11d5579 fix: routing not displayed when session id includes : (#7517)
* fix: routing not displayed when session id includes `:`

fixes: #7515
2026-04-13 23:32:40 +08:00
エイカク
533a0bde6a fix: align deerflow runner with deerflow 2.0 (#7500)
* fix: align deerflow runner with deerflow 2.0

* fix: address deerflow review feedback
2026-04-13 12:47:27 +09:00
LunaRain_079
35ce281cbe fix: remove unnecessary margins from v-main for consistent layout (#7481)
* fix: remove unnecessary margins from v-main for consistent layout

* fix: remove media query for v-main margin to simplify layout
2026-04-13 08:47:37 +08:00
Waterwzy
80c7ebae8a fix: inconsistent format issue when checking if the plugin is installed (#7493)
* fix: inconsistent format issue when checking if the plugin is installed

* Update dashboard/src/views/extension/useExtensionPage.js

Co-authored-by: gemini-code-assist[bot] <176961590+gemini-code-assist[bot]@users.noreply.github.com>

* Update dashboard/src/views/extension/useExtensionPage.js

Co-authored-by: gemini-code-assist[bot] <176961590+gemini-code-assist[bot]@users.noreply.github.com>

---------

Co-authored-by: gemini-code-assist[bot] <176961590+gemini-code-assist[bot]@users.noreply.github.com>
2026-04-13 08:45:27 +08:00
若月千鸮
5f0178bc73 chore: switch dashboard code blocks highlight to shiki (#7497)
* fix: switch dashboard code blocks to shiki and sync theme rendering

* fix: harden and optimize dashboard shiki highlighting
2026-04-13 08:43:36 +08:00
Kangyang Ji
3b2435875c fix: type use of defineStore in @/stores (#7490) 2026-04-12 23:47:40 +08:00
Soulter
d1913b5950 fix: update tool call icons from mdi-code-braces to mdi-code-json 2026-04-12 22:06:08 +08:00
Soulter
7172281436 feat: add MessageList component and update MDI icon subset 2026-04-12 21:55:10 +08:00
Soulter
bd08273640 refactor: chatui style (#7485) 2026-04-12 20:47:51 +08:00
Soulter
5d2b29f8f8 perf: add validation for MCP stdio configuration (#7477)
* perf: add validation for MCP stdio configuration

* Update astrbot/core/agent/mcp_client.py

Co-authored-by: gemini-code-assist[bot] <176961590+gemini-code-assist[bot]@users.noreply.github.com>

* Update astrbot/core/agent/mcp_client.py

Co-authored-by: gemini-code-assist[bot] <176961590+gemini-code-assist[bot]@users.noreply.github.com>

* chore: ruff format

* fix: correct regex pattern for shell meta characters

---------

Co-authored-by: gemini-code-assist[bot] <176961590+gemini-code-assist[bot]@users.noreply.github.com>
2026-04-12 15:04:46 +08:00
Soulter
2472a12671 feat: filesystem grep, read, write, edit file and workspace support (#7402)
* feat: filesystem grep, read, edit file

* feat: add file write tool and enhance file read functionality

* feat: enhance tool prompt formatting and add escaped text decoding for file editing

* feat: remove redundant safe path tests from security restrictions

* feat: implement file read tool with support for text and image files, including validation for large files

* feat: add file read utilities and integrate with filesystem tools

* refactor: move computer tools to builtin tools registry

* refactor: remove unused plugin_context parameter from _apply_sandbox_tools

* feat: supports to display enabled builtin tools in configs

* feat: add tooltip for disabled builtin tools and update localization strings

* feat: add workspace extra prompt handling in message processing

* feat: add ripgrep installation to Dockerfile

* perf: shell executed in workspace dir in local env

* feat: enhance file reading capabilities to support PDF and DOCX parsing, including workspace storage for long documents

* feat: update converted text notice to suggest using grep for large files

* feat: implement handling for large tool results with overflow file writing and read tool integration

* fix: test

* feat: enhance onboarding steps to include computer access configuration and related help information

* feat: add support for additional temporary path in restricted environment checks

* feat: update computer access hints and add detailed configuration instructions
2026-04-11 17:01:54 +08:00
MinaraAgent
b8ccfe3f64 feat(discord): add configurable bot message filtering, allow bot to receive other bots' messages (#6505)
* feat(discord): add configurable bot message filtering

Add `discord_allow_bot_messages` config option to allow receiving
messages from other Discord bots. This is useful for bot-to-bot
communication scenarios like message forwarding between channels.

By default, bot messages are still ignored (backward compatible).

Usage: Set `discord_allow_bot_messages: true` in your Discord
platform configuration.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>

* feat(discord): add WebUI config for discord_allow_bot_messages

Add configuration option to the dashboard for the new
discord_allow_bot_messages feature. Users can now enable/disable
this option through the WebUI in all supported languages
(zh-CN, en-US, ru-RU).

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>

* refactor(discord): use typed constructor argument for allow_bot_messages

Address code review feedback:
- Add `allow_bot_messages` as a typed constructor argument in DiscordBotClient
- Simplify the on_message check by using the instance attribute directly
- Pass the parameter in constructor instead of using setattr

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>

---------

Co-authored-by: MinaraAgent <minara-agent@users.noreply.github.com>
Co-authored-by: Claude Opus 4.6 <noreply@anthropic.com>
2026-04-11 01:27:46 +08:00
LIghtJUNction
dcf84e6726 feat: enhance CLI prompts and fix frontend 401 handling
- cmd_conf: show password rules before setting, display length after input
- cmd_init/cmd_run: add Chinese prompts and HTTPS security warnings
- openai_source/gemini_source: add missing provider adapter import
- ConsoleDisplayer: add missing resolveApiUrl import for SSE
- WelcomePage: show user-friendly message for 401 unauthorized errors
2026-04-10 21:58:52 +08:00
LIghtJUNction
5303e40931 Merge branch 'master' into dev
Resolved all conflicts using dev (HEAD) version:
- func_tool_manager.py: migrated old implementation into new architecture
- tool_loop_agent_runner.py: preserve lazy_load mode, remove step limit
- Platform adapters, dashboard, core modules: use HEAD version
2026-04-10 20:58:41 +08:00
Soulter
c791c815e1 perf: merge 3 cron tools into 1 cron manage tool, and add edit capability for cron tool. (#7445)
* perf: replace cron tools with FutureTaskTool for improved task management

* feat: enhance FutureTaskTool with edit functionality and improve descriptions

* feat: add edit functionality for cron jobs and update related UI components
2026-04-10 14:32:57 +08:00
LIghtJUNction
3f1a14836f fix(dashboard): auto-prepend https:// for backend URLs without protocol
Previously, a URL like api.lightjunction.online:3000 (without https://)
was stored as-is and treated as a relative path, causing requests to
hit the frontend origin instead of the configured backend. URLs with a
single slash like https:/api... were also incorrectly normalized.

Now normalizeConfiguredApiBaseUrl always prepends https:// if the input
doesn't start with http:// or https://, and apiStore.setApiBaseUrl also
normalizes before storing to keep state and localStorage consistent.
2026-04-08 21:18:16 +08:00
LIghtJUNction
07b49b9e97 fix(deps): bump vite to 8.0.5 (resolves 3 security advisories) 2026-04-08 21:08:49 +08:00
LIghtJUNction
25f108108a fix(dashboard): redirect to server config dialog when backend URL not configured
Before login attempts, check if apiBaseUrl is configured. If empty,
emit openServerConfig event so LoginPage opens the server config dialog
instead of silently sending requests to the frontend origin (causing 405).
2026-04-08 20:59:54 +08:00
LIghtJUNction
ba7ace4b57 fix: add .npmrc with legacy-peer-deps=true 2026-04-08 19:53:44 +08:00
LIghtJUNction
89209ae29b fix(deps): bump pinia to ^3.0.4 for vue-router@5.0.4 compatibility 2026-04-08 19:53:20 +08:00
LIghtJUNction
b3c3f52d31 chore: remove pnpm-lock.yaml 2026-04-08 19:45:25 +08:00
LIghtJUNction
43156d6eac Merge branch 'origin/dev' into dev
Resolved merge conflicts in:
- func_tool_manager.py: kept origin version (full implementation)
- astr_main_agent*.py: kept HEAD version (complete refactor)
- cron_tools.py: kept HEAD version (with get_all_tools)
- config/default.py: kept HEAD version (DEFAULT_WEB_SEARCH_PROVIDER)
- dashboard/*.vue: kept HEAD version
- web_searcher engines: kept HEAD version
- Added new tools: knowledge_base_tools, message_tools, registry, web_search_tools
2026-04-08 19:45:16 +08:00
Soulter
38b1b4d4ea refactor: improve astrbot builtin tool management (#7418)
* feat: Refactor astrbot builtin tool management

- Introduced a new registry for builtin tools to streamline their management.
- Added `SendMessageToUserTool`, `KnowledgeBaseQueryTool`, and various web search tools as builtin tools.
- Updated `FunctionToolManager` to cache and retrieve builtin tools efficiently.
- Modified `CronJobManager` to utilize the new `SendMessageToUserTool`.
- Enhanced the dashboard to display readonly status for builtin tools and prevent toggling their state.
- Added tests for builtin tool injection and retrieval to ensure proper functionality.

* fix: escape file path in shell command to prevent injection vulnerabilities
2026-04-08 14:49:58 +08:00
Soulter
94a529d3fd refactor: remove default web search (#7416)
* refactor: remove default web search

* chore: ruff format
2026-04-08 13:26:53 +08:00
daniel5u
c517cdb490 feat: add new web search tool Brave Search (#6847)
* feat:Brave Search API adapted

* Modified hint message

* Modified according to AI reviews

* chore: revert compose.yml changes

---------

Co-authored-by: Soulter <905617992@qq.com>
2026-04-08 12:00:21 +08:00
時壹
ef15955096 fix: prevent floating buttons from jumping during page transitions (#7214) 2026-04-08 11:37:22 +08:00
氕氙
2020eecc72 fix(dashboard): fix WebUI dark mode rendering and multiple UI interaction bugs (#7173)
* fix(dashboard): comprehensive dark mode improvements for WebUI

- Tune DarkTheme.ts color palette: soften primary, fix on-surface-variant
  from black to light grey, adjust surface/background/border colors,
  add codeBg/preBg/code variables for dark code blocks
- Add _HljsDark.scss for highlight.js dark token overrides and
  markstream-vue CSS variable overrides under .v-theme--PurpleThemeDark
- Add global dark mode overrides in _override.scss: soften flat primary
  buttons, timeline dots, dialog card backgrounds, markdown link color
- Fix hardcoded light backgrounds in IPythonToolBlock, ExtensionCard,
  T2ITemplateEditor, ExtensionPage, KnowledgeBase, LongTermMemory
- Remove hardcoded color='black' from icons in ProviderPage,
  PlatformPage, PersonaPage
- Desaturate console log ANSI colors for dark mode readability
- Add iframe dark mode inversion filter in VerticalSidebar
- Fix language switcher mobile adaptation and click behavior
- Fix login page theme toggle tooltip showing wrong label

* fix(dashboard): apply dark mode review feedback
2026-04-08 11:29:24 +08:00
Aster
2fae22107d fix: defer faiss imports during startup (#7400)
* fix: defer faiss imports during startup

* chore: gemini cr

Co-authored-by: gemini-code-assist[bot] <176961590+gemini-code-assist[bot]@users.noreply.github.com>

* chore: ruff format

* fix: move torch import to _resolve_device method and remove obsolete tests

* fix: remove obsolete test for eager loading of faiss during startup imports

* test: fix kb helper patch target after faiss lazy import

---------

Co-authored-by: Soulter <37870767+Soulter@users.noreply.github.com>
Co-authored-by: gemini-code-assist[bot] <176961590+gemini-code-assist[bot]@users.noreply.github.com>
Co-authored-by: Soulter <905617992@qq.com>
2026-04-08 00:33:39 +08:00
M1LKT
42fc16f1f0 fix: reduce MCP server status polling frequency (#7399) 2026-04-07 10:39:38 +08:00
神楽坂·喵
0ce5fde7f8 feat(platform): add Mattermost bot support (#7369)
* feat(platform): add Mattermost bot support (#6009)

Ultraworked with [Sisyphus](https://github.com/code-yeongyu/oh-my-openagent)

Co-authored-by: Sisyphus <clio-agent@sisyphuslabs.ai>

* fix(platform): address Mattermost review feedback

Ultraworked with [Sisyphus](https://github.com/code-yeongyu/oh-my-openagent)

Co-authored-by: Sisyphus <clio-agent@sisyphuslabs.ai>

* fix(platform): improve Mattermost streaming and file IO

Ultraworked with [Sisyphus](https://github.com/code-yeongyu/oh-my-openagent)

Co-authored-by: Sisyphus <clio-agent@sisyphuslabs.ai>

* perf(platform): optimize Mattermost duplicate detection

Ultraworked with [Sisyphus](https://github.com/code-yeongyu/oh-my-openagent)

Co-authored-by: Sisyphus <clio-agent@sisyphuslabs.ai>

* fix(platform): preserve Mattermost command prefixes after mentions

Ultraworked with [Sisyphus](https://github.com/code-yeongyu/oh-my-openagent)

Co-authored-by: Sisyphus <clio-agent@sisyphuslabs.ai>

* test(platform): cover Mattermost attachment parsing

Ultraworked with [Sisyphus](https://github.com/code-yeongyu/oh-my-openagent)

Co-authored-by: Sisyphus <clio-agent@sisyphuslabs.ai>

* docs: add mattermost docs

---------

Co-authored-by: Sisyphus <clio-agent@sisyphuslabs.ai>
Co-authored-by: Soulter <905617992@qq.com>
2026-04-06 18:27:28 +08:00
LIghtJUNction
13d0b8cc21 Merge branch 'dev' and fix tool_loop_agent_runner conflict 2026-04-06 16:48:27 +08:00