AstrBot 4.9.2__py3-none-any.whl → 4.10.0__py3-none-any.whl

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (43) hide show
  1. astrbot/cli/__init__.py +1 -1
  2. astrbot/core/agent/message.py +6 -4
  3. astrbot/core/agent/response.py +22 -1
  4. astrbot/core/agent/run_context.py +1 -1
  5. astrbot/core/agent/runners/tool_loop_agent_runner.py +99 -20
  6. astrbot/core/astr_agent_context.py +3 -1
  7. astrbot/core/astr_agent_run_util.py +42 -3
  8. astrbot/core/astr_agent_tool_exec.py +34 -4
  9. astrbot/core/config/default.py +127 -184
  10. astrbot/core/core_lifecycle.py +3 -0
  11. astrbot/core/db/__init__.py +72 -0
  12. astrbot/core/db/po.py +59 -0
  13. astrbot/core/db/sqlite.py +240 -0
  14. astrbot/core/message/components.py +4 -5
  15. astrbot/core/pipeline/process_stage/method/agent_sub_stages/internal.py +6 -1
  16. astrbot/core/pipeline/respond/stage.py +1 -1
  17. astrbot/core/platform/sources/telegram/tg_event.py +9 -0
  18. astrbot/core/platform/sources/webchat/webchat_event.py +22 -18
  19. astrbot/core/provider/entities.py +41 -0
  20. astrbot/core/provider/manager.py +203 -93
  21. astrbot/core/provider/sources/anthropic_source.py +55 -11
  22. astrbot/core/provider/sources/gemini_source.py +84 -33
  23. astrbot/core/provider/sources/openai_source.py +21 -6
  24. astrbot/core/star/command_management.py +449 -0
  25. astrbot/core/star/context.py +4 -0
  26. astrbot/core/star/filter/command.py +1 -0
  27. astrbot/core/star/filter/command_group.py +1 -0
  28. astrbot/core/star/star_handler.py +4 -0
  29. astrbot/core/star/star_manager.py +2 -0
  30. astrbot/core/utils/llm_metadata.py +63 -0
  31. astrbot/core/utils/migra_helper.py +93 -0
  32. astrbot/dashboard/routes/__init__.py +2 -0
  33. astrbot/dashboard/routes/chat.py +56 -13
  34. astrbot/dashboard/routes/command.py +82 -0
  35. astrbot/dashboard/routes/config.py +291 -33
  36. astrbot/dashboard/routes/stat.py +96 -0
  37. astrbot/dashboard/routes/tools.py +20 -4
  38. astrbot/dashboard/server.py +1 -0
  39. {astrbot-4.9.2.dist-info → astrbot-4.10.0.dist-info}/METADATA +2 -2
  40. {astrbot-4.9.2.dist-info → astrbot-4.10.0.dist-info}/RECORD +43 -40
  41. {astrbot-4.9.2.dist-info → astrbot-4.10.0.dist-info}/WHEEL +0 -0
  42. {astrbot-4.9.2.dist-info → astrbot-4.10.0.dist-info}/entry_points.txt +0 -0
  43. {astrbot-4.9.2.dist-info → astrbot-4.10.0.dist-info}/licenses/LICENSE +0 -0
@@ -1,6 +1,9 @@
1
+ import os
2
+ import re
1
3
  import threading
2
4
  import time
3
5
  import traceback
6
+ from functools import cmp_to_key
4
7
 
5
8
  import aiohttp
6
9
  import psutil
@@ -11,7 +14,9 @@ from astrbot.core.config import VERSION
11
14
  from astrbot.core.core_lifecycle import AstrBotCoreLifecycle
12
15
  from astrbot.core.db import BaseDatabase
13
16
  from astrbot.core.db.migration.helper import check_migration_needed_v4
17
+ from astrbot.core.utils.astrbot_path import get_astrbot_path
14
18
  from astrbot.core.utils.io import get_dashboard_version
19
+ from astrbot.core.utils.version_comparator import VersionComparator
15
20
 
16
21
  from .route import Response, Route, RouteContext
17
22
 
@@ -30,6 +35,8 @@ class StatRoute(Route):
30
35
  "/stat/start-time": ("GET", self.get_start_time),
31
36
  "/stat/restart-core": ("POST", self.restart_core),
32
37
  "/stat/test-ghproxy-connection": ("POST", self.test_ghproxy_connection),
38
+ "/stat/changelog": ("GET", self.get_changelog),
39
+ "/stat/changelog/list": ("GET", self.list_changelog_versions),
33
40
  }
34
41
  self.db_helper = db_helper
35
42
  self.register_routes()
@@ -183,3 +190,92 @@ class StatRoute(Route):
183
190
  except Exception as e:
184
191
  logger.error(traceback.format_exc())
185
192
  return Response().error(f"Error: {e!s}").__dict__
