perf: fix memory leaks — strip task outputs from SSE broadcasts, use light state everywhere

- TaskTracker.getTaskTreeLight(): strips large `output` strings from tasks
  in SSE broadcasts (was serializing 5-10MB every 500ms with many subagents)
- session:created broadcasts now use toLightDetailedState() (consistent with
  session:updated which already did)
- GET /api/sessions/:id returns light state (no 2-3MB terminal+text buffers)
- Ralph wizard polls /terminal?tail=2048 instead of full session endpoint

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
This commit is contained in:
arkon
2026-02-20 06:50:59 +01:00
co-authored by Claude Opus 4.6
parent 51e45ed317
commit 868d4f1196
8 changed files with 47 additions and 28 deletions
+1 -5
View File
@@ -692,16 +692,12 @@ export function createErrorResponse(code: ApiErrorCode, details?: string): ApiRe
export interface SessionResponse {
/** Whether the request succeeded */
success: boolean;
/** Session details if successful */
/** Session details if successful (light state — no full buffers) */
session?: SessionState & {
/** Claude session ID from CLI */
claudeSessionId: string | null;
/** Total API cost */
totalCost: number;
/** Text output buffer */
textOutput: string;
/** Terminal buffer */
terminalBuffer: string;
/** Number of messages */
messageCount: number;
/** Whether Claude is working */