AstrBot 4.9.0__py3-none-any.whl → 4.9.1__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.
- astrbot/cli/__init__.py +1 -1
- astrbot/core/config/default.py +14 -1
- astrbot/core/config/i18n_utils.py +1 -0
- astrbot/core/pipeline/respond/stage.py +4 -0
- astrbot/core/pipeline/result_decorate/stage.py +21 -1
- astrbot/core/platform/sources/lark/lark_adapter.py +6 -1
- astrbot/dashboard/routes/conversation.py +91 -1
- astrbot/dashboard/routes/plugin.py +5 -1
- {astrbot-4.9.0.dist-info → astrbot-4.9.1.dist-info}/METADATA +7 -1
- {astrbot-4.9.0.dist-info → astrbot-4.9.1.dist-info}/RECORD +13 -13
- {astrbot-4.9.0.dist-info → astrbot-4.9.1.dist-info}/WHEEL +0 -0
- {astrbot-4.9.0.dist-info → astrbot-4.9.1.dist-info}/entry_points.txt +0 -0
- {astrbot-4.9.0.dist-info → astrbot-4.9.1.dist-info}/licenses/LICENSE +0 -0
astrbot/cli/__init__.py
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
__version__ = "4.9.
|
|
1
|
+
__version__ = "4.9.1"
|
astrbot/core/config/default.py
CHANGED
|
@@ -4,7 +4,7 @@ import os
|
|
|
4
4
|
|
|
5
5
|
from astrbot.core.utils.astrbot_path import get_astrbot_data_path
|
|
6
6
|
|
|
7
|
-
VERSION = "4.9.
|
|
7
|
+
VERSION = "4.9.1"
|
|
8
8
|
DB_PATH = os.path.join(get_astrbot_data_path(), "data_v4.db")
|
|
9
9
|
|
|
10
10
|
WEBHOOK_SUPPORTED_PLATFORMS = [
|
|
@@ -108,6 +108,7 @@ DEFAULT_CONFIG = {
|
|
|
108
108
|
"provider_id": "",
|
|
109
109
|
"dual_output": False,
|
|
110
110
|
"use_file_service": False,
|
|
111
|
+
"trigger_probability": 1.0,
|
|
111
112
|
},
|
|
112
113
|
"provider_ltm_settings": {
|
|
113
114
|
"group_icl_enable": False,
|
|
@@ -2209,6 +2210,9 @@ CONFIG_METADATA_2 = {
|
|
|
2209
2210
|
"use_file_service": {
|
|
2210
2211
|
"type": "bool",
|
|
2211
2212
|
},
|
|
2213
|
+
"trigger_probability": {
|
|
2214
|
+
"type": "float",
|
|
2215
|
+
},
|
|
2212
2216
|
},
|
|
2213
2217
|
},
|
|
2214
2218
|
"provider_ltm_settings": {
|
|
@@ -2419,6 +2423,14 @@ CONFIG_METADATA_3 = {
|
|
|
2419
2423
|
"provider_tts_settings.enable": True,
|
|
2420
2424
|
},
|
|
2421
2425
|
},
|
|
2426
|
+
"provider_tts_settings.trigger_probability": {
|
|
2427
|
+
"description": "TTS 触发概率",
|
|
2428
|
+
"type": "float",
|
|
2429
|
+
"slider": {"min": 0, "max": 1, "step": 0.05},
|
|
2430
|
+
"condition": {
|
|
2431
|
+
"provider_tts_settings.enable": True,
|
|
2432
|
+
},
|
|
2433
|
+
},
|
|
2422
2434
|
"provider_settings.image_caption_prompt": {
|
|
2423
2435
|
"description": "图片转述提示词",
|
|
2424
2436
|
"type": "text",
|
|
@@ -2986,6 +2998,7 @@ CONFIG_METADATA_3 = {
|
|
|
2986
2998
|
"description": "回复概率",
|
|
2987
2999
|
"type": "float",
|
|
2988
3000
|
"hint": "0.0-1.0 之间的数值",
|
|
3001
|
+
"slider": {"min": 0, "max": 1, "step": 0.05},
|
|
2989
3002
|
"condition": {
|
|
2990
3003
|
"provider_ltm_settings.active_reply.enable": True,
|
|
2991
3004
|
},
|
|
@@ -158,7 +158,11 @@ class RespondStage(Stage):
|
|
|
158
158
|
result = event.get_result()
|
|
159
159
|
if result is None:
|
|
160
160
|
return
|
|
161
|
+
if event.get_extra("_streaming_finished", False):
|
|
162
|
+
# prevent some plugin make result content type to LLM_RESULT after streaming finished, lead to send again
|
|
163
|
+
return
|
|
161
164
|
if result.result_content_type == ResultContentType.STREAMING_FINISH:
|
|
165
|
+
event.set_extra("_streaming_finished", True)
|
|
162
166
|
return
|
|
163
167
|
|
|
164
168
|
logger.info(
|
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
import random
|
|
1
2
|
import re
|
|
2
3
|
import time
|
|
3
4
|
import traceback
|
|
@@ -42,6 +43,18 @@ class ResultDecorateStage(Stage):
|
|
|
42
43
|
"forward_threshold"
|
|
43
44
|
]
|
|
44
45
|
|
|
46
|
+
trigger_probability = ctx.astrbot_config["provider_tts_settings"].get(
|
|
47
|
+
"trigger_probability",
|
|
48
|
+
1,
|
|
49
|
+
)
|
|
50
|
+
try:
|
|
51
|
+
self.tts_trigger_probability = max(
|
|
52
|
+
0.0,
|
|
53
|
+
min(float(trigger_probability), 1.0),
|
|
54
|
+
)
|
|
55
|
+
except (TypeError, ValueError):
|
|
56
|
+
self.tts_trigger_probability = 1.0
|
|
57
|
+
|
|
45
58
|
# 分段回复
|
|
46
59
|
self.words_count_threshold = int(
|
|
47
60
|
ctx.astrbot_config["platform_settings"]["segmented_reply"][
|
|
@@ -246,7 +259,14 @@ class ResultDecorateStage(Stage):
|
|
|
246
259
|
and result.is_llm_result()
|
|
247
260
|
and SessionServiceManager.should_process_tts_request(event)
|
|
248
261
|
):
|
|
249
|
-
|
|
262
|
+
should_tts = self.tts_trigger_probability >= 1.0 or (
|
|
263
|
+
self.tts_trigger_probability > 0.0
|
|
264
|
+
and random.random() <= self.tts_trigger_probability
|
|
265
|
+
)
|
|
266
|
+
|
|
267
|
+
if not should_tts:
|
|
268
|
+
logger.debug("跳过 TTS:触发概率未命中。")
|
|
269
|
+
elif not tts_provider:
|
|
250
270
|
logger.warning(
|
|
251
271
|
f"会话 {event.unified_msg_origin} 未配置文本转语音模型。",
|
|
252
272
|
)
|
|
@@ -81,7 +81,12 @@ class LarkPlatformAdapter(Platform):
|
|
|
81
81
|
)
|
|
82
82
|
|
|
83
83
|
self.lark_api = (
|
|
84
|
-
lark.Client.builder()
|
|
84
|
+
lark.Client.builder()
|
|
85
|
+
.app_id(self.appid)
|
|
86
|
+
.app_secret(self.appsecret)
|
|
87
|
+
.log_level(lark.LogLevel.ERROR)
|
|
88
|
+
.domain(self.domain)
|
|
89
|
+
.build()
|
|
85
90
|
)
|
|
86
91
|
|
|
87
92
|
self.webhook_server = None
|
|
@@ -1,7 +1,9 @@
|
|
|
1
1
|
import json
|
|
2
2
|
import traceback
|
|
3
|
+
from datetime import datetime
|
|
4
|
+
from io import BytesIO
|
|
3
5
|
|
|
4
|
-
from quart import request
|
|
6
|
+
from quart import request, send_file
|
|
5
7
|
|
|
6
8
|
from astrbot.core import logger
|
|
7
9
|
from astrbot.core.core_lifecycle import AstrBotCoreLifecycle
|
|
@@ -30,6 +32,7 @@ class ConversationRoute(Route):
|
|
|
30
32
|
"POST",
|
|
31
33
|
self.update_history,
|
|
32
34
|
),
|
|
35
|
+
"/conversation/export": ("POST", self.export_conversations),
|
|
33
36
|
}
|
|
34
37
|
self.db_helper = db_helper
|
|
35
38
|
self.conv_mgr = core_lifecycle.conversation_manager
|
|
@@ -283,3 +286,90 @@ class ConversationRoute(Route):
|
|
|
283
286
|
except Exception as e:
|
|
284
287
|
logger.error(f"更新对话历史失败: {e!s}\n{traceback.format_exc()}")
|
|
285
288
|
return Response().error(f"更新对话历史失败: {e!s}").__dict__
|
|
289
|
+
|
|
290
|
+
async def export_conversations(self):
|
|
291
|
+
"""批量导出对话为 JSONL 格式"""
|
|
292
|
+
try:
|
|
293
|
+
data = await request.get_json()
|
|
294
|
+
conversations_to_export = data.get("conversations", [])
|
|
295
|
+
|
|
296
|
+
if not conversations_to_export:
|
|
297
|
+
return Response().error("导出列表不能为空").__dict__
|
|
298
|
+
|
|
299
|
+
# 收集所有对话的内容
|
|
300
|
+
jsonl_lines = []
|
|
301
|
+
exported_count = 0
|
|
302
|
+
failed_items = []
|
|
303
|
+
|
|
304
|
+
for conv_info in conversations_to_export:
|
|
305
|
+
user_id = conv_info.get("user_id")
|
|
306
|
+
cid = conv_info.get("cid")
|
|
307
|
+
|
|
308
|
+
if not user_id or not cid:
|
|
309
|
+
failed_items.append(
|
|
310
|
+
f"user_id:{user_id}, cid:{cid} - 缺少必要参数",
|
|
311
|
+
)
|
|
312
|
+
continue
|
|
313
|
+
|
|
314
|
+
try:
|
|
315
|
+
conversation = await self.conv_mgr.get_conversation(
|
|
316
|
+
unified_msg_origin=user_id,
|
|
317
|
+
conversation_id=cid,
|
|
318
|
+
)
|
|
319
|
+
|
|
320
|
+
if not conversation:
|
|
321
|
+
failed_items.append(
|
|
322
|
+
f"user_id:{user_id}, cid:{cid} - 对话不存在"
|
|
323
|
+
)
|
|
324
|
+
continue
|
|
325
|
+
|
|
326
|
+
# 解析对话内容 (history is always a JSON string from _convert_conv_from_v2_to_v1)
|
|
327
|
+
content = json.loads(conversation.history)
|
|
328
|
+
|
|
329
|
+
# 创建导出记录
|
|
330
|
+
export_record = {
|
|
331
|
+
"cid": cid,
|
|
332
|
+
"user_id": user_id,
|
|
333
|
+
"platform_id": conversation.platform_id,
|
|
334
|
+
"title": conversation.title,
|
|
335
|
+
"persona_id": conversation.persona_id,
|
|
336
|
+
"created_at": conversation.created_at,
|
|
337
|
+
"updated_at": conversation.updated_at,
|
|
338
|
+
"content": content,
|
|
339
|
+
}
|
|
340
|
+
|
|
341
|
+
# 将记录转换为 JSON 字符串并添加到 JSONL
|
|
342
|
+
jsonl_lines.append(json.dumps(export_record, ensure_ascii=False))
|
|
343
|
+
exported_count += 1
|
|
344
|
+
|
|
345
|
+
except Exception as e:
|
|
346
|
+
failed_items.append(f"user_id:{user_id}, cid:{cid} - {e!s}")
|
|
347
|
+
logger.error(
|
|
348
|
+
f"导出对话失败: user_id={user_id}, cid={cid}, error={e!s}"
|
|
349
|
+
)
|
|
350
|
+
|
|
351
|
+
if exported_count == 0:
|
|
352
|
+
return Response().error("没有成功导出任何对话").__dict__
|
|
353
|
+
|
|
354
|
+
# 创建 JSONL 内容
|
|
355
|
+
jsonl_content = "\n".join(jsonl_lines)
|
|
356
|
+
|
|
357
|
+
# 创建一个内存文件对象
|
|
358
|
+
file_obj = BytesIO(jsonl_content.encode("utf-8"))
|
|
359
|
+
file_obj.seek(0)
|
|
360
|
+
|
|
361
|
+
# 生成文件名
|
|
362
|
+
timestamp = datetime.now().strftime("%Y%m%d_%H%M%S")
|
|
363
|
+
filename = f"astrbot_conversations_export_{timestamp}.jsonl"
|
|
364
|
+
|
|
365
|
+
# 返回文件流
|
|
366
|
+
return await send_file(
|
|
367
|
+
file_obj,
|
|
368
|
+
mimetype="application/jsonl",
|
|
369
|
+
as_attachment=True,
|
|
370
|
+
attachment_filename=filename,
|
|
371
|
+
)
|
|
372
|
+
|
|
373
|
+
except Exception as e:
|
|
374
|
+
logger.error(f"批量导出对话失败: {e!s}\n{traceback.format_exc()}")
|
|
375
|
+
return Response().error(f"批量导出对话失败: {e!s}").__dict__
|
|
@@ -124,7 +124,11 @@ class PluginRoute(Route):
|
|
|
124
124
|
session.get(url) as response,
|
|
125
125
|
):
|
|
126
126
|
if response.status == 200:
|
|
127
|
-
|
|
127
|
+
try:
|
|
128
|
+
remote_data = await response.json()
|
|
129
|
+
except aiohttp.ContentTypeError:
|
|
130
|
+
remote_text = await response.text()
|
|
131
|
+
remote_data = json.loads(remote_text)
|
|
128
132
|
|
|
129
133
|
# 检查远程数据是否为空
|
|
130
134
|
if not remote_data or (
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: AstrBot
|
|
3
|
-
Version: 4.9.
|
|
3
|
+
Version: 4.9.1
|
|
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
|
|
@@ -304,4 +304,10 @@ pre-commit install
|
|
|
304
304
|
|
|
305
305
|
</details>
|
|
306
306
|
|
|
307
|
+
<div align="center">
|
|
308
|
+
|
|
307
309
|
_私は、高性能ですから!_
|
|
310
|
+
|
|
311
|
+
<img src="https://files.astrbot.app/watashiwa-koseino-desukara.gif" width="100"/>
|
|
312
|
+
</div
|
|
313
|
+
|
|
@@ -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=
|
|
11
|
+
astrbot/cli/__init__.py,sha256=JZbUVuK1a1sqW03f1UPq7rbyr4VMkIHEraOfwjZuKEg,22
|
|
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
|
|
@@ -56,8 +56,8 @@ 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=
|
|
60
|
-
astrbot/core/config/i18n_utils.py,sha256=
|
|
59
|
+
astrbot/core/config/default.py,sha256=S4thwolOxQs0IDgFHmHPoLS57YgfN1I4SHwovHF2SJk,152197
|
|
60
|
+
astrbot/core/config/i18n_utils.py,sha256=HJn_0XeeVS9ryCBelYfnc0nEn10LlX702fcSSFrF1J8,3879
|
|
61
61
|
astrbot/core/db/__init__.py,sha256=Z3NMgMbxvxZyf5hroO9Kvn2TPKEoL2X21CTW96gzGLE,11200
|
|
62
62
|
astrbot/core/db/po.py,sha256=KIvtPCjf1i9IGOWXyhNKvxzEXmsfopfa7G0UaG98Ams,9313
|
|
63
63
|
astrbot/core/db/sqlite.py,sha256=bXXyA0RwgZTlwEZ6Uh4KSGMUyA3jamvkLVVcbF5K_ow,32274
|
|
@@ -114,8 +114,8 @@ astrbot/core/pipeline/process_stage/method/star_request.py,sha256=C-PTq_Wpq4QMS2
|
|
|
114
114
|
astrbot/core/pipeline/process_stage/method/agent_sub_stages/internal.py,sha256=sDU4b85nV7LswGngFeYOG9VUv-BRR7gufy00ptU_Utg,21175
|
|
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=
|
|
118
|
-
astrbot/core/pipeline/result_decorate/stage.py,sha256=
|
|
117
|
+
astrbot/core/pipeline/respond/stage.py,sha256=G3GgABvDmN-ClrDbFVOFsaeENWnptOr0xzX0NxmXbjY,11038
|
|
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
|
|
121
121
|
astrbot/core/pipeline/whitelist_check/stage.py,sha256=x6o4oswIvVtHFRbuKuLFoyFEgx-gSo3IMGYvopu8d9A,2411
|
|
@@ -136,7 +136,7 @@ astrbot/core/platform/sources/discord/client.py,sha256=YGrUSopQKDRFfzjCdcBQm-EcN
|
|
|
136
136
|
astrbot/core/platform/sources/discord/components.py,sha256=qKcGssKA3vBLHpad0g96KMD722Ng5jYKgpQBGQFOPX8,3971
|
|
137
137
|
astrbot/core/platform/sources/discord/discord_platform_adapter.py,sha256=rnHqOrCGCeZ0JzCKj335zjuWMqDNAJ0k8jnpjWqWmoo,19554
|
|
138
138
|
astrbot/core/platform/sources/discord/discord_platform_event.py,sha256=nVuqZtoF2Vl3Bo5-rik1YFJZz892qkj30T0qCdVSB9c,13332
|
|
139
|
-
astrbot/core/platform/sources/lark/lark_adapter.py,sha256=
|
|
139
|
+
astrbot/core/platform/sources/lark/lark_adapter.py,sha256=9rDfS_zcsdCODa43WJNiHByPYC_SoVBOjKxhV-viY3Q,14079
|
|
140
140
|
astrbot/core/platform/sources/lark/lark_event.py,sha256=0H1TR-ajktyRhjLxY6-Xf8x7Zkc-2wfz4c-EeBEEOrc,6422
|
|
141
141
|
astrbot/core/platform/sources/lark/server.py,sha256=athZuUArNqlpCV6_KDkv7AQrYbh7Z99gThN1ZsCvMeg,6385
|
|
142
142
|
astrbot/core/platform/sources/misskey/misskey_adapter.py,sha256=JTPcBhCtray4rCk924X8ruy6mL7jPzUsVX0f3vzoO0E,29614
|
|
@@ -257,13 +257,13 @@ astrbot/dashboard/routes/__init__.py,sha256=MAQlYoPi-AwUftdp1Ixg9E6im6Af5eruuZ52
|
|
|
257
257
|
astrbot/dashboard/routes/auth.py,sha256=rYkvt3MpCY9BhWjG0DUoX3YaBkJT1Id7M2pKqTmXbvo,2946
|
|
258
258
|
astrbot/dashboard/routes/chat.py,sha256=XcXuGfLZvjUeYCFPosoMpIAaecuvq48s8aFHrT9P2qc,24822
|
|
259
259
|
astrbot/dashboard/routes/config.py,sha256=jwrlP23zbTpnrMhQKrTfBjb1NLEln4tDYNExRP0BQeM,33438
|
|
260
|
-
astrbot/dashboard/routes/conversation.py,sha256=
|
|
260
|
+
astrbot/dashboard/routes/conversation.py,sha256=TWGY7BJ9QfmbxurAieBrbMmCi4_Ua2klxsAUlSRXbng,14302
|
|
261
261
|
astrbot/dashboard/routes/file.py,sha256=gULvXP9PnVOQlyv_PCEzZQE5ptnGQEjFPvwOLxdVgb4,708
|
|
262
262
|
astrbot/dashboard/routes/knowledge_base.py,sha256=GZ_iDYV2uXXzvGMF-4VJ8hZxLdHIWSSfg_3wlWwsizA,46081
|
|
263
263
|
astrbot/dashboard/routes/log.py,sha256=YJWj1982YUSzja_MZQS5UoKf6pImQoeP0zaS0AGp0nY,2299
|
|
264
264
|
astrbot/dashboard/routes/persona.py,sha256=MEcNHMxJmyvZ3ZhytI5IP7L3FSlMr1JDvdd5efN9Q-M,7833
|
|
265
265
|
astrbot/dashboard/routes/platform.py,sha256=JfQzzmWSnahKjke3lBUeXo7Auzz_nTB0mUv0fIf_Nag,3392
|
|
266
|
-
astrbot/dashboard/routes/plugin.py,sha256=
|
|
266
|
+
astrbot/dashboard/routes/plugin.py,sha256=CvTUNOaBBjgk7q58bJ4El7BxkUopzPEdqxFnE2LC2UY,25436
|
|
267
267
|
astrbot/dashboard/routes/route.py,sha256=vhNIWFhic1eVHRx7ej8OUmmcNDA3FPaRPdXO_-SS4K4,1572
|
|
268
268
|
astrbot/dashboard/routes/session_management.py,sha256=3h-zlkiAN4MQQLETGORNoWDtnGCSbqxnK2mTu6jMeCY,14998
|
|
269
269
|
astrbot/dashboard/routes/stat.py,sha256=OgNM491WFuDSAQbbJUGl4_UsqrQNefOGMMRIPLLoVBQ,6780
|
|
@@ -271,8 +271,8 @@ astrbot/dashboard/routes/static_file.py,sha256=7KnNcOb1BVqSTft114LhGsDkfg69X2jHE
|
|
|
271
271
|
astrbot/dashboard/routes/t2i.py,sha256=F6smxdL99MF7cRw3hqS6-2GErw8Zhsv0V0mfBUeEk-c,8931
|
|
272
272
|
astrbot/dashboard/routes/tools.py,sha256=YsVFrwVIhxAI-Ikme7YPrHVnPVTkJ1IaH7n6ciREjdE,14663
|
|
273
273
|
astrbot/dashboard/routes/update.py,sha256=qXiqQ_dbqRVftOzGgCQrvK8-qopVK6zKhhVVJ9SK26U,6648
|
|
274
|
-
astrbot-4.9.
|
|
275
|
-
astrbot-4.9.
|
|
276
|
-
astrbot-4.9.
|
|
277
|
-
astrbot-4.9.
|
|
278
|
-
astrbot-4.9.
|
|
274
|
+
astrbot-4.9.1.dist-info/METADATA,sha256=_-vXi0mOf7CQUSATK8Zv2H0R_zSCIc8DnOfHGt5fjEk,11932
|
|
275
|
+
astrbot-4.9.1.dist-info/WHEEL,sha256=WLgqFyCfm_KASv4WHyYy0P3pM_m7J5L9k2skdKLirC8,87
|
|
276
|
+
astrbot-4.9.1.dist-info/entry_points.txt,sha256=OEF09YmhBWYuViXrvTLLpstF4ccmNwDL8r7nnFD0pfI,53
|
|
277
|
+
astrbot-4.9.1.dist-info/licenses/LICENSE,sha256=zPfQj5Mq8-gThIiBcxETr7t8gND9bZWOjTGQAr80TQI,34500
|
|
278
|
+
astrbot-4.9.1.dist-info/RECORD,,
|
|
File without changes
|
|
File without changes
|
|
File without changes
|