agent-ecosystem/test
Mike 297bd8f533 fix(team): cap renderer IPC payloads to prevent OOM crashes
Users with long-running teams (37+ tasks, 10+ agents for an hour) were
hitting constant renderer crashes (issue #36). Two hot paths were
serializing unbounded histories across IPC on every tick:

- Provisioning progress: emitLogsProgress and updateProgress both
  joined the full provisioningOutputParts array (~20 event-driven call
  sites) plus the full CLI log tail, then fanned that out to the
  renderer. After an hour, each tick shipped multi-megabyte payloads
  and Zustand OOM'd on the immutable state clone.

- Session detail cache: SessionDetail.messages (the raw parsed JSONL)
  was being cached and returned over IPC/HTTP even though the renderer
  only reads session/chunks/processes/metrics. This roughly doubled
  the per-entry cache footprint on large sessions.

Fixes:

- Add progressPayload helpers that cap the log tail to 200 lines and
  assistant output to the last 20 parts; empty/whitespace joins
  collapse to undefined so the noop guard is explicit rather than
  coincidental.

- Apply the cap inside emitLogsProgress, updateProgress, and the two
  inline emission paths (stall warning, retry error). Throttle the
  log-progress tick 300ms -> 1000ms so Zustand can keep up.

- Add stripSessionDetailMessages and call it at every SessionDetail
  production site that crosses IPC/HTTP (both sessions.ts routes,
  both cache stores).

- Raise MAX_CACHE_SESSIONS 5 -> 20 now that the per-entry SessionDetail
  footprint is bounded. Previously 5 forced constant re-parsing on
  every session switch.

Tests: 15 new unit tests covering the helpers (tail slicing, empty
parts, whitespace-only parts, non-mutation of inputs).
2026-04-18 17:44:39 +05:00
..
features/recent-projects fix(recent-projects): recover codex projects after degraded startup 2026-04-16 13:17:07 +03:00
fixtures chore(workspace): checkpoint remaining claude team changes 2026-04-12 22:15:57 +03:00
main fix(team): cap renderer IPC payloads to prevent OOM crashes 2026-04-18 17:44:39 +05:00
mocks feat(wsl): add support for finding WSL Claude root candidates 2026-02-14 13:53:13 +09:00
renderer fix(team): support anthropic opus 4.7 team models 2026-04-18 12:09:26 +03:00
shared feat(team): auto-resume rate-limited teams when the limit resets 2026-04-18 10:21:23 +03:00
setup.ts feat: add Sentry error tracking and update docs 2026-03-22 17:03:15 +02:00