193
+
194
+ async def get_changelog(self):
195
+ """获取指定版本的更新日志"""
196
+ try:
197
+ version = request.args.get("version")
198
+ if not version:
199
+ return Response().error("version parameter is required").__dict__
200
+
201
+ version = version.lstrip("v")
202
+
203
+ # 防止路径遍历攻击
204
+ if not re.match(r"^[a-zA-Z0-9._-]+$", version):
205
+ return Response().error("Invalid version format").__dict__
206
+ if ".." in version or "/" in version or "\\" in version:
207
+ return Response().error("Invalid version format").__dict__
208
+
209
+ filename = f"v{version}.md"
210
+ project_path = get_astrbot_path()
211
+ changelogs_dir = os.path.join(project_path, "changelogs")
212
+ changelog_path = os.path.join(changelogs_dir, filename)
213
+
214
+ # 规范化路径,防止符号链接攻击
215
+ changelog_path = os.path.realpath(changelog_path)
216
+ changelogs_dir = os.path.realpath(changelogs_dir)
217
+
218
+ # 验证最终路径在预期的 changelogs 目录内(防止路径遍历)
219
+ # 确保规范化后的路径以 changelogs_dir 开头,且是目录内的文件
220
+ changelog_path_normalized = os.path.normpath(changelog_path)
221
+ changelogs_dir_normalized = os.path.normpath(changelogs_dir)
222
+
223
+ # 检查路径是否在预期目录内(必须是目录的子文件,不能是目录本身)
224
+ expected_prefix = changelogs_dir_normalized + os.sep
225
+ if not changelog_path_normalized.startswith(expected_prefix):
226
+ logger.warning(
227
+ f"Path traversal attempt detected: {version} -> {changelog_path}",
228
+ )
229
+ return Response().error("Invalid version format").__dict__
230
+
231
+ if not os.path.exists(changelog_path):
232
+ return (
233
+ Response()
234
+ .error(f"Changelog for version {version} not found")
235
+ .__dict__
236
+ )
237
+ if not os.path.isfile(changelog_path):
238
+ return (
239
+ Response()
240
+ .error(f"Changelog for version {version} not found")
241
+ .__dict__
242
+ )
243
+
244
+ with open(changelog_path, encoding="utf-8") as f:
245
+ content = f.read()
246
+
247
+ return Response().ok({"content": content, "version": version}).__dict__
248
+ except Exception as e:
249
+ logger.error(traceback.format_exc())
250
+ return Response().error(f"Error: {e!s}").__dict__
251
+
252
+ async def list_changelog_versions(self):
253
+ """获取所有可用的更新日志版本列表"""
254
+ try:
255
+ project_path = get_astrbot_path()
256
+ changelogs_dir = os.path.join(project_path, "changelogs")
257
+
258
+ if not os.path.exists(changelogs_dir):
259
+ return Response().ok({"versions": []}).__dict__
260
+
261
+ versions = []
262
+ for filename in os.listdir(changelogs_dir):
263
+ if filename.endswith(".md") and filename.startswith("v"):
264
+ # 提取版本号(去除 v 前缀和 .md 后缀)
265
+ version = filename[1:-3] # 去掉 "v" 和 ".md"
266
+ # 验证版本号格式
267
+ if re.match(r"^[a-zA-Z0-9._-]+$", version):
268
+ versions.append(version)
269
+
270
+ # 按版本号排序(降序,最新的在前)
271
+ # 使用项目中的 VersionComparator 进行语义化版本号排序
272
+ versions.sort(
273
+ key=cmp_to_key(
274
+ lambda v1, v2: VersionComparator.compare_version(v2, v1),
275
+ ),
276
+ )
277
+
278
+ return Response().ok({"versions": versions}).__dict__
279
+ except Exception as e:
280
+ logger.error(traceback.format_exc())
281
+ return Response().error(f"Error: {e!s}").__dict__
@@ -3,6 +3,7 @@ import traceback
3
3
  from quart import request
4
4
 
5
5
  from astrbot.core import logger
6
+ from astrbot.core.agent.mcp_client import MCPTool
6
7
  from astrbot.core.core_lifecycle import AstrBotCoreLifecycle
7
8
  from astrbot.core.star import star_map
8
9
 
@@ -296,15 +297,30 @@ class ToolsRoute(Route):
296
297
  """获取所有注册的工具列表"""
297
298
  try:
298
299
  tools = self.tool_mgr.func_list
299
- tools_dict = [
300
- {
300
+ tools_dict = []
301
+ for tool in tools:
302
+ if isinstance(tool, MCPTool):
303
+ origin = "mcp"
304
+ origin_name = tool.mcp_server_name
305
+ elif tool.handler_module_path and star_map.get(
306
+ tool.handler_module_path
307
+ ):
308
+ star = star_map[tool.handler_module_path]
309
+ origin = "plugin"
310
+ origin_name = star.name
311
+ else:
312
+ origin = "unknown"
313
+ origin_name = "unknown"
314
+
315
+ tool_info = {
301
316
  "name": tool.name,
302
317
  "description": tool.description,
303
318
  "parameters": tool.parameters,
304
319
  "active": tool.active,
320
+ "origin": origin,
321
+ "origin_name": origin_name,
305
322
  }
306
- for tool in tools
307
- ]
323
+ tools_dict.append(tool_info)
308
324
  return Response().ok(data=tools_dict).__dict__
309
325
  except Exception as e:
310
326
  logger.error(traceback.format_exc())
@@ -67,6 +67,7 @@ class AstrBotDashboard:
67
67
  core_lifecycle,
68
68
  core_lifecycle.plugin_manager,
69
69
  )
70
+ self.command_route = CommandRoute(self.context)
70
71
  self.cr = ConfigRoute(self.context, core_lifecycle)
71
72
  self.lr = LogRoute(self.context, core_lifecycle.log_broker)
72
73
  self.sfr = StaticFileRoute(self.context)
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: AstrBot
3
- Version: 4.9.2
3
+ Version: 4.10.0
4
4
  Summary: Easy-to-use multi-platform LLM chatbot and development framework
5
5
  License-File: LICENSE
6
6
  Keywords: Astrbot,Astrbot Module,Astrbot Plugin
@@ -26,7 +26,7 @@ Requires-Dist: dingtalk-stream>=0.22.1
26
26
  Requires-Dist: docstring-parser>=0.16
27
27
  Requires-Dist: faiss-cpu==1.10.0
28
28
  Requires-Dist: filelock>=3.18.0
29
- Requires-Dist: google-genai<1.51.0,>=1.14.0
29
+ Requires-Dist: google-genai>=1.56.0
30
30
  Requires-Dist: jieba>=0.42.1
31
31
  Requires-Dist: lark-oapi>=1.4.15
32
32
  Requires-Dist: lxml-html-clean>=0.4.2
@@ -8,7 +8,7 @@ astrbot/api/platform/__init__.py,sha256=HXvAy_KLtOJspoGVgDtLa7VjIZoF6WK3Puww55yy
8
8
  astrbot/api/provider/__init__.py,sha256=mJVcon0snjn_xYirk2hntwba6ymIYYC-ZKKmxvx-jok,379
9
9
  astrbot/api/star/__init__.py,sha256=OxgHGtWn3lEQGjb4twbpbWnRepUevPu7gxtDAkAsfhQ,250
