AstrBot 4.1.7__py3-none-any.whl → 4.2.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.
@@ -30,6 +30,7 @@ class SessionManagementRoute(Route):
30
30
  "/session/update_tts": ("POST", self.update_session_tts),
31
31
  "/session/update_name": ("POST", self.update_session_name),
32
32
  "/session/update_status": ("POST", self.update_session_status),
33
+ "/session/delete": ("POST", self.delete_session),
33
34
  }
34
35
  self.conv_mgr = core_lifecycle.conversation_manager
35
36
  self.core_lifecycle = core_lifecycle
@@ -180,60 +181,132 @@ class SessionManagementRoute(Route):
180
181
  logger.error(error_msg)
181
182
  return Response().error(f"获取会话列表失败: {str(e)}").__dict__
182
183
 
184
+ async def _update_single_session_persona(self, session_id: str, persona_name: str):
185
+ """更新单个会话的 persona 的内部方法"""
186
+ conversation_manager = self.core_lifecycle.star_context.conversation_manager
187
+ conversation_id = await conversation_manager.get_curr_conversation_id(
188
+ session_id
189
+ )
190
+
191
+ conv = None
192
+ if conversation_id:
193
+ conv = await conversation_manager.get_conversation(
194
+ unified_msg_origin=session_id,
195
+ conversation_id=conversation_id,
196
+ )
197
+ if not conv or not conversation_id:
198
+ conversation_id = await conversation_manager.new_conversation(session_id)
199
+
200
+ # 更新 persona
201
+ await conversation_manager.update_conversation_persona_id(
202
+ session_id, persona_name
203
+ )
204
+
205
+ async def _handle_batch_operation(
206
+ self, session_ids: list, operation_func, operation_name: str, **kwargs
207
+ ):
208
+ """通用的批量操作处理方法"""
209
+ success_count = 0
210
+ error_sessions = []
211
+
212
+ for session_id in session_ids:
213
+ try:
214
+ await operation_func(session_id, **kwargs)
215
+ success_count += 1
216
+ except Exception as e:
217
+ logger.error(f"批量{operation_name} 会话 {session_id} 失败: {str(e)}")
218
+ error_sessions.append(session_id)
219
+
220
+ if error_sessions:
221
+ return (
222
+ Response()
223
+ .ok(
224
+ {
225
+ "message": f"批量更新完成,成功: {success_count},失败: {len(error_sessions)}",
226
+ "success_count": success_count,
227
+ "error_count": len(error_sessions),
228
+ "error_sessions": error_sessions,
229
+ }
230
+ )
231
+ .__dict__
232
+ )
233
+ else:
234
+ return (
235
+ Response()
236
+ .ok(
237
+ {
238
+ "message": f"成功批量{operation_name} {success_count} 个会话",
239
+ "success_count": success_count,
240
+ }
241
+ )
242
+ .__dict__
243
+ )
244
+
183
245
  async def update_session_persona(self):
184
- """更新指定会话的 persona"""
246
+ """更新指定会话的 persona,支持批量操作"""
185
247
  try:
186
248
  data = await request.get_json()
187
- session_id = data.get("session_id")
249
+ is_batch = data.get("is_batch", False)
188
250
  persona_name = data.get("persona_name")
189
251
 
190
- if not session_id:
191
- return Response().error("缺少必要参数: session_id").__dict__
192
-
193
252
  if persona_name is None:
194
253
  return Response().error("缺少必要参数: persona_name").__dict__
195
254
 
196
- # 获取会话当前的对话 ID
197
- conversation_manager = self.core_lifecycle.star_context.conversation_manager
198
- conversation_id = await conversation_manager.get_curr_conversation_id(
199
- session_id
200
- )
255
+ if is_batch:
256
+ session_ids = data.get("session_ids", [])
257
+ if not session_ids:
258
+ return Response().error("缺少必要参数: session_ids").__dict__
201
259
 
