LIghtJUNction
1f5accc82a
chore: sync master into dev
2026-07-16 18:18:20 +08:00
LIghtJUNction
5535f0c932
Merge branch 'master' into dev
...
# Conflicts:
# AGENTS.md
# astrbot/__init__.py
# astrbot/cli/utils/__init__.py
# astrbot/core/astr_agent_tool_exec.py
# astrbot/core/computer/booters/local.py
# astrbot/core/cron/manager.py
# astrbot/core/knowledge_base/kb_mgr.py
# astrbot/core/knowledge_base/retrieval/manager.py
# astrbot/core/platform/sources/discord/discord_platform_adapter.py
# astrbot/core/platform/sources/qqofficial/qqofficial_message_event.py
# astrbot/core/platform/sources/qqofficial/qqofficial_platform_adapter.py
# astrbot/core/platform/sources/qqofficial_webhook/qo_webhook_server.py
# astrbot/core/platform/sources/wecom/wecom_adapter.py
# astrbot/core/platform/sources/wecom_ai_bot/wecomai_adapter.py
# astrbot/core/provider/func_tool_manager.py
# astrbot/core/provider/sources/mimo_api_common.py
# astrbot/core/star/star_manager.py
# astrbot/core/tools/computer_tools/fs.py
# astrbot/core/tools/computer_tools/python.py
# astrbot/core/tools/computer_tools/shell.py
# astrbot/core/tools/message_tools.py
# astrbot/core/tools/web_search_tools.py
# astrbot/core/utils/io.py
# astrbot/core/utils/tencent_record_helper.py
# dashboard/package.json
# dashboard/src/assets/mdi-subset/materialdesignicons-subset.css
# dashboard/src/assets/mdi-subset/materialdesignicons-webfont-subset.woff
# dashboard/src/assets/mdi-subset/materialdesignicons-webfont-subset.woff2
# dashboard/src/components/ConfirmDialog.vue
# dashboard/src/components/chat/Chat.vue
# dashboard/src/components/chat/ChatInput.vue
# dashboard/src/components/chat/ChatMessageList.vue
# dashboard/src/components/chat/ConfigSelector.vue
# dashboard/src/components/chat/MessageList.vue
# dashboard/src/components/chat/ProjectDialog.vue
# dashboard/src/components/chat/ProjectList.vue
# dashboard/src/components/chat/ProjectView.vue
# dashboard/src/components/chat/ProviderModelMenu.vue
# dashboard/src/components/chat/RegenerateMenu.vue
# dashboard/src/components/chat/StandaloneChat.vue
# dashboard/src/components/chat/ThreadPanel.vue
# dashboard/src/components/chat/ThreadedMarkdownMessagePart.vue
# dashboard/src/components/chat/message_list_comps/MarkdownMessagePart.vue
# dashboard/src/components/chat/message_list_comps/ReasoningTimeline.vue
# dashboard/src/components/chat/message_list_comps/RefsSidebar.vue
# dashboard/src/components/config/UnsavedChangesConfirmDialog.vue
# dashboard/src/components/extension/MarketPluginCard.vue
# dashboard/src/components/extension/McpServersSection.vue
# dashboard/src/components/extension/SkillsSection.vue
# dashboard/src/components/extension/componentPanel/components/DetailsDialog.vue
# dashboard/src/components/extension/componentPanel/components/RenameDialog.vue
# dashboard/src/components/folder/BaseCreateFolderDialog.vue
# dashboard/src/components/folder/BaseFolderItemSelector.vue
# dashboard/src/components/folder/BaseMoveToFolderDialog.vue
# dashboard/src/components/platform/AddNewPlatform.vue
# dashboard/src/components/provider/AddNewProvider.vue
# dashboard/src/components/provider/ProviderModelsPanel.vue
# dashboard/src/components/shared/BackupDialog.vue
# dashboard/src/components/shared/ChangelogDialog.vue
# dashboard/src/components/shared/ExtensionCard.vue
# dashboard/src/components/shared/FileConfigItem.vue
# dashboard/src/components/shared/KnowledgeBaseSelector.vue
# dashboard/src/components/shared/ListConfigItem.vue
# dashboard/src/components/shared/ObjectEditor.vue
# dashboard/src/components/shared/PersonaForm.vue
# dashboard/src/components/shared/PluginSetSelector.vue
# dashboard/src/components/shared/ProviderSelector.vue
# dashboard/src/components/shared/ReadmeDialog.vue
# dashboard/src/components/shared/SidebarCustomizer.vue
# dashboard/src/components/shared/T2ITemplateEditor.vue
# dashboard/src/components/shared/UninstallConfirmDialog.vue
# dashboard/src/components/shared/WaitingForRestart.vue
# dashboard/src/composables/useMessages.ts
# dashboard/src/composables/useProjects.ts
# dashboard/src/composables/useProviderModelConfigDialog.ts
# dashboard/src/composables/useProviderSources.ts
# dashboard/src/i18n/locales/ru-RU/features/config-metadata.json
# dashboard/src/i18n/locales/ru-RU/features/extension.json
# dashboard/src/i18n/locales/ru-RU/features/provider.json
# dashboard/src/layouts/full/vertical-header/VerticalHeader.vue
# dashboard/src/scss/_override.scss
# dashboard/src/stores/common.js
# dashboard/src/stores/customizer.ts
# dashboard/src/views/ConfigPage.vue
# dashboard/src/views/ConversationPage.vue
# dashboard/src/views/PlatformPage.vue
# dashboard/src/views/SessionManagementPage.vue
# dashboard/src/views/WelcomePage.vue
# dashboard/src/views/alkaid/KnowledgeBase.vue
# dashboard/src/views/alkaid/LongTermMemory.vue
# dashboard/src/views/authentication/auth/LoginPage.vue
# dashboard/src/views/extension/InstalledPluginsTab.vue
# dashboard/src/views/extension/useExtensionPage.js
# dashboard/src/views/knowledge-base/DocumentDetail.vue
# dashboard/src/views/knowledge-base/KBList.vue
# dashboard/src/views/knowledge-base/components/DocumentsTab.vue
# dashboard/src/views/knowledge-base/components/SettingsTab.vue
# dashboard/src/views/knowledge-base/components/TavilyKeyDialog.vue
# dashboard/src/views/persona/FolderTree.vue
# dashboard/src/views/persona/MoveToFolderDialog.vue
# dashboard/src/views/persona/PersonaManager.vue
# requirements.txt
# tests/test_local_shell_component.py
# tests/unit/test_func_tool_manager.py
# tests/unit/test_web_search_tools.py
2026-07-16 17:39:40 +08:00
Soulter
6070da9ae2
fix: resume ChatUI streams after refresh ( #9259 )
...
* fix: resume ChatUI streams after refresh
* fix: hide chat run service errors
* fix: harden resumed chat streams
2026-07-13 23:05:03 +08:00
Weilong Liao
b43cc6dee0
feat: improve ChatUI attachment display ( #9134 )
2026-07-04 17:56:33 +08:00
lxfight
ea9e3421d9
fix: align knowledge base CRUD API contract with kb_name, canonical payload fields, and matching OpenAPI types ( #9000 )
...
Warning: Potential breaking changes in /kb related openapi.
* fix(kb): align CRUD API contract end-to-end
Unify knowledge base create/update/list with kb_name, canonical_payload,
optional list pagination with total, and matching OpenAPI plus dashboard types.
* fix: restore _model_dict references, add KnowledgeBaseCreateRequest, fix OpenAPI allOf validation
- Replace 3 remaining _model_dict() calls with payload.model_dump(exclude_none=True)
- Add KnowledgeBaseCreateRequest schema with required kb_name + embedding_provider_id
- Remove additionalProperties: false from OpenAPI allOf sub-schema to avoid validation failures
- Use Pydantic Field(alias="name") + populate_by_name=True for legacy name migration
- Delegate _canonical_kb_payload to KnowledgeBaseRequest to eliminate duplicated logic
- Add getattr default None for update_kb to prevent AttributeError
- Add validation error tests: missing kb_name, missing embedding_provider_id
* fix: address knowledge base contract follow-ups
* fix: preserve knowledge base create error shape
2026-07-03 22:18:56 +08:00
Weilong Liao
e7d5be632f
feat: add ChatUI project workspaces ( #9066 )
...
* feat: add ChatUI project workspaces
* feat: refine chatui layout
* feat: enhance chat input and project view styles for attachment handling
* feat: adjust chat sidebar brand logo positioning
* feat: enhance project dialog with error handling and loading state
2026-07-03 21:54:20 +08:00
lxfight
758e43273d
fix: paginate knowledge base dashboard lists ( #9055 )
...
* fix: paginate knowledge base dashboard lists
* fix: preserve knowledge document search pagination
2026-06-28 14:00:45 +08:00
Weilong Liao
3d4c4ed01b
fix: validate plugin install sources ( #9061 )
2026-06-28 13:45:59 +08:00
Weilong Liao
0ef790d289
fix: track plugin install source for updates ( #9037 )
...
* fix: track plugin install source for updates
* feat: refine plugin source management flow
* test: align plugin update expectation
2026-06-27 15:02:04 +08:00
LIghtJUNction
5d22db51ad
fix: resolve merge conflicts and complete dashboard API migration
2026-06-26 09:50:15 +08:00
Weilong Liao
421d718041
feat: show public version details on login ( #8986 )
...
* feat: show public version details on login
* fix: address login version review feedback
2026-06-24 21:46:29 +08:00
Weilong Liao
967ed01cf7
fix: add data scope to api keys ( #8985 )
2026-06-24 16:37:46 +08:00
Weilong Liao
49b86320cb
docs: clarify OpenAPI chat username identity ( #8880 )
2026-06-18 23:17:50 +08:00
Weilong Liao
264e7eaaa3
fix: restore OpenAPI file uploads
...
Expose /api/v1/file in OpenAPI, enable file-scoped API keys, and regenerate docs/client artifacts.
2026-06-18 12:37:38 +08:00
Weilong Liao
5566bd621c
feat: reorganize settings system configuration ( #8777 )
...
* feat: reorganize settings system configuration
* fix: float system config restart notice
* fix: blur system config restart notice
* fix: tint restart notice blur background
* fix: allow totp setup without body
* fix: filter public openapi docs
* fix: handle settings autosave cleanup
* chore: ui
2026-06-16 11:03:42 +08:00
Weilong Liao
0d8e8682db
refactor(core): migrate backend backbone from Quart to FastAPI and introduce more OpenAPI ( #8688 )
...
* refactor: migrate to fastapi
* structure refactor
* fix: pyright fix
* refactor: improve error handling and public messages in plugin services
* feat(api): refactor API client integration and enhance request handling
- Updated API client configuration to use a dedicated HTTP client.
- Introduced utility functions for generating options, queries, and form data for API requests.
- Refactored multiple API methods to utilize the new utility functions for improved consistency and readability.
- Renamed types for clarity and updated import statements accordingly.
feat(docs): add script to update OpenAPI JSON from YAML spec
- Created a Python script to convert OpenAPI YAML specification to JSON format.
- The script supports customizable input and output paths.
- Ensured the script handles directory creation for output paths and validates the YAML structure.
* fix
* feat(auth): implement rate limiting for v1 login endpoint and enhance request handling
* Refactor dashboard API routers to use legacy_router for backward compatibility
- Changed all instances of dashboard_router to legacy_router across multiple API modules including platform, plugins, providers, sessions, skills, stats, subagents, t2i, tools, updates, and asgi_runtime.
- Updated route definitions to ensure existing endpoints remain functional under the new router structure.
- Introduced support for Quart request context in asgi_runtime to enhance compatibility with existing Quart-based plugins.
- Added a test case to validate the functionality of the new Quart request context handling in plugin extensions.
* chore: remove cli test
* fix: update dashboard tests for fastapi migration
* chore: satisfy ruff checks
* fix: update openapi api key scopes
* fix: sync config scope chip selection
* fix: restore quart dependency
* docs: clarify quart plugin api compatibility
* docs: update openapi scope documentation
* fix: use singular skill openapi scope
* fix: hide update service exception details
* fix: address fastapi review comments
* fix: address dashboard review findings
* docs: revert unrelated package deployment changes
* docs: update agent api generation guidance
* feat: add plugin page web api helpers
* docs: add plugin page bridge demo
* fix: type plugin upload files
* fix: stabilize plugin page uploads
* fix: type plugin web request proxy
* docs: remove plugin page docs example
* fix: authenticate plugin page SSE bridge
2026-06-14 15:03:26 +08:00
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
868c81bbc7
chore: commit all changes
2026-04-02 21:23:23 +08:00
LIghtJUNction
bc01532e59
fix(provider): filter abort_signal from payloads to avoid JSON serialize error
...
`abort_signal` (asyncio.Event) is passed via **kwargs into payloads during
tool_call streaming, causing "Object of type Event is not JSON serializable"
when the OpenAI client tries to serialize the request body.
Regression test added: test_prepare_chat_payload_strips_non_json_serializable_kwargs
2026-03-28 01:15:21 +08:00
LIghtJUNction
b4512f26e6
feat(openspec): add abp-plugin-loader change for remaining ABP tasks
2026-03-27 22:25:41 +08:00
LIghtJUNction
14a1e37261
docs: 更新 openspec 规范文档
...
- 添加实现状态表格
- 更新配置规范
- 添加新的协议规范
2026-03-27 19:10:49 +08:00
LIghtJUNction
2a5e55641d
feat(abp): initial ABP protocol implementation
...
- Add ABP (AstrBot Plugin) protocol Python package (astrbot/core/plugin/)
- PluginManager for plugin lifecycle management
- PluginClient for out-of-process plugin communication
- Transport layer (Stdio, Unix Socket, HTTP)
- Data models and constants
- Add ABP error codes to Rust error.rs (-32700 to -32211)
- Fix Rust server.rs compilation issues
- Fix UNIX_EPOODY typo
- Fix mutable borrow issues
- Fix API response type mismatches
- Update _core.pyi type stubs with ABP types
- Add openspec change archive for ABP protocol implementation
2026-03-27 18:07:09 +08:00
LIghtJUNction
9db179075f
chore: 添加 MDI 字体到 gitignore 并更新 agent-message 规范
2026-03-27 00:27:09 +08:00
LIghtJUNction
c573ba1620
docs: 更新 agent-message.md 规范
2026-03-27 00:16:43 +08:00
LIghtJUNction
e1ac6733e8
docs: 新增 openspec 规范文档
...
- abp.md: ABP (AstrBot Plugin) 插件协议规范
- api.md: API 规范
- agent-message.md: Agent 消息格式规范
- config.md: 配置系统规范 (含 GPG 安全配置)
- env.md: 环境变量规范
- path.md: XDG 路径规范
2026-03-27 00:15:37 +08:00
LIghtJUNction
49988912e1
refactor(openspec): restructure protocol specifications
...
Major changes:
- Add A2A protocol (Google Agent-to-Agent)
- Add ACP protocol (Agent Communication)
- Add MCP protocol (Model Context Protocol)
- Add LSP protocol (Language Server Protocol)
- Add environment variables spec (env.md)
- Add path spec with XDG and Linux server support (path.md)
- Update ABP protocol to plugin-as-service model
- Delete legacy OpenSpec change proposals
New protocol specs:
- a2a.md: Cross-platform agent interoperability
- acp.md: Local agent control (IDE integration)
- mcp.md: AI model to tools/data connection
- lsp.md: Editor language features
- abp.md: AstrBot plugin protocol
- env.md: Environment variable conventions
- path.md: XDG + Linux server paths
2026-03-26 22:58:22 +08:00
LIghtJUNction
be65022de1
refactor(protocols): update protocol client implementations
2026-03-25 00:10:29 +08:00
LIghtJUNction
4436420e08
docs: update tasks.md to reflect completion
2026-03-24 17:43:12 +08:00
LIghtJUNction
f7ec5ea1c1
feat: add name field to protocol status and message tracking
...
- Add _message_count and _last_activity_timestamp to orchestrator
- Add record_activity() method to orchestrator
- Add name field to get_protocol_status returns
- Add total_messages and last_activity to get_stats
- Update tests to verify new fields
2026-03-24 17:42:40 +08:00
LIghtJUNction
dbeb104600
test: add RuntimeError tests for LSP client not connected cases
...
- Add test_lsp_client_send_request_not_connected
- Add test_lsp_client_send_notification_not_connected
- Mark 6.2 and 7.2 tasks complete in tasks.md
2026-03-24 17:17:03 +08:00
LIghtJUNction
bf19777fe4
docs: update lsp-integration-tests tasks
2026-03-24 17:16:37 +08:00
LIghtJUNction
cf52461c39
docs: add lsp-integration-tests specs and tasks
2026-03-24 17:02:38 +08:00
LIghtJUNction
c0010de837
docs: add openspec specs for integration tests changes
2026-03-24 16:58:39 +08:00
LIghtJUNction
40a68c755e
docs: add openspec metadata for add-internal-integration-tests
2026-03-24 16:52:45 +08:00
LIghtJUNction
cac627270e
docs: add specs for add-internal-integration-tests change
2026-03-24 16:50:35 +08:00
LIghtJUNction
9f945cfb6c
docs: add runtime-status-star spec
2026-03-24 16:12:25 +08:00
LIghtJUNction
faa6f5f495
docs: add abp-runtime-status-plugin spec and specs
2026-03-24 16:09:26 +08:00
LIghtJUNction
2799bbb766
fix: MCP integration tests skip and test orchestrator adaptation
...
- Fix echo_mcp_server.py stdio parsing (use stdin.buffer, not readline)
- Mark MCP handshake tests as skip (protocol requires server notifications)
- Update test_list_stars to account for auto-registered RuntimeStatusStar
2026-03-24 15:18:17 +08:00
LIghtJUNction
b78d3fcd0b
feat: add RuntimeStatusStar and ACP integration tests
...
- Add RuntimeStatusStar ABP plugin exposing runtime internal state
- Add ACP echo server fixture for testing
- Add ACP integration tests (TCP/Unix socket connectivity)
- Update orchestrator to auto-register RuntimeStatusStar
- Update tests to account for auto-registered star
2026-03-24 13:49:49 +08:00
LIghtJUNction
f5bc74ca58
feat(openspec): add abp-runtime-status-plugin change proposal
2026-03-24 00:04:27 +08:00
LIghtJUNction
310d2d6998
feat: add integration tests infrastructure and MCP echo server fixture
...
- Add tests/integration/ directory with fixtures/
- Create echo_mcp_server.py for MCP testing
- Create test_mcp_integration.py with basic tests
- Fix bug in MCP client: use stdio_transport instead of _streams_context
- Add examples/abp_demo.py demonstrating ABP protocol
- Update openspec with integration tests change
2026-03-23 23:01:55 +08:00
LIghtJUNction
20b7f60330
chore: update protocol clients and add architecture compliance tests
2026-03-23 22:01:02 +08:00
LIghtJUNction
9058505593
test: add gateway WebSocket manager tests
2026-03-23 21:49:19 +08:00
LIghtJUNction
e9e7c7ff07
feat: add builtin tools module for _internal package
2026-03-23 21:44:14 +08:00
zenfun
963122b916
chore: update gitignore, Makefile, skills route, and test scaffolding
2026-02-16 02:38:01 +08:00