10
10
  astrbot/api/util/__init__.py,sha256=L1O_mFEUDk8V4lEPsT5iiNbIiOVh7HbrNmitqzUWMZg,180
11
- astrbot/cli/__init__.py,sha256=9IzaVQP787fNLdw2IGD5hgGMK5Qp0cYcqMPlh3LI8Jk,22
11
+ astrbot/cli/__init__.py,sha256=eiNxh0tSyv9nut-H3lBLi2t5qqpCFRgVfedLjanNppI,23
12
12
  astrbot/cli/__main__.py,sha256=QobgMyFoLNTgI_OYddhGOZ9ZvQeBVjjz79mA2cC2OEU,1758
13
13
  astrbot/cli/commands/__init__.py,sha256=eAgppZQIqFO1ylQJFABeYrzQ0oZqPWjtE80aKIPB3ks,149
14
14
  astrbot/cli/commands/cmd_conf.py,sha256=6-YLicBt_zjWTzaVLUJ1VQLQPbDEPYACB9IVnN8Zvng,6330
@@ -20,13 +20,13 @@ astrbot/cli/utils/basic.py,sha256=-sjbBl0YfF-gt1jvkVyddBk-OWXIVpfG6JcF0DqOLZA,26
20
20
  astrbot/cli/utils/plugin.py,sha256=FdLVcDHH5dBpoBhLC6iWriUomp_5ONGlWNJnOG4ZOnM,8666
21
21
  astrbot/cli/utils/version_comparator.py,sha256=NVUmshfb5LU4a-S453rI7opqo0QtIHvlT1KUD3pdoVM,3462
22
22
  astrbot/core/__init__.py,sha256=zsaF9IeON4NaHk_Ktr0eB7xQEFC5tUZ4UJCesC3-KHM,1220
23
- astrbot/core/astr_agent_context.py,sha256=bgSbB-JgK_ncK-H2cxj-Ox0Gt_D8X4QmrgbalL9Hgzs,618
23
+ astrbot/core/astr_agent_context.py,sha256=bJnAm_CGzkhMnC99GA_j0Xwmi-OYoBPmgGanuS36DF4,637
24
24
  astrbot/core/astr_agent_hooks.py,sha256=QOMtBaamDRiylGIby5D5ApThk94Y_Dcy4gDnhPBHXKo,1073
25
- astrbot/core/astr_agent_run_util.py,sha256=56ZhPrC16E34dbQzxNl3yhbgrQaF2Az5sYllQ6o6aDc,3741
26
- astrbot/core/astr_agent_tool_exec.py,sha256=KnUP1q0k_pOWT3krw8leH53G7QTnapDjMlXH-LnI-xA,9005
25
+ astrbot/core/astr_agent_run_util.py,sha256=D_K2MOhAp0O8tQpAkrciiUhjbgDOo7zewMrXpzjdgsM,5534
26
+ astrbot/core/astr_agent_tool_exec.py,sha256=DpGqVhQzSwL2EN6wfBJrlcwH7b1jLkX5b_1eI5xqUB8,10258
27
27
  astrbot/core/astrbot_config_mgr.py,sha256=SUvusfo8Qk89eNpEmduWcXuczJ9g5TBH-VOV69ax28g,8950
28
28
  astrbot/core/conversation_mgr.py,sha256=GsirCeMBmgxyaOb3hYNleF_11yyFyAER5PtpM3IUvIQ,15765
29
- astrbot/core/core_lifecycle.py,sha256=ostfEUzhxaU1tancA6D88blXZ5gFcYj2OQoxWG1AWmo,12680
29
+ astrbot/core/core_lifecycle.py,sha256=nFuuNA0SJkCAeyoGZmG0LbBAhoq9j-_ajHq71s5tWAA,12796
30
30
  astrbot/core/event_bus.py,sha256=5Lg5L0UcwcJeL9NuX7DiTSRR7fr2IoaSbR6ECDKD4K8,2729
31
31
  astrbot/core/exceptions.py,sha256=GVCUgAjpvUHLL59MkJalFrSp_HbtliChu7XII_Px2WM,219
32
32
  astrbot/core/file_token_service.py,sha256=8X0Qyo-NPGhtxy6IcRsJg7Z2tx_ULPf_7OKvw-KBk6o,3317
@@ -41,14 +41,14 @@ astrbot/core/agent/agent.py,sha256=wquvKo18JcsJM56dwKyFFAoGhc5qLyQaeqdZ-LlZsWQ,3
41
41
  astrbot/core/agent/handoff.py,sha256=AxO0yx4Uscy0CO-3Q3fvDOfpfr3gUscLRplH7gH7-Lc,1194
42
42
  astrbot/core/agent/hooks.py,sha256=ooe9uUz7czlVt2W7jTDwkRbI-qDrOOXWjCaXtiAkrvE,830
43
43
  astrbot/core/agent/mcp_client.py,sha256=u52GPgpeZ1DCCVbI6x4kOGyodD_kweB8H1OgaVg-BZs,14085
44
- astrbot/core/agent/message.py,sha256=lSP67PoDzzcwcu_R0vcqVcTsnLmpn8SlV_Gkg3pzRRc,5931
45
- astrbot/core/agent/response.py,sha256=ddJABXu03Uw3b-YGTvRafFLJEGa40o93pIEz_CRTb4g,261
46
- astrbot/core/agent/run_context.py,sha256=h-teucYKYi5o4oTbAsIlkaa04yn2OSNC-ahIF2n6cwE,719
44
+ astrbot/core/agent/message.py,sha256=AdpEkpbZUmrCPhVZCGPTTjkR6NH2p4NAqgaQ9MJRWjw,5939
45
+ astrbot/core/agent/response.py,sha256=g1aw5zE3Y_PsU7z1SVrNTJRlGnqdyuqG5-49LewsL2E,859
46
+ astrbot/core/agent/run_context.py,sha256=PJYgGlq_m6eBo1ftHE0M37UzOwTcXJNeKgKri1NC2Hk,677
47
47
  astrbot/core/agent/tool.py,sha256=ITSAmYBp2y-QPWdZkc-KXof3UIHjQ2rmweyUPuYykFA,9440