202
- if not conversation_id:
203
- # 如果没有对话,创建一个新的对话
204
- conversation_id = await conversation_manager.new_conversation(
205
- session_id
260
+ return await self._handle_batch_operation(
261
+ session_ids,
262
+ self._update_single_session_persona,
263
+ "更新人格",
264
+ persona_name=persona_name,
206
265
  )
266
+ else:
267
+ session_id = data.get("session_id")
268
+ if not session_id:
269
+ return Response().error("缺少必要参数: session_id").__dict__
207
270
 
208
- # 更新 persona
209
- await conversation_manager.update_conversation_persona_id(
210
- session_id, persona_name
211
- )
212
-
213
- return (
214
- Response()
215
- .ok({"message": f"成功更新会话 {session_id} 的人格为 {persona_name}"})
216
- .__dict__
217
- )
271
+ await self._update_single_session_persona(session_id, persona_name)
272
+ return (
273
+ Response()
274
+ .ok(
275
+ {
276
+ "message": f"成功更新会话 {session_id} 的人格为 {persona_name}"
277
+ }
278
+ )
279
+ .__dict__
280
+ )
218
281
 
219
282
  except Exception as e:
220
283
  error_msg = f"更新会话人格失败: {str(e)}\n{traceback.format_exc()}"
221
284
  logger.error(error_msg)
222
285
  return Response().error(f"更新会话人格失败: {str(e)}").__dict__
223
286
 
287
+ async def _update_single_session_provider(
288
+ self, session_id: str, provider_id: str, provider_type_enum
289
+ ):
290
+ """更新单个会话的 provider 的内部方法"""
291
+ provider_manager = self.core_lifecycle.star_context.provider_manager
292
+ await provider_manager.set_provider(
293
+ provider_id=provider_id,
294
+ provider_type=provider_type_enum,
295
+ umo=session_id,
296
+ )
297
+
224
298
  async def update_session_provider(self):
225
- """更新指定会话的 provider"""
299
+ """更新指定会话的 provider,支持批量操作"""
226
300
  try:
227
301
  data = await request.get_json()
228
- session_id = data.get("session_id")
302
+ is_batch = data.get("is_batch", False)
229
303
  provider_id = data.get("provider_id")
230
- # "chat_completion", "speech_to_text", "text_to_speech"
231
304
  provider_type = data.get("provider_type")
232
305
 
233
- if not session_id or not provider_id or not provider_type:
306
+ if not provider_id or not provider_type:
234
307
  return (
235
308
  Response()
236
- .error("缺少必要参数: session_id, provider_id, provider_type")
309
+ .error("缺少必要参数: provider_id, provider_type")
237
310
  .__dict__
238
311
  )
239
312
 
@@ -251,23 +324,35 @@ class SessionManagementRoute(Route):
251
324
  .__dict__
252
325
  )
253
326
 
254
- # 设置 provider
255
- provider_manager = self.core_lifecycle.star_context.provider_manager
256
- await provider_manager.set_provider(
257
- provider_id=provider_id,
258
- provider_type=provider_type_enum,
259
- umo=session_id,
260
- )
327
+ if is_batch:
328
+ session_ids = data.get("session_ids", [])
329
+ if not session_ids:
330
+ return Response().error("缺少必要参数: session_ids").__dict__
331
+
332
+ return await self._handle_batch_operation(
333
+ session_ids,
334
+ self._update_single_session_provider,
335
+ f"更新 {provider_type} 提供商",
336
+ provider_id=provider_id,
337
+ provider_type_enum=provider_type_enum,
338
+ )
339
+ else:
340
+ session_id = data.get("session_id")
341
+ if not session_id:
342
+ return Response().error("缺少必要参数: session_id").__dict__
261
343
 
