Add benchmark results for fast3 and fast4, implement KeepAliveLspBridge, and add tests for staged strategies

- Added new benchmark result files: compare_2026-02-09_score_fast3.json and compare_2026-02-09_score_fast4.json.
- Implemented KeepAliveLspBridge to maintain a persistent LSP connection across multiple queries, improving performance.
- Created unit tests for staged clustering strategies in test_staged_stage3_fast_strategies.py, ensuring correct behavior of score and dir_rr strategies.
This commit is contained in:
catlog22
2026-02-09 20:45:29 +08:00
parent c62d26183b
commit 4344e79e68
64 changed files with 6154 additions and 123 deletions

View File

@@ -8,6 +8,7 @@ import { useNotificationStore } from '@/stores';
import { useExecutionStore } from '@/stores/executionStore';
import { useFlowStore } from '@/stores';
import { useCliStreamStore } from '@/stores/cliStreamStore';
import { useCliSessionStore } from '@/stores/cliSessionStore';
import {
OrchestratorMessageSchema,
type OrchestratorWebSocketMessage,
@@ -28,6 +29,7 @@ function getStoreState() {
const execution = useExecutionStore.getState();
const flow = useFlowStore.getState();
const cliStream = useCliStreamStore.getState();
const cliSessions = useCliSessionStore.getState();
return {
// Notification store
setWsStatus: notification.setWsStatus,
@@ -56,6 +58,11 @@ function getStoreState() {
updateNode: flow.updateNode,
// CLI stream store
addOutput: cliStream.addOutput,
// CLI session store (PTY-backed terminal)
upsertCliSession: cliSessions.upsertSession,
removeCliSession: cliSessions.removeSession,
appendCliSessionOutput: cliSessions.appendOutput,
};
}
@@ -163,6 +170,31 @@ export function useWebSocket(options: UseWebSocketOptions = {}): UseWebSocketRet
break;
}
// ========== PTY CLI Sessions ==========
case 'CLI_SESSION_CREATED': {
const session = data.payload?.session;
if (session?.sessionKey) {
stores.upsertCliSession(session);
}
break;
}
case 'CLI_SESSION_OUTPUT': {
const { sessionKey, data: chunk } = data.payload ?? {};
if (typeof sessionKey === 'string' && typeof chunk === 'string') {
stores.appendCliSessionOutput(sessionKey, chunk);
}
break;
}
case 'CLI_SESSION_CLOSED': {
const { sessionKey } = data.payload ?? {};
if (typeof sessionKey === 'string') {
stores.removeCliSession(sessionKey);
}
break;
}
case 'CLI_OUTPUT': {
const { executionId, chunkType, data: outputData, unit } = data.payload;