48
48
  astrbot/core/agent/tool_executor.py,sha256=8GGgVB_JaKGVLQUG1epeL-lvKMqgfQ7mJaOPnVytnXo,438
49
49
  astrbot/core/agent/runners/__init__.py,sha256=KwR34OKGVSQpJ_MaGVP_MX5L1SZ4oU-lv4GuMbSF5Ys,65
50
50
  astrbot/core/agent/runners/base.py,sha256=OHMt15x1C3O_F3EJI2Nb_3hwggGUkJHuPWWCa1kHX9o,1885
51
- astrbot/core/agent/runners/tool_loop_agent_runner.py,sha256=0DkkaaQPvwU7fOfeiuPodJpV5FKaXNQnNAFsy_gbsCo,16470
51
+ astrbot/core/agent/runners/tool_loop_agent_runner.py,sha256=ZXSvTb9SoZ98VfVzneL3pDpoRObasGSU8mTCJB9p91I,19520
52
52
  astrbot/core/agent/runners/coze/coze_agent_runner.py,sha256=bc2GImNsBTyXuotl_ohKYiNqws5Dkcms_xmIoUtDJMM,13846
53
53
  astrbot/core/agent/runners/coze/coze_api_client.py,sha256=0k8pQsFsbjKdF-jkY91qZWsC8YSaSmwC98TMTK-zqw0,10853
54
54
  astrbot/core/agent/runners/dashscope/dashscope_agent_runner.py,sha256=xr3otT0o6kHEy_sWjUv4xh-KmES3fjlowIPrtcKYiVI,13339
@@ -56,11 +56,11 @@ astrbot/core/agent/runners/dify/dify_agent_runner.py,sha256=LYwpjOcBWf3XlwNVzrDv
56
56
  astrbot/core/agent/runners/dify/dify_api_client.py,sha256=OXukDVgNx3VmYw6OCzjXyP8JmDWEFuy81sD9XnC4VRo,6530
57
57
  astrbot/core/config/__init__.py,sha256=vZjtpC7vr-IvBgSUtbS04C0wpulmCG5tPmcEP1WYE_4,172
58
58
  astrbot/core/config/astrbot_config.py,sha256=6bUTnMCOyaS8s6ELsWctDfUFTB53fKJQNu272dZXkdU,6347
59
- astrbot/core/config/default.py,sha256=NQMP2wFXyfRxyN_1JO5CQGPMQmywrX3SbSg_p1wso4k,152197
59
+ astrbot/core/config/default.py,sha256=Tp0ZIzd6HwY41CJVRUY2B2Xt6YLlLytC5tu-lAPMvOc,147674
60
60
  astrbot/core/config/i18n_utils.py,sha256=HJn_0XeeVS9ryCBelYfnc0nEn10LlX702fcSSFrF1J8,3879
61
- astrbot/core/db/__init__.py,sha256=Z3NMgMbxvxZyf5hroO9Kvn2TPKEoL2X21CTW96gzGLE,11200
62
- astrbot/core/db/po.py,sha256=KIvtPCjf1i9IGOWXyhNKvxzEXmsfopfa7G0UaG98Ams,9313
63
- astrbot/core/db/sqlite.py,sha256=bXXyA0RwgZTlwEZ6Uh4KSGMUyA3jamvkLVVcbF5K_ow,32274
61
+ astrbot/core/db/__init__.py,sha256=OnvNaC76hYp28Bq9zkFXMl19zn7w-FC1zxyLgsemGvU,13400
62
+ astrbot/core/db/po.py,sha256=eoI4sjpFb9CwRy6_Gf6-zHVSka6-oJr0LA4qcepqHzU,11804
63
+ astrbot/core/db/sqlite.py,sha256=H9xQgHOAPSFzC-QzgtdKPAs8ruTqKb1p-BspTTYZ_qw,40714
64
64
  astrbot/core/db/migration/helper.py,sha256=Kogq0FLJdvWTDuAVWLT1PlTGGJcWkDMWO37KM-G8lTk,2087
65
65
  astrbot/core/db/migration/migra_3_to_4.py,sha256=AZkywKcS2aKo81k04uD2qxHsPqKWRfVz9smEnHDxWqE,15343
66
66
  astrbot/core/db/migration/migra_45_to_46.py,sha256=wQk8NUiCNgmpSczO9U-OW6mMRHPWtJDlKuTCOGF8-WY,1560
@@ -94,7 +94,7 @@ astrbot/core/knowledge_base/retrieval/hit_stopwords.txt,sha256=8LikiRxpjLdAfJYyO
94
94
  astrbot/core/knowledge_base/retrieval/manager.py,sha256=1kjjcBco_TdfZ1g6mEp7lb9AVkHr1dfBHVqgWVAiBsw,8560
95
95
  astrbot/core/knowledge_base/retrieval/rank_fusion.py,sha256=OeE4dSAsmyCt_ssAnMf7CQ4tQHlBFxjePgXVf_YwHmY,4441
96
96
  astrbot/core/knowledge_base/retrieval/sparse_retriever.py,sha256=sOCZ9I636j3P5WGxjKXVu7Amp-2DB9jQVQn96Ff7asI,3815
97
- astrbot/core/message/components.py,sha256=yePOJ9Gbidj4TVb5jHMIEJOCJPtFk9IDvIsHW8pNT5M,25918
97
+ astrbot/core/message/components.py,sha256=TsY8_cGXzdloB5UB8eNZ2ekfX7MIxC__k1Fk78DmZWw,25897
98
98
  astrbot/core/message/message_event_result.py,sha256=1jC6NLeO7lzcTCi2NO28057sWpTsDabICkmGsiggyhk,7204
99
99
  astrbot/core/pipeline/__init__.py,sha256=nEepE3tnYYo0EYnzdLLyrp_k7XYg0LpQ3W6QuEeGL6k,1461
100
100
  astrbot/core/pipeline/context.py,sha256=jfEyX9i34XM7uqeqqK6rKRDgBXfsV9UHgRpf9Wj_hnI,505
