Skip to content

Audit and remove StreamingProxy subsystem if obsolete #645

@eanzhao

Description

@eanzhao

Background

The repo contains a complete StreamingProxy subsystem at agents/Aevatar.GAgents.StreamingProxy/ plus agents/Aevatar.GAgents.StreamingProxyParticipant/. It comes with:

  • StreamingProxyGAgent, StreamingProxyParticipantGAgent
  • Full endpoints (StreamingProxyEndpoints.cs), room session orchestration, SSE writer
  • Projection pipeline (StreamingProxyRoomSessionEventProjector, *CurrentStateProjector)
  • Coordinator (StreamingProxyNyxParticipantCoordinator.cs)
  • ADR-0015 (docs/adr/0015-agui-sse-projection-session-pipeline.md)
  • ~25 source + test files

Now that /v1/responses (and the planned /v1/messages Path B) implement streaming directly on top of LlmSessionGAgent + NyxIdLLMProvider, the StreamingProxy may be:

  • Obsolete duplicate streaming surface
  • Or still load-bearing for multi-party rooms / NyxID participant coordination

Either way it needs an explicit audit because two parallel SSE paths violate CLAUDE.md "单一主干".

Audit questions

  1. Who calls StreamingProxyEndpoints? grep for live callers — frontend (tools/Aevatar.Tools.Cli/Frontend/src/runtime/), demos, production?
  2. What business capability does it provide that LlmSessionGAgent + /v1/responses SSE cannot?
    • Multi-participant rooms?
    • Persisted streaming history?
    • Cross-client fanout?
  3. Is StreamingProxyNyxParticipantCoordinator still on a hot path? It was central to the older NyxID chat flow — check if NyxIdChat agent still depends on it
  4. ADR-0015 status — does it accurately describe today's design, or is it stale?

Decision matrix

Audit outcome Action
No live callers + capability subsumed by /v1/responses Delete entire subsystem. Supersede ADR-0015. GAgent count: 19 -> 17
Used by frontend playground only Delete prod path, keep minimal demo or move to demos/
Multi-participant rooms still needed Keep, but document the boundary with /v1/responses SSE clearly in a new ADR
Coordinator still load-bearing for NyxID chat Keep that piece, delete the rest, narrow the public surface

Out of scope

  • Re-implementing multi-participant features on top of LlmSessionGAgent if audit says they're still needed — separate proposal
  • Frontend rewrite — depends on audit outcome

Acceptance

  • Written audit report with answers to the 4 questions above
  • Either a deletion PR (preferred if audit says obsolete) or an ADR explaining what stays and why
  • No parallel SSE paths left undocumented

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions