@yeaft/webchat-agent 0.0.157 → 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.
- package/crew.js +57 -0
- 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
|
// =====================================================================
|