@@ -111,10 +111,10 @@ astrbot/core/pipeline/process_stage/stage.py,sha256=tOg6HYGVU1GoY921YBYVO1MTM7a5
111
111
  astrbot/core/pipeline/process_stage/utils.py,sha256=q4V5G0PZD5b5mPh1lM-6w79LKGpp7RR7-PqYFhWpopM,4061
112
112
  astrbot/core/pipeline/process_stage/method/agent_request.py,sha256=GlGrGCsCASC4a3PpG6Oc1907aLdl_PrUMXrFiEiEEzc,2043
113
113
  astrbot/core/pipeline/process_stage/method/star_request.py,sha256=C-PTq_Wpq4QMS2ecfRDCcDSX3rYyldfsAN-jAaEEb-w,2430
114
- astrbot/core/pipeline/process_stage/method/agent_sub_stages/internal.py,sha256=sDU4b85nV7LswGngFeYOG9VUv-BRR7gufy00ptU_Utg,21175
114
+ astrbot/core/pipeline/process_stage/method/agent_sub_stages/internal.py,sha256=RSeEqvJEV33RH6OGHEdDaCYyv6zt7RosG4j-hVdbjnc,21263
115
115
  astrbot/core/pipeline/process_stage/method/agent_sub_stages/third_party.py,sha256=LNBRItSpZn0MLP4fyHQ_3gUJ8lnmCwuPlqnZDVFLI6Q,7332
116
116
  astrbot/core/pipeline/rate_limit_check/stage.py,sha256=9EVJ0zYtxATFsj7ADyWDYcSGBRqmrMiKWp1kkD9LONI,3962
117
- astrbot/core/pipeline/respond/stage.py,sha256=G3GgABvDmN-ClrDbFVOFsaeENWnptOr0xzX0NxmXbjY,11038
117
+ astrbot/core/pipeline/respond/stage.py,sha256=RIYGXTG-XvBhgRqaHyJYWlsZjskS9pgV-2jm5o956ho,11042
118
118
  astrbot/core/pipeline/result_decorate/stage.py,sha256=Ml7_E5P2YpGLHRc9aIBbL2gylLNsRuQqwxejEgPaIoo,17318
119
119
  astrbot/core/pipeline/session_status_check/stage.py,sha256=cFp6MMdFzeURjmW5LCrzsTGD_hnJN5jhDh_zoPbnFAw,1291
120
120
  astrbot/core/pipeline/waking_check/stage.py,sha256=u4s-UACcyFhydAbFKutvh1T4Aw6wdUyI_OU2hgCLiao,8650
@@ -154,9 +154,9 @@ astrbot/core/platform/sources/slack/client.py,sha256=JkdC3e12I08cnZv577krfIOlJWW
154
154
  astrbot/core/platform/sources/slack/slack_adapter.py,sha256=ZUzAyQsb1ZrgWhZz9hNzoGCZJuTAb_eOW_zk3E08rdI,17260
155
155
  astrbot/core/platform/sources/slack/slack_event.py,sha256=Vb4IHuTsRi22PxxjUZ6TKfDg0DpiYBMxAeV8mhMPBTE,8984
156
156
  astrbot/core/platform/sources/telegram/tg_adapter.py,sha256=juXvp5iiX39oDs9WoK6SblOtQV1ovb3YJIT-pIRL-bg,16099
157
- astrbot/core/platform/sources/telegram/tg_event.py,sha256=h70dObgwEPw_5NRHyMA9G06VOOX5v2x_ZX9NndNfMWQ,11327
157
+ astrbot/core/platform/sources/telegram/tg_event.py,sha256=urZ7qMLXcygx1TQxVC04bVS1Z1_1Yls-5qJqOFHrROA,11782
158
158
  astrbot/core/platform/sources/webchat/webchat_adapter.py,sha256=CjMpKAqs1DbMhD4irkHS2TwpaYaoKFhLXxR_cfuzjwg,8738
159
- astrbot/core/platform/sources/webchat/webchat_event.py,sha256=P_nbvvY6rdEAFuFEonV_9zTEELrcJT-CAVtns7GvUAA,5491
159
+ astrbot/core/platform/sources/webchat/webchat_event.py,sha256=ZQ6KABOxYIlRsAFzDcVDBI_c7WJkJNK-Iuwuw-yPMJQ,5690
160
160
  astrbot/core/platform/sources/webchat/webchat_queue_mgr.py,sha256=2P0hQRNn7tMs9O6MLQ1GkJSSKz7R5Q8k_0JxEltSKLM,1364
161
161
  astrbot/core/platform/sources/wechatpadpro/wechatpadpro_adapter.py,sha256=UKXfOwOGW2CtVdx-o4x1VnLXOGSwKgQsUUtQBifM2rE,41511
162
162
  astrbot/core/platform/sources/wechatpadpro/wechatpadpro_message_event.py,sha256=pdvKtziixnvNrrk3fhJtUZrfX33LY0X9bV5GPmn4ITA,6574
@@ -178,26 +178,26 @@ astrbot/core/platform/sources/weixin_official_account/weixin_offacc_adapter.py,s
178
178
  astrbot/core/platform/sources/weixin_official_account/weixin_offacc_event.py,sha256=tGfu6DNsqRCrr8P83VVep3Sh035-esKHTXriDsIOdJA,7233
179
179
  astrbot/core/provider/__init__.py,sha256=0NVyKtTapnrUy0lkXVYWyM5KetwtDwXmTwBzqLG0MA4,142
180
180
  astrbot/core/provider/entites.py,sha256=0eYiQ-xttqFTb3WZR2b1oemdZy3d5sevELvj9FixJtE,388
181
- astrbot/core/provider/entities.py,sha256=AwD8KOG8dSlfQXSc1n8gx4xv2vW4niZDiaMoO1Y_dOw,12533
181
+ astrbot/core/provider/entities.py,sha256=TxlT1trG3hpD-uS023gmJfTn8jINvwmPYdfkwTJzg1M,13980
182
182
  astrbot/core/provider/func_tool_manager.py,sha256=2pBKHAuj-6rITOipHmH8hrs8D4N2bAUx5TcJfUVYtsk,21241
