@yeaft/webchat-agent 0.0.159 → 0.0.160

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 (2) hide show
  1. package/crew.js +57 -0
  2. package/package.json +1 -1
package/crew.js CHANGED
@@ -1814,6 +1814,9 @@ export async function handleCrewControl(msg) {
1814
1814
  case 'stop_all':
1815
1815
  await stopAll(session);
1816
1816
  break;
1817
+ case 'clear':
1818
+ await clearSession(session);
1819
+ break;
1817
1820
  default:
1818
1821
  console.warn(`[Crew] Unknown control action: ${action}`);
1819
1822
  }
@@ -2007,6 +2010,60 @@ async function stopAll(session) {
2007
2010
  console.log(`[Crew] Session ${session.id} stopped`);
2008
2011
  }
2009
2012
 
2013
+ /**
2014
+ * 清空 session:保留角色配置,重置所有对话
2015
+ * 每个角色创建全新的 Claude conversation
2016
+ */
2017
+ async function clearSession(session) {
2018
+ // 1. Abort 所有运行中的 queries
2019
+ for (const [roleName, roleState] of session.roleStates) {
2020
+ if (roleState.abortController) {
2021
+ roleState.abortController.abort();
2022
+ }
2023
+ console.log(`[Crew] Clearing role: ${roleName}`);
2024
+ }
2025
+ session.roleStates.clear();
2026
+
2027
+ // 2. 删除所有角色的 savedSessionId(强制新建 conversation)
2028
+ for (const [roleName] of session.roles) {
2029
+ await clearRoleSessionId(session.sharedDir, roleName);
2030
+ }
2031
+
2032
+ // 3. 清空消息历史
2033
+ session.messageHistory = [];
2034
+ session.uiMessages = [];
2035
+ session.humanMessageQueue = [];
2036
+ session.waitingHumanContext = null;
2037
+ session.pendingRoutes = [];
2038
+
2039
+ // 4. 重置计数
2040
+ session.round = 0;
2041
+
2042
+ // 5. 清空磁盘上的 messages.json
2043
+ const messagesPath = join(session.sharedDir, 'messages.json');
2044
+ await fs.writeFile(messagesPath, '[]').catch(() => {});
2045
+
2046
+ // 6. 恢复运行状态
2047
+ session.status = 'running';
2048
+
2049
+ // 7. 通知前端
2050
+ sendCrewMessage({
2051
+ type: 'crew_session_cleared',
2052
+ sessionId: session.id
2053
+ });
2054
+
2055
+ sendCrewOutput(session, 'system', 'system', {
2056
+ type: 'assistant',
2057
+ message: { role: 'assistant', content: [{ type: 'text', text: '会话已清空,所有角色将使用全新对话' }] }
2058
+ });
2059
+ sendStatusUpdate(session);
2060
+
2061
+ // 8. 保存 meta
2062
+ await saveSessionMeta(session);
2063
+
2064
+ console.log(`[Crew] Session ${session.id} cleared`);
2065
+ }
2066
+
2010
2067
  // =====================================================================
2011
2068
  // Message Helpers
2012
2069
  // =====================================================================
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@yeaft/webchat-agent",
3
- "version": "0.0.159",
3
+ "version": "0.0.160",
4
4
  "description": "Remote agent for Yeaft WebChat — connects worker machines to the central server",
5
5
  "main": "index.js",
6
6
  "type": "module",