262
- return (
263
- Response()
264
- .ok(
265
- {
266
- "message": f"成功更新会话 {session_id} 的 {provider_type} 提供商为 {provider_id}"
267
- }
344
+ await self._update_single_session_provider(
345
+ session_id, provider_id, provider_type_enum
346
+ )
347
+ return (
348
+ Response()
349
+ .ok(
350
+ {
351
+ "message": f"成功更新会话 {session_id} 的 {provider_type} 提供商为 {provider_id}"
352
+ }
353
+ )
354
+ .__dict__
268
355
  )
269
- .__dict__
270
- )
271
356
 
272
357
  except Exception as e:
273
358
  error_msg = f"更新会话提供商失败: {str(e)}\n{traceback.format_exc()}"
@@ -376,66 +461,98 @@ class SessionManagementRoute(Route):
376
461
  logger.error(error_msg)
377
462
  return Response().error(f"更新会话插件状态失败: {str(e)}").__dict__
378
463
 
464
+ async def _update_single_session_llm(self, session_id: str, enabled: bool):
465
+ """更新单个会话的LLM状态的内部方法"""
466
+ SessionServiceManager.set_llm_status_for_session(session_id, enabled)
467
+
379
468
  async def update_session_llm(self):
380
- """更新指定会话的LLM启停状态"""
469
+ """更新指定会话的LLM启停状态,支持批量操作"""
381
470
  try:
382
471
  data = await request.get_json()
383
- session_id = data.get("session_id")
472
+ is_batch = data.get("is_batch", False)
384
473
  enabled = data.get("enabled")
385
474
 
386
- if not session_id:
387
- return Response().error("缺少必要参数: session_id").__dict__
388
-
389
475
  if enabled is None:
390
476
  return Response().error("缺少必要参数: enabled").__dict__
391
477
 
392
- # 使用 SessionServiceManager 更新LLM状态
393
- SessionServiceManager.set_llm_status_for_session(session_id, enabled)
478
+ if is_batch:
479
+ session_ids = data.get("session_ids", [])
480
+ if not session_ids:
481
+ return Response().error("缺少必要参数: session_ids").__dict__
394
482
 
395
- return (
396
- Response()
397
- .ok(
398
- {
399
- "message": f"LLM已{'启用' if enabled else '禁用'}",
400
- "session_id": session_id,
401
- "llm_enabled": enabled,
402
- }
483
+ result = await self._handle_batch_operation(
484
+ session_ids,
485
+ self._update_single_session_llm,
486
+ f"{'启用' if enabled else '禁用'}LLM",
487
+ enabled=enabled,
488
+ )
489
+ return result
490
+ else:
491
+ session_id = data.get("session_id")
492
+ if not session_id:
493
+ return Response().error("缺少必要参数: session_id").__dict__
494
+
495
+ await self._update_single_session_llm(session_id, enabled)
496
+ return (
497
+ Response()
498
+ .ok(
499
+ {
500
+ "message": f"LLM已{'启用' if enabled else '禁用'}",
501
+ "session_id": session_id,
502
+ "llm_enabled": enabled,
503
+ }
504
+ )
505
+ .__dict__
403
506
  )
404
- .__dict__
405
- )
406
507
 
407
508
  except Exception as e:
408
509
  error_msg = f"更新会话LLM状态失败: {str(e)}\n{traceback.format_exc()}"
409
510
  logger.error(error_msg)
410
511
  return Response().error(f"更新会话LLM状态失败: {str(e)}").__dict__
411
512
 
513
+ async def _update_single_session_tts(self, session_id: str, enabled: bool):
514
+ """更新单个会话的TTS状态的内部方法"""
515
+ SessionServiceManager.set_tts_status_for_session(session_id, enabled)
516
+
412
517
  async def update_session_tts(self):
413
- """更新指定会话的TTS启停状态"""
518
+ """更新指定会话的TTS启停状态,支持批量操作"""
414
519
  try:
415
520
  data = await request.get_json()
416
- session_id = data.get("session_id")
521
+ is_batch = data.get("is_batch", False)
417
522
  enabled = data.get("enabled")
418
523
 
419
- if not session_id:
420
- return Response().error("缺少必要参数: session_id").__dict__
421
-
422
524
  if enabled is None:
423
525
  return Response().error("缺少必要参数: enabled").__dict__
424
526
 
425
- # 使用 SessionServiceManager 更新TTS状态
426
- SessionServiceManager.set_tts_status_for_session(session_id, enabled)
527
+ if is_batch:
528
+ session_ids = data.get("session_ids", [])
529
+ if not session_ids:
530
+ return Response().error("缺少必要参数: session_ids").__dict__
427
531
 
428
- return (
429
- Response()
430
- .ok(
431
- {
432
- "message": f"TTS已{'启用' if enabled else '禁用'}",
433
- "session_id": session_id,
434
- "tts_enabled": enabled,
435
- }
532
+ result = await self._handle_batch_operation(
533
+ session_ids,
534
+ self._update_single_session_tts,
535
+ f"{'启用' if enabled else '禁用'}TTS",
536
+ enabled=enabled,
537
+ )
538
+ return result
539
+ else:
540
+ session_id = data.get("session_id")
541
+ if not session_id:
542
+ return Response().error("缺少必要参数: session_id").__dict__
543
+
544
+ await self._update_single_session_tts(session_id, enabled)
545
+ return (
546
+ Response()
547
+ .ok(
548
+ {
549
+ "message": f"TTS已{'启用' if enabled else '禁用'}",
550
+ "session_id": session_id,
551
+ "tts_enabled": enabled,
552
+ }
553
+ )
554
+ .__dict__
436
555
  )
437
- .__dict__
438
- )
439
556
 
440
557
  except Exception as e:
441
558
  error_msg = f"更新会话TTS状态失败: {str(e)}\n{traceback.format_exc()}"
@@ -507,3 +624,43 @@ class SessionManagementRoute(Route):
507
624
  error_msg = f"更新会话整体状态失败: {str(e)}\n{traceback.format_exc()}"
508
625
  logger.error(error_msg)
509
626
  return Response().error(f"更新会话整体状态失败: {str(e)}").__dict__
627
+
628
+ async def delete_session(self):
629
+ """删除指定会话及其所有相关数据"""
630
+ try:
631
+ data = await request.get_json()
632
+ session_id = data.get("session_id")
633
+
634
+ if not session_id:
635
+ return Response().error("缺少必要参数: session_id").__dict__
636
+
637
+ # 删除会话的所有相关数据
638
+ conversation_manager = self.core_lifecycle.conversation_manager
639
+
640
+ # 1. 删除会话的所有对话
641
+ try:
642
+ await conversation_manager.delete_conversations_by_user_id(session_id)
643
+ except Exception as e:
644
+ logger.warning(f"删除会话 {session_id} 的对话失败: {str(e)}")
645
+
646
+ # 2. 清除会话的偏好设置数据(清空该会话的所有配置)
647
+ try:
648
+ await sp.clear_async("umo", session_id)
649
+ except Exception as e:
650
+ logger.warning(f"清除会话 {session_id} 的偏好设置失败: {str(e)}")
651
+
652
+ return (
653
+ Response()
654
+ .ok(
655
+ {
656
+ "message": f"会话 {session_id} 及其相关所有对话数据已成功删除",
657
+ "session_id": session_id,
658
+ }
659
+ )
660
+ .__dict__
661
+ )
662
+
663
+ except Exception as e:
664
+ error_msg = f"删除会话失败: {str(e)}\n{traceback.format_exc()}"
665
+ logger.error(error_msg)
666
+ return Response().error(f"删除会话失败: {str(e)}").__dict__
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: AstrBot
3
- Version: 4.1.7
3
+ Version: 4.2.0
4
4
  Summary: 易上手的多平台 LLM 聊天机器人及开发框架
5
5
  License-File: LICENSE
6
6
  Requires-Python: >=3.10
@@ -22,7 +22,7 @@ astrbot/cli/utils/version_comparator.py,sha256=3gLFA94eswvFsBVDSJmOTLJKxTdCD9kkQ
22
22
  astrbot/core/__init__.py,sha256=-1atHjMqQyequsw6A1heEr4LldE0JVII9MXcuQFSAQM,1218
23
23
  astrbot/core/astr_agent_context.py,sha256=4byUrIifQZFZwrDh0AtRLLBUvYX14tXhwiplShUNTt4,303
24
24
  astrbot/core/astrbot_config_mgr.py,sha256=Z1OwN1DKoZFdul9S8wWeRTiPjKnp0OiYQlmSloVw5nI,10024
25
- astrbot/core/conversation_mgr.py,sha256=R3kkMhHY7Qf8m74d-qXhUKvz_wTpa4id9-J8A21-YTI,11709
25
+ astrbot/core/conversation_mgr.py,sha256=DCnFXhdB0vf94vclX8l-JbLRcSny3cwxhwecAV4jbW0,12217
26
26
  astrbot/core/core_lifecycle.py,sha256=z8ivxD4OY5iBK8XO078OlmvSwnCtpTKtiuMF_AF1Adk,11588
27
27
  astrbot/core/event_bus.py,sha256=781lHFtnOfxBqS4CSxwTiPyoPvYOlbJce6arUGVfZEg,2536
28
28
  astrbot/core/file_token_service.py,sha256=JmojgbEV022CTiFLsueOHrTnQV3BUnF5-_XU8x-1yz8,3107
@@ -45,10 +45,10 @@ astrbot/core/agent/runners/base.py,sha256=exZS_d2BsrLz-xgeY9ZUPuXikBDUnKxO-dU3ZF
45
45
  astrbot/core/agent/runners/tool_loop_agent_runner.py,sha256=rdGgu_QUjOIO5mEDbb7Fe-WZFDqVnOzrW5_D4Th5mcI,12894
46
46
  astrbot/core/config/__init__.py,sha256=0CO_3sKtI3WOwWT0k4i6TleWq1SAWJFfB8KjnYB8Zig,172
47
47
  astrbot/core/config/astrbot_config.py,sha256=X-b3c5m4msgJrdYFH2LXic5XKY0ViuUMdNZ335zqSBw,6335
48
- astrbot/core/config/default.py,sha256=j-RQr859DQWgOeKT2qLa2XH9YtFU9ncMOEH6gd8TOys,119209
49
- astrbot/core/db/__init__.py,sha256=CAtPQ7lfNSNE4hUylUBWks_49ah2amgYmw1V1lA9FwQ,8291
48
+ astrbot/core/config/default.py,sha256=R1R1SnqDcRC4I0Oc-GW3BXJphFOms_vYo4qGHn8vavI,120910
49
+ astrbot/core/db/__init__.py,sha256=VJlAcres5No8bI5YV0hrrumjBXknkfOevmuUW0jdBrc,8463
50
50
  astrbot/core/db/po.py,sha256=9MfQf4oEOYCUz7qnCjs4isWkGNpQKhaDVYqKIY8W-l0,7707
51
- astrbot/core/db/sqlite.py,sha256=EsGyK54Yi_rA-rzUNMAwdSbWYGw0PHIaIF-FhYjdIBQ,20941
51
+ astrbot/core/db/sqlite.py,sha256=x7m8QdZrENZvh41jKuXYit1Ll-0Tpx9xJTw6YIkDtkg,21277
52
52
  astrbot/core/db/migration/helper.py,sha256=FcwpvBANNeyBSrRhXyd3hudHYEyhTyrcRg9mU9lZtqY,1935
53
53
  astrbot/core/db/migration/migra_3_to_4.py,sha256=I1CesaBbf5wj9agtNWxDl1V-qixmwdURbBQf5Vzagrk,15025
54
54
  astrbot/core/db/migration/shared_preferences_v3.py,sha256=tE11WIpwT-Q8yVBkw4eveRr1PmFdNRJQSprH4xdO3G4,1245
@@ -73,16 +73,16 @@ astrbot/core/pipeline/content_safety_check/strategies/keywords.py,sha256=j3Ns_IH
73
73
  astrbot/core/pipeline/content_safety_check/strategies/strategy.py,sha256=G32Xf42EgeyEnhyPLVYlUMiSnDNHUUnnz_MG0PXqfV4,1234
74
74
  astrbot/core/pipeline/preprocess_stage/stage.py,sha256=hHDUsSvOVlyzdWEQEk-P2oSNC0H4FmYI5WrdoP38Zbc,3329
75
75
  astrbot/core/pipeline/process_stage/stage.py,sha256=2hCX5LdUCzX2RbleMLF_Yqiot9YDyutF3ePPOZsWeA0,2677
76
- astrbot/core/pipeline/process_stage/method/llm_request.py,sha256=AdYtuLEWFjdrvbQzX9L9Km7zDdmv3Y8yOMfmdy09LFQ,24659
76
+ astrbot/core/pipeline/process_stage/method/llm_request.py,sha256=NaWr0eRhuxqb4ZIscVNce_f_kP7GL12ME4Ph-WF4dog,25370
77
77
  astrbot/core/pipeline/process_stage/method/star_request.py,sha256=IuPP7qnxvBgKV6a9D3wLU4_KU3Ec3Ml7IOADQCXDgqk,2501
78
78
  astrbot/core/pipeline/rate_limit_check/stage.py,sha256=I_GkpSgioN0-T_catMwpRKtxx-TiMmvu8vV_FE5ORIA,4072
79
79
  astrbot/core/pipeline/respond/stage.py,sha256=K_CrogwVS1EYNv9oAe3We95QwahPef1S9oBMwd5wdsw,10525
80
80
  astrbot/core/pipeline/result_decorate/stage.py,sha256=jGXXtAYyQeo6EHsvrJ56x4rpDBgntXyG5k3kAIt8-Hk,13497
81
- astrbot/core/pipeline/session_status_check/stage.py,sha256=4STRhoiq4AE544_MVscGHA2FIKUia1CPHV1TKFKTs9U,838
82
- astrbot/core/pipeline/waking_check/stage.py,sha256=yNC726wHhf1zf5WEvWn47hDUjj_U2vsYgcwTYIvRiSo,7946
81
+ astrbot/core/pipeline/session_status_check/stage.py,sha256=woucuVbzzQoi62MDoP3lTha4es_fUu4p-IPCzSiYDBw,1262
82
+ astrbot/core/pipeline/waking_check/stage.py,sha256=URBFmfid1CKhtCGjH7OzFmxBE-Gt9vv1eYlp6msIv_Q,8240
83
83
  astrbot/core/pipeline/whitelist_check/stage.py,sha256=VcmLs0VfmspNTsitL_WrZXfv2lR2Nktrb5JEWc1VJuw,2403
84
84
  astrbot/core/platform/__init__.py,sha256=jQ4UiThp7cDHfmIXAgBDodET87onl7mjii0CAD3RXTY,361
85
- astrbot/core/platform/astr_message_event.py,sha256=q1bf4g7BnZKWF36Htik3lO8ZPMU-ptWbGnI5s4X6LEQ,14103
85
+ astrbot/core/platform/astr_message_event.py,sha256=J9kkDI334TXWO4-GOYxB335QSCDIXyl1gkSKIxNSAcI,14238
86
86
  astrbot/core/platform/astrbot_message.py,sha256=r7jlUPfaOEh0yCSHaS1KQtYarZ9B4ikqMZwDj-wLv_k,2655
87
87
  astrbot/core/platform/manager.py,sha256=bJoNhJpLB_sXdC80kqQNB8OhBbAl_340HaOPnOmreug,8076
88
88
  astrbot/core/platform/message_session.py,sha256=Hitdfb7IK4SohaMFld0s0UlwLDpVw5UPTToh05bvH60,1076
@@ -122,21 +122,23 @@ astrbot/core/platform/sources/webchat/webchat_queue_mgr.py,sha256=2P0hQRNn7tMs9O
122
122
  astrbot/core/platform/sources/wechatpadpro/wechatpadpro_adapter.py,sha256=oXxy6ZJ-42_7yKZko9oepN0vBvVbLJRNjLbaxVr6ehk,40791
123
123
  astrbot/core/platform/sources/wechatpadpro/wechatpadpro_message_event.py,sha256=3K7NKrE46s5jhbxLEzduLPQF4Pt4Rj6IXXdu0TwoZUw,6019
124
124
  astrbot/core/platform/sources/wechatpadpro/xml_data_parser.py,sha256=tfQGwWXEra99hvrYTHI4einQSt7ATcLm57Uq4VTP7d8,6230
125
- astrbot/core/platform/sources/wecom/wecom_adapter.py,sha256=iCwW8S_notAkepeT78WkG2ICOMRDDpoy4aKacuflOhU,13574
125
+ astrbot/core/platform/sources/wecom/wecom_adapter.py,sha256=iDTE-CRCaER4zzo_1XbGXNiSVRkXSWkdEvBxi3EF9YQ,13621
126
126
  astrbot/core/platform/sources/wecom/wecom_event.py,sha256=WkP7EP7k4AS5KUrxF7ouByyR3qS-GMZODv3yORQb0kI,9181
127
127
  astrbot/core/platform/sources/wecom/wecom_kf.py,sha256=xPPt3P3tqB6d0gzPT0-0YfTkYfzlMki1PNUMGWMkH74,10891
128
128
  astrbot/core/platform/sources/wecom/wecom_kf_message.py,sha256=nHPOnrOEnEx2uawL1_6Ht0QB7k7G1Nbt3BLpPQekfZA,5787
129
- astrbot/core/platform/sources/weixin_official_account/weixin_offacc_adapter.py,sha256=jKiLSiBW_gjE4yhN5lkfYJV8Gi3wdPkpyXYKAr0VrI0,10410
129
+ astrbot/core/platform/sources/weixin_official_account/weixin_offacc_adapter.py,sha256=oWZSYSjlE-cGyXVq1aDlACnMGB4Q40rmD3EYRTQo8fg,10475
130
130
  astrbot/core/platform/sources/weixin_official_account/weixin_offacc_event.py,sha256=JpyQYaivJTUkPOMDz5ZXp4CLOQ6ek76eNLmrJXTXEEU,7196
131
131
  astrbot/core/provider/__init__.py,sha256=fhD_KB1-KpqJ7woaXDXc7kdlmL3XPQz3xlc5IkFDJJ4,171
132
132
  astrbot/core/provider/entites.py,sha256=-353AdRDA6ST4AS48cQ1RRAXHSy3F7pVS_28hW4cG2U,388
133
133
  astrbot/core/provider/entities.py,sha256=CkC-U9nafBKo2n2kLZqzukosDX7RuZWAK4DMBHQkasA,11238
134
134
  astrbot/core/provider/func_tool_manager.py,sha256=NuWMmAJaEwoJ3XCSvhwtmzDPdzX4K4BIRKuKgF0FlQk,20881
135
- astrbot/core/provider/manager.py,sha256=R3JqtnV-kRg8monqry6PaPVJL1tQHp5gv4vKOeV8_cQ,21618
135
+ astrbot/core/provider/manager.py,sha256=GoRR4hTRyYaaWH6_ICx0tflqG1Lng72dVOuq6pagb5k,21729
136
136
  astrbot/core/provider/provider.py,sha256=rzzlUTUn3cRCRgfd2PhA5RcboHkEDlk3Dw9Q1P3DoJ8,7203
137
137
  astrbot/core/provider/register.py,sha256=bWAF9zWNnSYQWjmZIXiWgxFaeWIiWjEoEIN_xhmq3mM,1830
138
138
  astrbot/core/provider/sources/anthropic_source.py,sha256=9I6VEZ5ANv-SIx7TaNGr2o_9S1xK0eTMOxt1ZF4XrBM,14974
139
139
  astrbot/core/provider/sources/azure_tts_source.py,sha256=V8WGpMFeYn-DhmE2FtYYYir-51T1S81XKvP08tslm8E,9350
140
+ astrbot/core/provider/sources/coze_api_client.py,sha256=dr2QpON0I83eIyadh5XDEVnGl26Jm5rbXGzQKkLBBcc,10820
141
+ astrbot/core/provider/sources/coze_source.py,sha256=KddH9Ryl-cuaobjVBY5ar_cPEb5MUDvc7Pqx9BTp9Oo,25215
140
142
  astrbot/core/provider/sources/dashscope_source.py,sha256=HPzMCI-x5Ht76KxxvWHSwffW5tq6gWJQl48O_YKCTcc,7321
141
143
  astrbot/core/provider/sources/dashscope_tts.py,sha256=qGVGSKoW-yVHlnWl_eONwLtkAGMQX6t81FPkC-dV25U,1532
142
144
  astrbot/core/provider/sources/dify_source.py,sha256=Q0VmnacKwD-fOnvwYqbrRMspDYOlJZAHnjBawRzshw4,11472
@@ -161,7 +163,7 @@ astrbot/core/star/README.md,sha256=LXxqxp3xv_oejO8ocBPOrbmLe0WB4feu43fYDNddHTQ,1
161
163
  astrbot/core/star/__init__.py,sha256=ynSwMrdCLyVMN3Q9flS_mcDDjdIGrkLBpfeDVoFj6PM,2080
162
164
  astrbot/core/star/config.py,sha256=f4h1YFt1Tn6S2D-LvnhM483qaD8JdWjl-TBRV9CeYBo,3593
163
165
  astrbot/core/star/context.py,sha256=6s2EdmIghQhLj2MFeRb5zwqO_wbug9zDTrljQgn-FvI,12961
164
- astrbot/core/star/session_llm_manager.py,sha256=B2URKTxPW9FXUW1goZ0HkyuqE3PZ2X7o22GSPKnIAj0,8596
166
+ astrbot/core/star/session_llm_manager.py,sha256=c9vPbL454_H--x5c-cjbiH-y1CrcMfTLfbhNmKgSYio,8467
165
167
  astrbot/core/star/session_plugin_manager.py,sha256=3vxbqPikZg4ZTHG_STvEKeqNplo78wknILSnFCmHTr0,5291
166
168
  astrbot/core/star/star.py,sha256=fEgg7pxiIsnRg4Xw_KBIyOy3V919MpIgAWQ7FoE7bWc,1690
167
169
  astrbot/core/star/star_handler.py,sha256=0hQq5QOre3AjPx7AfZfyfvx2k-iVBCaXg0hofvqE2k4,4888
@@ -169,8 +171,8 @@ astrbot/core/star/star_manager.py,sha256=c6s90gg3SgUIQ2UZxUUhslFPdS3jxVaVZOulvSM
169
171
  astrbot/core/star/star_tools.py,sha256=tAX49jAcGc5mFYu7FW3MrTFgAKtX-_TIE3tfeEArGx4,10863
170
172
  astrbot/core/star/updator.py,sha256=IVml0S4WGmKRl42EeDbU0bP8-7d0yfEY0X9qpshI_RA,3129
171
173
  astrbot/core/star/filter/__init__.py,sha256=xhdp6MMbBJbCHDDtBcAzWZ86DSFTPKzj8RpE2Cdb8ls,469
172
- astrbot/core/star/filter/command.py,sha256=vHsrKT8prA3JO1tf29Qte_t6RMIZTeEGq5SwSF4YY0k,6911
173
- astrbot/core/star/filter/command_group.py,sha256=vam1S4Cb5VGZ1RNKFT_-0ctMcoZOfQYsX7B5FGJz01s,4724
174
+ astrbot/core/star/filter/command.py,sha256=ODUefROoldKQXgVLkAPPWuaOi0a4nYMPt4DCBNqLLRI,7302
175
+ astrbot/core/star/filter/command_group.py,sha256=PBvIWBji6EJejWVXppvOVRojGR8y6WfRF5qlyJ2jSRo,4981
174
176
  astrbot/core/star/filter/custom_filter.py,sha256=UPEfr-vYJR1NsLOp75A8Oa8RFkluEC3rkzbHM2ct0ek,2238
175
177
  astrbot/core/star/filter/event_message_type.py,sha256=R45Buoy9YALxnY6oanFlZMLfSZex2NAHPsl8DFSI_2Y,1162
176
178
  astrbot/core/star/filter/permission.py,sha256=GmyA2xqPCGVryLMa7OrWiuYRR-9pcQ6PaYOedPySH_0,915
@@ -181,7 +183,7 @@ astrbot/core/star/register/star.py,sha256=1Yml-_EGKr0uYUTmdu3CAVASIJss6JaBxoRP_D
181
183
  astrbot/core/star/register/star_handler.py,sha256=prfI_-uwe7AL-nzOMJCLCIJCyI1dC8Gpalmtej2hg_4,16269
182
184
  astrbot/core/utils/astrbot_path.py,sha256=ZK-OmCTOxH63GQ4kBMGZs9ybKmKuHMNXdW9RKqLbYRk,1227
183
185
  astrbot/core/utils/command_parser.py,sha256=ktdaw4kdvhfCHIGLTIX7AfMjT9CCL_iuJq1I-V9LEUA,603
184
- astrbot/core/utils/dify_api_client.py,sha256=RAKS3zjSl3nmhlNPCzN-byJZyZcwE6GR-8xZ9wzc-yE,5590
186
+ astrbot/core/utils/dify_api_client.py,sha256=EpV3hPB0aFWGQtjgtS-SEM3EFmBoMmvEOKyU52TQgbY,4809
185
187
  astrbot/core/utils/io.py,sha256=zFxFVNEPA04Jr15GGdf6K3-9gBe4pxxGfsxqkqSXZ0Q,9082
186
188
  astrbot/core/utils/log_pipe.py,sha256=AU-y7vvAUtegH3XRenJqsFpmH0UIV4zUfLWh-5uPkCI,883
187
189
  astrbot/core/utils/metrics.py,sha256=uFGS3ZU81vcUbhiIrc-VAy9t5Lc6Oxh13wGYcl3oVGY,2456
@@ -202,7 +204,7 @@ astrbot/core/utils/t2i/template/base.html,sha256=fQvq4I4lrlH2s_jwAzj62lWeC4g87xX
202
204
  astrbot/dashboard/server.py,sha256=4d_0xDfMW-qKabVLBEVzOnjxF3qIiNMr3dvaxZO-cEk,9049
203
205
  astrbot/dashboard/routes/__init__.py,sha256=Bn6_rbYtujttHKHEn8Smv2RiObhwWyH9TagW4HZSzGw,710
204
206
  astrbot/dashboard/routes/auth.py,sha256=igVjZWluaQpF-lrg-Ueb4IA553dA_Sn6pAxY34-83i8,2964
205
- astrbot/dashboard/routes/chat.py,sha256=hfKrxS07qEYA3SxwgPymh08-Doi74hwmaYhwxRcwrkk,11601
207
+ astrbot/dashboard/routes/chat.py,sha256=6dGKXBkbGb5TGcIMFh6tr6bvdv7yekrgehSdkYSZ8Ls,13232
206
208
  astrbot/dashboard/routes/config.py,sha256=y6p6KcsCUWckhOyaDCogH-tL-lfO_WY1g7enOJ33Im0,31023
207
209
  astrbot/dashboard/routes/conversation.py,sha256=4-jGtd5ApzcN1Jh6UAGet0A7oPkRMvvxk1gKc47KHmo,10768
208
210
  astrbot/dashboard/routes/file.py,sha256=y3yi4ari-ELwiDicuniBlvXhVe8d1JgWRl6FdC42v9k,706
@@ -210,14 +212,14 @@ astrbot/dashboard/routes/log.py,sha256=hDl6Niz_Vs4xb64USjCBzdOcm68GDpEsQrNrLr8yK
210
212
  astrbot/dashboard/routes/persona.py,sha256=6icnNNE8A0Yy1WI0INWD9ZPKC7VcZG-xHDfYElhaP8M,7857
211
213
  astrbot/dashboard/routes/plugin.py,sha256=cGGJVEM55uRiPo-EeD5apZQISzPw9vux7a-U2dE4fZQ,19429
212
214
  astrbot/dashboard/routes/route.py,sha256=V-Wm88D0BmxSYAUbedunykbWy5p7Tggae9nDhxm7LZU,1545
213
- astrbot/dashboard/routes/session_management.py,sha256=h3b8DTDV99Dl0Gmbys7I2SlkC7_DTeIQNwoi8HT1zEo,20238
215
+ astrbot/dashboard/routes/session_management.py,sha256=amWO28hzb7NZLhQDRfC-h9I5ZHBwJPLRDdTCge4vfaA,26760
214
216
  astrbot/dashboard/routes/stat.py,sha256=KCtP0-f9g664gM2SOBgnU8uKx6zt93-5Kut-d7wd7zk,6910
215
217
  astrbot/dashboard/routes/static_file.py,sha256=7KnNcOb1BVqSTft114LhGsDkfg69X2jHEm0tOK0kW0Y,1169
216
218
  astrbot/dashboard/routes/t2i.py,sha256=scp05AxoJM9cubrkSMBu1BbIWP1BMS50eFEPZ9S6WKM,8893
217
219
  astrbot/dashboard/routes/tools.py,sha256=FvWgjzImgeIGFWJM_r2tku3UTj0J5LwZXfmZJxfJWHM,13975
218
220
  astrbot/dashboard/routes/update.py,sha256=vhG6ET0GJNLTpfkKABYf3Aq5ChUCID1BvoZissWRBZg,6517
219
- astrbot-4.1.7.dist-info/METADATA,sha256=Zjs2TXggb5s-DTJ9c91lhAJRT5LNJvRXHJrDRWRvmKQ,11086
220
- astrbot-4.1.7.dist-info/WHEEL,sha256=qtCwoSJWgHk21S1Kb4ihdzI2rlJ1ZKaIurTj_ngOhyQ,87
221
- astrbot-4.1.7.dist-info/entry_points.txt,sha256=OEF09YmhBWYuViXrvTLLpstF4ccmNwDL8r7nnFD0pfI,53
222
- astrbot-4.1.7.dist-info/licenses/LICENSE,sha256=zPfQj5Mq8-gThIiBcxETr7t8gND9bZWOjTGQAr80TQI,34500
223
- astrbot-4.1.7.dist-info/RECORD,,
221
+ astrbot-4.2.0.dist-info/METADATA,sha256=tDafhSXeax1IV5wqD5D9mOpBqsGFJe-0FxSlO0Hcdx4,11086
222
+ astrbot-4.2.0.dist-info/WHEEL,sha256=qtCwoSJWgHk21S1Kb4ihdzI2rlJ1ZKaIurTj_ngOhyQ,87
223
+ astrbot-4.2.0.dist-info/entry_points.txt,sha256=OEF09YmhBWYuViXrvTLLpstF4ccmNwDL8r7nnFD0pfI,53
224
+ astrbot-4.2.0.dist-info/licenses/LICENSE,sha256=zPfQj5Mq8-gThIiBcxETr7t8gND9bZWOjTGQAr80TQI,34500
225
+ astrbot-4.2.0.dist-info/RECORD,,