Files
Arvin Xu f799ae4893 ⚡️ perf(tools): project the whole command-output family, not just one member (#19695)
`lobe-local-system/runCommand` got a projector because its output is stored
three times. It is not the only tool with that shape — `register.ts` points
`codex/command_execution`, `claude-code/Bash`, `opencode/bash` and `pi/bash` at
the SAME shared `RunCommand` card, which reads `stdout || output || content` for
the body and `success` / `exitCode` for the collapsed row. One shape, so the
existing projector already fits; it was simply never registered for them.

This matters because the hetero cohort was getting nothing from the read-path
projection. Measured on production over 24h, inside topics that contain an
external agent's tool calls, the payload is essentially all `codex` (48 MB) and
`claude-code` (4.5 MB) rows and zero `lobe-*` rows — none of which had a
projector. `codex/command_execution` alone is 44 MB/day, and its state is
`stdout` 13 MB plus a byte-identical `output` 13 MB, with the message body
carrying a third copy.

Co-authored-by: Claude Opus 5 <noreply@anthropic.com>
2026-09-20 00:54:47 +08:00
..