183
- astrbot/core/provider/manager.py,sha256=NTMcDFqZPRBh-nI7gYkoQdeOovn_Rv4RlwV0QaaIVJQ,25102
183
+ astrbot/core/provider/manager.py,sha256=ymmjvlOjhEEF6Jlmfg_Z8GSwYWeaj6EO0BzRJoGJ_Pg,29625
184
184
  astrbot/core/provider/provider.py,sha256=Jc8oXoj2-W1LP9nEung63IHGVN8LYsaCPb5Gc6jYfRE,11954
185
185
  astrbot/core/provider/register.py,sha256=0WMYrT9vbRjeq-72HD0oRT45kJmeKA96UgSItpTJbX8,1904
186
- astrbot/core/provider/sources/anthropic_source.py,sha256=oSd7I8pCGwrmTKMQuxVza0vRNqgQw7nqhMxuZnc9ro0,15586
186
+ astrbot/core/provider/sources/anthropic_source.py,sha256=3LoIq5BegBC7tlBbkLrhKAx2XVo4yjlVQH_fBI1mSJU,17246
187
187
  astrbot/core/provider/sources/azure_tts_source.py,sha256=m6zbwJGSddyTlhdD80CxWtWWUISmTSx8CboUbYCUKdM,10086
188
188
  astrbot/core/provider/sources/bailian_rerank_source.py,sha256=fsfVqzYMaZHrsPDdJlNRKSnYOYRNwmzl6OuSo-lkF2s,7587
189
189
  astrbot/core/provider/sources/dashscope_tts.py,sha256=-qBMwbIt_QSmWCT_uPAxrXSYuEbYJZ3WzjE_FhMhxgg,5629
190
190
  astrbot/core/provider/sources/edge_tts_source.py,sha256=dsf6YtSGzCJvas3BqBwHSn8vlMgQ_vgD9NEwngqDlEo,4690
191
191
  astrbot/core/provider/sources/fishaudio_tts_api_source.py,sha256=z5yJuc47iky31N0Za3Li7uwMP15N1gsKJkV9ybIbKew,5556
192
192
  astrbot/core/provider/sources/gemini_embedding_source.py,sha256=bj4iXnMyONTyUBmBFeezPcBpjtfX_UBjMrbwMFyCis8,2607
193
- astrbot/core/provider/sources/gemini_source.py,sha256=_DYVpszBGM-rpNowUDllFPOgNmn2gXCqf5DA4vFGKl4,31525
193
+ astrbot/core/provider/sources/gemini_source.py,sha256=o4vrlq6Pp7hcPJpVq4ppx1IOmG_1JPJNrwqt923QlMw,33916
194
194
  astrbot/core/provider/sources/gemini_tts_source.py,sha256=6LJIT2aTjoZaMszjYRzDu38prsO9G5Xg7SzJmQb2TzE,2880
195
195
  astrbot/core/provider/sources/groq_source.py,sha256=NqmiQn37mrMsaTyGX25eNzMpIgkCifY-5TJO8DFzHaA,456
196
196
  astrbot/core/provider/sources/gsv_selfhosted_source.py,sha256=RYQgwCc67N7RWPaODN4sSLJZn6o5gpgk_jF_KaRnD0M,5942
197
197
  astrbot/core/provider/sources/gsvi_tts_source.py,sha256=nGGctfkzrAeTofAvB2b_VNTYHW44SzyO12B-mBWb1rY,2011
198
198
  astrbot/core/provider/sources/minimax_tts_api_source.py,sha256=oQoRYTU-_MrQqCkdtIF4AEa1HSgtQJgD3prk7Yp7b8Q,5925
199
199
  astrbot/core/provider/sources/openai_embedding_source.py,sha256=TMUU7J-uo3KrERr1ZKTjoNK9byEm-IU0UZK5YHM3WpM,1614
200
- astrbot/core/provider/sources/openai_source.py,sha256=0AmZMIkJy7C_uVsObEPDEoHuxO-fAYpjy6dreCFIvOg,24454
200
+ astrbot/core/provider/sources/openai_source.py,sha256=8Pb7RMRfY8PGjyYiu1_kXhRyv-WHHRFsII2kyfWShxU,25055
201
201
  astrbot/core/provider/sources/openai_tts_api_source.py,sha256=DVviGQdBpCk6lW3LjnJHzwZr9wGkXRDNwfoQ3FYFVcs,1667
202
202
  astrbot/core/provider/sources/sensevoice_selfhosted_source.py,sha256=99I6OfSUDJDgXCKK__QNk8EaCbX3TElGIbjBY6VJkWg,3900
203
203
  astrbot/core/provider/sources/vllm_rerank_source.py,sha256=-aXaIPRIgzzGDA7ev4Nuq4FTBM_qwMPgc5SpMtIWTKI,2355
@@ -209,18 +209,19 @@ astrbot/core/provider/sources/xinference_stt_provider.py,sha256=DPEc7cVo2KXKGIgb
209
209
  astrbot/core/provider/sources/zhipu_source.py,sha256=oOCPXGsR9PLWOuu3h8RSVNRw1Qy2Se6dwmeFR3zk3GM,612
210
210
  astrbot/core/star/README.md,sha256=LXxqxp3xv_oejO8ocBPOrbmLe0WB4feu43fYDNddHTQ,161
211
211
  astrbot/core/star/__init__.py,sha256=iTlnjfEGJGy--78PhG7F1cKj9VwJVcDNFtGomX8hRO0,2229
212
+ astrbot/core/star/command_management.py,sha256=uDCntlIwW3Pk5DSEHTmnW7SrqpLXgfM2BxmzyCuXpdk,16305
212
213
  astrbot/core/star/config.py,sha256=FgrBz_fUrBU0-9BxD8enX-xGNGVbFxst3UT10sboYNA,3531
