Commit Graph

2612 Commits

Author SHA1 Message Date
LIghtJUNction
005b836fea Merge remote-tracking branch 'origin/master' into dev
# Conflicts:
#	astrbot/core/knowledge_base/kb_helper.py
#	astrbot/core/knowledge_base/kb_mgr.py
#	dashboard/src/components/extension/PinnedPluginItem.vue
#	dashboard/src/components/provider/ProviderModelsPanel.vue
#	dashboard/src/components/provider/ProviderSourcesPanel.vue
#	dashboard/src/components/shared/ConsoleDisplayer.vue
#	dashboard/src/main.ts
#	dashboard/src/stores/auth.ts
#	dashboard/src/views/ConversationPage.vue
#	dashboard/src/views/ProviderPage.vue
#	dashboard/src/views/authentication/auth/LoginPage.vue
#	dashboard/src/views/knowledge-base/KBList.vue
#	requirements.txt
2026-04-02 21:37:21 +08:00
LIghtJUNction
3af00b90bd chore: cmd_run 2026-04-02 21:30:59 +08:00
LIghtJUNction
ca4923dec6 refactor: remove TUI from cmd_run 2026-04-02 21:28:37 +08:00
LIghtJUNction
868c81bbc7 chore: commit all changes 2026-04-02 21:23:23 +08:00
LIghtJUNction
0883437c1a chore: remove dashboard dist symlink 2026-04-02 19:38:26 +08:00
氕氙
9d4472cb2d fix: 改进知识库的初始化错误处理 (#7243)
* fix: 改进 KnowledgeBaseManager 和 KBHelper 中的初始化错误处理

* fix: 改进知识库初始化和重排序错误处理,增强日志记录

* fix: 改进知识库模块初始化和检索错误处理

* fix(ui): handle kb init errors in list cards

display a dedicated error state for knowledge base cards that fail
initialization, including a visible badge and error details

prevent navigation and edit actions for failed cards while keeping
delete available, and hide normal stats/description for error items

add list.initError locale strings for en-US, ru-RU, and zh-CN

* fix(kb): avoid replacing helper on init failure

Initialize a new KB helper before swapping instances so a failed re-init
does not break the active knowledge base service.

If initialization fails, restore in-memory KB settings and keep the
existing helper and previous init error state.

Also clear stale init_error after successful vector DB initialization to
prevent outdated error reporting.

* test(kb): add kb manager resilience tests

cover initialization failure and recovery scenarios to guard
against regressions in kb error handling

include reference assets under refs for test validation

---------

Co-authored-by: RC-CHN <1051989940@qq.com>
2026-04-02 16:16:22 +08:00
kaixinyujue
0ecddb4c06 修复:过滤空助手消息,以防止在严格API上出现400错误(fix: filter empty assistant messages to prevent 400 error on strict APIs) (#7202)
* fix: filter empty assistant messages to prevent 400 error on strict APIs

Some OpenAI-compatible APIs (e.g., Moonshot) reject requests with
empty content in assistant messages when no tool_calls are present.
This fix cleans up the messages payload before sending to avoid
'message at position X must not be empty' errors.

Closes related issue with fallback provider behavior.

* test(openai): add tests for empty assistant message filtering

* refactor(openai): simplify empty assistant message filtering logic

* style: format code

---------

Co-authored-by: RC-CHN <1051989940@qq.com>
2026-04-02 09:10:06 +08:00
Yufeng He
4d2791aa9a fix: support both old and new Bailian Rerank API response formats (#7217)
* fix: support both old and new Bailian Rerank API response formats

The new compatible API (compatible-api/v1/reranks) returns results at
the top level as data.results, while the old API returns them nested
under data.output.results. The parser only checked the old path,
causing qwen3-rerank to always report empty results.

Fixes #7161

* Update astrbot/core/provider/sources/bailian_rerank_source.py

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

---------

Co-authored-by: Ruochen Pan <badbatch0x01@gmail.com>
Co-authored-by: gemini-code-assist[bot] <176961590+gemini-code-assist[bot]@users.noreply.github.com>
2026-04-01 11:55:54 +08:00
NekoYukari
deedf85360 fix: add pysocks dependency to support SOCKS5 proxy for pip install (#7221)
* fix: add pysocks dependency to support SOCKS5 proxy for pip install

* docs: update proxy description to include https:// support

* fix: add python-socks and pysocks to requirements.txt for consistency

---------

Co-authored-by: root <root@localhost.localdomain>
2026-04-01 09:05:02 +08:00
LIghtJUNction
360a13b227 chore: smart commit — update AGENTS.md, run ruff format, and apply small targeted fixes 2026-04-01 00:52:50 +08:00
LIghtJUNction
cbeb25fd2d fix(provider): improve type annotations in volcengine TTS loggable payload
Add explicit type annotations to payload variables in _build_loggable_payload
to satisfy ty type checker without using cast.
2026-04-01 00:24:15 +08:00
LIghtJUNction
69b1b099a6 refactor(dashboard): improve SSL configuration and code quality
server.py:
- Add additional SSL certificate environment variable fallbacks
- Improve SSL configuration resolution
- Clean up code structure

routes:
- Add type annotations to various route handlers
- Improve code quality in knowledge_base, session_management, log routes
2026-03-31 20:17:38 +08:00
LIghtJUNction
5357a29ff2 refactor(computer): improve type safety and error handling
bwrap.py:
- Improve property accessors with better error handling
- Add RuntimeError checks for unavailable components before boot

shipyard.py & shipyard_neo.py:
- Add type annotations and improve code quality

browser.py, fs.py, neo_skills.py, python.py:
- Improve type annotations

computer_tool_provider.py:
- Add type annotations
2026-03-31 20:17:26 +08:00
LIghtJUNction
7b16068a04 refactor(star): improve type safety and code quality
session_llm_manager.py:
- Add SessionServiceConfig TypedDict for type safety
- Add _normalize_session_service_config helper for config validation

session_plugin_manager.py:
- Add type annotations and improve code structure

star_manager.py:
- Improve type annotations and code quality

Other star modules:
- Minor improvements
2026-03-31 20:17:13 +08:00
LIghtJUNction
585ffb3982 refactor(pipeline): improve type safety and code quality
stage.py:
- Add StageProcessResult type alias for better type checking
- Change process method signature for better compatibility

respond/stage.py & result_decorate/stage.py:
- Improve type annotations and code structure

content_safety_check/stage.py:
- Add better type handling

agent_sub_stages (internal.py, third_party.py):
- Improve type annotations for better code quality

Other pipeline stages:
- Minor improvements to type annotations
2026-03-31 20:16:59 +08:00
LIghtJUNction
a306c63a92 refactor(agent): improve type safety in agent components
message.py:
- Use TypeGuard for type narrowing instead of isinstance checks
- Improve type annotations for ContentPart validation
- Add type annotations for content part registry

mcp_client.py:
- Improve type annotations and code quality

runners (base, dashscope, deerflow, dify, tool_loop):
- Add/improve type annotations
- Clean up code structure

tool.py & tool_image_cache.py:
- Improve type annotations
2026-03-31 20:16:47 +08:00
LIghtJUNction
9ba2ea62c3 refactor(provider): improve type safety and code quality
entities.py:
- Improve assemble_context return type annotation
- Add explicit type annotations for content_blocks
- Add safety checks for text content extraction

provider.py:
- Improve type annotations throughout
- Clean up code structure

Various source providers:
- Add/improve type annotations in anthropic, azure_tts, gemini, volcengine_tts, etc.
- Improve code quality in whisper and xinference providers
2026-03-31 20:16:35 +08:00
LIghtJUNction
b152516f69 refactor(db): clean up redundant type annotations and improve code
- Remove redundant session: AsyncSession type comments in sqlite.py
- Add type annotations to shared_preferences_v3.py migration
- Improve vec_db implementations with better type hints
- Add __init__.py marker for db package
2026-03-31 20:16:21 +08:00
LIghtJUNction
806c3dfade refactor(commands): improve type safety and add validation
alter_cmd.py:
- Add explicit type annotations for alter_cmd_cfg
- Rename variables for clarity (scene_num -> scene_index, cmd_type -> permission_type)
- Add validation for permission_type parameter

conversation.py:
- Add type annotations and improve command handling

persona.py:
- Clean up type annotations

provider.py:
- Add type annotations and improve provider command handling

setunset.py:
- Add type annotations for configuration operations
2026-03-31 20:16:02 +08:00
LIghtJUNction
65841684de refactor(platforms): improve type safety in platform adapters
- Use ComponentType enum instead of string literals for component types
- Add type annotations for discord button declarations
- Clean up unnecessary code in various platform adapters
2026-03-31 20:15:46 +08:00
LIghtJUNction
3eccbca2c9 refactor(i18n): improve type safety and code quality in i18n_utils
- Add type guard function for str-keyed dicts
- Add I18nGroup TypedDict for better type checking
- Replace isinstance checks with TypeGuard-based validation
- Improve type annotations throughout
2026-03-31 20:15:28 +08:00
LIghtJUNction
da12fca83d refactor(utils): improve type annotations and code quality
command_parser.py:
- Add explicit type annotations for tokens list and return type

config_number.py:
- Handle float to int conversion explicitly
- Simplify type checking logic

file_extract.py:
- Add type annotations and improve file extraction handling

io.py:
- Add type annotations for I/O operations

log_pipe.py:
- Implement TextIO interface for better compatibility
- Add comprehensive type annotations
- Add callback support and identifier logging

session_waiter.py:
- Clean up type annotations
2026-03-31 20:15:09 +08:00
LIghtJUNction
328748bd63 Fix cached_tokens handling in _extract_usage method (#6719)
* Fix cached_tokens handling in _extract_usage method

Ensure cached_tokens is an integer and handle None safely.

* ruuf format
2026-03-31 17:14:52 +08:00
qingyun
a73e388927 fix(agent): improve send_message_to_user tool description to prevent misuse (#6424)
* fix(agent): improve send_message_to_user tool description to prevent misuse

Fixes #6402

The AI was inappropriately using send_message_to_user tool in normal
conversations for text replies, causing duplicate messages (once via tool,
once via normal response).

Root cause: Tool description was not clear enough about when to use it.

Changes:
- Restructure description with clear sections using markdown
- Emphasize two valid use cases:
  1. Sending media files (image, record, video, file) in any conversation
  2. Proactive messaging scenarios (cron jobs, background tasks)
- Add explicit warning: Do NOT use for normal text replies
- Explain consequence: Using for text causes duplicate messages

This approach (better documentation) is safer than restricting tool
registration, which would break media file sending in normal conversations.

Alternative to PR #6413 which was closed due to breaking media delivery.

* fix: correct syntax error and use triple-quoted string for description

Address review feedback:
- P0: Add missing closing parenthesis (was causing SyntaxError on import)
- Use triple-quoted string for better readability (suggested by gemini-code-assist)
- Remove explicit newline characters, let Python handle line breaks

---------

Co-authored-by: ccsang <ccsang@users.noreply.github.com>
2026-03-31 17:08:42 +08:00
Jacobinwwey
7ff4057fc9 feat(web-search): add provider routing aliases and explicit-engine selection while preserving default engine behavior (#6442)
* feat(web-search): add provider routing and ddg-first default chain

* fix(web-search): keep dev default engine order and demote ddg fallback

* fix(web-search): harden selector/query handling and unify engine naming

* refactor(web-search): streamline provider wiring and harden google query encoding

* fix(web-search): return empty for non-positive filtered result limits

* refactor(web-search): share provider constants and validate engine registry

* refactor(web-search): unify provider normalization and engine registry

* fix(web-search): reduce comet link noise with stricter url filtering

* style(web-search): apply ruff formatting
2026-03-31 17:06:51 +08:00
LIghtJUNction
a550b88e15 fix: type 2026-03-30 19:30:33 +08:00
LIghtJUNction
70107b2c8a fix: type 2026-03-30 18:03:22 +08:00
LIghtJUNction
54f6916172 fix: type 2026-03-30 18:03:02 +08:00
LIghtJUNction
4ca8bc7bbc fix: type 2026-03-30 18:02:40 +08:00
LIghtJUNction
abb6a32829 fix: type errors 2026-03-30 18:02:18 +08:00
LIghtJUNction
9b15a60802 fix: resolve 7 type errors in dev branch
- tool_loop_agent_runner.py: add wrapper coroutine for create_task
- tool_image_cache.py: add cast for Self return type
- astr_agent_tool_exec.py: add type ignore for add_tool
- astr_main_agent.py: add type ignores for tool operations
- astr_main_agent_resources.py: add type ignore for msg_dict
- astrbot_config_mgr.py: add type annotations
2026-03-30 18:01:37 +08:00
LIghtJUNction
49d17460d6 fix: add type ignore for msg_dict 2026-03-30 17:46:37 +08:00
LIghtJUNction
7e3bdbc9fa fix: add type ignore for merge 2026-03-30 17:46:20 +08:00
LIghtJUNction
f084fba702 fix: add type ignore for func_tool assignment 2026-03-30 17:46:04 +08:00
LIghtJUNction
376161faa8 fix: add type ignore for persona_toolset.add_tool 2026-03-30 17:45:54 +08:00
LIghtJUNction
2aafe18880 fix: add type ignore for add_tool arg 2026-03-30 17:45:42 +08:00
LIghtJUNction
50b7d18a20 fix: resolve Self return type in ToolImageCache 2026-03-30 17:45:27 +08:00
LIghtJUNction
e1c4b52fba fix: resolve create_task type error in tool_loop_agent_runner 2026-03-30 17:36:26 +08:00
LIghtJUNction
e8557909d6 fix: restore dev retry logic and add class constants
- Restore simple dev retry flow (no AsyncRetrying wrapper)
- Add EMPTY_OUTPUT_RETRY_* class constants for test compatibility
2026-03-30 17:17:21 +08:00
LIghtJUNction
086dc00498 fix: resolve MCPTool import and openai_source merge conflicts
- MCPTool_T must be imported at runtime, not in TYPE_CHECKING
- Add __future__ annotations for forward references
- Fix remaining conflict markers in openai_source.py
2026-03-30 17:14:33 +08:00
LIghtJUNction
efa999c221 merge: origin/master into dev
Resolve merge conflicts:
- Version logic: keep dev (dynamic version from package metadata)
- Backend: merge EmptyModelOutputError retry logic from master
- Frontend: keep dev design, accept master functional enhancements
- SSL/config: keep dev inline implementation
2026-03-30 17:07:57 +08:00
Yufeng He
2ffda752ad fix: send SSE heartbeat to prevent WebChat disconnect during compression (#7003)
* fix: send SSE heartbeat to prevent WebChat disconnect during compression

When context compression triggers with slow reasoning models (e.g.
deepseek-reasoner), the backend can go 30+ seconds without pushing any
SSE data. The client-side EventSource / browser then assumes the
connection is dead and disconnects, causing the WebUI to hang
indefinitely since it never receives the eventual response.

Fix: yield an SSE comment (`: heartbeat`) on every empty poll cycle.
Comment lines are defined in the SSE spec as keep-alive signals --
the EventSource API ignores them but the HTTP connection stays open.

Fixes #6938

* chore(dashboard): extract SSE heartbeat to constant

---------

Co-authored-by: Yufeng He <40085740+universeplayer@users.noreply.github.com>
Co-authored-by: RC-CHN <1051989940@qq.com>
2026-03-30 15:52:10 +08:00
LIghtJUNction
95cb2a8ac6 fix: resolve multiple type errors and runtime bugs
- shell.py: Fix FunctionTool import from correct module (core.agent.tool)
- deerflow/coze agent runners: Remove invalid return type annotations for step/step_until_done
- aiocqhttp_message_event.py: Fix raise string error (must raise Exception not str)
- lark_event.py: Fix file upload by wrapping bytes in BytesIO for SDK compatibility
- tg_adapter.py: Fix update.message None check in nested function
- TraceDisplayer.vue: Fix text color visibility using proper theme variables
2026-03-30 01:08:43 +08:00
LIghtJUNction
2a1544fb6c chore: stage remaining changes 2026-03-30 00:48:16 +08:00
LIghtJUNction
62d7df1da7 chore: stage all dev changes 2026-03-30 00:48:07 +08:00
LIghtJUNction
9dc345976d fix(dashboard): AddNewPlatform - show v-icon fallback when platform icon is undefined 2026-03-29 23:06:46 +08:00
No-22-Github
f75c2d30b4 fix(core): Record.path was incorrectly treated as required under Pydantic v2 (#7048)
* fix: make Record.path optional for pydantic v2 compatibility

* fix: preserve telegram voice record path
2026-03-29 22:59:22 +08:00
Soulter
2b435e0c89 feat: add brand-new statistics dashboarde overview with model usage and platform usage (#7152)
* feat: add new StatsPage for enhanced statistics overview

- Introduced StatsPage.vue to provide a comprehensive overview of statistics with various metrics and charts.
- Implemented fetching and displaying of base and model provider statistics.
- Added unit tests for provider statistics persistence in the database.

* style: refine card styles and remove unnecessary shadow for improved aesthetics
2026-03-29 22:50:15 +08:00
Soulter
43a9262719 feat: add collapsed item support in configuration UI and update localization for more settings 2026-03-29 20:49:07 +08:00
LIghtJUNction
0dd91f1d10 fix: add noqa comments to platform adapter imports and update theme files
- Add F401 suppression to lazy-loaded platform adapter imports
- Update BlueBusiness theme files
- Add ThemeType definitions and WelcomePage enhancements
2026-03-29 18:16:28 +08:00