213
- astrbot/core/star/context.py,sha256=voL-U8XAm-yfQWW_62L5BE1wOn3qaCDstGqvpnWTk9g,21020
214
+ astrbot/core/star/context.py,sha256=zudyvlcVJb5zO7pAh_TGQOUQ3q8JSoKM1wldcciXypw,21234
214
215
  astrbot/core/star/session_llm_manager.py,sha256=W_ZgNDyUPjMQGccqnK83hFjZvSCv5BLQeyv5fHvRLUw,5307
215
216
  astrbot/core/star/session_plugin_manager.py,sha256=8sEzOxf_Gq-dwK_S-4rwocAFsYzx7Yi4FJuMRttPTac,2830
216
217
  astrbot/core/star/star.py,sha256=Wkf81teNZ27JE_JrENuP0SrpFc2uFYRxHQsWo8R9-No,1826
217
- astrbot/core/star/star_handler.py,sha256=LQqM6szmedro_TtAMJRFt3vn8uQtiOM25Af5PmlOHKs,7529
218
- astrbot/core/star/star_manager.py,sha256=kOxdlxRoMtQRSL_tTtiViOdLYFbKc92UAUWRQtFh-qI,40917
218
+ astrbot/core/star/star_handler.py,sha256=x95UxHomijT6AamIlpij9Q2PweOw0jXPciFlS5IpPVI,7616
219
+ astrbot/core/star/star_manager.py,sha256=1bf7eOBXsMbgVl9_LRDX0RPpOf_JetdjysBEcV5sDus,41007
219
220
  astrbot/core/star/star_tools.py,sha256=4q8emjyTbyIsVXHmzT88kX9uK28rIhlHc0re40Xm6m0,10847
220
221
  astrbot/core/star/updator.py,sha256=4pl42Ks_yjJ3kydx3BwOqocAczhhFBrRnxhBKh4_0Eo,3106
221
222
  astrbot/core/star/filter/__init__.py,sha256=bC6eHXh0CjzHmn-LTvsanWReoGIPhhMnBSrMLh97hZQ,470
222
- astrbot/core/star/filter/command.py,sha256=iMylbc6Jb7UHxd8xB8rFuteW0dfVbPjYalA_BOPMTVw,8857
223
- astrbot/core/star/filter/command_group.py,sha256=RAtImtR5-flVzbAikaCZtJd-2R0NS6_JDabntac_VU8,5002
223
+ astrbot/core/star/filter/command.py,sha256=U-ZANHFIeSm4Zilx0KxoXdfkd1Y-_DKSqo5ZxoGU0mk,8908
224
+ astrbot/core/star/filter/command_group.py,sha256=JC_cMkOe-DCBDwqNGPDi_hDb0V8t_l4gqNRnkAb1CKA,5049
224
225
  astrbot/core/star/filter/custom_filter.py,sha256=vyMqtRoiLx3CtTHLqhqamKZSeSkoj2GnW4YMQ1ihbC8,2241
225
226
  astrbot/core/star/filter/event_message_type.py,sha256=DMQy1463oTcwZbIZwbr4uxH7wIVkzsQ6bSe4aRrYn2M,1164
226
227
  astrbot/core/star/filter/permission.py,sha256=BYO9kd0coAJ4ayy0YOvTb4b35mavBSCKqR4mjm47jjQ,917
@@ -233,9 +234,10 @@ astrbot/core/utils/astrbot_path.py,sha256=tQFD55EFwGbpR1tpoJADpdElPS5iTFAZVLIxCV
233
234
  astrbot/core/utils/command_parser.py,sha256=Cwd4zzyKEoC-er0a-9WZ5n2g4F8eH9p6BHxD96gjaVM,617
234
235
  astrbot/core/utils/file_extract.py,sha256=I9jgcaPYK74-BwuI18oUpoupnPYINeP3QFD3kFodqBA,697
235
236
  astrbot/core/utils/io.py,sha256=WUgM6V9_a-hi3CRKS9a-RFRAkZ5yu0M3WgpbR3-3tCw,10817
237
+ astrbot/core/utils/llm_metadata.py,sha256=n1KUfIFeDs7f3ZzeqfWGTtSvZHP1OoFAx3Sr_fpoiKg,2152
236
238
  astrbot/core/utils/log_pipe.py,sha256=jphGRAdmzhBVRKdpJwOP1AtpbGlun9v7Cr50kHZtlyo,883
237
239
  astrbot/core/utils/metrics.py,sha256=CxEkdV2gJai0mw1IbL4DJ81WiQ5mY7v9M_-T6UtRJDs,2427
238
- astrbot/core/utils/migra_helper.py,sha256=pnv3VvDD_9gj1nKjroVQYUeePpvyd0DXJz9CoJvG_Og,2763
240
+ astrbot/core/utils/migra_helper.py,sha256=NmxAdSGcXZZxgVThbGIHTbtRG4zPYIj5Xzog4l1_ou4,6255
239
241
  astrbot/core/utils/path_util.py,sha256=FXx9oBrsL-dcq-6OlmiSwk2ygqJ9vMmkCBEi2sL50f8,3050
240
242
  astrbot/core/utils/pip_installer.py,sha256=H8Bk5QKh-GBBRvGp7sDKDkh6A1UDy4xU9AtUL10B6Jg,1969
241
243
  astrbot/core/utils/plugin_kv_store.py,sha256=L_XGux1K2a3fSxqukTg1XN0pq7AosZNeXPpXlAk5eWE,854
@@ -252,12 +254,13 @@ astrbot/core/utils/t2i/renderer.py,sha256=3IH-eLxOCIpEPHjXA1GF-ylGGyKz4GlMIbkjfv
252
254
  astrbot/core/utils/t2i/template_manager.py,sha256=Pfht7PZCdVteF93lja1LZQcUFNeCOKLs6EFx9XMeYKQ,4520
253
255
  astrbot/core/utils/t2i/template/astrbot_powershell.html,sha256=UcjetoIJG3pJRUHMDOor3Nhj7FFmVXXpkySkpXXztO4,4943
254
256
  astrbot/core/utils/t2i/template/base.html,sha256=fQvq4I4lrlH2s_jwAzj62lWeC4g87xXsYJMJ0XunCPA,6619
255
- astrbot/dashboard/server.py,sha256=oUeejzlq3CtWthxTlTa1kO3EjBxswRLXcZbZUV3Sc5c,9692
257
+ astrbot/dashboard/server.py,sha256=HfmWHj4aqYcTT1re0vD4Fw6BHedg4bcfqpnWiisFWko,9748
256
258
  astrbot/dashboard/utils.py,sha256=KrAv0lnPaVR0bx8yevT1CLGbSNsJizlfkKkPEtVVANI,5355
257
- astrbot/dashboard/routes/__init__.py,sha256=MAQlYoPi-AwUftdp1Ixg9E6im6Af5eruuZ525wtj8G0,840
259
+ astrbot/dashboard/routes/__init__.py,sha256=57ZYHYQfNI-YAiA8K9m2tRJcHzMKcZ02Vu-A_eD0HUE,894
258
260
  astrbot/dashboard/routes/auth.py,sha256=rYkvt3MpCY9BhWjG0DUoX3YaBkJT1Id7M2pKqTmXbvo,2946
259
- astrbot/dashboard/routes/chat.py,sha256=XcXuGfLZvjUeYCFPosoMpIAaecuvq48s8aFHrT9P2qc,24822
260
- astrbot/dashboard/routes/config.py,sha256=jwrlP23zbTpnrMhQKrTfBjb1NLEln4tDYNExRP0BQeM,33438
261
+ astrbot/dashboard/routes/chat.py,sha256=ntQrgrnOTIep_9Ycb1DCZjZBJPtlIJUO2YnTvC1GXFQ,27120
262
+ astrbot/dashboard/routes/command.py,sha256=OLrDDUAE5zpxZMRJ3_IGe-6xFEpPwcXcd-EJ60e9OHI,2862
263
+ astrbot/dashboard/routes/config.py,sha256=v2CQ6rPb1VAyrj9bJNr8g0GoFlzm3qeEuXs2P6kIwQw,42903
261
264
  astrbot/dashboard/routes/conversation.py,sha256=TWGY7BJ9QfmbxurAieBrbMmCi4_Ua2klxsAUlSRXbng,14302
262
265
  astrbot/dashboard/routes/file.py,sha256=gULvXP9PnVOQlyv_PCEzZQE5ptnGQEjFPvwOLxdVgb4,708
263
266
  astrbot/dashboard/routes/knowledge_base.py,sha256=GZ_iDYV2uXXzvGMF-4VJ8hZxLdHIWSSfg_3wlWwsizA,46081
@@ -267,13 +270,13 @@ astrbot/dashboard/routes/platform.py,sha256=JfQzzmWSnahKjke3lBUeXo7Auzz_nTB0mUv0
267
270
  astrbot/dashboard/routes/plugin.py,sha256=CvTUNOaBBjgk7q58bJ4El7BxkUopzPEdqxFnE2LC2UY,25436
268
271
  astrbot/dashboard/routes/route.py,sha256=vhNIWFhic1eVHRx7ej8OUmmcNDA3FPaRPdXO_-SS4K4,1572
269
272
  astrbot/dashboard/routes/session_management.py,sha256=3h-zlkiAN4MQQLETGORNoWDtnGCSbqxnK2mTu6jMeCY,14998
270
- astrbot/dashboard/routes/stat.py,sha256=OgNM491WFuDSAQbbJUGl4_UsqrQNefOGMMRIPLLoVBQ,6780
273
+ astrbot/dashboard/routes/stat.py,sha256=8t1VjuSjk1IomUpOS9EFLIqh5484TSIZX5VYGVTbNyc,11028
271
274
  astrbot/dashboard/routes/static_file.py,sha256=7KnNcOb1BVqSTft114LhGsDkfg69X2jHEm0tOK0kW0Y,1169
272
275
  astrbot/dashboard/routes/t2i.py,sha256=F6smxdL99MF7cRw3hqS6-2GErw8Zhsv0V0mfBUeEk-c,8931
273
- astrbot/dashboard/routes/tools.py,sha256=YsVFrwVIhxAI-Ikme7YPrHVnPVTkJ1IaH7n6ciREjdE,14663
276
+ astrbot/dashboard/routes/tools.py,sha256=mMwVFw_VOlpqy_WZg1A-ddGtYa5L5QLWYawl37PT0-c,15354
274
277
  astrbot/dashboard/routes/update.py,sha256=qXiqQ_dbqRVftOzGgCQrvK8-qopVK6zKhhVVJ9SK26U,6648
275
- astrbot-4.9.2.dist-info/METADATA,sha256=ak-jLSJ2et3ozqBoBddq815p72DS512c83VQHSmR94E,11932
276
- astrbot-4.9.2.dist-info/WHEEL,sha256=WLgqFyCfm_KASv4WHyYy0P3pM_m7J5L9k2skdKLirC8,87
277
- astrbot-4.9.2.dist-info/entry_points.txt,sha256=OEF09YmhBWYuViXrvTLLpstF4ccmNwDL8r7nnFD0pfI,53
278
- astrbot-4.9.2.dist-info/licenses/LICENSE,sha256=zPfQj5Mq8-gThIiBcxETr7t8gND9bZWOjTGQAr80TQI,34500
279
- astrbot-4.9.2.dist-info/RECORD,,
278
+ astrbot-4.10.0.dist-info/METADATA,sha256=ddedpSBaSPHDpZ79M_9z5uLh9BZIVrKMT0AOQZ7xZOE,11925
279
+ astrbot-4.10.0.dist-info/WHEEL,sha256=WLgqFyCfm_KASv4WHyYy0P3pM_m7J5L9k2skdKLirC8,87
280
+ astrbot-4.10.0.dist-info/entry_points.txt,sha256=OEF09YmhBWYuViXrvTLLpstF4ccmNwDL8r7nnFD0pfI,53
281
+ astrbot-4.10.0.dist-info/licenses/LICENSE,sha256=zPfQj5Mq8-gThIiBcxETr7t8gND9bZWOjTGQAr80TQI,34500
282
+ astrbot-4.10.0.dist-info/RECORD,,